Browse Source

修改自动外勤和自动打卡

RaoMeng 9 years ago
parent
commit
87389641bc

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/AppConfig.java

@@ -9,7 +9,7 @@ import android.util.Log;
 import com.xzjmyk.pm.activity.bean.ConfigBean;
 
 public class AppConfig {
-    public static final boolean COMPANY = true;//不可以乱动,调试接口
+    public static final boolean COMPANY = false;//不可以乱动,调试接口
     public static final boolean IS_MISSION = true;//是否自动外勤
     public static final String TAG = "roamer";
     public static final boolean DEBUG = true;

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

@@ -218,6 +218,9 @@ public class BdLocationHelper {
         return locationEntity == null ? "" : locationEntity.getDistrict();
     }
 
+    public  boolean locationOk(){
+        return locationEntity == null ? false : locationEntity.isLocationOk();
+    }
     public boolean isLocationUpdate() {
         return true;
     }

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

@@ -13,6 +13,7 @@ import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
 
+import com.afollestad.materialdialogs.MaterialDialog;
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.baidu.mapapi.search.route.DrivingRouteLine;
@@ -20,6 +21,7 @@ import com.baidu.mapapi.search.route.DrivingRouteResult;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.AppConfig;
+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.SelectBean;
@@ -51,14 +53,11 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
     private MissionAdapter adapter;
     private int flag;
     private boolean adminStatus;
-
+    private boolean locationOk = false;
     private BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (intent != null && !StringUtils.isEmpty(intent.getAction()) &&
-                    "error_bdlocation".equals(intent.getAction())) {
-                Crouton.showToast(MissionActivity.this, "定位失败,请检查定位权限", R.color.load_warning);
-            }
+            locationOk = MyApplication.getInstance().getBdLocationHelper().locationOk();
         }
     };
 
@@ -68,7 +67,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         setContentView(R.layout.activity_mission);
         ViewUtils.inject(this);
         IntentFilter filter = new IntentFilter();
-        filter.addAction("error_bdlocation");
+        filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
         registerReceiver(receiver, filter);
         initView();
         initEvent();
@@ -107,9 +106,8 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         if (getIntent() != null)
             flag = getIntent().getIntExtra("flag", 0);
         String addrName = MyApplication.getInstance().getBdLocationHelper().getName();
-        if (StringUtils.isEmpty(addrName) || "当前位置".equals(addrName)) {
-            Crouton.showToast(ct, "定位失败,请检查定位权限", R.color.load_warning);
-        }
+        if (StringUtils.isEmpty(addrName))
+            showNotLocation();
         adminStatus = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         adapter = new MissionAdapter(this, this);
         recycler.setLayoutManager(new MostLinearLayoutManager(ct));
@@ -123,7 +121,6 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
 
     private void endActivity() {
         unregisterReceiver(receiver);
-        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_PLAN));
         boolean isAuto = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
         if (isAuto) {
             setResult(0x20);
@@ -192,6 +189,10 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 }
                 break;
             case R.id.click_btn:
+                if (!locationOk) {
+                    showNotLocation();
+                    return;
+                }
                 presenter.submit(adapter.getModels());
                 break;
         }
@@ -283,7 +284,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                                 MyApplication.getInstance().getBdLocationHelper().getLongitude())));
             }
             adapter.notifyItemChanged(position);
-            setEndTime(entity.getCompanyName());
+            setEndTime(entity.getCompanyName(), entity.getDistance());
         } else if (requestCode == 0x21) {//选择地址
             PoiInfo info = data.getParcelableExtra("resultName");
             if (info == null) {
@@ -302,7 +303,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                         , new LatLng(MyApplication.getInstance().getBdLocationHelper().getLatitude(),
                                 MyApplication.getInstance().getBdLocationHelper().getLongitude())));
                 adapter.notifyItemChanged(position);
-                setEndTime(info.name);
+                setEndTime(info.name, 0);
             }
         } else if (0x22 == requestCode) {//外勤设置
             boolean isAuto = data.getBooleanExtra("isAuto", true);
@@ -328,29 +329,58 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
     }
 
 
