Bitliker 9 éve
szülő
commit
1dde80b599

+ 21 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -10,6 +10,7 @@ import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
 import com.baidu.location.Poi;
 import com.xzjmyk.pm.activity.sp.LocationSp;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.util.List;
 
@@ -24,7 +25,6 @@ public class BdLocationHelper {
     private String mCityName;// 城市
     private String mDistrictName;// 街道
     private boolean isLocationUpdate;// 本次程序启动后,位置有没有成功更新一次
-
     private LocationClient mLocationClient = null;
     private int mFaildCount = 0;
     private List<Poi> pois;
@@ -51,7 +51,7 @@ public class BdLocationHelper {
         option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
         option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
         option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
-        option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
+        option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
         option.setNeedDeviceDirect(false);
         mLocationClient.setLocOption(option);
         requestLocation();//重新定位
@@ -93,9 +93,14 @@ public class BdLocationHelper {
                 if (mFaildCount > 3) {// 停止定位
                     mLocationClient.stop();
                 }
+                if (listener != null) {
+                    listener.result(false);
+                }
                 return;
             }
-            Log.i("gongpengming", "进来的");
+            if (listener != null) {
+                listener.result(true);
+            }
             // 百度定位成功
             mLongitude = location.getLongitude();
             mLatitude = location.getLatitude();
@@ -178,5 +183,18 @@ public class BdLocationHelper {
         return mLatitude != 0 && mLongitude != 0;
     }
 
+    private OnBaiduResultListener listener = null;
+
+    public OnBaiduResultListener getListener() {
+        return listener;
+    }
+
+    public void setListener(OnBaiduResultListener listener) {
+        this.listener = listener;
+    }
+
+    public interface OnBaiduResultListener {
+        void result(boolean isOk);
+    }
 
 }

+ 8 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/base/EasyFragment.java

@@ -1,6 +1,6 @@
 package com.xzjmyk.pm.activity.ui.base;
 
-import android.app.Activity;
+import android.content.Context;
 import android.os.Bundle;
 import android.support.v4.app.Fragment;
 import android.util.Log;
@@ -17,7 +17,8 @@ import com.lidroid.xutils.ViewUtils;
 public abstract class EasyFragment extends Fragment {
 
     private View mRootView;
-
+    protected  boolean isRunable;
+    protected Context ct;
     /**
      * 是否缓存视图
      *
@@ -83,9 +84,10 @@ public abstract class EasyFragment extends Fragment {
     }
 
     @Override
-    public void onAttach(Activity activity) {
-        super.onAttach(activity);
-        Log.d("roamer", TAG() + " onAttach");
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        ct=context;
+        isRunable=true;
     }
 
     @Override
@@ -121,6 +123,7 @@ public abstract class EasyFragment extends Fragment {
     @Override
     public void onStop() {
         super.onStop();
+        isRunable=false;
         Log.d("roamer", TAG() + " onStop");
     }
 

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

@@ -13,6 +13,7 @@ import android.widget.TextView;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.andreabaccega.widget.FormEditText;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
@@ -33,9 +34,6 @@ import com.xzjmyk.pm.activity.util.DateFormatUtil;
 import com.xzjmyk.pm.activity.util.StringUtils;
 import com.xzjmyk.pm.activity.view.wheel.DateTimePicker;
 
-import org.json.JSONException;
-import org.json.JSONObject;
-
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.Date;
@@ -71,7 +69,6 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
     @ViewInject(R.id.tv_relate_business)
     private FormEditText tv_relate_business;
     private int vp_id = -1;
-    private int type = -1;
 
     private int mVrId;
 
@@ -191,14 +188,8 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                     break;
                 case GET_VR_ID:
                     String resultStr = msg.getData().getString("result");
-                    try {
-                        JSONObject resultJsonObject = new JSONObject(resultStr);
-                        if (resultJsonObject != null && resultJsonObject.getBoolean("success")) {
-                            mVrId = resultJsonObject.getInt("id");
-                        }
-                    } catch (JSONException e) {
-                        e.printStackTrace();
-                    }
+                    JSONObject resultJsonObject = JSON.parseObject(resultStr);
+                    mVrId = resultJsonObject.getInteger("id");
                     break;
                 case LOAD_JIEDUAN:
                     progressDialog.dismiss();
@@ -269,13 +260,10 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                             tv_date_end.getText().toString() +//结束时间
                             "\"\n" +
                             "}";
-
-
         } else {
             return;
         }
         progressDialog.show();
-
         String url = Constants.getAppBaseUrl(ct) + "crm/customermgr/saveVisitRecord.action";
         Map<String, Object> params = new HashMap<>();
         params.put("formStore", formStore);
@@ -332,14 +320,16 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
                 break;
             case R.id.tv_relate_business:
                 Intent data3 = new Intent(ct, SelectListActivity.class);
-                data3.putExtra("type", SelectListActivity.VISIT_JIE_DUAN);
-                data3.putExtra("title", "当前阶段");
+                data3.putExtra("type", SelectListActivity.VISIT_NICHECODES);
+                data3.putExtra("title", "关联商机");
                 startActivityForResult(data3, 0x24);
 //                loadJieDuan();
                 break;
         }
     }
 
+    private String nichecode;//商机编号
+
     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (data == null) return;
@@ -357,6 +347,16 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             SelectListBean b = data.getParcelableExtra("data");
             if (b == null || StringUtils.isEmpty(b.getObject())) return;
             tv_visit_steps.setText(b.getName());
+        } else if (requestCode == 0x24 && resultCode == 0x20) {
+            SelectListBean b = data.getParcelableExtra("data");
+            if (b == null || StringUtils.isEmpty(b.getObject())) return;
+            tv_relate_business.setText(b.getName());
+            JsonValidator validator = new JsonValidator();
+            if (validator.validate(b.getObject())) {
+                JSONObject object = JSON.parseObject(b.getObject());
+                nichecode = object.getString("code");
+                Log.i("gongpengming", "nichecode=" + (StringUtils.isEmpty(nichecode) ? "空的" : nichecode));
+            }
         }
     }
 
@@ -423,7 +423,8 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
         //cu_code客户编号
         param.put("cu_nichestep", tv_visit_steps.getText().toString());
         param.put("cu_code", vp_code);
-        param.put("bc_nichecode", tv_relate_business.getText().toString());
+//        param.put("bc_nichecode", tv_relate_business.getText().toString());
+        param.put("bc_nichecode", StringUtils.isEmpty(nichecode) ? "" : nichecode);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
         com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.httpSendRequest(this, url, param, mHandler, headers, 0x16, null, null, "post");

+ 13 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectListActivity.java

@@ -26,6 +26,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -40,12 +41,12 @@ public class SelectListActivity extends BaseActivity {
     private ListView recycler;
     private ListAdapter adapter;
     private List<SelectListBean> data = null;
-
+    private EmptyLayout emptyLayout;
     public static final int ADD_MEET_YAG_TYPE = 0x11;//添加会议--标签
     public static final int ADD_TASK_PRIORITY = 0x12;//添加任务--紧急
     public static final int VISIT_REPORT_PLAN_CLIENT = 0x13;//拜访计划客户列表
     public static final int VISIT_JIE_DUAN = 0x14;//拜访计划客户列表
-    public static final int VISIT_NICHECODES = 0x15;//拜访计划客户列表
+    public static final int VISIT_NICHECODES = 0x15;//关联商机
 
     private boolean isSingle = true;//是否单选
     private int type = -1;
@@ -56,6 +57,8 @@ public class SelectListActivity extends BaseActivity {
             if (progressDialog.isShowing()) {
                 progressDialog.dismiss();
             }
+            if (data == null) data = new ArrayList<>();
+            else data.clear();
             String message = null;
             JSONObject object = null;
             JSONArray array = null;
@@ -65,8 +68,6 @@ public class SelectListActivity extends BaseActivity {
                     message = msg.getData().getString("result");
                     if (!JSON.parseObject(message).containsKey("customers")) return;
                     array = JSON.parseObject(message).getJSONArray("customers");
-                    if (data == null) data = new ArrayList<>();
-                    else data.clear();
                     for (int i = 0; i < array.size(); i++) {
                         object = array.getJSONObject(i);
                         b = new SelectListBean();
@@ -74,7 +75,6 @@ public class SelectListActivity extends BaseActivity {
                         b.setObject(object.toString());
                         data.add(b);
                     }
-                    adapter.notifyDataSetChanged();
                     break;
                 case VISIT_JIE_DUAN:
                     message = msg.getData().getString("result");
@@ -82,8 +82,6 @@ public class SelectListActivity extends BaseActivity {
                             JSON.parseObject(message).containsKey("success") || JSON.parseObject(message).getBoolean("success")
                             && JSON.parseObject(message).containsKey("stages")) {
                         array = JSON.parseObject(message).getJSONArray("stages");
-                        if (data == null) data = new ArrayList<>();
-                        else data.clear();
                         for (int i = 0; i < array.size(); i++) {
                             object = array.getJSONObject(i);
                             b = new SelectListBean();
@@ -91,8 +89,8 @@ public class SelectListActivity extends BaseActivity {
                             b.setObject(object.toString());
                             data.add(b);
                         }
-                        adapter.notifyDataSetChanged();
                     }
+
                     break;
                 case VISIT_NICHECODES:
                     message = msg.getData().getString("result");
@@ -100,8 +98,6 @@ public class SelectListActivity extends BaseActivity {
                             JSON.parseObject(message).containsKey("success") || JSON.parseObject(message).getBoolean("success")
                             && JSON.parseObject(message).containsKey("stages")) {
                         array = JSON.parseObject(message).getJSONArray("businesschance");
-                        if (data == null) data = new ArrayList<>();
-                        else data.clear();
                         for (int i = 0; i < array.size(); i++) {
                             object = array.getJSONObject(i);
                             b = new SelectListBean();
@@ -109,10 +105,12 @@ public class SelectListActivity extends BaseActivity {
                             b.setObject(object.toString());
                             data.add(b);
                         }
-                        adapter.notifyDataSetChanged();
                     }
                     break;
             }
+            if (data.size() > 0)
+                adapter.notifyDataSetChanged();
+            else emptyLayout.showEmpty();
         }
     };
 
@@ -182,6 +180,10 @@ public class SelectListActivity extends BaseActivity {
 
     private void init() {
         recycler = (ListView) findViewById(R.id.recycler);
+        emptyLayout = new EmptyLayout(ct, recycler);
+        emptyLayout.setShowLoadingButton(false);
+        emptyLayout.setShowEmptyButton(false);
+        emptyLayout.setShowErrorButton(false);
         adapter = new ListAdapter();
         recycler.setAdapter(adapter);
     }

+ 46 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java

@@ -10,6 +10,7 @@ import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.text.Html;
 import android.text.Spanned;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.widget.ImageView;
@@ -21,6 +22,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.SigninBean;
@@ -34,6 +36,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.FlexJsonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -89,8 +92,10 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     private String code;//账号员工编号
     private boolean isToday = true;
     private boolean isSignining = false;
+    private boolean onActivityResult = false;//返回
     private long time = System.currentTimeMillis();
     private long signinTime = -1;
+    BdLocationHelper locationHelper = null;//
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -136,7 +141,6 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     break;
                 case 0x13:
                     //签到成功
-                    isSignining = false;
                     if (JSON.parseObject(message).containsKey("success") && JSON.parseObject(message).getBoolean("success"))
                         signinOK();
                     else
@@ -167,7 +171,11 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     public void onAttach(Context ct) {
         super.onAttach(ct);
         this.ct = (BaseActivity) ct;
+    }
 
+    @Override
+    public void onStop() {
+        super.onStop();
     }
 
     @Override
@@ -179,6 +187,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (data == null) return;
         if (requestCode == 0x14 && resultCode == LocationMapActivity.REQUCODE) {
+            onActivityResult = true;
             PoiInfo poi = data.getParcelableExtra(LocationMapActivity.REQUESTNAME);
             if (poi == null) return;
             loaction = poi.name == null ? "" : poi.name;
@@ -232,6 +241,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         back = (ImageView) view.findViewById(R.id.back);
         title = (TextView) view.findViewById(R.id.title);
         bar.setCustomView(view);
+        locationHelper = MyApplication.getInstance().getBdLocationHelper();//获取对象
         init();
         initView();
         listener();
@@ -275,12 +285,40 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     }
 
     private void init() {
+        ThreadUtil.getInstance().addTask(new Runnable() {
+            @Override
+            public void run() {
+                try {
+                    while (isRunable) {
+                        locationHelper.requestLocation();
+                        Thread.sleep(3000);
+                    }
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
+                }
+            }
+        });
+        setBaiduLocation();
+        locationHelper.setListener(new BdLocationHelper.OnBaiduResultListener() {
+            @Override
+            public void result(boolean isOk) {
+                Log.i("gongpengming", "gongepngming");
+                setBaiduLocation();
+            }
+        });
+    }
+
+    private void setBaiduLocation() {
+        if (onActivityResult) return;
         longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
         latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
         loaction = MyApplication.getInstance().getBdLocationHelper().getName();
         addr = MyApplication.getInstance().getBdLocationHelper().getAddress();
+        unoffice_mm.setText(setDistance());
+        office_addr.setText(Html.fromHtml("<font color=\'#575757\'>当前位置  " + "</font><font color=\'#000000\'>" + loaction + "</font>"));
     }
 
+
     private void initView() {
         title.setText(TimeUtils.day_long_2_str(System.currentTimeMillis()) + "  " + TimeUtils.getWeek(System.currentTimeMillis()));
         listview.setLayoutManager(new LinearLayoutManager(ct));
@@ -310,6 +348,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     private boolean isPlay() {
         if (isSignining) {
+            Crouton.makeText(ct, "请不要频繁打卡");
             return false;
         }
         if (companyDistance == -1) {
@@ -351,6 +390,12 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     //签到成功
     private void signinOK() {
+        handler.postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                isSignining = false;
+            }
+        }, 5000);
         ArrayList<Bean> beans = getDataByAdapter();
         String time = TimeUtils.long2str(signinTime == -1 ? System.currentTimeMillis() : selectTime, "HH:mm");
         for (int i = 0; i < beans.size(); i++) {

+ 24 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/tool/ThreadUtil.java

@@ -0,0 +1,24 @@
+package com.xzjmyk.pm.activity.ui.tool;
+
+/**
+ * 线程抽象类,所有线程在这里进行,防止修改时候改动代码过多 复杂
+ * Created by pengminggong on 2016/9/23.
+ */
+public class ThreadUtil {
+    private static ThreadUtil instance = null;
+
+    public static ThreadUtil getInstance() {
+        if (instance == null) {
+            synchronized (ThreadUtil.class) {
+                instance = new ThreadUtil();
+            }
+        }
+        return instance;
+    }
+
+    //普通线程
+    public void addTask(Runnable runnable) {
+        ThreadPool.getThreadPool().addTask(runnable);//暂时的线程开启方式
+    }
+
+}