管灌系统巡查员智能手机App
zuoxiao
2025-01-14 5f4c3669ddd8fe27449b04a4b9db12b2ca4b3688
1.文件上传和显示添加缩略图功能。
18个文件已修改
1个文件已添加
369 ■■■■ 已修改文件
app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageRequest.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/UploadFileResult.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java 92 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/net/ApiService.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_add_issue.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_issue_detail.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_deal.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_order_detail.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/dayu/pipirrapp/activity/AddIssueActivity.java
@@ -345,7 +345,7 @@
        if (uplodFileState != null) {
            path = uplodFileState.getFilePath();
            try {
                Call<BaseResponse> mCall = uplodFileStates.get(path).getThisCall();
                Call mCall = uplodFileStates.get(path).getThisCall();
                if (mCall != null) {
                    mCall.cancel();
                    MyLog.d("progressRequestBody>>>" + "cancel》》》path:" + path);
app/src/main/java/com/dayu/pipirrapp/activity/IssueDetailActivity.java
@@ -108,6 +108,7 @@
                                    ImageInfo info = new ImageInfo();
                                    info.setOriginUrl(imageResult.getWebPath());
                                    info.setType(Type.IMAGE);
                                    info.setThumbnailUrl(imageResult.getWebPathZip());
                                    imageInfoList.add(info);
                                }
                            }
@@ -120,6 +121,8 @@
                                    images.add(imageBean);
                                    ImageInfo info = new ImageInfo();
                                    info.setOriginUrl(imageResult.getWebPath());
                                    info.setThumbnailUrl(imageResult.getWebPath());
                                    info.setThumbnailUrl(imageResult.getWebPathZip());
                                    info.setType(Type.VIDEO);
                                    imageInfoList.add(info);
                                }
