Просмотр исходного кода

完成任务详情页面提交自定义字段的功能

zengjiebin лет назад: 7
Родитель
Сommit
2eaf9a07c7

+ 8 - 3
app/src/main/java/com/sheep/gamegroup/absBase/AbsChooseImageActivity.java

@@ -30,7 +30,7 @@ import me.iwf.photopicker.PhotoPicker;
 public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener {
 public abstract class AbsChooseImageActivity extends BaseActivity implements UpFileListener {
     private boolean isUpload = true;
     private boolean isUpload = true;
     private boolean isCrop = true;
     private boolean isCrop = true;
-    private int photoCount = 1;
+    protected int photoCount = 1;
 
 
     protected ArrayList<String> photos;
     protected ArrayList<String> photos;
     protected String path;
     protected String path;
@@ -185,14 +185,19 @@ public abstract class AbsChooseImageActivity extends BaseActivity implements UpF
             path = sb.toString();
             path = sb.toString();
             onGetImage(path);
             onGetImage(path);
             if (isUpload) {
             if (isUpload) {
-                AbsChooseImageActivity.this.dialogShowLoading = DialogProgress.showDialog(AbsChooseImageActivity.this);
-                UpFileUtils.upImages(photos, AbsChooseImageActivity.this, getCallBack());
+                upImages();
             }
             }
         } else {
         } else {
             onNotGetImage("没有数据");
             onNotGetImage("没有数据");
         }
         }
     }
     }
 
 
+    //上传图片列表
+    protected void upImages() {
+        AbsChooseImageActivity.this.dialogShowLoading = DialogProgress.showDialog(AbsChooseImageActivity.this);
+        UpFileUtils.upImages(photos, AbsChooseImageActivity.this, getCallBack());
+    }
+
     /**
     /**
      * 上传图片前的回调
      * 上传图片前的回调
      * @return
      * @return

+ 6 - 0
app/src/main/java/com/sheep/gamegroup/model/api/ApiService.java

@@ -333,6 +333,12 @@ public interface ApiService {
     @GET("app/accepted_task/status")
     @GET("app/accepted_task/status")
     Observable<BaseMessage> taskStatus(@Query("id") int id, @Query("screenshots") String screenshots,
     Observable<BaseMessage> taskStatus(@Query("id") int id, @Query("screenshots") String screenshots,
                                        @Query("remark") String remark, @Query("package_name") String package_name, @Query("status") String status, @Query("device") String device);
                                        @Query("remark") String remark, @Query("package_name") String package_name, @Query("status") String status, @Query("device") String device);
+    /**
+     * 修改任务进度
+     */
+    @GET("app/accepted_task/status")
+    Observable<BaseMessage> taskStatus(@Query("id") int id, @Query("screenshots") String screenshots,
+                                       @Query("remark") String remark, @Query("package_name") String package_name, @Query("status") String status, @Query("device") String device, @Query("unique_identification") String unique_identification);
 //    @GET("app/accepted_task/status")
 //    @GET("app/accepted_task/status")
 //    Observable<BaseMessage> taskStatus(@Body JSONObject jsonObject);
 //    Observable<BaseMessage> taskStatus(@Body JSONObject jsonObject);
 
 

+ 4 - 6
app/src/main/java/com/sheep/gamegroup/model/entity/InputAndUrlList.java

@@ -1,8 +1,9 @@
 package com.sheep.gamegroup.model.entity;
 package com.sheep.gamegroup.model.entity;
 
 
+import com.sheep.gamegroup.view.activity.TaskDetailAct;
+
 import java.io.Serializable;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.ArrayList;
