diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_package_todo.xml b/app/src/main/res/layout/fragment_package_todo.xml new file mode 100644 index 0000000..84ebd81 --- /dev/null +++ b/app/src/main/res/layout/fragment_package_todo.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_package_todo.xml b/app/src/main/res/layout/fragment_package_todo.xml new file mode 100644 index 0000000..84ebd81 --- /dev/null +++ b/app/src/main/res/layout/fragment_package_todo.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_case_recycleview.xml b/app/src/main/res/layout/item_case_recycleview.xml index 4b504d0..c8c5a11 100644 --- a/app/src/main/res/layout/item_case_recycleview.xml +++ b/app/src/main/res/layout/item_case_recycleview.xml @@ -18,7 +18,7 @@ android:id="@+id/leftTextView" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/homeCircleColor" + android:background="@color/mainThemeColor" android:gravity="center" android:text="事" android:textColor="@color/white" @@ -31,10 +31,11 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_10dp" android:layout_toEndOf="@id/v" + android:fontFamily="sans-serif" android:gravity="center" android:singleLine="true" android:text="这里的墙面不整洁,需要打扫卫生" - android:textColor="@color/black" + android:textColor="@color/listMainColor" android:textSize="@dimen/textFontSize" /> + android:textColor="@color/listAuxiliaryColor" /> + android:textColor="@color/listSubColor" /> \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_package_todo.xml b/app/src/main/res/layout/fragment_package_todo.xml new file mode 100644 index 0000000..84ebd81 --- /dev/null +++ b/app/src/main/res/layout/fragment_package_todo.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_case_recycleview.xml b/app/src/main/res/layout/item_case_recycleview.xml index 4b504d0..c8c5a11 100644 --- a/app/src/main/res/layout/item_case_recycleview.xml +++ b/app/src/main/res/layout/item_case_recycleview.xml @@ -18,7 +18,7 @@ android:id="@+id/leftTextView" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/homeCircleColor" + android:background="@color/mainThemeColor" android:gravity="center" android:text="事" android:textColor="@color/white" @@ -31,10 +31,11 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_10dp" android:layout_toEndOf="@id/v" + android:fontFamily="sans-serif" android:gravity="center" android:singleLine="true" android:text="这里的墙面不整洁,需要打扫卫生" - android:textColor="@color/black" + android:textColor="@color/listMainColor" android:textSize="@dimen/textFontSize" /> + android:textColor="@color/listAuxiliaryColor" /> + android:textColor="@color/listSubColor" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_package_recycleview.xml b/app/src/main/res/layout/item_package_recycleview.xml new file mode 100644 index 0000000..2b9166a --- /dev/null +++ b/app/src/main/res/layout/item_package_recycleview.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 4e8aa5b..cd98584 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ applicationId "com.casic.dcms" minSdkVersion 21 targetSdkVersion 30 - versionCode 16 - versionName "v1.0.0.8" + versionCode 17 + versionName "v1.0.0.9" ndk { abiFilters "armeabi", "armeabi-v7a", "x86_64", "x86" } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6ea35aa..674567f 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -82,6 +82,7 @@ + diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java new file mode 100644 index 0000000..d146412 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageHandledAdapter.java @@ -0,0 +1,161 @@ +package com.casic.dcms.adapter; + +import android.annotation.SuppressLint; +import android.content.Context; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.HttpRequestHelper; +import com.casic.dcms.utils.StringHelper; +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.json.JSONException; +import org.json.JSONObject; + +import java.io.IOException; +import java.util.List; + +import okhttp3.ResponseBody; + +public class PackageHandledAdapter extends RecyclerView.Adapter { + + private static final String TAG = "PackageHandledAdapter"; + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageHandledAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageHandledAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageHandledAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageHandledAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @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() { + @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); + } else { + Log.d(TAG, "detail: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + + //获取商铺处罚记录 + HttpRequestHelper.doRequest("/shop/punish/listByMerchant", 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是字符串,说明没有处罚过 + + } else { + Log.d(TAG, "listByMerchant: " + data); + } + } catch (IOException | JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onFailure(Throwable throwable) { + + } + }); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.java new file mode 100644 index 0000000..4671a7a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/adapter/PackageTodoAdapter.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.ImageView; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.StringHelper; + +import java.util.List; + +public class PackageTodoAdapter extends RecyclerView.Adapter { + + private List dataBeans; + private LayoutInflater layoutInflater; + + public PackageTodoAdapter(Context context, List dataRows) { + this.dataBeans = dataRows; + layoutInflater = LayoutInflater.from(context); + } + + @NonNull + @Override + public PackageTodoAdapter.ItemViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View view = layoutInflater.inflate(R.layout.item_package_recycleview, parent, false); + return new PackageTodoAdapter.ItemViewHolder(view); + } + + @Override + public void onBindViewHolder(@NonNull PackageTodoAdapter.ItemViewHolder holder, int position) { + holder.bindView(dataBeans.get(position)); + if (clickListener != null) { + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + clickListener.onClick(position); + } + }); + } + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + static class ItemViewHolder extends RecyclerView.ViewHolder { + + private ImageView leftImageView; + private TextView caseTitleView; + private TextView caseDateView; +// private TextView caseTimeView; + + 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); + } + + @SuppressLint("SetTextI18n") + void bindView(PackageTodoBean.DataBean.RowsBean rowsBean) { + caseTitleView.setText(StringHelper.filterString(rowsBean.getDescription())); + caseDateView.setText("上报时间:" + rowsBean.getReportTime()); + } + } + + private OnItemClickListener clickListener; + + public interface OnItemClickListener { + void onClick(int position); + } + + public void setOnItemClickListener(OnItemClickListener onItemClickListener) { + this.clickListener = onItemClickListener; + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java new file mode 100644 index 0000000..eb011e1 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageHandledBean.java @@ -0,0 +1,381 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageHandledBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + /** + * isPostpone : 0 + * preState : 50 + * description : qk + * source : 2 + * eorcName : 事件 + * casetypeDetailName : 店面无证装修 + * remainingTime : 超时121小时39分钟 + * casetypeName : 市容环境 + * currUserId : 1196382448976011266 + * currUserName : 房可鑫 + * processId : 2858459 + * caseState : 51 + * id : 1395556091536478210 + * shopId : 993 + * fieldintro : dd + * lat : 27.770741787627987 + * caseStateName : 现场核查 + * preOperator : 1394585656711962626 + * lng : 116.05567507482945 + * isOvertime : 1 + * currRoleName : 监督员 + * casetypeDetailCode : 02 + * onedeptid : 1177028662545973250 + * eorc : 1 + * currRoleId : supervisor + * caseid : 202105210004 + * casetypeCode : 01 + * nodeLimittime : 2021-05-29 17:22:56 + * sourceName : 终端-普通上报 + * reportTime : 2021-05-21 09:44:35 + * onedeptName : 桥南中队 + */ + + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java new file mode 100644 index 0000000..8e7626d --- /dev/null +++ b/app/src/main/java/com/casic/dcms/bean/PackageTodoBean.java @@ -0,0 +1,347 @@ +package com.casic.dcms.bean; + +import java.util.List; + +public class PackageTodoBean { + + 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 { + + private int total; + private List rows; + + public int getTotal() { + return total; + } + + public void setTotal(int total) { + this.total = total; + } + + public List getRows() { + return rows; + } + + public void setRows(List rows) { + this.rows = rows; + } + + public static class RowsBean { + private int isPostpone; + private int preState; + private String description; + private int source; + private String eorcName; + private String casetypeDetailName; + private String remainingTime; + private String casetypeName; + private String currUserId; + private String currUserName; + private String processId; + private int caseState; + private String id; + private String shopId; + private String fieldintro; + private String lat; + private String caseStateName; + private String preOperator; + private String lng; + private String isOvertime; + private String currRoleName; + private String casetypeDetailCode; + private String onedeptid; + private String eorc; + private String currRoleId; + private String caseid; + private String casetypeCode; + private String nodeLimittime; + private String sourceName; + private String reportTime; + private String onedeptName; + + public int getIsPostpone() { + return isPostpone; + } + + public void setIsPostpone(int isPostpone) { + this.isPostpone = isPostpone; + } + + public int getPreState() { + return preState; + } + + public void setPreState(int preState) { + this.preState = preState; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getSource() { + return source; + } + + public void setSource(int source) { + this.source = source; + } + + public String getEorcName() { + return eorcName; + } + + public void setEorcName(String eorcName) { + this.eorcName = eorcName; + } + + public String getCasetypeDetailName() { + return casetypeDetailName; + } + + public void setCasetypeDetailName(String casetypeDetailName) { + this.casetypeDetailName = casetypeDetailName; + } + + public String getRemainingTime() { + return remainingTime; + } + + public void setRemainingTime(String remainingTime) { + this.remainingTime = remainingTime; + } + + public String getCasetypeName() { + return casetypeName; + } + + public void setCasetypeName(String casetypeName) { + this.casetypeName = casetypeName; + } + + public String getCurrUserId() { + return currUserId; + } + + public void setCurrUserId(String currUserId) { + this.currUserId = currUserId; + } + + public String getCurrUserName() { + return currUserName; + } + + public void setCurrUserName(String currUserName) { + this.currUserName = currUserName; + } + + public String getProcessId() { + return processId; + } + + public void setProcessId(String processId) { + this.processId = processId; + } + + public int getCaseState() { + return caseState; + } + + public void setCaseState(int caseState) { + this.caseState = caseState; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getShopId() { + return shopId; + } + + public void setShopId(String shopId) { + this.shopId = shopId; + } + + public String getFieldintro() { + return fieldintro; + } + + public void setFieldintro(String fieldintro) { + this.fieldintro = fieldintro; + } + + public String getLat() { + return lat; + } + + public void setLat(String lat) { + this.lat = lat; + } + + public String getCaseStateName() { + return caseStateName; + } + + public void setCaseStateName(String caseStateName) { + this.caseStateName = caseStateName; + } + + public String getPreOperator() { + return preOperator; + } + + public void setPreOperator(String preOperator) { + this.preOperator = preOperator; + } + + public String getLng() { + return lng; + } + + public void setLng(String lng) { + this.lng = lng; + } + + public String getIsOvertime() { + return isOvertime; + } + + public void setIsOvertime(String isOvertime) { + this.isOvertime = isOvertime; + } + + public String getCurrRoleName() { + return currRoleName; + } + + public void setCurrRoleName(String currRoleName) { + this.currRoleName = currRoleName; + } + + public String getCasetypeDetailCode() { + return casetypeDetailCode; + } + + public void setCasetypeDetailCode(String casetypeDetailCode) { + this.casetypeDetailCode = casetypeDetailCode; + } + + public String getOnedeptid() { + return onedeptid; + } + + public void setOnedeptid(String onedeptid) { + this.onedeptid = onedeptid; + } + + public String getEorc() { + return eorc; + } + + public void setEorc(String eorc) { + this.eorc = eorc; + } + + public String getCurrRoleId() { + return currRoleId; + } + + public void setCurrRoleId(String currRoleId) { + this.currRoleId = currRoleId; + } + + public String getCaseid() { + return caseid; + } + + public void setCaseid(String caseid) { + this.caseid = caseid; + } + + public String getCasetypeCode() { + return casetypeCode; + } + + public void setCasetypeCode(String casetypeCode) { + this.casetypeCode = casetypeCode; + } + + public String getNodeLimittime() { + return nodeLimittime; + } + + public void setNodeLimittime(String nodeLimittime) { + this.nodeLimittime = nodeLimittime; + } + + public String getSourceName() { + return sourceName; + } + + public void setSourceName(String sourceName) { + this.sourceName = sourceName; + } + + public String getReportTime() { + return reportTime; + } + + public void setReportTime(String reportTime) { + this.reportTime = reportTime; + } + + public String getOnedeptName() { + return onedeptName; + } + + public void setOnedeptName(String onedeptName) { + this.onedeptName = onedeptName; + } + } + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java index f91fb83..b239323 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/CaseListModelImpl.java @@ -26,9 +26,9 @@ @Override public Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Observable observable = RetrofitServiceManager.getCaseListResult(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset); + registerTimeBegin, registerTimeEnd, isShopCase, offset); return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { @Override public void onCompleted() { diff --git a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java index 6e7121c..1facf53 100644 --- a/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java +++ b/app/src/main/java/com/casic/dcms/mvp/model/ICaseListModel.java @@ -5,5 +5,5 @@ public interface ICaseListModel { Subscription sendRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); } diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java new file mode 100644 index 0000000..14e86fd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageHandledModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageHandledModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java new file mode 100644 index 0000000..a5d3513 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/IPackageTodoModel.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.model; + +import rx.Subscription; + +public interface IPackageTodoModel { + Subscription sendRetrofitRequest(int offset); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java new file mode 100644 index 0000000..4806ed8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageHandledModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageHandledModelImpl implements IPackageHandledModel { + + private OnGetHandledListListener listener; + + public PackageHandledModelImpl(OnGetHandledListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetHandledListListener { + void onSuccess(PackageHandledBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getCompletedListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageHandledBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java new file mode 100644 index 0000000..6294ba2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/model/PackageTodoModelImpl.java @@ -0,0 +1,50 @@ +package com.casic.dcms.mvp.model; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.utils.retrofit.RetrofitServiceManager; + +import rx.Observable; +import rx.Observer; +import rx.Subscription; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class PackageTodoModelImpl implements IPackageTodoModel { + + private OnGetTodoListListener listener; + + public PackageTodoModelImpl(OnGetTodoListListener handledListListener) { + this.listener = handledListListener; + } + + public interface OnGetTodoListListener { + void onSuccess(PackageTodoBean resultBean); + + void onFailure(Throwable throwable); + } + + @Override + public Subscription sendRetrofitRequest(int offset) { + Observable observable = RetrofitServiceManager.getWorkListResult(offset); + return observable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + if (e.getCause() != null) { + listener.onFailure(e); + } + } + + @Override + public void onNext(PackageTodoBean resultBean) { + if (resultBean != null) { + listener.onSuccess(resultBean); + } + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java index bddfa10..f87f72d 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/CaseListPresenterImpl.java @@ -18,10 +18,10 @@ @Override public void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { view.showProgress(); addSubscription(actionModel.sendRetrofitRequest(eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, offset)); + registerTimeBegin, registerTimeEnd, isShopCase, offset)); } @Override diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java index 63f675f..e5c6755 100644 --- a/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/ICaseListPresenter.java @@ -3,7 +3,7 @@ public interface ICaseListPresenter { void onReadyRetrofitRequest(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset); + String isShopCase, int offset); void disposeRetrofitRequest(); } diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java new file mode 100644 index 0000000..a9bf3cd --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageHandledPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageHandledPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java new file mode 100644 index 0000000..282542c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/IPackageTodoPresenter.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.presenter; + +public interface IPackageTodoPresenter { + void onReadyRetrofitRequest(int offset); + + void disposeRetrofitRequest(); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java new file mode 100644 index 0000000..8bb8c03 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageHandledPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageHandledModelImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; + +public class PackageHandledPresenterImpl extends BasePresenter implements IPackageHandledPresenter, PackageHandledModelImpl.OnGetHandledListListener { + + private IPackageHandledView view; + private PackageHandledModelImpl actionModel; + + public PackageHandledPresenterImpl(IPackageHandledView handledView) { + this.view = handledView; + actionModel = new PackageHandledModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageHandledBean resultBean) { + view.obtainPackageHandledResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java new file mode 100644 index 0000000..90014f2 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/presenter/PackageTodoPresenterImpl.java @@ -0,0 +1,37 @@ +package com.casic.dcms.mvp.presenter; + +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.BasePresenter; +import com.casic.dcms.mvp.model.PackageTodoModelImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; + +public class PackageTodoPresenterImpl extends BasePresenter implements IPackageTodoPresenter, PackageTodoModelImpl.OnGetTodoListListener { + + private IPackageTodoView view; + private PackageTodoModelImpl actionModel; + + public PackageTodoPresenterImpl(IPackageTodoView packageTodoView) { + this.view = packageTodoView; + actionModel = new PackageTodoModelImpl(this); + } + + @Override + public void onReadyRetrofitRequest(int offset) { + addSubscription(actionModel.sendRetrofitRequest(offset)); + } + + @Override + public void disposeRetrofitRequest() { + unSubscription(); + } + + @Override + public void onSuccess(PackageTodoBean resultBean) { + view.obtainPackageTodoResult(resultBean); + } + + @Override + public void onFailure(Throwable throwable) { + + } +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java new file mode 100644 index 0000000..09c4283 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageHandledView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageHandledBean; + +public interface IPackageHandledView { + void obtainPackageHandledResult(PackageHandledBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java new file mode 100644 index 0000000..2e06e62 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/mvp/view/IPackageTodoView.java @@ -0,0 +1,7 @@ +package com.casic.dcms.mvp.view; + +import com.casic.dcms.bean.PackageTodoBean; + +public interface IPackageTodoView { + void obtainPackageTodoResult(PackageTodoBean resultBean); +} diff --git a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java index c6ce5f6..5373388 100644 --- a/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/ArcGISMapActivity.java @@ -394,7 +394,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java index 78c499f..bc75444 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseCheckDetailActivity.java @@ -33,6 +33,7 @@ import com.casic.dcms.ui.fragment.check.CaseCheckFragment; import com.casic.dcms.ui.fragment.check.CaseCheckedFragment; 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.JzExoMedia; @@ -220,8 +221,8 @@ ToastHelper.showToast("核查情况还未选择", ToastHelper.WARING); return; } - if (checkImageAdapter.getItemCount() < 1 || checkImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (checkImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } caseHandlePresenter.onReadyRetrofitRequest(data.getProcessId(), id, String.valueOf(data.getCaseState()), @@ -259,7 +260,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java index 4241a5c..4399e95 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseHandleDetailActivity.java @@ -37,6 +37,7 @@ import com.casic.dcms.ui.fragment.handle.OvertimeCaseFragment; import com.casic.dcms.ui.fragment.handle.UrgentCaseFragment; 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.JzExoMedia; @@ -344,8 +345,8 @@ } if (handleResult.equals("处理完成")) { //选择处理完成时,处理图片必传。至少一张,最多两张 - if (handleImageAdapter.getItemCount() < 1 || handleImageAdapter.getItemCount() > 2) { - ToastHelper.showToast("当前案卷状态必须上传至少一张图片", ToastHelper.WARING); + if (handleImageAdapter.getItemCount() != 2) { + ToastHelper.showToast("当前案卷状态必须上传至少两张图片", ToastHelper.WARING); return; } } @@ -391,7 +392,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; default: break; diff --git a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java index 9deac4e..6ce7bd9 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseListResultActivity.java @@ -94,7 +94,7 @@ endTime = getIntent().getStringExtra("endTime"); //加载第一页 caseListPresenter.onReadyRetrofitRequest(eorc, typeCode, typeDetailCode, caseState, startTime, - endTime, pageIndex); + endTime, "0", pageIndex); } @Override @@ -106,7 +106,7 @@ //刷新之后页码重置 pageIndex = 1; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { @@ -115,7 +115,7 @@ isLoadMore = true; pageIndex++; caseListPresenter.onReadyRetrofitRequest(typeCode, typeDetailCode, caseState, startTime, - endTime, eorc, pageIndex); + endTime, eorc, "0", pageIndex); } }); } diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java index 0ff8167..c507f0b 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadActivity.java @@ -53,7 +53,6 @@ import com.casic.dcms.utils.TimeOrDateUtil; import com.casic.dcms.utils.ToastHelper; import com.casic.dcms.widgets.VoicePlayView; -import com.google.gson.Gson; import com.luck.picture.lib.PictureSelector; import com.luck.picture.lib.config.PictureConfig; import com.luck.picture.lib.config.PictureMimeType; @@ -372,12 +371,16 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case PictureConfig.PREVIEW_VIDEO_CODE: LocalMedia media = PictureSelector.obtainMultipleResult(data).get(0); //"realPath":"/storage/emulated/0/Movies/VID_20210426_17552226.mp4" - Log.d(TAG, "onActivityResult: " + new Gson().toJson(media)); //需要手动压缩视频 String mediaRealPath = media.getRealPath(); if (TextUtils.isEmpty(mediaRealPath)) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java index 22ed63e..95f3d3f 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadPackageActivity.java @@ -22,6 +22,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -174,7 +175,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java index 331439d..08e756c 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseUploadQuicklyActivity.java @@ -29,6 +29,7 @@ import com.casic.dcms.mvp.view.ICaseSubmitCaseView; 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; @@ -255,6 +256,8 @@ .forResult(PictureConfig.REQUEST_CAMERA); } + private static final String TAG = "CaseUploadQuicklyActivi"; + @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); @@ -269,7 +272,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java index f309745..81ef596 100644 --- a/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/CaseVerifyDetailActivity.java @@ -41,6 +41,7 @@ import com.casic.dcms.ui.fragment.verify.CaseVerifiedFragment; import com.casic.dcms.ui.fragment.verify.CaseVerifyFragment; 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.JzExoMedia; @@ -546,7 +547,12 @@ break; case PictureConfig.REQUEST_CAMERA: LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); break; case Constant.REQUEST_MAP_CODE: if (data == null) { diff --git a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java index a6dfcd9..bd73cee 100644 --- a/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/DisplayMapActivity.java @@ -151,7 +151,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java new file mode 100644 index 0000000..1361b9e --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/PackageHandleActivity.java @@ -0,0 +1,71 @@ +package com.casic.dcms.ui; + +import android.content.Context; +import android.view.View; +import android.widget.LinearLayout; + +import androidx.core.content.ContextCompat; +import androidx.fragment.app.Fragment; +import androidx.viewpager.widget.ViewPager; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.SubViewPagerAdapter; +import com.casic.dcms.base.BaseActivity; +import com.casic.dcms.ui.fragment.threepkg.PackageHandledFragment; +import com.casic.dcms.ui.fragment.threepkg.PackageTodoFragment; +import com.casic.dcms.utils.Constant; +import com.google.android.material.tabs.TabLayout; +import com.qmuiteam.qmui.widget.QMUITopBarLayout; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +public class PackageHandleActivity extends BaseActivity { + + @BindView(R.id.topLayout) + QMUITopBarLayout topLayout; + @BindView(R.id.tabLayout) + TabLayout tabLayout; + @BindView(R.id.viewPager) + ViewPager viewPager; + + private Context context = this; + + @Override + public int initLayoutView() { + return R.layout.activity_three_package; + } + + @Override + protected void setupTopBarLayout() { + topLayout.setTitle("三包处置").setTextColor(ContextCompat.getColor(this, R.color.white)); + topLayout.setBackgroundColor(ContextCompat.getColor(this, R.color.mainThemeColor)); + topLayout.addLeftImageButton(R.drawable.ic_left_white, 1).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + finish(); + } + }); + } + + @Override + public void initData() { + List fragmentList = new ArrayList<>(); + fragmentList.add(new PackageTodoFragment()); + fragmentList.add(new PackageHandledFragment()); + SubViewPagerAdapter adapter = new SubViewPagerAdapter(getSupportFragmentManager(), Constant.CASE_PAGE_TITLES, fragmentList); + viewPager.setAdapter(adapter); + //绑定TabLayout + tabLayout.setupWithViewPager(viewPager); + LinearLayout linearLayout = (LinearLayout) tabLayout.getChildAt(0); + linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE); + linearLayout.setDividerDrawable(ContextCompat.getDrawable(context, R.drawable.layout_divider_vertical)); + } + + @Override + public void initEvent() { + + } +} diff --git a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java index 6ea3e95..2381700 100644 --- a/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/PublicToiletActivity.java @@ -28,6 +28,7 @@ import com.casic.dcms.mvp.view.IPublicToiletView; 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.LocationHelper; import com.casic.dcms.utils.StringHelper; @@ -358,7 +359,12 @@ if (resultCode == RESULT_OK) { if (requestCode == PictureConfig.REQUEST_CAMERA) { LocalMedia localMedia = PictureSelector.obtainMultipleResult(data).get(0); - uploadImagePresenter.onReadyRetrofitRequest(new File(localMedia.getRealPath())); + String path = FileUtils.obtainImagePath(localMedia); + if (path.equals("")) { + ToastHelper.showToast("设备相机参数异常,无法拍照", ToastHelper.ERROR); + return; + } + uploadImagePresenter.onReadyRetrofitRequest(new File(path)); } } } diff --git a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java index 1580311..f34ada1 100644 --- a/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java +++ b/app/src/main/java/com/casic/dcms/ui/WorkerOnMapActivity.java @@ -217,7 +217,7 @@ @Override public void onAMapLocationGet(AMapLocation aMapLocation) { if (aMapLocation != null) { - mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude()), 1000); + mapView.setViewpointCenterAsync(new Point(aMapLocation.getLongitude(), aMapLocation.getLatitude(), mapView.getSpatialReference()), 1000); loadingDialog.dismiss(); } } diff --git a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java index 5dcf237..9d141c3 100644 --- a/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java +++ b/app/src/main/java/com/casic/dcms/ui/fragment/HomePageFragment.java @@ -29,6 +29,7 @@ import com.casic.dcms.ui.CaseVerifyActivity; import com.casic.dcms.ui.DataAnalysisActivity; import com.casic.dcms.ui.OvertimeCaseActivity; +import com.casic.dcms.ui.PackageHandleActivity; import com.casic.dcms.ui.PersonOnlineActivity; import com.casic.dcms.ui.PublicToiletActivity; import com.casic.dcms.ui.UrgentCaseActivity; @@ -151,6 +152,9 @@ case "公厕保洁": intent.setClass(context, PublicToiletActivity.class); break; + case "三包处置": + intent.setClass(context, PackageHandleActivity.class); + break; default: break; } 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 new file mode 100644 index 0000000..8a1ce31 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageHandledFragment.java @@ -0,0 +1,173 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageHandledAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.mvp.presenter.PackageHandledPresenterImpl; +import com.casic.dcms.mvp.view.IPackageHandledView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + * */ +public class PackageHandledFragment extends BaseFragment implements IPackageHandledView { + + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageHandledPresenterImpl handledPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageHandledAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_done; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + handledPresenter = new PackageHandledPresenterImpl(this); + handledPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + handledPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageHandledFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageHandledFragment handledFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + handledFragment.isRefresh = true; + //刷新之后页码重置 + handledFragment.pageIndex = 1; + handledFragment.handledPresenter.onReadyRetrofitRequest(handledFragment.pageIndex); + } else if (msg.what == 2021060301) { + if (handledFragment.isRefresh || handledFragment.isLoadMore) { + handledFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (handledFragment.dataBeans.size() == 0) { + handledFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + handledFragment.emptyView.hide(); + handledFragment.adapter = new PackageHandledAdapter(handledFragment.context, handledFragment.dataBeans); + handledFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(handledFragment.context)); + handledFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(handledFragment.context, DividerItemDecoration.VERTICAL)); + handledFragment.caseRecyclerView.setAdapter(handledFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageHandledResult(PackageHandledBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060301); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (handledPresenter != null) { + handledPresenter.disposeRetrofitRequest(); + } + } +} 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 new file mode 100644 index 0000000..f14ee3a --- /dev/null +++ b/app/src/main/java/com/casic/dcms/ui/fragment/threepkg/PackageTodoFragment.java @@ -0,0 +1,174 @@ +package com.casic.dcms.ui.fragment.threepkg; + +import android.content.Context; +import android.os.Handler; +import android.os.Message; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.casic.dcms.R; +import com.casic.dcms.adapter.PackageTodoAdapter; +import com.casic.dcms.base.BaseFragment; +import com.casic.dcms.bean.PackageTodoBean; +import com.casic.dcms.mvp.presenter.PackageTodoPresenterImpl; +import com.casic.dcms.mvp.view.IPackageTodoView; +import com.casic.dcms.utils.Constant; +import com.casic.dcms.utils.ToastHelper; +import com.qmuiteam.qmui.widget.QMUIEmptyView; +import com.scwang.smartrefresh.layout.SmartRefreshLayout; +import com.scwang.smartrefresh.layout.api.RefreshLayout; +import com.scwang.smartrefresh.layout.listener.OnLoadMoreListener; +import com.scwang.smartrefresh.layout.listener.OnRefreshListener; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; + +/** + * TODO 仅搭建界面,数据还未完全绑定 + */ +public class PackageTodoFragment extends BaseFragment implements IPackageTodoView { + + private static final String TAG = "PackageTodoFragment"; + private Context context; + @BindView(R.id.emptyView) + QMUIEmptyView emptyView; + @BindView(R.id.refreshLayout) + SmartRefreshLayout refreshLayout; + @BindView(R.id.caseRecyclerView) + RecyclerView caseRecyclerView; + + private PackageTodoPresenterImpl todoPresenter; + private int pageIndex = 1; + private List dataBeans = new ArrayList<>(); + private boolean isRefresh, isLoadMore = false; + private static WeakReferenceHandler weakReferenceHandler; + private PackageTodoAdapter adapter; + + @Override + protected int initLayoutView() { + return R.layout.fragment_package_todo; + } + + @Override + protected void setupTopBarLayout() { + context = getContext(); + } + + @Override + protected void initData() { + todoPresenter = new PackageTodoPresenterImpl(this); + todoPresenter.onReadyRetrofitRequest(pageIndex); + + weakReferenceHandler = new WeakReferenceHandler(this); + } + + @Override + protected void initEvent() { + refreshLayout.setOnRefreshListener(new OnRefreshListener() { + @Override + public void onRefresh(@NonNull final RefreshLayout refreshLayout) { + isRefresh = true; + //刷新之后页码重置 + pageIndex = 1; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + refreshLayout.setOnLoadMoreListener(new OnLoadMoreListener() { + @Override + public void onLoadMore(@NonNull final RefreshLayout refreshLayout) { + isLoadMore = true; + pageIndex++; + todoPresenter.onReadyRetrofitRequest(pageIndex); + } + }); + } + + /** + * 供{@link com.casic.dcms.ui}调用 + */ + public static void sendEmptyMessage(int what) { + if (weakReferenceHandler == null) { + return; + } + weakReferenceHandler.sendEmptyMessage(what); + } + + private static class WeakReferenceHandler extends Handler { + private WeakReference reference; + + private WeakReferenceHandler(PackageTodoFragment fragment) { + reference = new WeakReference<>(fragment); + } + + @Override + public void handleMessage(Message msg) { + PackageTodoFragment todoFragment = reference.get(); + if (msg.what == Constant.PACKAGE_DONE) { + todoFragment.isRefresh = true; + //刷新之后页码重置 + todoFragment.pageIndex = 1; + todoFragment.todoPresenter.onReadyRetrofitRequest(todoFragment.pageIndex); + } else if (msg.what == 2021060302) { + if (todoFragment.isRefresh || todoFragment.isLoadMore) { + todoFragment.adapter.notifyDataSetChanged(); + } else { + //首次加载数据 + if (todoFragment.dataBeans.size() == 0) { + todoFragment.emptyView.show("您暂时没有待办案卷", null); + } else { + todoFragment.emptyView.hide(); + todoFragment.adapter = new PackageTodoAdapter(todoFragment.context, todoFragment.dataBeans); + todoFragment.caseRecyclerView.setLayoutManager(new LinearLayoutManager(todoFragment.context)); + todoFragment.caseRecyclerView.addItemDecoration(new DividerItemDecoration(todoFragment.context, DividerItemDecoration.VERTICAL)); + todoFragment.caseRecyclerView.setAdapter(todoFragment.adapter); + 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); + } + }); + } + } + } + } + } + + @Override + public void obtainPackageTodoResult(PackageTodoBean resultBean) { + if (resultBean.isSuccess()) { + List dataRows = resultBean.getData().getRows(); + if (isRefresh) { + dataBeans.clear();//下拉刷新必须先清空之前的List,不然会出现数据重复的问题 + dataBeans = dataRows; + refreshLayout.finishRefresh(); + isRefresh = false; + } else if (isLoadMore) { + if (dataRows.size() == 0) { + ToastHelper.showToast("到底了,别拉了", ToastHelper.INFO); + } + dataBeans.addAll(dataRows); + refreshLayout.finishLoadMore(); + isLoadMore = false; + } else { + dataBeans = dataRows; + } + weakReferenceHandler.sendEmptyMessage(2021060302); + } + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + if (todoPresenter != null) { + todoPresenter.disposeRetrofitRequest(); + } + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/Constant.java b/app/src/main/java/com/casic/dcms/utils/Constant.java index 4806122..1d1f693 100644 --- a/app/src/main/java/com/casic/dcms/utils/Constant.java +++ b/app/src/main/java/com/casic/dcms/utils/Constant.java @@ -59,6 +59,7 @@ public static final int CASE_URGENT_OK = 19; public static final int UPLOAD_LOCATION = 20; public static final int MESSAGE_NUMBER = 21; + public static final int PACKAGE_DONE = 22; public static final double DEFAULT_LNG = 116.06639658728571; public static final double DEFAULT_LAT = 27.759547805536418; diff --git a/app/src/main/java/com/casic/dcms/utils/FileUtils.java b/app/src/main/java/com/casic/dcms/utils/FileUtils.java index 3184d2c..6285d52 100644 --- a/app/src/main/java/com/casic/dcms/utils/FileUtils.java +++ b/app/src/main/java/com/casic/dcms/utils/FileUtils.java @@ -5,6 +5,8 @@ import android.util.Log; import com.casic.dcms.utils.callback.IDownloadListener; +import com.luck.picture.lib.entity.LocalMedia; +import com.qmuiteam.qmui.util.QMUIDeviceHelper; import org.jetbrains.annotations.NotNull; @@ -266,4 +268,27 @@ } }); } + + /** + * 根据手机系统获取不同的路径,小米手机拍照会闪退 + *

+ * 小米: + * "path": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10151047.jpeg", + * "position": 0, + *

+ * 华为 + * "path": "content://media/external/images/media/90793", + * "position": 0, + * "realPath": "/storage/emulated/0/DCIM/Camera/IMG_20210604_10122565.jpg", + */ + public static String obtainImagePath(LocalMedia localMedia) { + String path = ""; + if (QMUIDeviceHelper.isHuawei()) { + path = localMedia.getRealPath(); + } else if (QMUIDeviceHelper.isMIUI() || QMUIDeviceHelper.isMIUIV5() || QMUIDeviceHelper.isMIUIV6() + || QMUIDeviceHelper.isMIUIV7() || QMUIDeviceHelper.isMIUIV8() || QMUIDeviceHelper.isMIUIV9()) { + path = localMedia.getPath(); + } + return path; + } } diff --git a/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java new file mode 100644 index 0000000..c0affb8 --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/HttpRequestHelper.java @@ -0,0 +1,76 @@ +package com.casic.dcms.utils; + +import android.util.Log; + +import com.casic.dcms.utils.callback.IHttpRequestListener; + +import org.jetbrains.annotations.NotNull; + +import java.io.IOException; +import java.util.concurrent.TimeUnit; + +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import okhttp3.ResponseBody; +import okhttp3.logging.HttpLoggingInterceptor; +import rx.Observable; +import rx.Observer; +import rx.Subscriber; +import rx.android.schedulers.AndroidSchedulers; +import rx.schedulers.Schedulers; + +public class HttpRequestHelper { + private static final String TAG = "HttpRequestHelper"; + + public static void doRequest(String function, String merchantId, IHttpRequestListener listener) { + String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://111.198.10.15:11409"); +// String ip = (String) SaveKeyValues.getValue(Constant.IP_KEY, "http://223.82.47.232:11401"); + Observable.create(new Observable.OnSubscribe() { + @Override + public void call(Subscriber subscriber) { + HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor(new HttpLoggingInterceptor.Logger() { + @Override + public void log(@NotNull String message) { + Log.d(TAG, "log: " + message); + } + }); + interceptor.setLevel(HttpLoggingInterceptor.Level.BODY); + + OkHttpClient client = new OkHttpClient.Builder() + .addInterceptor(interceptor) + .readTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .connectTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .writeTimeout(Constant.HTTP_TIMEOUT, TimeUnit.SECONDS) + .build(); + + Request request = new Request.Builder() + .addHeader("token", AuthenticationHelper.getToken()) + .url(ip + function + "?merchantId=" + merchantId) + .get() + .build();//创建Request 对象 + try { + Response response = client.newCall(request).execute(); + subscriber.onNext(response.body()); + } catch (IOException e) { + subscriber.onError(e); + } + } + }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() { + @Override + public void onCompleted() { + + } + + @Override + public void onError(Throwable e) { + listener.onFailure(e); + } + + @Override + public void onNext(ResponseBody responseBody) { + listener.onSuccess(responseBody); + } + }); + } +} diff --git a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java index 64022f2..1ca7363 100644 --- a/app/src/main/java/com/casic/dcms/utils/ImageHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/ImageHelper.java @@ -7,6 +7,8 @@ import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; +import android.graphics.Typeface; +import android.text.TextPaint; import android.text.TextUtils; import com.casic.dcms.utils.callback.IWaterMarkAddListener; @@ -29,16 +31,16 @@ private static final String TAG = "ImageHelper"; @SuppressLint("StaticFieldLeak") private static Context context; - private static Paint paint; + private static TextPaint textPaint; public static void initPaint(Context context) { ImageHelper.context = context; //初始化画笔 - paint = new Paint(Paint.ANTI_ALIAS_FLAG);//抗锯齿 - paint.setColor(Color.RED); - paint.setDither(true); // 防抖动,获取更清晰的图像采样 - paint.setFilterBitmap(true);// 滤波 - paint.setTextSize(QMUIDisplayHelper.sp2px(context, 50)); + textPaint = new TextPaint(Paint.ANTI_ALIAS_FLAG | Paint.DEV_KERN_TEXT_FLAG); + textPaint.setTypeface(Typeface.DEFAULT);// 采用默认的宽度 + textPaint.setColor(Color.RED); + textPaint.setDither(true); // 防抖动,获取更清晰的图像采样 + textPaint.setFilterBitmap(true);// 滤波 } /** @@ -49,12 +51,20 @@ Observable.create(new Observable.OnSubscribe() { @Override public void call(Subscriber subscriber) { + //图片像素不一样,字体也需要设置不一样,像素低的图片,文字要小 + if (bitmap.getWidth() <= 720) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 5)); + } else if (bitmap.getWidth() > 720 && bitmap.getWidth() <= 1080) { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 20)); + } else { + textPaint.setTextSize(QMUIDisplayHelper.dp2px(context, 40)); + } Rect nameBounds = new Rect(); - paint.getTextBounds(name, 0, name.length(), nameBounds); + textPaint.getTextBounds(name, 0, name.length(), nameBounds); Rect dateBounds = new Rect(); - paint.getTextBounds(date, 0, date.length(), dateBounds); + textPaint.getTextBounds(date, 0, date.length(), dateBounds); Rect timeBounds = new Rect(); - paint.getTextBounds(time, 0, time.length(), timeBounds); + textPaint.getTextBounds(time, 0, time.length(), timeBounds); //添加水印 Bitmap.Config bitmapConfig = bitmap.getConfig(); @@ -66,16 +76,29 @@ Canvas canvas = new Canvas(copyBitmap); final int bitmapWidth = copyBitmap.getWidth(); final int bitmapHeight = copyBitmap.getHeight(); - final int padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 - final int paddingRight = QMUIDisplayHelper.dp2px(context, 20); - final int paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + + //图片像素不一样,间距也需要设置不一样 + int padding, paddingRight, paddingBottom; + if (bitmapWidth <= 720) { + padding = QMUIDisplayHelper.dp2px(context, 3);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 3); + paddingBottom = QMUIDisplayHelper.dp2px(context, 3); + } else if (bitmapWidth > 720 && bitmapWidth <= 1080) { + padding = QMUIDisplayHelper.dp2px(context, 10);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 10); + paddingBottom = QMUIDisplayHelper.dp2px(context, 10); + } else { + padding = QMUIDisplayHelper.dp2px(context, 20);//两行水印间的间距 + paddingRight = QMUIDisplayHelper.dp2px(context, 20); + paddingBottom = QMUIDisplayHelper.dp2px(context, 20); + } //有几行就写几行 canvas.drawText(name, bitmapWidth - nameBounds.width() - paddingRight, - bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), paint); + bitmapHeight - (dateBounds.height() + timeBounds.height() + 2 * padding + paddingBottom), textPaint); canvas.drawText(date, bitmapWidth - dateBounds.width() - paddingRight, - bitmapHeight - (timeBounds.height() + padding + paddingBottom), paint); + bitmapHeight - (timeBounds.height() + padding + paddingBottom), textPaint); canvas.drawText(time, bitmapWidth - timeBounds.width() - paddingRight, - bitmapHeight - paddingBottom, paint); + bitmapHeight - paddingBottom, textPaint); //将带有水印的图片保存 File file = FileUtils.getWaterImageFile(); diff --git a/app/src/main/java/com/casic/dcms/utils/StringHelper.java b/app/src/main/java/com/casic/dcms/utils/StringHelper.java index 90ea2fc..cf7ddec 100644 --- a/app/src/main/java/com/casic/dcms/utils/StringHelper.java +++ b/app/src/main/java/com/casic/dcms/utils/StringHelper.java @@ -206,6 +206,8 @@ return R.mipmap.dtck; case "公厕保洁": return R.drawable.ic_toilet; + case "三包处置": + return R.drawable.ic_sanbao; default: return R.mipmap.app_logo; } diff --git a/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java new file mode 100644 index 0000000..f39f41c --- /dev/null +++ b/app/src/main/java/com/casic/dcms/utils/callback/IHttpRequestListener.java @@ -0,0 +1,9 @@ +package com.casic.dcms.utils.callback; + +import okhttp3.ResponseBody; + +public interface IHttpRequestListener { + void onSuccess(ResponseBody resultBean); + + void onFailure(Throwable throwable); +} diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java index 6e7aae1..57409ff 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitService.java @@ -24,6 +24,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -107,7 +109,7 @@ @Field("bzminis") int bzminis); /** - * 五包上报 + * 三包上报 */ @FormUrlEncoded @POST("/case/addAPP") @@ -188,6 +190,7 @@ /** * 获取案件列表 + * isShopCase 否 string 是否三包案件0-否,1-是 */ @GET("/case/queryListPage") Observable obtainCaseList(@Header("token") String token, @@ -197,6 +200,7 @@ @Query("caseState") String caseState, @Query("createTimeBegin") String createTimeBegin, @Query("createTimeEnd") String createTimeEnd, + @Query("isShopCase") String isShopCase, @Query("limit") int limit, @Query("offset") int offset); @@ -469,4 +473,26 @@ @Query("keywords") String keywords, @Query("beginDate") String beginDate, @Query("endDate") String endDate); + + /** + * 三包待办 + *

+ * http://111.198.10.15:11409/case/workListPage?isShop=1 + */ + @GET("/case/workListPage") + Observable obtainWorkListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); + + /** + * 三包已办 + *

+ * http://111.198.10.15:11409/case/completedListPage?isShop=1 + */ + @GET("/case/completedListPage") + Observable obtainCompletedListPage(@Header("token") String token, + @Query("isShop") String isShop, + @Query("limit") int limit, + @Query("offset") int offset); } diff --git a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java index 88e88f6..9cf41be 100644 --- a/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java +++ b/app/src/main/java/com/casic/dcms/utils/retrofit/RetrofitServiceManager.java @@ -26,6 +26,8 @@ import com.casic.dcms.bean.NewVersionBean; import com.casic.dcms.bean.OnlinePersonBean; import com.casic.dcms.bean.OvertimeCaseBean; +import com.casic.dcms.bean.PackageHandledBean; +import com.casic.dcms.bean.PackageTodoBean; import com.casic.dcms.bean.PhoneBookBean; import com.casic.dcms.bean.PublicKeyBean; import com.casic.dcms.bean.UrgentCaseBean; @@ -213,11 +215,11 @@ public static Observable getCaseListResult(String eorc, String casetypeCode, String casetypeDetailCode, String caseState, String registerTimeBegin, String registerTimeEnd, - int offset) { + String isShopCase, int offset) { Retrofit retrofit = createRetrofit(); RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainCaseList(AuthenticationHelper.getToken(), eorc, casetypeCode, casetypeDetailCode, caseState, - registerTimeBegin, registerTimeEnd, 15, offset); + registerTimeBegin, registerTimeEnd, isShopCase, 15, offset); } /** @@ -512,4 +514,22 @@ RetrofitService service = retrofit.create(RetrofitService.class); return service.obtainToiletCleanRecord(AuthenticationHelper.getToken(), userId, keywords, beginDate, endDate); } + + /** + * 三包待办 + */ + public static Observable getWorkListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainWorkListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } + + /** + * 三包已办 + */ + public static Observable getCompletedListResult(int offset) { + Retrofit retrofit = createRetrofit(); + RetrofitService service = retrofit.create(RetrofitService.class); + return service.obtainCompletedListPage(AuthenticationHelper.getToken(), "1", 15, offset); + } } diff --git a/app/src/main/res/drawable/bg_pkg_persuade_text.xml b/app/src/main/res/drawable/bg_pkg_persuade_text.xml new file mode 100644 index 0000000..29d4fe1 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_persuade_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_punish_text.xml b/app/src/main/res/drawable/bg_pkg_punish_text.xml new file mode 100644 index 0000000..91ad460 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_punish_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/bg_pkg_warn_text.xml b/app/src/main/res/drawable/bg_pkg_warn_text.xml new file mode 100644 index 0000000..b9cc363 --- /dev/null +++ b/app/src/main/res/drawable/bg_pkg_warn_text.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_package_holder.xml b/app/src/main/res/drawable/ic_package_holder.xml new file mode 100644 index 0000000..c2c6ae6 --- /dev/null +++ b/app/src/main/res/drawable/ic_package_holder.xml @@ -0,0 +1,237 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/activity_case_check.xml b/app/src/main/res/layout/activity_case_check.xml index d465d60..ebac3cd 100644 --- a/app/src/main/res/layout/activity_case_check.xml +++ b/app/src/main/res/layout/activity_case_check.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_handle.xml b/app/src/main/res/layout/activity_case_handle.xml index 3a7af4b..3018916 100644 --- a/app/src/main/res/layout/activity_case_handle.xml +++ b/app/src/main/res/layout/activity_case_handle.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_overtime.xml b/app/src/main/res/layout/activity_case_overtime.xml index 28f188a..8787dce 100644 --- a/app/src/main/res/layout/activity_case_overtime.xml +++ b/app/src/main/res/layout/activity_case_overtime.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_urgent.xml b/app/src/main/res/layout/activity_case_urgent.xml index c930695..f3ede63 100644 --- a/app/src/main/res/layout/activity_case_urgent.xml +++ b/app/src/main/res/layout/activity_case_urgent.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_case_verify.xml b/app/src/main/res/layout/activity_case_verify.xml index 538ce86..80d1e58 100644 --- a/app/src/main/res/layout/activity_case_verify.xml +++ b/app/src/main/res/layout/activity_case_verify.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_event_resource.xml b/app/src/main/res/layout/activity_event_resource.xml index 993a3f3..3da2ccb 100644 --- a/app/src/main/res/layout/activity_event_resource.xml +++ b/app/src/main/res/layout/activity_event_resource.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_high_event.xml b/app/src/main/res/layout/activity_high_event.xml index b0a5aaa..71676e4 100644 --- a/app/src/main/res/layout/activity_high_event.xml +++ b/app/src/main/res/layout/activity_high_event.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_online.xml b/app/src/main/res/layout/activity_online.xml index 00c5e2a..31c263c 100644 --- a/app/src/main/res/layout/activity_online.xml +++ b/app/src/main/res/layout/activity_online.xml @@ -21,6 +21,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" app:tabIndicatorColor="@color/mainThemeColor" + app:tabIndicatorFullWidth="false" app:tabIndicatorHeight="3dp" app:tabSelectedTextColor="@color/mainThemeColor" app:tabTextColor="@color/textColor" /> diff --git a/app/src/main/res/layout/activity_three_package.xml b/app/src/main/res/layout/activity_three_package.xml new file mode 100644 index 0000000..543be6e --- /dev/null +++ b/app/src/main/res/layout/activity_three_package.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 18ec11b..a833405 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -35,7 +35,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" - android:textColor="@color/userJobTextColor" /> + android:textColor="@color/lineColor" /> + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_package_todo.xml b/app/src/main/res/layout/fragment_package_todo.xml new file mode 100644 index 0000000..84ebd81 --- /dev/null +++ b/app/src/main/res/layout/fragment_package_todo.xml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_case_recycleview.xml b/app/src/main/res/layout/item_case_recycleview.xml index 4b504d0..c8c5a11 100644 --- a/app/src/main/res/layout/item_case_recycleview.xml +++ b/app/src/main/res/layout/item_case_recycleview.xml @@ -18,7 +18,7 @@ android:id="@+id/leftTextView" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/homeCircleColor" + android:background="@color/mainThemeColor" android:gravity="center" android:text="事" android:textColor="@color/white" @@ -31,10 +31,11 @@ android:layout_height="wrap_content" android:layout_marginStart="@dimen/margin_10dp" android:layout_toEndOf="@id/v" + android:fontFamily="sans-serif" android:gravity="center" android:singleLine="true" android:text="这里的墙面不整洁,需要打扫卫生" - android:textColor="@color/black" + android:textColor="@color/listMainColor" android:textSize="@dimen/textFontSize" /> + android:textColor="@color/listAuxiliaryColor" /> + android:textColor="@color/listSubColor" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_package_recycleview.xml b/app/src/main/res/layout/item_package_recycleview.xml new file mode 100644 index 0000000..2b9166a --- /dev/null +++ b/app/src/main/res/layout/item_package_recycleview.xml @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 19c8103..fbf85a1 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -16,7 +16,13 @@ #000000 #278DF9 - #E0DEDF - #058CFC #575757 + + #06134C + #090E47 + #98A0BD + + #FB2808 + #FD8D38 + #2C63DD