-    private void setEndTime(String name) {
+    private void setEndTime(String name, final double dis) {
         BaiduMapUtil.getInstence().getDrivingRoute(MyApplication.getInstance().
                 getBdLocationHelper().getCityName(), MyApplication.getInstance().
                 getBdLocationHelper().getName(), name, new OnGetDrivingRouteResult() {
             @Override
             public void onGetDrivingRouteResult(DrivingRouteResult drivingRouteResult) {
                 List<DrivingRouteLine> list = drivingRouteResult.getRouteLines();
-                if (ListUtils.isEmpty(list)) return;
+                if (ListUtils.isEmpty(list)) {
+                    Log.i("gongpengming", "onGetDrivingRouteResult: isEmpty");
+                    if (dis != 0) {
+                        setVoisitTime((long) (dis / 3));
+                    } else
+                        setVoisitTime(800);
+                    return;
+                }
                 int minTime = 0;
                 for (DrivingRouteLine e : list) {
                     if (minTime == 0 || minTime > e.getDuration()) {
                         minTime = e.getDuration();
                     }
                 }
+                setVoisitTime(minTime);
                 Log.i("gongpengming", "最短时间为" + minTime);
-                String realTime = TimeUtils.f_long_2_str(System.currentTimeMillis() + (minTime * 1000));
-                adapter.getModels().get(position).setVisitTime(realTime);
-                adapter.notifyItemChanged(position);
+
             }
         });
 
     }
 
+    /**
+     * @param time 秒
+     */
+    private void setVoisitTime(long time) {
+        String realTime = TimeUtils.f_long_2_str(System.currentTimeMillis() + (time * 1000));
+        adapter.getModels().get(position).setVisitTime(realTime);
+        adapter.notifyItemChanged(position);
+    }
+
+    public void showNotLocation() {
+        MaterialDialog dialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
+                content(R.string.open_location)
+                .positiveText(R.string.sure).
+                        autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        super.onPositive(dialog);
+                        dialog.dismiss();
+                    }
+                }).build();
+        dialog.show();
+    }
+
     private void addEntity(List<MissionModel> entitys) {
         MissionModel entity = new MissionModel();
         entity.setLocation(MyApplication.getInstance().getBdLocationHelper().getName());//当前位置

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

@@ -33,7 +33,6 @@ 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.StringUtils;
-import com.xzjmyk.pm.activity.ui.erp.util.auto.AlarmService;
 import com.xzjmyk.pm.activity.ui.erp.util.auto.SigningPresenter;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
@@ -47,7 +46,7 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
+@Deprecated
 public class MissionPlanActivity extends BaseActivity implements View.OnClickListener {
     @ViewInject(R.id.location_tv)
     private TextView location_tv;
@@ -129,8 +128,7 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
     }
 
     private void endActivity() {
-        //更新外勤计划 TODO 先这样定 后期修改缓存方式
-        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_PLAN));
+        //更新外勤计划
         boolean isAuto = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
         if (isAuto) {
             setResult(0x20);

+ 0 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionSetActivity.java

@@ -18,7 +18,6 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.ui.erp.util.auto.AlarmService;
 import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
@@ -121,12 +120,6 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         time_tv.setFocusable(isAuto);
     }
 
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_SET));
-    }
-
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     public void setTextColor(boolean isAdmain, View... view) {
         if (view != null && view.length > 0 && Build.VERSION.SDK_INT >= 9) {

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

@@ -56,7 +56,6 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
 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.StringUtils;
-import com.xzjmyk.pm.activity.ui.erp.util.auto.AlarmService;
 import com.xzjmyk.pm.activity.ui.erp.view.EmptyLayout;
 import com.xzjmyk.pm.activity.util.DisplayUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
@@ -317,9 +316,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         setCustomTheme();
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_oamain);
-        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_SET));
         ViewUtils.inject(this);
-//        new WorkDailyAddActivity().setOnFinishOa(this);
         initView();
         initEvent();
     }

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

@@ -29,7 +29,6 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 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.util.WifiReceiverUtil;
-import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.CalendarUtils;
 import com.xzjmyk.pm.activity.util.MacAndIDUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
@@ -109,9 +108,10 @@ public class WorkActivity extends BaseActivity implements View.OnClickListener,
         initLcation();
     }
 
-    boolean isRuning=false;
+    boolean isRuning = false;
+
     private void initLcation() {
-        isRuning=true;
+        isRuning = true;
 
     }
 
@@ -209,6 +209,21 @@ public class WorkActivity extends BaseActivity implements View.OnClickListener,
         dialog.show();
     }
 
+    @Override
+    public void showNotLocation() {
+        MaterialDialog dialog = new MaterialDialog.Builder(ct).title(R.string.prompt_title).
+                content(R.string.open_location)
+                .positiveText(R.string.sure).
+                        autoDismiss(false).callback(new MaterialDialog.ButtonCallback() {
+                    @Override
+                    public void onPositive(MaterialDialog dialog) {
+                        super.onPositive(dialog);
+                        dialog.dismiss();
+                    }
+                }).build();
+        dialog.show();
+    }
+
     @Override
     public void setPois(List<PoiInfo> pois, LatLng latLng) {
     }

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

@@ -71,10 +71,10 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
         getMacByNet();
     }
 
