Bitliker 9 лет назад
Родитель
Сommit
f5f809c010

+ 0 - 351
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java

@@ -1,351 +0,0 @@
-package com.xzjmyk.pm.activity.bean.oa;
-
-import android.os.Parcel;
-import android.os.Parcelable;
-
-/**
- * oa首页对象实体
- * Created by gongp on 2016/8/17.
- */
-public class OABean implements Parcelable {
-    //通用属性
-    private int type;//类型  1、任务 2、日程 3、拜访
-    private String startdate;//2016-08-09 02:01:23
-    private String status;//未激活、已启动
-    private String enddate;//2016-08-09 02:01:23
-
-    //任务日程属性
-    private int ra_id;
-    private String ra_taskid;
-    private String ra_resourcecode;
-    private String resourcecode;//未知
-    private String taskcode;//2016070004
-    private String description;//测试(类型)
-    private String recorder;//录入人(陈萍)
-    private String name;//名称
-    private String handler;//实行人
-
-    //拜访计划属性
-    private int vp_id;//id
-    private String visitman;//陈萍(拜访员)
-    private String recordman;//陈萍(记录人)
-    private String client;//陈萍(客户)
-    private String remark;//null(备注)
-    private String vr_nichename;//关联商机名称(备注)
-    private String vr_nichecode;//关联商机 编号(备注)
-    private String address;//testaddress(地址)
-    private String visitdate;//2016-07-20 00:00:00(拜访日期)
-    private String department;//业务员
-    private String vp_visitmancode;
-    private String vp_custcode;//联系人编号
-    private String nichestep;//沟通阶段
-    private String vr_cucontact;//联系人
-    private String vp_contact;
-
-    public OABean() {
-    }
-
-    public int getType() {
-        return type;
-    }
-
-    public void setType(int type) {
-        this.type = type;
-    }
-
-    public String getStartdate() {
-        return startdate;
-    }
-
-    public void setStartdate(String startdate) {
-        this.startdate = startdate;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getEnddate() {
-        return enddate;
-    }
-
-    public void setEnddate(String enddate) {
-        this.enddate = enddate;
-    }
-
-    public int getRa_id() {
-        return ra_id;
-    }
-
-    public void setRa_id(int ra_id) {
-        this.ra_id = ra_id;
-    }
-
-    public String getRa_taskid() {
-        return ra_taskid;
-    }
-
-    public void setRa_taskid(String ra_taskid) {
-        this.ra_taskid = ra_taskid;
-    }
-
-    public String getRa_resourcecode() {
-        return ra_resourcecode;
-    }
-
-    public void setRa_resourcecode(String ra_resourcecode) {
-        this.ra_resourcecode = ra_resourcecode;
-    }
-
-    public String getResourcecode() {
-        return resourcecode;
-    }
-
-    public void setResourcecode(String resourcecode) {
-        this.resourcecode = resourcecode;
-    }
-
-    public String getTaskcode() {
-        return taskcode;
-    }
-
-    public void setTaskcode(String taskcode) {
-        this.taskcode = taskcode;
-    }
-
-    public String getDescription() {
-        return description;
-    }
-
-    public void setDescription(String description) {
-        this.description = description;
-    }
-
-    public String getRecorder() {
-        return recorder;
-    }
-
-    public void setRecorder(String recorder) {
-        this.recorder = recorder;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getHandler() {
-        return handler;
-    }
-
-    public void setHandler(String handler) {
-        this.handler = handler;
-    }
-
-    public int getVp_id() {
-        return vp_id;
-    }
-
-    public void setVp_id(int vp_id) {
-        this.vp_id = vp_id;
-    }
-
-    public String getVisitman() {
-        return visitman;
-    }
-
-    public void setVisitman(String visitman) {
-        this.visitman = visitman;
-    }
-
-    public String getRecordman() {
-        return recordman;
-    }
-
-    public void setRecordman(String recordman) {
-        this.recordman = recordman;
-    }
-
-    public String getClient() {
-        return client;
-    }
-
-    public void setClient(String client) {
-        this.client = client;
-    }
-
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
-
-    public String getVr_nichename() {
-        return vr_nichename;
-    }
-
-    public void setVr_nichename(String vr_nichename) {
-        this.vr_nichename = vr_nichename;
-    }
-
-    public String getVr_nichecode() {
-        return vr_nichecode;
-    }
-
-    public void setVr_nichecode(String vr_nichecode) {
-        this.vr_nichecode = vr_nichecode;
-    }
-
-    public String getAddress() {
-        return address;
-    }
-
-    public void setAddress(String address) {
-        this.address = address;
-    }
-
-    public String getVisitdate() {
-        return visitdate;
-    }
-
-    public void setVisitdate(String visitdate) {
-        this.visitdate = visitdate;
-    }
-
-    public String getDepartment() {
-        return department;
-    }
-
-    public void setDepartment(String department) {
-        this.department = department;
-    }
-
-    public String getVp_visitmancode() {
-        return vp_visitmancode;
-    }
-
-    public void setVp_visitmancode(String vp_visitmancode) {
-        this.vp_visitmancode = vp_visitmancode;
-    }
-
-    public String getVp_custcode() {
-        return vp_custcode;
-    }
-
-    public void setVp_custcode(String vp_custcode) {
-        this.vp_custcode = vp_custcode;
-    }
-
-    public String getNichestep() {
-        return nichestep;
-    }
-
-    public void setNichestep(String nichestep) {
-        this.nichestep = nichestep;
-    }
-
-    public String getVr_cucontact() {
-        return vr_cucontact;
-    }
-
-    public void setVr_cucontact(String vr_cucontact) {
-        this.vr_cucontact = vr_cucontact;
-    }
-
-    public String getVp_contact() {
-        return vp_contact;
-    }
-
-    public void setVp_contact(String vp_contact) {
-        this.vp_contact = vp_contact;
-    }
-
-    protected OABean(Parcel in) {
-        type = in.readInt();
-        startdate = in.readString();
-        status = in.readString();
-        enddate = in.readString();
-        ra_id = in.readInt();
-        ra_taskid = in.readString();
-        ra_resourcecode = in.readString();
-        resourcecode = in.readString();
-        taskcode = in.readString();
-        description = in.readString();
-        recorder = in.readString();
-        name = in.readString();
-        handler = in.readString();
-        vp_id = in.readInt();
-        visitman = in.readString();
-        recordman = in.readString();
-        client = in.readString();
-        remark = in.readString();
-        vr_nichename = in.readString();
-        vr_nichecode = in.readString();
-        address = in.readString();
-        visitdate = in.readString();
-        department = in.readString();
-        vp_visitmancode = in.readString();
-        vp_custcode = in.readString();
-        nichestep = in.readString();
-        vr_cucontact = in.readString();
-        vp_contact = in.readString();
-    }
-
-    @Override
-    public void writeToParcel(Parcel dest, int flags) {
-        dest.writeInt(type);
-        dest.writeString(startdate);
-        dest.writeString(status);
-        dest.writeString(enddate);
-        dest.writeInt(ra_id);
-        dest.writeString(ra_taskid);
-        dest.writeString(ra_resourcecode);
-        dest.writeString(resourcecode);
-        dest.writeString(taskcode);
-        dest.writeString(description);
-        dest.writeString(recorder);
-        dest.writeString(name);
-        dest.writeString(handler);
-        dest.writeInt(vp_id);
-        dest.writeString(visitman);
-        dest.writeString(recordman);
-        dest.writeString(client);
-        dest.writeString(remark);
-        dest.writeString(vr_nichename);
-        dest.writeString(vr_nichecode);
-        dest.writeString(address);
-        dest.writeString(visitdate);
-        dest.writeString(department);
-        dest.writeString(vp_visitmancode);
-        dest.writeString(vp_custcode);
-        dest.writeString(nichestep);
-        dest.writeString(vr_cucontact);
-        dest.writeString(vp_contact);
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    public static final Creator<OABean> CREATOR = new Creator<OABean>() {
-        @Override
-        public OABean createFromParcel(Parcel in) {
-            return new OABean(in);
-        }
-
-        @Override
-        public OABean[] newArray(int size) {
-            return new OABean[size];
-        }
-    };
-}

+ 39 - 28
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/TaskActivity.java

@@ -72,12 +72,12 @@ import java.util.regex.Pattern;
  */
 
 @SuppressWarnings({"unused", "deprecation"})
-public class TaskActivity extends BaseActivity implements OnClickListener,RecognizerDialogListener{
+public class TaskActivity extends BaseActivity implements OnClickListener, RecognizerDialogListener {
 
     private EmptyLayout mEmptyLayout;
     private Context context;
     private PullToRefreshListView listview_main;
-//    private SchedultAdapter adapter;
+    //    private SchedultAdapter adapter;
     private NewSchedultAdapter adapter;
     private List<AllProcess> allList = new ArrayList<AllProcess>();
     private List<AllProcess> waitList = new ArrayList<>();
@@ -101,7 +101,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
     @ViewInject(R.id.voice_search_iv)
     private ImageView voice_search_iv;
     private int mCurrentPage = 1;
-    private int mPosition ;
+    private int mPosition;
     private Handler handler = new Handler() {
         @SuppressWarnings({"unchecked", "rawtypes"})
         public void handleMessage(Message msg) {
@@ -207,7 +207,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
             if ((login_Name.equals(allList.get(i).getDealpersoncode()) &&
                     "进行中".equals(allList.get(i).getStatus()))
                     || (login_Name.equals(allList.get(i).getRecorder()) &&
-                    "待确认".equals(allList.get(i).getStatus()))){
+                    "待确认".equals(allList.get(i).getStatus()))) {
                 waitList.add(allList.get(i));
             }
 
@@ -215,33 +215,33 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
             if ((login_Name.equals(allList.get(i).getDealpersoncode()) &&
                     "已完成".equals(allList.get(i).getStatus()))
                     || (login_Name.equals(allList.get(i).getDealpersoncode()) &&
-                    "待确认".equals(allList.get(i).getStatus()))){
+                    "待确认".equals(allList.get(i).getStatus()))) {
                 doneList.add(allList.get(i));
             }
 
             //我发起的
             if ((login_Name.equals(allList.get(i).getRecorder()) &&
-                    "进行中".equals(allList.get(i).getStatus()) )||
+                    "进行中".equals(allList.get(i).getStatus())) ||
                     (login_Name.equals(allList.get(i).getRecorder()) &&
-                            "已完成".equals(allList.get(i).getStatus()))){
+                            "已完成".equals(allList.get(i).getStatus()))) {
                 isendList.add(allList.get(i));
             }
-            if (i == allList.size() -1){
-                if (tab_type == 1){
+            if (i == allList.size() - 1) {
+                if (tab_type == 1) {
                     if (ListUtils.isEmpty(waitList)) {
                         mEmptyLayout.showEmpty();
                         return;
-                    }else {
+                    } else {
                         adapter = new NewSchedultAdapter(TaskActivity.this, waitList);
                         real_List = waitList;
                     }
                 }
-                if (tab_type == 2){
+                if (tab_type == 2) {
                     adapter = new NewSchedultAdapter(TaskActivity.this, doneList);
                     real_List = doneList;
                 }
 
-                if (tab_type == 3){
+                if (tab_type == 3) {
                     adapter = new NewSchedultAdapter(TaskActivity.this, isendList);
                     real_List = isendList;
                 }
@@ -276,7 +276,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
         new Thread(new getallprocess_run()).start();
 //        sendResquestForServer("START", 2);
         initHeaderView();//  头布局显示
-        sendResquestForServerAll(2,mCurrentPage);  // update TODO :出息进来请求所有任务数据
+        sendResquestForServerAll(2, mCurrentPage);  // update TODO :出息进来请求所有任务数据
         initSearchEvent();
         /**注释:监听 */
         listview_main.setOnItemClickListener(new OnItemClickListener() {
@@ -365,8 +365,8 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
 
             @Override
             public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
-                mCurrentPage ++;
-                sendResquestForServerAll(2,mCurrentPage);
+                mCurrentPage++;
+                sendResquestForServerAll(2, mCurrentPage);
             }
         });
     }
@@ -374,16 +374,23 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
     private void initSearchEvent() {
         edt_search.addTextChangedListener(new TextWatcher() {
             @Override
-            public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
             @Override
-            public void onTextChanged(CharSequence s, int start, int before, int count) {}
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+            }
+
             @Override
             public void afterTextChanged(Editable editable) {
                 LogUtil.prinlnLongMsg("real_List", real_List + "");
                 String strChche = editable.toString().replace(" ", "");//去除空格
-                if (ListUtils.isEmpty(real_List)) {mEmptyLayout.showEmpty(); return;}
+                if (ListUtils.isEmpty(real_List)) {
+                    mEmptyLayout.showEmpty();
+                    return;
+                }
 
-                if (StringUtils.isEmpty(strChche)){
+                if (StringUtils.isEmpty(strChche)) {
                     adapter = new NewSchedultAdapter(TaskActivity.this, real_List);
                     listview_main.setAdapter(adapter);
                     if (adapter.getCount() != 0) {
@@ -394,7 +401,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
                     listview_main.onRefreshComplete();
                 }
                 strChche = strChche.replace(" ", " ");//去除空格
-                List<AllProcess>  chche = new ArrayList<>();
+                List<AllProcess> chche = new ArrayList<>();
                 if (StringUtils.isEmpty(strChche)) return;
 
                 for (int i = 0; i < real_List.size(); i++) {
@@ -402,10 +409,10 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
                             + real_List.get(i).getStatus() + real_List.get(i).getTaskname()
                             + real_List.get(i).getEndTime() + real_List.get(i).getDatetime(), strChche.trim());
 
-                    if (b){
+                    if (b) {
                         chche.add(real_List.get(i));
                     }
-                    if (i == real_List.size() - 1){
+                    if (i == real_List.size() - 1) {
                         adapter = new NewSchedultAdapter(TaskActivity.this, chche);
                         listview_main.setAdapter(adapter);
                         if (adapter.getCount() != 0) {
@@ -416,16 +423,18 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
                         listview_main.onRefreshComplete();
                     }
                 }
-                Log.v("chche",JSON.toJSONString(chche));
+                Log.v("chche", JSON.toJSONString(chche));
             }
         });
     }
+
     //正则
     private static boolean getResult(String text, String str) {
         Pattern p = Pattern.compile(str);
         Matcher m = p.matcher(text);
         return m.find();
     }
+
     private void initHeaderView() {
         View view = LayoutInflater.from(ct).inflate(R.layout.task_header, null);
         ActionBar bar = this.getSupportActionBar();
@@ -443,9 +452,10 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
         voice_search_iv.setOnClickListener(this);
         tab_type = 1;
     }
+
     @Override
     public void onClick(View v) {
-        switch (v.getId()){
+        switch (v.getId()) {
             case R.id.wait_tv:
                 tab_type = 1;
                 wait_tv.setSelected(true);
@@ -471,7 +481,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
                 real_List = isendList;
                 break;
             case R.id.voice_search_iv:
-                final VoiceToWord voice = new VoiceToWord(TaskActivity.this,"534e3fe2");
+                final VoiceToWord voice = new VoiceToWord(TaskActivity.this, "534e3fe2");
                 voice.setRecognizerDialogListener(this);  //自己调用自己
                 voice.GetWordFromVoice();
                 break;
@@ -489,6 +499,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
         }
         listview_main.onRefreshComplete();
     }
+
     @Override
     protected void onResume() {
         super.onResume();
@@ -649,7 +660,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
         String d = null;
         String t = null;
         if (password != null) {
-            d =  new Date().getTime() + "";
+            d = new Date().getTime() + "";
             Blowfish blowfish = new Blowfish("00" + d);
             t = blowfish.encryptString(password);
         }
@@ -774,7 +785,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
                 state_finish.setSelected(false);
                 state_unconfirmed.setSelected(false);
                 state_all.setSelected(true);
-                sendResquestForServerAll(2,mCurrentPage);
+                sendResquestForServerAll(2, mCurrentPage);
             }
         });
     }
@@ -808,7 +819,7 @@ public class TaskActivity extends BaseActivity implements OnClickListener,Recogn
     /**
      * @注释: 带条件的调转
      */
-    public void sendResquestForServerAll(int handlerWhat,int mCurrentPage) {
+    public void sendResquestForServerAll(int handlerWhat, int mCurrentPage) {
         progressDialog.show();
         String url = Constants.getAppBaseUrl(context) + "common/datalist/data.action";
         Map<String, Object> mparams = new HashMap<String, Object>();

+ 1 - 20
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java

@@ -26,7 +26,6 @@ import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.audio.voicerecognition.JsonParser;
 import com.xzjmyk.pm.activity.audio.voicerecognition.VoiceToWord;
-import com.xzjmyk.pm.activity.bean.oa.OABean;
 import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SelectActivity;
@@ -165,25 +164,7 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
         isOutplan = getIntent().getBooleanExtra("isOutplan", false);
         int type = getIntent().getIntExtra("type", -1);
         if (type == -1) return;
-        if (type == 1) {
-            OABean bean = getIntent().getParcelableExtra("data");
-            if (bean == null) return;
-            vp_id = bean.getVp_id();
-            vp_code = bean.getVp_custcode();
-            cu_code = bean.getVp_custcode();
-            tv_date_start.setText(bean.getStartdate() == null ? "未填写" : bean.getStartdate());
-            tv_date_end.setText(bean.getEnddate() == null ? "未填写" : bean.getEnddate());
-            tv_customer_login.setText(bean.getClient() == null ? "未填写" : bean.getClient());
-            tv_linksman_login.setText(StringUtils.isEmpty(bean.getVp_contact()) ? "未填写" : bean.getVp_contact());
-            tv_address_login.setText(bean.getAddress() == null ? "未填写" : bean.getAddress());
-            tv_visit_theme.setText(bean.getRemark() == null ? "未填写" : bean.getRemark());
-            tv_visit_steps.setText(bean.getNichestep() == null ? "" : bean.getNichestep());
-//            tv_visit_type.setText(bean.get);
-            if (!StringUtils.isEmpty(bean.getVr_nichename()))
-                tv_relate_business.setText(bean.getVr_nichename());
-            if (!StringUtils.isEmpty(bean.getVr_nichecode()))
-                nichecode = bean.getVr_nichecode();
-        } else if (type == 2) {
+        if (type == 2) {
             String chche = getIntent().getStringExtra("data");
             JSONObject object = JSON.parseObject(chche);
             tv_date_start.setText(getTime(object, "vr_visittime", "vr_startdate"));

+ 9 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java

@@ -239,9 +239,15 @@ public class MissionActivity extends OABaseActivity implements View.OnClickListe
                         builder.setTitle(R.string.prompt_title).setMessage("你确定删除该外勤计划吗").setPositiveButton("确定", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialogInterface, int i) {
-                                adapter.getModels().remove(position);
-                                adapter.notifyItemRemoved(position);
-                                adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+                                try {
+                                    if (adapter == null || ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= position)
+                                        return;
+                                    adapter.getModels().remove(position);
+                                    adapter.notifyItemRemoved(position);
+                                    adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+                                } catch (Exception e) {
+
+                                }
                             }
                         }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
                             @Override

+ 64 - 208
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java

@@ -41,7 +41,6 @@ import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.bean.oa.OABean;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.DetailTaskActivity;
@@ -50,15 +49,19 @@ import com.xzjmyk.pm.activity.ui.erp.activity.TravelActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.WorkExtraActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.crm.VisitReportAddActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.form.DataFormDetailActivity;
-import com.xzjmyk.pm.activity.ui.erp.adapter.oa.OAListAdapter;
+import com.xzjmyk.pm.activity.ui.erp.adapter.oa.OAAdapter;
 import com.xzjmyk.pm.activity.ui.erp.fragment.CalendarFragmet;
 import com.xzjmyk.pm.activity.ui.erp.model.Employees;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.OAModel;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
+import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.oa.CommonInterface;
+import com.xzjmyk.pm.activity.ui.erp.util.oa.OAHttpUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskAddB2BActivity;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskAddErpActivity;
@@ -83,8 +86,6 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 import static com.alibaba.fastjson.JSON.parseObject;
 import static com.xzjmyk.pm.activity.view.crouton.Crouton.makeText;
@@ -154,10 +155,11 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     private boolean isMe = false;
     private boolean hasOther = true;
     private long lastTime = 0;
-    private JSONArray meArray;    //当月我的数组
-    private JSONArray otherArray; //当月我的下属的数组
+    private OAHttpUtil util = new OAHttpUtil();
+    private List<OAModel> meModels;
+    private List<OAModel> otherModels;
 
-    private OAListAdapter adapter; //当前列表的数据
+    private OAAdapter adapter; //当前列表的数据
     private PagerAdapter pagerAdapter;//当前Viewpager适配器
     private Date curDate;    //当前显示的日期  包含年月日信息
     private Set<Integer> meInt;     //我的任务
@@ -167,6 +169,10 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         @Override
         public void handleMessage(Message msg) {
             try {
+                if (mPullToRefreshScrollView.isRefreshing()) {
+                    ViewUtil.ToastMessage(OAActivity.this, "刷新成功", Style.holoGreenLight, 2000);
+                    mPullToRefreshScrollView.onRefreshComplete();
+                }
                 if (progressDialog != null && progressDialog.isShowing())
                     progressDialog.dismiss();
                 String message = (String) msg.getData().get("result");
@@ -178,35 +184,16 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                             emptyLayout.showEmpty();
                             return;
                         }
-                        JSONObject chche = null;
-                        meArray = new JSONArray();
-                        otherArray = new JSONArray();
-                        //处理我的
-                        if (jsonObject.containsKey("me")) {
-                            chche = jsonObject.getJSONObject("me");
-                            addJsonToArray(meArray, chche);
-                            meInt.clear();
-                            if (meArray != null && meArray.size() > 0) {
-                                meInt.addAll(getDay(meArray));
-                            }
-                        }
+                        meModels = util.getModelByJSON(jsonObject, "me", true);
+                        otherModels = util.getModelByJSON(jsonObject, "other", false);
+                        meInt = util.getTaskList(meModels);
+                        otherInt = util.getTaskList(otherModels);
                         //处理下属
-                        if (jsonObject.containsKey("other")) {
-                            chche = jsonObject.getJSONObject("other");
-                            addJsonToArray(otherArray, chche);
-                            otherInt.clear();
-                            if (otherArray != null && otherArray.size() > 0) {
-                                otherInt.addAll(getDay(otherArray));
-                            }
-                        } else {
+                        if (!jsonObject.containsKey("other")) {
                             hasOther = false;
                             chaneTAG(true);
                         }
                         loadSuccess();
-                        if (mPullToRefreshScrollView.isRefreshing()) {
-                            ViewUtil.ToastMessage(OAActivity.this, "刷新成功", Style.holoGreenLight, 2000);
-                            mPullToRefreshScrollView.onRefreshComplete();
-                        }
                         break;
                     case 0x12://获取下属列表
                         JSONArray array = JSON.parseObject(message).getJSONArray("datas");//获取到数据
@@ -248,6 +235,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                         break;
                 }
             } catch (Exception e) {
+                if (e != null)
+                    LogUtil.i("msg.what=" + msg.what + "  " + e.getMessage());
             }
         }
     };
@@ -258,21 +247,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     private boolean isB2b;
     private String workDailyAdd;
 
-    private Set<Integer> getDay(JSONArray array) {
-        JSONObject object = null;
-        Set<Integer> integers = new HashSet<>();
-        Calendar c = Calendar.getInstance();
-        for (int i = 0; i < array.size(); i++) {
-            object = array.getJSONObject(i);
-            long time = getTimeForObject(object);
-            if (time == 0) continue;
-            c.setTimeInMillis(time);
-            integers.add(c.get(Calendar.DAY_OF_MONTH));
-        }
-        return integers;
-    }
-
-
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.menu_add_icon, menu);
@@ -316,27 +290,20 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == 0x20) {
             loadNetData(TimeUtils.ym_format.format(curDate));
-        } else if (requestCode == 0x11 && resultCode == 0x11) {
+        } else if (requestCode == 0x11 && resultCode == 0x11) {//选择下属
             if (data == null) return;
             Employees entity = data.getParcelableExtra("data");
             if (entity == null) return;
             String otherName = entity.getEm_name();
-            if (!StringUtils.isEmpty(otherName)) {
-                JSONArray array = new JSONArray();
-                for (int i = 0; i < otherArray.size(); i++) {
-                    JSONObject object = otherArray.getJSONObject(i);
-                    String name = "," + getString(object, "handler") +
-                            getString(object, "recordman") +
-                            getString(object, "visitman") +
-                            getString(object, "mp_recorder") + ",";
-                    if (StringUtils.isEmpty(otherName)//没有选择下属
-                            || getIsDecorat(name, "," + otherName + ",")) {
-                        array.add(object);
-                    }
+            if (!StringUtils.isEmpty(otherName) && !ListUtils.isEmpty(otherModels)) {
+                List<OAModel> filterModels = new ArrayList<>();
+                for (OAModel e : otherModels) {
+                    if (StringUtils.isInclude(e.getHandler(), otherName))
+                        filterModels.add(e);
                 }
-                Set<Integer> aa = getDay(array);
-                setDateToListener(aa);
-                setAdapterBeans(array);
+                Set<Integer> filterTasks = util.getTaskList(filterModels);
+                setDateToListener(filterTasks);
+                setAdapterBeans(filterModels);
             }
         } else if (requestCode == 0x21) {
             loadNetData(TimeUtils.ym_format.format(curDate));
@@ -385,10 +352,15 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         oa_listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
-                JSONArray array = adapter.getArray();
-                JSONObject object = array.getJSONObject(i);
+                if (adapter == null || ListUtils.isEmpty(adapter.getModels()) || adapter.getModels().size() <= i)
+                    return;
+                OAModel e = adapter.getModels().get(i);
+                if (e == null || StringUtils.isEmpty(e.getJson()) || !OACheckUtil.validatorJson(e.getJson()))
+                    return;
+
+                JSONObject object = JSON.parseObject(e.getJson());
                 Intent intent = null;
-                if (adapter.isTask(object)) {
+                if (e.isTask()) {
                     if (isB2b)
                         intent = new Intent(ct, TaskDetailB2BActivity.class);
                     else intent = new Intent(ct, DetailTaskActivity.class);
@@ -410,17 +382,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                         intent.putExtra("tasktime", OACheckUtil.getJson2Text(object, "startdate"));//发起时间
                     }
                     startActivityForResult(intent, isMe ? 0x20 : 0x21);
-                } else if (adapter.isVisit(object)) {
-                    intent = new Intent(activity, VisitReportAddActivity.class);
-                    intent.putExtra("type", 1);
-                    String chche = object.containsKey("status") ? object.getString("status") == null ? "" : object.getString("status") : "";
-                    boolean me = (isMe && !"已拜访".equals(chche));
-                    intent.putExtra("isMe", me);
-                    intent.putExtra("isAgen", true);
-                    OABean bean = JSON.parseObject(object.toString(), OABean.class);
-                    intent.putExtra("data", bean);
-                    startActivityForResult(intent, isMe ? 0x20 : 0x21);
-                } else if (adapter.isVisitRecord(object)) {
+                } else if (e.isVisitRecord()) {
                     intent = new Intent(activity, VisitReportAddActivity.class);
                     intent.putExtra("type", 2);
                     String chche = object.containsKey("status") ? object.getString("status") == null ? "" : object.getString("status") : "";
@@ -429,8 +391,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                     intent.putExtra("isAgen", true);
                     intent.putExtra("data", object.toString());
                     startActivityForResult(intent, isMe ? 0x20 : 0x21);
-                } else if (adapter.isOutplan(object)) {
-                    if (outPlanClick(object)) {//外勤计划
+                } else if (e.isMission()) {
+                    if (util.isMissionOk( e)) {//外勤计划
                         intent = new Intent(activity, VisitReportAddActivity.class);
                         intent.putExtra("type", 3);
                         intent.putExtra("isOutplan", true);
@@ -470,10 +432,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         mPullToRefreshScrollView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ScrollView>() {
             @Override
             public void onPullDownToRefresh(PullToRefreshBase<ScrollView> refreshView) {
-//                meInt.clear();
-//                otherInt.clear();
-//                meArray = new JSONArray();
-//                otherArray = new JSONArray();
                 if (CommonUtil.isNetWorkConnected(getApplicationContext())) {
                     loadNetData(TimeUtils.ym_format.format(curDate));
                 } else {
@@ -501,6 +459,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         emptyLayout.setShowEmptyButton(false);
         emptyLayout.setShowErrorButton(false);
         emptyLayout.setEmptyViewRes(R.layout.oa_empty_list);
+        adapter = new OAAdapter(ct,util, new ArrayList<OAModel>());
+        oa_listview.setAdapter(adapter);
         listenerMap = new HashMap<>();
         curDate = new Date(System.currentTimeMillis());
         meInt = new HashSet<>();
@@ -515,8 +475,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
             title = "行政办公";
         }
         getSupportActionBar().setTitle(title);
-        adapter = new OAListAdapter(ct);
-        oa_listview.setAdapter(adapter);
+
         setDateTag(new Date());
         if (!isB2b)
             getDataByNet();
@@ -612,88 +571,43 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x12, null, null, "get");
     }
 
-    /**
-     * @param array 填充的对象
-     * @param chche
-     */
-    private void addJsonToArray(JSONArray array, JSONObject chche) {
-        if (chche.containsKey("schedule"))
-            array.addAll(addJsonToArray(chche, "schedule"));
-        if (chche.containsKey("task"))
-            array.addAll(addJsonToArray(chche, "task"));
-        if (chche.containsKey(isB2b ? "visitRecord" : "visitRecord"))
-            array.addAll(addJsonToArray(chche, isB2b ? "visitRecord" : "visitRecord"));
-        if (chche.containsKey(isB2b ? "outPlan" : "outplan"))
-            array.addAll(addJsonToArray(chche, isB2b ? "outPlan" : "outplan"));
-    }
-
-    /*添加json数据到数组里面   区别crm和oa*/
-    private JSONArray addJsonToArray(JSONObject chche, String key) {
-        JSONArray chcheArray = new JSONArray();
-        if (chche.containsKey(key) && chche.getJSONArray(key).size() > 0) {
-            JSONArray a = chche.getJSONArray(key);
-            if (isCrm) {
-                JSONObject o = null;
-                if (adapter == null)
-                    adapter = new OAListAdapter(ct);
-                for (int i = 0; i < a.size(); i++) {
-                    o = a.getJSONObject(i);
-                    if (adapter.isVisit(o) || adapter.isVisitRecord(o) || adapter.isOutplan(o))
-                        chcheArray.add(o);
-                }
-            } else {
-                chcheArray = a;
-            }
-        }
-        return chcheArray;
-    }
-
     private void loadSuccess() {//下拉成功后添加到适配器
         setAdapterBeans();
-        if (isMe) {
-            setDateToListener(meInt);
-        } else {
-            setDateToListener(otherInt);
-        }
+        setDateToListener(isMe ? meInt : otherInt);
+
     }
 
     private void setAdapterBeans() {
-        setAdapterBeans(isMe ? meArray : otherArray);
+        setAdapterBeans(isMe ? meModels : otherModels);
     }
 
-    private void setAdapterBeans(JSONArray array) {
-        if (array == null) return;
+    private void setAdapterBeans(List<OAModel> showModel) {
+        if (ListUtils.isEmpty(showModel)) return;
         int ok = 0, size = 0;
-        JSONObject object = null;
-        JSONArray chche = new JSONArray();
-        String time = null;
-        for (int i = 0; i < array.size(); i++) {
-            object = array.getJSONObject(i);
-            time = TimeUtils.f_long_2_str(getTimeForObject(object));
-            if (adapter.isOutplan(object) &&
-                    !StringUtils.isEmpty(adapter.getJSONString(object, "mpd_status"))
-                    && "已完成".equals(adapter.getJSONString(object, "mpd_status"))) {
-                continue;
-            }
-            if (!StringUtils.isEmpty(time) && getIsDecorat(time, TimeUtils.s_format.format(curDate))) {//该时间为选择时间
-                //判断是否为该下属
-                chche.add(object);
+        List<OAModel> filterModels = new ArrayList<>();
+        for (OAModel e : showModel) {
+            if (util.canShow(e, curDate)) {
                 size++;
-                if (isTaskOk(object))
+                filterModels.add(e);
+                if (util.isTaskOk(e))
                     ok++;
             }
         }
-        if (chche.size() <= 0) {
+
+        if (ListUtils.isEmpty(filterModels)) {
             emptyLayout.showEmpty();
         }
         CommonUtil.textSpanForStyle(all_task_num, "工作日历 " + size, size + "", getResources().getColor(R.color.orange_text));
         CommonUtil.textSpanForStyle(ok_task_num, "已完成 " + ok, ok + "", getResources().getColor(R.color.orange_text));
         CommonUtil.textSpanForStyle(uok_task_num, "未完成 " + (size - ok), (size - ok) + "", getResources().getColor(R.color.orange_text));
-
         //当前日期小于等于选中日期
-        adapter.setArray(chche, isMe, isToday());
-        adapter.notifyDataSetChanged();
-
+        if (adapter == null) {
+            adapter = new OAAdapter(ct,util, filterModels);
+            oa_listview.setAdapter(adapter);
+        } else {
+            adapter.setModels(filterModels);
+            adapter.notifyDataSetChanged();
+        }
     }
 
 
@@ -710,36 +624,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         return TimeUtils.f_str_2_long(OACheckUtil.getJson2Text(object, "startdate", "vr_visittime", "mpd_arrivedate"));
     }
 
-    /**
-     * 用于判断该任务是否已经完成
-     *
-     * @param object
-     * @return
-     */
-    private boolean isTaskOk(JSONObject object) {
-        if (!object.containsKey("status") || StringUtils.isEmpty(object.getString("status"))) {
-            if ((adapter != null && adapter.isVisitRecord(object)) ||//是拜访报告
-                    isOutOk(object)) return true;
-            else return false;
-        } else if ("已拜访".equals(object.getString("status")) || "已完成".equals(object.getString("status")))
-            return true;
-        return false;
-    }
-
-    private boolean isOutOk(JSONObject object) {
-        if (!adapter.isOutplan(object)) return false;
-        String outdate = object.getString("mpd_outdate");
-        String status = adapter.getJSONString(object, "mpd_status");
-        if (StringUtils.isEmpty(status)) {
-            if (isToday()) return false;
-            else if (StringUtils.isEmpty(outdate)) return false;
-            else return true;
-        } else if ("签退".equals(status)) {
-            return true;
-        }
-        return false;
-
-    }
 
     //弹出菜单
     private PopupWindow popupWindow = null;
@@ -979,6 +863,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     }
 
     public void setDateToListener(Set<Integer> in) {
+        LogUtil.i("in+==" + in);
         if (listenerMap.containsKey(TimeUtils.ym_format.format(curDate)) && listenerMap.get(TimeUtils.ym_format.format(curDate)) != null)
             listenerMap.get(TimeUtils.ym_format.format(curDate)).onChange(in);
     }
@@ -1026,28 +911,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         setAdapterBeans();
     }
 
-    private boolean outPlanClick(JSONObject object) {
-        if (isToday()) {
-            String status = adapter.getJSONString(object, "mpd_status");
-            if ("签退".equals(status)) return true;
-            else return false;
-        } else {
-            String actdate = getTime(object, "mpd_actdate", "mp_firsttime");
-            String outdate = getTime(object, "mpd_outdate", "mp_lasttime");
-            if (StringUtils.isEmpty(actdate) || StringUtils.isEmpty(outdate))
-                return false;
-            else return true;
-        }
-    }
 
-    private String getTime(JSONObject o, String... keys) {
-        if (isB2b) {
-            long time = OACheckUtil.getJsonLong(o, keys);
-            if (time == 0) return "";
-            return TimeUtils.f_long_2_str(time);
-        } else
-            return OACheckUtil.getJson2Text(o, keys);
-    }
+
 
     private boolean isToday() {
         boolean isToday = TimeUtils.s_long_2_str(System.currentTimeMillis()).
@@ -1055,12 +920,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         return isToday;
     }
 
-    /*判断*/
-    private boolean getIsDecorat(String text, String chche) {
-        Pattern p = Pattern.compile(chche);//遍历对象
-        Matcher m = p.matcher(text);//遍历源
-        return m.find();
-    }
 
     private Map<String, OnTaskChangeListener> listenerMap;
 
@@ -1095,9 +954,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         return super.dispatchTouchEvent(ev);
     }
 
-    private String getString(JSONObject object, String key) {
-        return object == null ? "" : (object.containsKey(key) ? object.getString(key) : "");
-    }
 
     public interface OnTaskChangeListener {
         void onChange(Set<Integer> in);

+ 2 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAMainActivity.java

@@ -30,6 +30,7 @@ import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IOAView;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.LogUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.oa.OAHttpUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.ui.erp.view.calender.OnCalendarClickListener;
 import com.xzjmyk.pm.activity.ui.erp.view.calender.month.MonthCalendarView;
@@ -283,7 +284,7 @@ public class OAMainActivity extends OABaseActivity implements View.OnClickListen
             emptyLayout.showEmpty();
         } else {
             if (mAdapter == null) {
-                mAdapter = new OAAdapter(ct, models);
+                mAdapter = new OAAdapter(ct, new OAHttpUtil(),models);
                 listview.setAdapter(mAdapter);
             } else {
                 mAdapter.setModels(models);

+ 8 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectCollisionActivity.java

@@ -2,7 +2,6 @@ package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
 import android.os.Bundle;
 import android.text.Editable;
-import android.util.Log;
 import android.view.View;
 import android.widget.AdapterView;
 import android.widget.CheckBox;
@@ -126,7 +125,6 @@ public class SelectCollisionActivity extends OABaseActivity implements ISelectAc
         all_sure_cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
-                Log.i("gongpengming", "isClickCb=" + isClickCb);
                 if (isClickCb) {
                     if (adapter == null) return;
                     presenter.changeChecked(b, adapter.getListData());
@@ -166,13 +164,6 @@ public class SelectCollisionActivity extends OABaseActivity implements ISelectAc
         //TODO 出现显示异常
         adapter = new SelectCollisionAdapter(models);
         listView.setAdapter(adapter);
-//        if (adapter == null) {
-//            adapter = new SelectCollisionAdapter(models);
-//            listView.setAdapter(adapter);
-//        } else {
-//            adapter.setListData(models);
-//            adapter.notifyDataSetChanged();
-//        }
         if (ListUtils.isEmpty(models)) {
             emptyLayout.showEmpty();
             sidebar.setVisibility(View.GONE);
@@ -181,6 +172,14 @@ public class SelectCollisionActivity extends OABaseActivity implements ISelectAc
             sidebar.setVisibility(View.VISIBLE);
             select_rl.setVisibility(View.VISIBLE);
         }
+//        if (adapter == null) {
+//            adapter = new SelectCollisionAdapter(models);
+//            listView.setAdapter(adapter);
+//        } else {
+//            //由于item是可变高度item,所以出现搜索后的item总高度小于前面的对应数量的item总高度,出现显示异常
+//            adapter.setListData(models);
+//            adapter.notifyDataSetChanged();
+//        }
     }
 
 

+ 5 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/OAAdapter.java

@@ -11,6 +11,7 @@ import android.widget.TextView;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.erp.model.oa.OAModel;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.oa.OAHttpUtil;
 
 import java.util.List;
 
@@ -21,9 +22,11 @@ import java.util.List;
 public class OAAdapter extends BaseAdapter {
     private Context ct;
     private List<OAModel> models;
+    private OAHttpUtil util=null;
 
-    public OAAdapter(Context ct, List<OAModel> models) {
+    public OAAdapter(Context ct,OAHttpUtil util, List<OAModel> models) {
         this.ct = ct;
+        this.util = util;
         this.models = models;
     }
 
@@ -89,7 +92,7 @@ public class OAAdapter extends BaseAdapter {
         } else if (model.isMission()) {
             int recId = -1;
             handler += model.getTime2Str("HH:mm");
-            if (status.equals("签退") || (model.isTadayBefore() && model.getStartdate() > 0 && model.getEnddate() > 0))
+            if (util.isMissionOk(model))
                 recId = R.drawable.mission_plan_ok;
             else recId = R.drawable.mission_plan_lose;
             if (recId != -1) holder.status_img.setImageResource(recId);

+ 8 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/SelectCollisionAdapter.java

@@ -10,22 +10,14 @@ import android.widget.TextView;
 
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
 import com.xzjmyk.pm.activity.helper.AvatarHelper;
 import com.xzjmyk.pm.activity.sortlist.BaseSortModel;
-import com.xzjmyk.pm.activity.bean.oa.SelectEmUser;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
 import java.util.List;
 
-import static com.xzjmyk.pm.activity.R.id.cb;
-import static com.xzjmyk.pm.activity.R.id.flight_tv;
-import static com.xzjmyk.pm.activity.R.id.head_img;
-import static com.xzjmyk.pm.activity.R.id.name_tv;
-import static com.xzjmyk.pm.activity.R.id.sub_tv;
-import static com.xzjmyk.pm.activity.R.id.tag_tv;
-import static com.xzjmyk.pm.activity.R.id.tag_view;
-
 /**
  * Created by Bitliker on 2017/2/14.
  */
@@ -67,13 +59,13 @@ public class SelectCollisionAdapter extends BaseAdapter {
             holder = new ViewHolder();
             convertView = LayoutInflater.from(MyApplication.getInstance()).
                     inflate(R.layout.item_select_active, parent, false);
-            holder.tag_tv = (TextView) convertView.findViewById(tag_tv);
-            holder.name_tv = (TextView) convertView.findViewById(name_tv);
-            holder.sub_tv = (TextView) convertView.findViewById(sub_tv);
-            holder.flight_tv = (TextView) convertView.findViewById(flight_tv);
-            holder.cb = (CheckBox) convertView.findViewById(cb);
-            holder.head_img = (ImageView) convertView.findViewById(head_img);
-            holder.tag_view = convertView.findViewById(tag_view);
+            holder.tag_tv = (TextView) convertView.findViewById(R.id.tag_tv);
+            holder.name_tv = (TextView) convertView.findViewById(R.id.name_tv);
+            holder.sub_tv = (TextView) convertView.findViewById(R.id.sub_tv);
+            holder.flight_tv = (TextView) convertView.findViewById(R.id.flight_tv);
+            holder.cb = (CheckBox) convertView.findViewById(R.id.cb);
+            holder.head_img = (ImageView) convertView.findViewById(R.id.head_img);
+            holder.tag_view = convertView.findViewById(R.id.tag_view);
             convertView.setTag(holder);
         } else {
             holder = (ViewHolder) convertView.getTag();

+ 14 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/OAModel.java

@@ -132,7 +132,7 @@ public class OAModel {
     }
 
     public String getTitle2Remark() {
-        return getTitle() + "  " + getRemark();
+        return getTitle() + (isTask() ? "" : "  " + getRemark());
     }
 
     public String getStatus() {
@@ -144,8 +144,9 @@ public class OAModel {
         return isTask() ? getTime2Str("yyyy-MM-dd HH:mm") : getAddress();
     }
 
+    /*唯一判断是否当天时间以前的*/
     public boolean isTadayBefore() {
-        return true;
+        return getFilterTime().compareTo(TimeUtils.s_long_2_str(System.currentTimeMillis())) < 0;
     }
 
 
@@ -157,7 +158,11 @@ public class OAModel {
 
     public int getDay() {
         Calendar c = Calendar.getInstance();
-        c.setTimeInMillis(getTime(startdate, enddate, recorddate));
+        long time = getTime(startdate, recorddate, enddate);
+        if (time == 0) {
+            return -1;
+        }
+        c.setTimeInMillis(time);
         return c.get(Calendar.DAY_OF_MONTH);
     }
 
@@ -171,6 +176,12 @@ public class OAModel {
         return builder.toString();
     }
 
+    /*获取显示时间,yyyy-MM-dd*/
+    public String getFilterTime() {
+        long time = startdate > 0 ? startdate : (recorddate > 0 ? recorddate : enddate);
+        return TimeUtils.s_long_2_str(time);
+    }
+
     private long getTime(long... times) {
         if (times == null) return 0;
         for (long e : times) if (e != 0) return e;

+ 60 - 12
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/oa/OAHttpUtil.java

@@ -7,9 +7,14 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
+import com.xzjmyk.pm.activity.wxapi.ApiPlatform;
+import com.xzjmyk.pm.activity.wxapi.ApiUtils;
 
 import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 
 /**
@@ -17,14 +22,27 @@ import java.util.List;
  */
 
 public class OAHttpUtil {
+    /*获取任务列表*/
+    public Set<Integer> getTaskList(List<OAModel> models) {
+        Set<Integer> taskList = new HashSet<>();
+        if (ListUtils.isEmpty(models)) return taskList;
+        for (OAModel e : models) {
+            int day = e.getDay();
+            if (day != -1)
+                taskList.add(day);
+        }
+        return taskList;
+    }
 
+    /*获取OAmodel列表*/
     public List<OAModel> getModelByJSON(JSONObject object, String key, boolean isMe) throws Exception {
         List<OAModel> models = new ArrayList<>();
         if (StringUtils.isEmpty(key)) return models;
         JSONObject o = OACheckUtil.getJSONObject(object, key);
+        if (o == null) return models;
         models.addAll(getModelByJSON(o, isMe, OAModel.OA_TYPE_TASK, "schedule", "task"));//添加任务日程
         models.addAll(getModelByJSON(o, isMe, OAModel.OA_TYPE_MISSION, "outPlan", "outplan"));//外勤计划
-        models.addAll(getModelByJSON(o, isMe, OAModel.OA_TYPE_RECORD, "visitRecord", "visitRecord"));//拜访报告
+        models.addAll(getModelByJSON(o, isMe, OAModel.OA_TYPE_RECORD, "visitRecord"));//拜访报告
         return models;
     }
 
@@ -41,16 +59,16 @@ public class OAHttpUtil {
             model = new OAModel();
             model.setType(type);
             model.setMe(isMe);
-            model.setStartdate(getTimeMillis(o, "startdate", "mpd_actdate"));
-            model.setEnddate(getTimeMillis(o, "enddate", "mpd_outdate"));
+            model.setStartdate(getTimeMillis(o, "startdate", "mpd_actdate", "mp_firsttime"));
+            model.setEnddate(getTimeMillis(o, "enddate", "mpd_outdate", "mp_lasttime"));
             //录入时间作为选择时间,如果没有录入,使用实际到达时间或是预计到达时间或开始时间
-            model.setRecorddate(getTimeMillis(o, "recorddate", "mpd_arrivedate", "startdate", "mpd_actdate"));
-            model.setTitle(OACheckUtil.getJson2Text(o, "mpd_company", "name", "taskname", "custname"));
-            model.setRemark(OACheckUtil.getJson2Text(o, "mpd_remark", "detail", "description"));
-            model.setAddress(OACheckUtil.getJson2Text(o, "mpd_address", "address"));
-            model.setRecorder(OACheckUtil.getJson2Text(o, "recorder", "mp_recorder"));
+            model.setRecorddate(getTimeMillis(o, "recorddate", "vr_recorddate", "vr_date", "mpd_arrivedate", "startdate", "mpd_actdate"));
+            model.setTitle(OACheckUtil.getJson2Text(o, "mpd_company", "name", "vr_cuname", "taskname", "custname"));
+            model.setRemark(OACheckUtil.getJson2Text(o, "mpd_remark", "vr_detail", "detail", "description"));
+            model.setAddress(OACheckUtil.getJson2Text(o, "vr_cuaddress", "mpd_address", "address"));
+            model.setRecorder(OACheckUtil.getJson2Text(o, "vr_emname", "recorder", "mp_recorder"));
             //外勤计划的实行人就是录入人
-            model.setHandler(OACheckUtil.getJson2Text(o, "handler", "visitman", "doman"));
+            model.setHandler(OACheckUtil.getJson2Text(o, "handler", "visitman", "vr_emname", "doman"));
             model.setStatus(OACheckUtil.getJson2Text(o, "mpd_status", "status"));
             model.setJson(o.toString());
             models.add(model);
@@ -59,9 +77,39 @@ public class OAHttpUtil {
     }
 
     private long getTimeMillis(JSONObject object, String... keys) {
-        String timeStr = OACheckUtil.getJson2Text(object, keys);
-        if (StringUtils.isEmpty(timeStr))
+        if (ApiUtils.getApiModel() instanceof ApiPlatform) {
             return OACheckUtil.getJsonLong(object, keys);
-        else return TimeUtils.f_str_2_long(timeStr);
+        }
+        String timeStr = OACheckUtil.getJson2Text(object, keys);
+        if (!StringUtils.isEmpty(timeStr))
+            return TimeUtils.f_str_2_long(timeStr);
+        return 0;
+    }
+
+    public boolean canShow(OAModel e, Date curDate) {
+        if (e.isMission() && e.getStatus().equals("已完成"))
+            return false;
+        else {
+            return StringUtils.isInclude(e.getFilterTime(), TimeUtils.s_format.format(curDate));
+        }
+
+    }
+
+    public boolean isTaskOk(OAModel e) {
+        if ("已拜访".equals(e.getStatus()) || "已完成".equals(e.getStatus()))
+            return true;
+        else if (e.isMission() && e.isTadayBefore() && e.getStartdate() > 0 && e.getEnddate() > 0)
+            return true;
+        return false;
+    }
+
+    public boolean isMissionOk(OAModel e) {
+        if (!e.isTadayBefore() && e.getStartdate() > 0 && e.getEnddate() > 0 && e.getStartdate() != e.getEnddate()) {
+            return true;
+        } else {
+            String status = e.getStatus();
+            if ("签退".equals(status)) return true;
+            else return false;
+        }
     }
 }

+ 9 - 9
WeiChat/src/main/res/layout/activity_select_active.xml

@@ -29,15 +29,14 @@
 
         <ImageView
             android:id="@+id/voice_search_iv"
-            android:background="@drawable/btn_yuyin_nor"
-            android:visibility="visible"
-            android:layout_marginRight="25dp"
-            android:layout_alignParentRight="true"
-            android:layout_alignRight="@+id/search_edit"
             android:layout_width="20dp"
             android:layout_height="20dp"
+            android:layout_alignParentRight="true"
+            android:layout_alignRight="@+id/search_edit"
+            android:layout_marginRight="25dp"
             android:layout_marginTop="8dp"
-            />
+            android:background="@drawable/btn_yuyin_nor"
+            android:visibility="visible" />
     </RelativeLayout>
 
     <LinearLayout
@@ -58,11 +57,12 @@
     <ListView
         android:id="@+id/recyclerview"
         android:layout_width="match_parent"
-        android:divider="@color/item_line"
-        android:dividerHeight="2px"
         android:layout_height="match_parent"
         android:layout_above="@id/include_tag"
-        android:layout_below="@+id/seach_top" />
+        android:layout_below="@+id/seach_top"
+        android:divider="@color/item_line"
+        android:dividerHeight="2px"
+        android:smoothScrollbar="false" />
 
     <TextView
         android:id="@+id/text_dialog"

+ 1 - 0
WeiChat/src/main/res/layout/item_oa_list.xml

@@ -36,6 +36,7 @@
             android:layout_height="wrap_content"
             android:layout_toRightOf="@+id/title_tv"
             android:ellipsize="end"
+            android:gravity="right"
             android:lines="1" />
 
     </LinearLayout>