app/src/main/java/com/dayu/pipirrapp/activity/OrderDealActivity.java
@@ -339,7 +339,7 @@
        if (uplodFileState != null) {
            path = uplodFileState.getFilePath();
            try {
                Call<BaseResponse> mCall = uplodFileStates.get(path).getThisCall();
                Call mCall = uplodFileStates.get(path).getThisCall();
                if (mCall != null) {
                    mCall.cancel();
                    MyLog.d("progressRequestBody>>>" + "cancel》》》path:" + path);
app/src/main/java/com/dayu/pipirrapp/activity/OrderDetailActivity.java
@@ -30,6 +30,7 @@
import com.dayu.pipirrapp.net.BaseResponse;
import com.dayu.pipirrapp.net.Constants;
import com.dayu.pipirrapp.net.subscribers.SubscriberListener;
import com.dayu.pipirrapp.tool.BigimageUtils;
import com.dayu.pipirrapp.tool.FullyGridLayoutManager;
import com.dayu.pipirrapp.utils.CommonKeyName;
import com.dayu.pipirrapp.utils.ToastUtil;
@@ -124,7 +125,7 @@
        // 添加间距装饰,确保图片有合适的间隔
        mRecyclerView.addItemDecoration(new GridSpacingItemDecoration(4, DensityUtil.dip2px(this, 8), false));
        mAdapter = new ImageAdapter(this, images, (v, position) -> {
            ImagePreview.getInstance().with(OrderDetailActivity.this).setIndex(position).setMediaInfoList(imageInfoList).start();
            BigimageUtils.showImages(this, position, imageInfoList);
        });
        mRecyclerView.setAdapter(mAdapter);
@@ -225,26 +226,29 @@
                            if (!t.getContent().getImages().isEmpty()){
                                for (ImageResult imageResult:t.getContent().getImages()){
                                    ImageBean imageBean=new ImageBean();
                                    ImageBean imageBean = new ImageBean();
                                    imageBean.setId(imageResult.getId());
                                    imageBean.setWebPath(imageResult.getWebPath());
                                    imageBean.setType(UplodFileState.IMG_TYPE);
                                    images.add(imageBean);
                                    ImageInfo info=new ImageInfo();
                                    ImageInfo info = new ImageInfo();
                                    info.setOriginUrl(imageResult.getWebPath());
                                    info.setType(Type.IMAGE);
                                    info.setThumbnailUrl(imageResult.getWebPathZip());
                                    imageInfoList.add(info);
                                }
                            }
                            if (!t.getContent().getVideos().isEmpty()){
                                for (ImageResult imageResult:t.getContent().getVideos()){
                                    ImageBean imageBean=new ImageBean();
                                    ImageBean imageBean = new ImageBean();
                                    imageBean.setId(imageResult.getId());
                                    imageBean.setWebPath(imageResult.getWebPath());
                                    imageBean.setType(UplodFileState.VIDEO_TYPE);
                                    images.add(imageBean);
                                    ImageInfo info=new ImageInfo();
                                    ImageInfo info = new ImageInfo();
                                    info.setOriginUrl(imageResult.getWebPath());
                                    info.setThumbnailUrl(imageResult.getWebPath());
                                    info.setThumbnailUrl(imageResult.getWebPathZip());
                                    info.setType(Type.VIDEO);
                                    imageInfoList.add(info);
                                }
app/src/main/java/com/dayu/pipirrapp/bean/db/DivideBean.java
@@ -47,17 +47,17 @@
    /**
     * 编号
     */
    private int id;
    private String id;
    /**
     * 纬度
     */
    private double lat;
    private String lat;
    /**
     * 经度
     */
    private double lng;
    private String lng;
    /**
     * 操作时间
@@ -147,27 +147,27 @@
        this.header = header;
    }
    public int getId() {
    public String getId() {
        return id;
    }
    public void setId(int id) {
    public void setId(String id) {
        this.id = id;
    }
    public double getLat() {
    public String getLat() {
        return lat;
    }
    public void setLat(double lat) {
    public void setLat(String lat) {
        this.lat = lat;
    }
    public double getLng() {
    public String getLng() {
        return lng;
    }
    public void setLng(double lng) {
    public void setLng(String lng) {
        this.lng = lng;
    }
app/src/main/java/com/dayu/pipirrapp/bean/net/AddIssueRequest.java
@@ -57,11 +57,12 @@
        images.clear();
        for (UplodFileState data : states.values()) {
            ImageRequest image = new ImageRequest();
            image.setWebPath(data.getWebPath());
            image.setFilePath(data.getUoloadFilePath());
            image.setId(data.getPostId());
            if (data.getUploadType()==UplodFileState.IMG_TYPE){
            image.setHash(data.getHash());
            if (data.getUploadType() == UplodFileState.IMG_TYPE) {
                images.add(image);
            }else {
            } else {
                videos.add(image);
            }
app/src/main/java/com/dayu/pipirrapp/bean/net/AddProcessingRequest.java
@@ -78,11 +78,12 @@
        images.clear();
        for (UplodFileState data : states.values()) {
            ImageRequest image = new ImageRequest();
            image.setWebPath(data.getWebPath());
            image.setFilePath(data.getUoloadFilePath());
            image.setId(data.getPostId());
            if (data.getUploadType()==UplodFileState.IMG_TYPE){
            image.setHash(data.getHash());
            if (data.getUploadType() == UplodFileState.IMG_TYPE) {
                images.add(image);
            }else {
            } else {
                videos.add(image);
            }
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageRequest.java
@@ -9,7 +9,24 @@
 */
public class ImageRequest {
    String id;
    String webPath;
    String filePath;
    int hash;
    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
    public int getHash() {
        return hash;
    }
    public void setHash(int hash) {
        this.hash = hash;
    }
    public String getId() {
        return id;
@@ -19,11 +36,5 @@
        this.id = id;
    }
    public String getWebPath() {
        return webPath;
    }
    public void setWebPath(String webPath) {
        this.webPath = webPath;
    }
}
app/src/main/java/com/dayu/pipirrapp/bean/net/ImageResult.java
@@ -10,6 +10,15 @@
public class ImageResult {
    String id;
    String webPath;
    String webPathZip;
    public String getWebPathZip() {
        return webPathZip;
    }
    public void setWebPathZip(String webPathZip) {
        this.webPathZip = webPathZip;
    }
    public String getId() {
        return id;
app/src/main/java/com/dayu/pipirrapp/bean/net/UploadFileResult.java
New file
@@ -0,0 +1,113 @@
package com.dayu.pipirrapp.bean.net;
/**
 * uploadFileResult -> 上传文件结果
 *
 * @author zuoxiao
 * @version 1.0
 * @since 2025-01-14
 */
public class UploadFileResult {
    // 文件下载web路径
    private String downloadPath;
    // 文件扩展名
    private String extName;
    // 文件在服务端存储相对路径
    private String filePath;
    // 文件的哈希值
    private int hash;
    // 文件id(数据库记录ID )
    private String id;
    // 文件原始名称
    private String orgName;
    // 文件web路径(在浏览器中直接显示)
    private String webPath;
    // 照片或视频的缩略图web路径(在浏览器中直接显示)
    private String webPathZip;
    // 构造函数
    public UploadFileResult(String downloadPath, String extName, String filePath, int hash, String id, String orgName, String webPath, String webPathZip) {
        this.downloadPath = downloadPath;
        this.extName = extName;
        this.filePath = filePath;
        this.hash = hash;
        this.id = id;
        this.orgName = orgName;
        this.webPath = webPath;
        this.webPathZip = webPathZip;
    }
    // Getter和Setter方法
    public String getDownloadPath() {
        return downloadPath;
    }
    public void setDownloadPath(String downloadPath) {
        this.downloadPath = downloadPath;
    }
    public String getExtName() {
        return extName;
    }
    public void setExtName(String extName) {
        this.extName = extName;
    }
    public String getFilePath() {
        return filePath;
    }
    public void setFilePath(String filePath) {
        this.filePath = filePath;
    }
    public int getHash() {
        return hash;
    }
    public void setHash(int hash) {
        this.hash = hash;
    }
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getOrgName() {
        return orgName;
    }
    public void setOrgName(String orgName) {
        this.orgName = orgName;
    }
    public String getWebPath() {
        return webPath;
    }
    public void setWebPath(String webPath) {
        this.webPath = webPath;
    }
    public String getWebPathZip() {
        return webPathZip;
    }
    public void setWebPathZip(String webPathZip) {
        this.webPathZip = webPathZip;
    }
}
app/src/main/java/com/dayu/pipirrapp/bean/net/UplodFileState.java
@@ -32,9 +32,16 @@
    //上传后的id
    String postId;
    //上传后的地址
    String webPath;
//    String webPath;
    //上传后返回的文件在服务端存储相对路径
    String uoloadFilePath;
    //上传后的哈希值
    int hash;
    //上传后的缩略图
    String webPathZip;
    //当前请求
    Call<BaseResponse> thisCall;
    Call<BaseResponse<UploadFileResult>> thisCall;
    //图片上传进度
    int progress;
    //adapter中的position
@@ -43,6 +50,30 @@
    int uploadType;
    //扩展名
    String extName;
    public String getUoloadFilePath() {
        return uoloadFilePath;
    }
    public void setUoloadFilePath(String uoloadFilePath) {
        this.uoloadFilePath = uoloadFilePath;
    }
    public int getHash() {
        return hash;
    }
    public void setHash(int hash) {
        this.hash = hash;
    }
    public String getWebPathZip() {
        return webPathZip;
    }
    public void setWebPathZip(String webPathZip) {
        this.webPathZip = webPathZip;
    }
    public String getExtName() {
        return extName;
@@ -77,11 +108,11 @@
    }
    public Call<BaseResponse> getThisCall() {
    public Call<BaseResponse<UploadFileResult>> getThisCall() {
        return thisCall;
    }
    public void setThisCall(Call<BaseResponse> thisCall) {
    public void setThisCall(Call<BaseResponse<UploadFileResult>> thisCall) {
        this.thisCall = thisCall;
    }
@@ -121,11 +152,5 @@
        this.postId = postId;
    }
    public String getWebPath() {
        return webPath;
    }
    public void setWebPath(String webPath) {
        this.webPath = webPath;
    }
}
app/src/main/java/com/dayu/pipirrapp/fragment/MapFragment.java
@@ -26,11 +26,13 @@
import com.dayu.pipirrapp.R;
import com.dayu.pipirrapp.activity.AddIssueActivity;
import com.dayu.pipirrapp.bean.db.CenterPointBean;
import com.dayu.pipirrapp.bean.db.DivideBean;
import com.dayu.pipirrapp.bean.db.InspectionBean;
import com.dayu.pipirrapp.bean.db.InspectionLocationBean;
import com.dayu.pipirrapp.bean.db.LatLonBean;
import com.dayu.pipirrapp.bean.db.MarkerBean;
import com.dayu.pipirrapp.bean.net.CenterPointResult;
import com.dayu.pipirrapp.bean.net.DivideListResult;
import com.dayu.pipirrapp.bean.net.DivideResult;
import com.dayu.pipirrapp.bean.net.InsectionResult;
import com.dayu.pipirrapp.bean.net.InspectionRequest;
@@ -100,8 +102,11 @@
    List<InspectionLocationBean> aginShowlocationBeans;
    //web加载时网页还没加载完时的数据
    List<MarkerBean> webNoFinishMarkerData = new ArrayList<>();
    List<DivideBean> webNoFinishDivideData = new ArrayList<>();
    //所有的Marker数据键为marker的Id
    Map<String, MarkerBean> markerBeanSet = new HashMap<>();
    //所有分水房
    Map<String, DivideBean> divideBeanMap = new HashMap<>();
    //中心点坐标
    public double centerLng;
    public double centerLat;
@@ -573,6 +578,28 @@
        }
    }
    /**
     * 添加取水口标注
     */
    public void setDivide(DivideBean divide) {
        if (divide != null) {
            if (webViewIsFinished) {
                if (!TextUtils.isEmpty(divide.getLng()) && !TextUtils.isEmpty(divide.getLat())) {
                    mWebView.evaluateJavascript("javascript:addMarker(\"" + divide.getId() + "\",\"" + divide.getLng() + "\",\"" + divide.getLat() + "\",\"" + divide.getDivideName() + "\")", new ValueCallback<String>() {
                        @Override
                        public void onReceiveValue(String value) {
                        }
                    });
                    divideBeanMap.put(divide.getId(), divide);
                } else {
                    MyLog.d("setMapMarker>" + divide.getDivideName() + "经纬度为空");
                }
            } else {
                webNoFinishDivideData.add(divide);
            }
        }
    }
    /**
     * 开始巡检的相关逻辑
@@ -761,25 +788,34 @@
     * 获取分水房
     */
    private void getDivideList() {
        ApiManager.getInstance().requestPost(MapFragment.this.getContext(), BASE_URL + "/project/divide/getDivides", DivideResult.class, null, new SubscriberListener<BaseResponse<DivideResult>>() {
        ApiManager.getInstance().requestPost(MapFragment.this.getContext(), BASE_URL + "/project/divide/getDivides", DivideListResult.class, null, new SubscriberListener<BaseResponse<DivideListResult>>() {
            @Override
            public void onNext(BaseResponse<DivideResult> t) {
            public void onNext(BaseResponse<DivideListResult> t) {
                try {
                    if (t.isSuccess()) {
//                       if (t.getContent().)
//
//
//                        // 使用 RxJava 异步插入数据
//                        DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).markerDao().insertAll()
//                                .subscribeOn(Schedulers.io()) // 在 IO 线程上执行
//                                .observeOn(AndroidSchedulers.mainThread()) // 在主线程上观察
//                                .subscribe(() -> {
//                                    // 插入成功
//                                    Log.i("mWebView", "数据插入成功");
//                                }, throwable -> {
//                                    // 插入失败
//                                    Log.e("mWebView", "数据插入失败: " + throwable.getMessage());
//                                });
                        if (t.getContent().getObj() != null && t.getContent().getObj().isEmpty()) {
                            List<DivideBean> divideBeans = new ArrayList<>();
                            for (DivideResult divideResult : t.getContent().getObj()) {
                                DivideBean divideBean = getDivideBean(divideResult);
                                divideBeans.add(divideBean);
                            }
                            // 使用 RxJava 异步插入数据
                            DaoSingleton.getAsynchInstance(MapFragment.this.getContext()).divideDao().insertAll(divideBeans)
                                    .subscribeOn(Schedulers.io()) // 在 IO 线程上执行
                                    .observeOn(AndroidSchedulers.mainThread()) // 在主线程上观察
                                    .subscribe(() -> {
                                        // 插入成功
                                        Log.i("mWebView", "数据插入成功");
                                    }, throwable -> {
                                        // 插入失败
                                        Log.e("mWebView", "数据插入失败: " + throwable.getMessage());
                                    });
                        }
                    } else {
                        ToastUtil.showToastLong(MapFragment.this.getContext(), t.getMsg());
                    }
@@ -792,6 +828,30 @@
        });
    }
    /**
     * @param divideResult
     * @return
     */
    private static @NonNull DivideBean getDivideBean(DivideResult divideResult) {
        DivideBean divideBean = new DivideBean();
        divideBean.setAddress(divideResult.getAddress());
        divideBean.setBlockId(divideResult.getBlockId());
        divideBean.setBlockName(divideResult.getBlockName());
        divideBean.setDivideId(divideResult.getDivideId());
        divideBean.setDivideName(divideResult.getDivideName());
        divideBean.setHeader(divideResult.getHeader());
        divideBean.setId(String.valueOf(divideResult.getId()));
        divideBean.setLat(String.valueOf(divideResult.getLat()));
        divideBean.setLng(String.valueOf(divideResult.getLng()));
        divideBean.setOperateDt(divideResult.getOperateDt());
        divideBean.setOperator(divideResult.getOperator());
        divideBean.setPhone(divideResult.getPhone());
        divideBean.setRemarks(divideResult.getRemarks());
        divideBean.setVillages(divideResult.getVillages());
        divideBean.setArea(divideResult.getArea());
        return divideBean;
    }
    @Override
    public void onDestroy() {
app/src/main/java/com/dayu/pipirrapp/net/ApiManager.java
@@ -17,6 +17,7 @@
import com.dayu.pipirrapp.bean.net.CodeResult;
import com.dayu.pipirrapp.bean.net.UplodFileState;
import com.dayu.pipirrapp.bean.net.WeatherResponse;
import com.dayu.pipirrapp.bean.net.UploadFileResult;
import com.dayu.pipirrapp.net.subscribers.BaseProgressSubscriber;
import com.dayu.pipirrapp.net.subscribers.CodeListener;
import com.dayu.pipirrapp.net.subscribers.ProgressSubscriber;
@@ -28,7 +29,6 @@
import com.dayu.pipirrapp.utils.MyJsonParser;
import com.dayu.pipirrapp.utils.MyLog;
import com.dayu.pipirrapp.utils.NetUtils;
import com.google.gson.internal.LinkedTreeMap;
import java.io.File;
import java.util.HashMap;
@@ -332,7 +332,7 @@
            });
            MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), progressRequestBody);
            RequestBody description = RequestBody.create(MediaType.parse("text/plain"), "file description");
            Call<BaseResponse> uploadFile = null;
            Call<BaseResponse<UploadFileResult>> uploadFile = null;
            switch (uplodData.getUploadType()) {
                case UplodFileState.IMG_TYPE:
                    uploadFile = apiService.uploadImgFile(body, description);
@@ -346,14 +346,17 @@
            }
            uplodData.setThisCall(uploadFile);
            uploadFile.enqueue(new Callback<BaseResponse>() {
            uploadFile.enqueue(new Callback<BaseResponse<UploadFileResult>>() {
                @Override
                public void onResponse(Call<BaseResponse> call, Response<BaseResponse> response) {
                public void onResponse(Call<BaseResponse<UploadFileResult>> call, Response<BaseResponse<UploadFileResult>> response) {
                    if (response.body() != null) {
                        if (response.body().isSuccess()) {
                            UploadFileResult uploadFileResult=response.body().getContent();
                            uplodData.setState(STATE_DONE);
                            uplodData.setPostId(((LinkedTreeMap) response.body().getContent()).get("id").toString());
                            uplodData.setWebPath(((LinkedTreeMap) response.body().getContent()).get("webPath").toString());
                            uplodData.setPostId(uploadFileResult.getId());
                            uplodData.setUoloadFilePath(uploadFileResult.getFilePath());
                            uplodData.setHash(uploadFileResult.getHash());
                            uplodData.setWebPathZip(uploadFileResult.getWebPathZip());
                            listener.onBack(uplodData);
                        } else {
                            MyLog.d("progressRequestBody>>>" + response.body().getMsg());
@@ -371,7 +374,7 @@
                }
                @Override
                public void onFailure(Call<BaseResponse> call, Throwable t) {
                public void onFailure(Call<BaseResponse<UploadFileResult>> call, Throwable t) {
                    MyLog.d("progressRequestBody>>>" + "onFailure:" + t.getMessage());
                    if (!t.getMessage().equals("Canceled")) {
                        uplodData.setState(STATE_ERROR);
app/src/main/java/com/dayu/pipirrapp/net/ApiService.java
@@ -3,6 +3,7 @@
import com.dayu.pipirrapp.bean.net.CodeResult;
import com.dayu.pipirrapp.bean.net.WeatherResponse;
import com.dayu.pipirrapp.bean.net.UploadFileResult;
import java.util.Map;
@@ -59,11 +60,11 @@
    @Multipart
    @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upPhoto")
    Call<BaseResponse> uploadImgFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
    Call<BaseResponse<UploadFileResult>> uploadImgFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
    @Multipart
    @POST(Constants.BASE_UPLOAD_FILE_URL + "/app/webFile/upVideo")
    Call<BaseResponse> uploadVideoFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
    Call<BaseResponse<UploadFileResult>> uploadVideoFile(@Part MultipartBody.Part file, @Part("description") RequestBody description);
    //获取验证码
    @GET(Constants.BASE_URL + "/app/captcha/get")
app/src/main/java/com/dayu/pipirrapp/tool/FileUploadUtils.java
@@ -50,7 +50,7 @@
    public static void cancelAllCall(Map<String, UplodFileState> uplodFileStates) {
        try {
            for (UplodFileState uplodFileState : uplodFileStates.values()) {
                Call<BaseResponse> mCall = uplodFileState.getThisCall();
                Call mCall = uplodFileState.getThisCall();
                if (mCall != null) {
                    mCall.cancel();
                }
app/src/main/res/layout/activity_add_issue.xml
@@ -59,7 +59,7 @@
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="提交图片:"
                android:text="提交图片或视频:"
                android:textColor="@color/black"
                android:textSize="@dimen/order_detail_button_size" />
        </LinearLayout>
app/src/main/res/layout/activity_issue_detail.xml
@@ -180,7 +180,7 @@
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="上报图片:"
                            android:text="上报图片或视频:"
                            android:textColor="@color/item_name_text_color"
                            android:textSize="@dimen/order_detail_text_size" />
app/src/main/res/layout/activity_order_deal.xml
@@ -82,7 +82,7 @@
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="提交图片:"
                    android:text="提交图片或视频:"
                    android:textColor="@color/black"
                    android:textSize="@dimen/order_detail_button_size" />
            </LinearLayout>
app/src/main/res/layout/activity_order_detail.xml
@@ -395,7 +395,7 @@
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="反馈图片:"
                            android:text="反馈图片或视频:"
                            android:textColor="@color/item_name_text_color"
                            android:textSize="@dimen/order_detail_text_size" />