-
     private void loadLog(ArrayList<WorkModel> models, long time) {
         if (iWorkView != null)
             iWorkView.showLoading();
+
         String date = TimeUtils.s_long_2_str(time);
         //获取网络数据
         Map<String, Object> param = new HashMap<>();
@@ -149,6 +149,11 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
     //设置位置信息
     private void setBaiduLocation() throws Exception {
         log("setBaiduLocation");
+        boolean isLocation = MyApplication.getInstance().getBdLocationHelper().locationOk();
+        if (!isLocation) {
+            if (iWorkView != null) iWorkView.showNotLocation();
+            return;
+        }
         longitude = MyApplication.getInstance().getBdLocationHelper().getLongitude();
         latitude = MyApplication.getInstance().getBdLocationHelper().getLatitude();
         loaction = MyApplication.getInstance().getBdLocationHelper().getName();
@@ -383,7 +388,8 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
         }
         //下拉数据后保存到数据库
         if (!ListUtils.isEmpty(models) &&
-                TimeUtils.s_long_2_str(longTime).equals(TimeUtils.s_long_2_str(System.currentTimeMillis()))) {
+                TimeUtils.s_long_2_str(longTime).
+                        equals(TimeUtils.s_long_2_str(System.currentTimeMillis()))) {
             //当天日期数据
             WorkModelDao.getInstance().createOrUpdata(models);
         }
@@ -483,7 +489,7 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
      * @param models     班次以及打卡记录数据
      * @param macAddress mac地址
      */
-    public void submitWork(ArrayList<WorkModel> models, String macAddress) {
+    public void submitWork(final ArrayList<WorkModel> models, String macAddress) {
         subMitTime = System.currentTimeMillis();
         validatorMac(models, macAddress);
     }

+ 2 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IWorkView.java

@@ -21,6 +21,8 @@ public interface IWorkView extends HttpImp {
 
     void showErrorMac();
 
+    void showNotLocation();
+
     void setPois(List<PoiInfo> pois, LatLng latLng);
 
     void setErrorMac(String message);

+ 1 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/auto/AlarmManage.java

@@ -23,6 +23,7 @@ import java.util.List;
  * <p>
  * Created by Bitliker on 2016/11/18.
  */
+@Deprecated
 public class AlarmManage {
     /**
      * 计算是否符合自动外勤,返回外勤列表中距离最小的对象,如果不符合,返回空

+ 29 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/MessageDialogUtil.java

@@ -0,0 +1,29 @@
+package com.xzjmyk.pm.activity.util;
+
+import android.content.DialogInterface;
+import android.support.v7.app.AlertDialog;
+
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.R;
+
+/**
+ * Created by Bitliker on 2016/12/30.
+ */
+
+public class MessageDialogUtil {
+
+    public static void show(String message) {
+        show("提示", message);
+    }
+
+    public static void show(String title, String message) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(MyApplication.getInstance())
+                .setTitle(title).setMessage(message).setPositiveButton(R.string.sure, new DialogInterface.OnClickListener() {
+                    @Override
+                    public void onClick(DialogInterface dialogInterface, int i) {
+
+                    }
+                });
+        builder.show();
+    }
+}

+ 0 - 17
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/DialogUtil.java

@@ -1,17 +0,0 @@
-package com.xzjmyk.pm.activity.view;
-
-/**
- * Created by pengminggong on 2016/9/22.
- */
-public class DialogUtil {
-    private static DialogUtil instance = null;
-
-    public static DialogUtil getInstance() {
-        if (instance == null) {
-            synchronized (DialogUtil.class) {
-                instance = new DialogUtil();
-            }
-        }
-        return instance;
-    }
-}

+ 1 - 1
WeiChat/src/main/res/drawable/item_all_rb_d.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/item_all_rb" android:state_checked="false" />
-    <item android:drawable="@drawable/item_all_rb_pass" android:state_checked="true" />
+    <item android:drawable="@drawable/item_all_rb_pass" android:state_checked="true"   />
     <item android:drawable="@drawable/item_all_rb" />
 </selector>

+ 3 - 3
WeiChat/src/main/res/layout/item_mission.xml

@@ -124,6 +124,7 @@
             android:id="@+id/item_company_tv"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
+            android:layout_alignParentBottom="true"
             android:layout_alignParentRight="true"
             android:layout_toRightOf="@id/company_tag"
             android:drawableRight="@drawable/company"
@@ -132,8 +133,7 @@
             android:hint="@string/select_must"
             android:maxLines="2"
             android:textColor="@color/text_hine"
-            android:textSize="@dimen/text_hine"
-            android:layout_alignParentBottom="true" />
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
     <View
@@ -363,7 +363,7 @@
             android:gravity="center"
             android:hint="@string/select_must"
             android:textColor="@color/text_main"
-            android:textSize="@dimen/text_main" />
+            android:textSize="@dimen/text_hine" />
     </RelativeLayout>
 
     <View

+ 1 - 0
WeiChat/src/main/res/values/strings.xml

@@ -16,6 +16,7 @@
         <item>20分钟</item>
         <item>30分钟</item>
     </string-array>
+    <string name="open_location">定位失败,请确认允许程序使用定位权限</string>
     <string name="delete_item">确定要删除吗</string>
     <string name="select_must">选择(必填)</string>
     <string name="input_must">输入(必填)</string>