-import java.util.List;
 
 
 /**
 /**
  * Created by realicing on 2018/11/12.
  * Created by realicing on 2018/11/12.
@@ -11,7 +12,7 @@ import java.util.List;
  */
  */
 public class InputAndUrlList implements Serializable {
 public class InputAndUrlList implements Serializable {
     private String input;
     private String input;
-    private List<String> list = new ArrayList<>();
+    private ArrayList<String> list = new ArrayList<>(TaskDetailAct.DEFAULT_MAX_COUNT);
 
 
     public String getInput() {
     public String getInput() {
         return input;
         return input;
@@ -21,11 +22,8 @@ public class InputAndUrlList implements Serializable {
         this.input = input;
         this.input = input;
     }
     }
 
 
-    public List<String> getList() {
+    public ArrayList<String> getList() {
         return list;
         return list;
     }
     }
 
 
-    public void setList(List<String> list) {
-        this.list = list;
-    }
 }
 }

+ 1 - 1
app/src/main/java/com/sheep/gamegroup/presenter/TaskDetailContract.java

@@ -9,7 +9,7 @@ import com.sheep.gamegroup.model.entity.BaseMessage;
 
 
 public interface TaskDetailContract {
 public interface TaskDetailContract {
     interface Presenter{
     interface Presenter{
-        void taskStatus(JSONObject jsonObject);
+        void taskStatus( int id, String screenshots,String remark, String package_name, String status, String device, String unique_identification);
         void taskDesc(int taskid);
         void taskDesc(int taskid);
     }
     }
 
 

+ 4 - 3
app/src/main/java/com/sheep/gamegroup/presenter/TaskDetailPresenter.java

@@ -8,6 +8,8 @@ import com.sheep.jiuyan.samllsheep.SheepApp;
 
 
 import javax.inject.Inject;
 import javax.inject.Inject;
 
 
+import retrofit2.http.Query;
+import rx.Observable;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.android.schedulers.AndroidSchedulers;
 import rx.schedulers.Schedulers;
 import rx.schedulers.Schedulers;
 
 
@@ -27,9 +29,8 @@ public class TaskDetailPresenter implements TaskDetailContract.Presenter {
     }
     }
 
 
     @Override
     @Override
-    public void taskStatus(JSONObject jsonObject) {
-        apiService.taskStatus(jsonObject.getInteger("id"),jsonObject.getString("screenshots"),
-                jsonObject.getString("remark"),jsonObject.getString("package_name"),jsonObject.getString("status"),jsonObject.getString("device"))
+    public void taskStatus( int id, String screenshots,String remark, String package_name, String status, String device, String unique_identification) {
+        (unique_identification == null ? apiService.taskStatus(id, screenshots, remark, package_name, status, device) : apiService.taskStatus(id, screenshots, remark, package_name, status, device, unique_identification))
                 .subscribeOn(Schedulers.io())
                 .subscribeOn(Schedulers.io())
                 .observeOn(AndroidSchedulers.mainThread())
                 .observeOn(AndroidSchedulers.mainThread())
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {
                 .subscribe(new SheepSubscriber<BaseMessage>(SheepApp.getInstance()) {

+ 10 - 0
app/src/main/java/com/sheep/gamegroup/util/ListUtil.java

@@ -227,4 +227,14 @@ public class ListUtil {
     public static interface CallBack<I, R> {
     public static interface CallBack<I, R> {
         public R call(I i);
         public R call(I i);
     }
     }
+    //列表拼接为字符串
+    public static String listToUrls(List<String> list){
+        StringBuilder sb = new StringBuilder();
+        for (int i = 0; i < list.size(); i++) {
+            if(i != 0)
+                sb.append(";");
+            sb.append(list.get(i));
+        }
+        return sb.toString();
+    }
 }
 }

+ 30 - 5
app/src/main/java/com/sheep/gamegroup/view/activity/ActInputAndPickerImg.java

@@ -3,6 +3,7 @@ package com.sheep.gamegroup.view.activity;
 import android.support.v7.widget.AppCompatEditText;
 import android.support.v7.widget.AppCompatEditText;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.ImageView;
@@ -65,7 +66,10 @@ public class ActInputAndPickerImg extends AbsChooseImageActivity {
                     helper.itemView.setOnClickListener(new View.OnClickListener() {
                     helper.itemView.setOnClickListener(new View.OnClickListener() {
                         @Override
                         @Override
                         public void onClick(View view) {
                         public void onClick(View view) {
-                            showChooseDialog(false, true, DEFAULT_MAX_COUNT);
+                            int maxCount = DEFAULT_MAX_COUNT - inputAndUrlList.getList().size();
+                            if (inputAndUrlList.getList().contains(null))
+                                maxCount++;
+                            showChooseDialog(false, false, maxCount);
                         }
                         }
                     });
                     });
                 } else {
                 } else {
@@ -82,14 +86,28 @@ public class ActInputAndPickerImg extends AbsChooseImageActivity {
         });
         });
     }
     }
 
 
+    private String label;
+
     public void initData() {
     public void initData() {
-        String label = DataUtil.getObject(getIntent(), String.class);
+        label = DataUtil.getObject(getIntent(), String.class);
         ViewUtil.setText(input_and_picker_img_label, getString(R.string.input_x, label));
         ViewUtil.setText(input_and_picker_img_label, getString(R.string.input_x, label));
     }
     }
 
 
     //点击确定按钮
     //点击确定按钮
     public void onClickCommit(View view) {
     public void onClickCommit(View view) {
-
+        String input = input_and_picker_img_et.getText().toString();
+        if (TextUtils.isEmpty(input)) {
+            G.showToast(getString(R.string.x_cant_is_null, label));
+            return;
+        }
+        if (inputAndUrlList.getList().isEmpty()) {
+            G.showToast(R.string.nedd_picker_img);
+            return;
+        }
+        inputAndUrlList.getList().remove(null);
+        DataUtil.getInstance().putData(InputAndUrlList.class.getSimpleName(), inputAndUrlList);
+        setResult(RESULT_OK);
+        finish();
     }
     }
 
 
     //点击空白区域
     //点击空白区域
@@ -104,13 +122,20 @@ public class ActInputAndPickerImg extends AbsChooseImageActivity {
 
 
     @Override
     @Override
     protected void onGetImage(String path) {
     protected void onGetImage(String path) {
-        inputAndUrlList.getList().add(path);
+        inputAndUrlList.getList().remove(null);
+        for (String photo : photos) {
+            if (!inputAndUrlList.getList().contains(photo)) {
+                inputAndUrlList.getList().add(photo);
+            }
+        }
+        if (inputAndUrlList.getList().size() < DEFAULT_MAX_COUNT)
+            inputAndUrlList.getList().add(null);
         recyclerView.getAdapter().notifyDataSetChanged();
         recyclerView.getAdapter().notifyDataSetChanged();
     }
     }
 
 
     @Override
     @Override
     protected void onSetNetImageUrl(String url) {
     protected void onSetNetImageUrl(String url) {
-
+        dismissLoaddingDialog();
     }
     }
 
 
     @Override
     @Override

+ 24 - 8
app/src/main/java/com/sheep/gamegroup/view/activity/TaskDetailAct.java

@@ -33,6 +33,7 @@ import com.sheep.gamegroup.model.api.IDownload;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.BaseMessage;
 import com.sheep.gamegroup.model.entity.DialogEntity;
 import com.sheep.gamegroup.model.entity.DialogEntity;
 import com.sheep.gamegroup.model.entity.Ext;
 import com.sheep.gamegroup.model.entity.Ext;
+import com.sheep.gamegroup.model.entity.InputAndUrlList;
 import com.sheep.gamegroup.model.entity.ScreenshotsEntity;
 import com.sheep.gamegroup.model.entity.ScreenshotsEntity;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskAcceptedEty;
 import com.sheep.gamegroup.model.entity.TaskChild;
 import com.sheep.gamegroup.model.entity.TaskChild;
@@ -56,8 +57,10 @@ import com.sheep.gamegroup.util.LocationUtils;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.LogUtil;
 import com.sheep.gamegroup.util.MyListview;
 import com.sheep.gamegroup.util.MyListview;
 import com.sheep.gamegroup.util.PngUtil;
 import com.sheep.gamegroup.util.PngUtil;
+import com.sheep.gamegroup.util.RequestCodeConstants;
 import com.sheep.gamegroup.util.SelfCountDownTimer;
 import com.sheep.gamegroup.util.SelfCountDownTimer;
 import com.sheep.gamegroup.util.SysAppUtil;
 import com.sheep.gamegroup.util.SysAppUtil;
+import com.sheep.gamegroup.util.TestUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.TimeUtil;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.UMConfigUtils;
 import com.sheep.gamegroup.util.ViewUtil;
 import com.sheep.gamegroup.util.ViewUtil;
@@ -1325,17 +1328,16 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
 
 
     private int commitScreenShotTaskId;
     private int commitScreenShotTaskId;
 
 
+    private String unique_identification;
     @Override
     @Override
     protected void onSetNetImageUrl(String data) {
     protected void onSetNetImageUrl(String data) {
         setLoaddingText("提交中");
         setLoaddingText("提交中");
-        JSONObject jsonObject = new JSONObject();
-        jsonObject.put("id", commitScreenShotTaskId);
-        jsonObject.put("screenshots", data + "");
-        jsonObject.put("remark", /*taskEty.getRemarks() +*/ "");
-        jsonObject.put("package_name", taskEty.getPackage_names() + "");
-        jsonObject.put("status", TaskAcceptedEty.STATUS_SUBMIT + "");
-        jsonObject.put("device", SysAppUtil.getUserAgentOrDeviceInfo());
-        presenter.taskStatus(jsonObject);
+        commitScreenShotData(data, unique_identification);
+        unique_identification = null;
+    }
+    //提交截图数据
+    private void commitScreenShotData(String data, String unique_identification) {
+        presenter.taskStatus(commitScreenShotTaskId, data+"", "",taskEty.getPackage_names(), String.valueOf(TaskAcceptedEty.STATUS_SUBMIT), SysAppUtil.getUserAgentOrDeviceInfo(), unique_identification);
         taskEty.setScreenshots(data);
         taskEty.setScreenshots(data);
     }
     }
 
 
@@ -1366,6 +1368,20 @@ public class TaskDetailAct extends AbsChooseImageActivity implements TaskDetailC
                 //图片展示
                 //图片展示
                 isFresh = true;
                 isFresh = true;
                 break;
                 break;
+            case RequestCodeConstants.REQUEST_CODE_GE_DATA:
+                if(resultCode == RESULT_OK) {
+                    Object object = DataUtil.getInstance().getData(InputAndUrlList.class.getSimpleName());
+                    if(TestUtil.isDev()) LogUtil.println("GET_DATA", JSONObject.toJSONString(object));
+                    if(object instanceof InputAndUrlList) {
+                        unique_identification = ((InputAndUrlList) object).getInput();
+                        //上传图片
+                        photoCount = DEFAULT_MAX_COUNT;
+                        photos = ((InputAndUrlList) object).getList();
+                        upImages();
+                    } else
+                        G.showToast(R.string.coming_soon);
+                }
+                break;
             default:
             default:
                 DataUtil.getInstance().onActivityResult(requestCode, resultCode, data);
                 DataUtil.getInstance().onActivityResult(requestCode, resultCode, data);
                 break;
                 break;

+ 3 - 1
app/src/main/res/layout/item_image_view.xml

@@ -2,6 +2,8 @@
 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
 <ImageView xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/img_detail"
     android:id="@+id/img_detail"
     android:layout_width="wrap_content"
     android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
+    android:layout_height="160dp"
+    android:scaleType="fitXY"
+    android:adjustViewBounds="true"
     android:paddingStart="16dp"
     android:paddingStart="16dp"
     android:paddingEnd="4dp"/>
     android:paddingEnd="4dp"/>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -133,5 +133,7 @@
     <string name="reply_x">回复:%s</string>
     <string name="reply_x">回复:%s</string>
 
 
     <string name="input_x">请输入%s:</string>
     <string name="input_x">请输入%s:</string>
+    <string name="x_cant_is_null">%s不能为空</string>
     <string name="img_upload">图片上传</string>
     <string name="img_upload">图片上传</string>
+    <string name="nedd_picker_img">请选择截图后再进行提交</string>
 </resources>
 </resources>