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

Merge branch 'developer' of https://gitlab.com/Arisono/SkWeiChat-Baidu into fix_bug

Arison 9 лет назад
Родитель
Сommit
6e7e4d9e1f
23 измененных файлов с 373 добавлено и 146 удалено
  1. 48 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MissionDao.java
  2. 7 7
      WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/WorkModelDao.java
  3. 6 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java
  4. 0 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java
  5. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DailydetailsActivity.java
  6. 5 11
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DestinationActivity.java
  7. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationMapActivity.java
  8. 6 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationSearchActivity.java
  9. 37 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java
  10. 25 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionSetActivity.java
  11. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/TestActivity.java
  12. 14 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java
  13. 13 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkDailyAddActivity.java
  14. 8 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkDailyShowActivity.java
  15. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MissionAdapter.java
  16. 5 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkAdapter.java
  17. 24 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MissionPresenter.java
  18. 23 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java
  19. 54 31
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java
  20. 33 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java
  21. 3 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/ReckonAutoUtil.java
  22. 41 1
      WeiChat/src/main/res/layout/activity_location_search.xml
  23. 15 8
      WeiChat/src/main/res/layout/item_location_ls.xml

+ 48 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/MissionDao.java

@@ -117,6 +117,54 @@ public class MissionDao {
         }
     }
 
+    public boolean updataOrCreate(MissionModel mission) {
+        if (mission == null || StringUtils.isEmpty(mission.getVisitTime()))return false;
+        show("updataOrCreate");
+        SQLiteDatabase db = null;
+        long i = 0;
+        try {
+            String master = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+            String emcode = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username");
+            if (StringUtils.isEmpty(master) || StringUtils.isEmpty(emcode)) return false;
+            db = helper.getWritableDatabase();
+            ContentValues values = null;
+            show("MissionPlanEntity");
+            //对象为空或是拜访时间没有情况下不插入数据库
+            values = new ContentValues();
+            values.put("id", mission.getId());
+            values.put("master", master);
+            values.put("emcode", emcode);
+            values.put("company", mission.getCompanyName());
+            values.put("companyAddr", mission.getCompanyAddr());
+            if (mission.getLatLng() != null) {
+                values.put("latitude", mission.getLatLng().latitude);
+                values.put("longitude", mission.getLatLng().longitude);
+            }
+            values.put("visittime", mission.getVisitTime());
+            values.put("realvisitTime", mission.getRealTime());
+            values.put("realLeaveTime", mission.getRealLeave());
+            values.put("distance", mission.getDistance());
+            values.put("location", mission.getLocation());
+            values.put("recorddate", mission.getRecorddate());
+            values.put("date", getDateByString(mission.getVisitTime()));//拜访日期
+            i = db.insert(tibleName, "status", values);
+            if (i == -1) {
+                String where = "master=? and emcode=? and id=? ";
+                String[] whereArgs = {master, emcode, String.valueOf(mission.getId())};
+                i = db.update(tibleName, values, where, whereArgs);
+                show("update i=" + i);
+            }
+            show("i====" + i);
+        } catch (android.database.SQLException e) {
+            show("SQLException=" + e.getMessage());
+        } catch (Exception e) {
+            show("Exception=" + e.getMessage());
+        } finally {
+            if (db != null)
+                db.close();
+            return i > 0;
+        }
+    }
 
     public boolean updataOrCreate(List<MissionModel> entities) {
         if (ListUtils.isEmpty(entities)) return false;

+ 7 - 7
WeiChat/src/main/java/com/xzjmyk/pm/activity/db/dao/WorkModelDao.java

@@ -100,7 +100,6 @@ public class WorkModelDao {
         return saveOk;
     }
 
-
     /**
      * 获取数据库中全部数据
      *
@@ -141,9 +140,9 @@ public class WorkModelDao {
                         StringUtils.isEmpty(offStart) || StringUtils.isEmpty(offTime) || StringUtils.isEmpty(offend))
                     continue;
                 if (!allSignin) {
-                    if (!StringUtils.isEmpty(workSignin) && workTime.compareTo(workSignin) < 0)//迟到
+                    if (!StringUtils.isEmpty(workSignin) && workSignin.compareTo(workTime) > 0)//迟到  打卡时间>上班时间
                         workSignin = "";
-                    if (!StringUtils.isEmpty(offSignin) && offTime.compareTo(offSignin) > 0)//早退
+                    if (!StringUtils.isEmpty(offSignin) && offSignin.compareTo(offTime) < 0)//早退  打卡时间<下班时间
                         offSignin = "";
                 }
                 model = new WorkModel(workStart, workTime, workend, workSignin, offStart,
@@ -228,9 +227,10 @@ public class WorkModelDao {
             else values.put("offSignin", models.getOffSignin());
             String where = "emCode=? and master=?  and workStart=? and workTime=?" +
                     " and workend=? and offStart=? and offTime=? and offend=? and date=?";
-
-            String[] whereArg = {"emCode", "master", models.getWorkStart(), models.getWorkTime(), models.getWorkend()
-                    , models.getOffStart(), models.getOffTime(), models.getOffend(), TimeUtils.s_long_2_str(System.currentTimeMillis())};
+            String[] whereArg = {emCode, master, models.getWorkStart(),
+                    models.getWorkTime(), models.getWorkend()
+                    , models.getOffStart(), models.getOffTime(),
+                    models.getOffend(), TimeUtils.s_long_2_str(System.currentTimeMillis())};
             i = db.update(TIBLE_NAME, values, where, whereArg);
         } catch (Exception e) {
         } finally {
@@ -326,7 +326,7 @@ public class WorkModelDao {
                     continue;
                 String where = "emCode=? and master=?  and workStart=? and workTime=?" +
                         " and workend=? and offStart=? and offTime=? and offend=? ";
-                String[] whereArg = {"emCode", "master", e.getWorkStart(), e.getWorkTime(), e.getWorkend()
+                String[] whereArg = {emCode, master, e.getWorkStart(), e.getWorkTime(), e.getWorkend()
                         , e.getOffStart(), e.getOffTime(), e.getOffend()};
                 i = db.delete(TIBLE_NAME, where, whereArg);
             }

+ 6 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java

@@ -217,7 +217,12 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
                         if (which == 0) {
                             takePhoto();
                         } else {
-                            selectPhoto();
+                            selectPhoto(); //TODO 新写一个可以一次选择多张照片的方法
+//                            Intent intent = new Intent(SendShuoshuoActivity.this,
+//                                    ImageBucketChooseActivity.class);
+//                            intent.putExtra(IntentConstants.EXTRA_CAN_ADD_IMAGE_SIZE,
+//                                    getAvailableSize());
+//                            startActivity(intent);
                         }
                         dialog.dismiss();
                     }

+ 0 - 11
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java

@@ -377,20 +377,9 @@ public class CommonDocDetailsActivity extends BaseActivity {
                                 if (!fd_field.equals("null")){
                                     em_number = formdataArray.getJSONObject(0).getString(fd_field);
                                     Log.i("em_number",em_number);
-
                                 }
-
                             }
                             getapplypeomsg(em_number);
-
-                            //申请单据的审批,提交,录入状态获取
-//                            if ((!TextUtils.isEmpty(fd_field) && fd_field.equals("va_status")) ||
-//                                    (!TextUtils.isEmpty(fd_field) && fd_field.equals("wo_status")) ||
-//                                    (!TextUtils.isEmpty(fd_field) && fd_field.equals("sa_status")) ||
-//                                    (!TextUtils.isEmpty(fd_field) && fd_field.equals("fp_status"))){
-//                                real_status = formdataArray.getJSONObject(0).getString(fd_field);
-//                                SetComDocStatus(real_status);
-//                            }
                         }
                         mCommonDocMainMsgAdapter.setmFormconfigsBean(mFormconfigsBean);
                         main_msg_lv.setAdapter(mCommonDocMainMsgAdapter);

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

@@ -153,7 +153,7 @@ public class DailydetailsActivity extends BaseActivity {
                                     Intent intent = new Intent();
                                     intent.putExtra("delete_succeed","");
                                     setResult(DELETE_SUCCEED,intent);
-                                    DailydetailsActivity.this.finish();
+                                    finish();
                                 }
                             }
                         }
@@ -436,8 +436,8 @@ public class DailydetailsActivity extends BaseActivity {
         } else {
             experience_ll.setVisibility(View.GONE);
         }
-        if (!TextUtils.isEmpty(intent.getStringExtra("Donetask"))){
-            done_task_ll.setVisibility(View.VISIBLE);
+        if (!TextUtils.isEmpty(intent.getStringExtra("Donetask"))
+                && !"null".equals(intent.getStringExtra("Donetask"))){
             done_task_tv.setText(Html.fromHtml(intent.getStringExtra("Donetask")));
             donetask = intent.getStringExtra("Donetask");
         }else {

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

@@ -78,7 +78,7 @@ public class DestinationActivity extends BaseActivity {
                         }
                         handleDada(array);
                     } catch (Exception e) {
-
+                        
                     }
                     break;
             }
@@ -128,16 +128,11 @@ public class DestinationActivity extends BaseActivity {
                 }
             }
         });
-        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
+        listView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
             @Override
-            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
+            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                 pager = 1;
-                loadOutAddress();
-            }
-
-            @Override
-            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
-                pager++;
+                search_edit.setText("");
                 loadOutAddress();
             }
         });
@@ -147,7 +142,7 @@ public class DestinationActivity extends BaseActivity {
         allList = new ArrayList<>();
         showList = new ArrayList<>();
         listView.setEmptyView(R.layout.view_empty);
-        listView.setMode(PullToRefreshBase.Mode.BOTH);
+        listView.setMode(PullToRefreshBase.Mode.PULL_FROM_START);
         adapter = new DestinAdapter();
         listView.setAdapter(adapter);
         loadOutAddress();
@@ -210,7 +205,6 @@ public class DestinationActivity extends BaseActivity {
 
             }
         }
-
         adapter.notifyDataSetChanged();
     }
 

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

@@ -70,7 +70,8 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
         }
         init();
         initView();
-        BaiduMapUtil.getInstence().getNearInfo(location, 0, point, "公司", new BaiduMapUtil.OnSearchPoiListener() {
+        BaiduMapUtil.getInstence().getNearInfo(location, 0, point,
+                "公司", new BaiduMapUtil.OnSearchPoiListener() {
             @Override
             public void result(SearchResult result) {
                 if (result instanceof PoiResult)

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

@@ -229,6 +229,12 @@ public class LocationSearchActivity extends BaseActivity {
             List<PoiInfo> chches = poiResult.getAllPoi();
             if (ListUtils.isEmpty(chches)) return;
             BaiduMapUtil.getInstence().setMapViewPoint(bmapView, chches.get(0).location, true);
+            for (int i = 0; i < chches.size(); i++) {
+                if (StringUtils.isEmpty(chches.get(i).name) || StringUtils.isEmpty(chches.get(i).address)) {
+                    chches.remove(i);
+                    i--;
+                }
+            }
             listData = chches;
             adapter.setListData(listData);
         }

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

@@ -70,7 +70,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
         } else if (item.getItemId() == R.id.title) {
             Intent intent = new Intent(ct, MissionSetActivity.class);
             intent.putExtra(AppConfig.IS_ADMIN, adminStatus);
-            startActivityForResult(intent, 0x20);
+            startActivityForResult(intent, 0x22);
         }
         return super.onOptionsItemSelected(item);
     }
@@ -93,7 +93,6 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
 
 
     private void endActivity() {
-        //更新外勤计划 TODO 先这样定 后期修改缓存方式
         sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_PLAN));
         boolean isAuto = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
         if (isAuto) {
@@ -189,9 +188,28 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 startActivityForResult(intent, 0x21);
                 break;
             case R.id.item_delete_tv://删除选项
-                adapter.getModels().remove(position);
-                adapter.notifyItemRemoved(position);
-                adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+//                MissionModel m = adapter.getModels().remove(position);
+//                if (!StringUtils.isEmpty(m.getCompanyName()) || !StringUtils.isEmpty(m.getCompanyAddr()) ||
+//                        !StringUtils.isEmpty(m.getVisitTime())) {
+//                    AlertDialog.Builder builder = new AlertDialog.Builder(ct);
+//                    builder.setTitle(R.string.prompt_title).setMessage("是否确认删除单号" + (position + 1)).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());
+//                        }
+//                    }).setNegativeButton("取消", new DialogInterface.OnClickListener() {
+//                        @Override
+//                        public void onClick(DialogInterface dialogInterface, int i) {
+//
+//                        }
+//                    }).show();
+//                } else {
+                    adapter.getModels().remove(position);
+                    adapter.notifyItemRemoved(position);
+                    adapter.notifyItemRangeChanged(position, adapter.getModels().size());
+//                }
                 break;
             case R.id.item_reckontime_tv://预计到达时间
                 if (model == null || model.getStatus() == 1) return;
@@ -241,6 +259,20 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                                 MyApplication.getInstance().getBdLocationHelper().getLongitude())));
                 adapter.notifyItemChanged(position);
             }
+        } else if (0x22 == requestCode) {//外勤测试
+            boolean isAuto = data.getBooleanExtra("isAuto", true);
+            if (!isAuto) {
+                if (flag == 1) {
+                    //启动手动外勤
+                    Intent intent = new Intent(ct, OutofficeActivity.class);
+                    intent.putExtra(AppConfig.IS_ADMIN, true);
+                    startActivity(intent);
+                    finish();
+                } else if (flag == 2) {
+                    setResult(0x20);
+                    finish();
+                }
+            }
         }
 
     }

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

@@ -4,6 +4,7 @@ import android.annotation.TargetApi;
 import android.content.Intent;
 import android.os.Build;
 import android.os.Bundle;
+import android.view.MenuItem;
 import android.view.View;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
@@ -60,6 +61,27 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         initEvent();
     }
 
+    @Override
+    public void onBackPressed() {
+        endActivity();
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        if (item.getItemId() == android.R.id.home) {
+            endActivity();
+            return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    private void endActivity() {
+        Intent intent = new Intent();
+        intent.putExtra("isAuto", auto_sv.isChecked());
+        setResult(0x20, intent);
+        finish();
+    }
+
     private void initEvent() {
         auto_sv.setOnCheckedChangeListener(this);
         alarm_sv.setOnCheckedChangeListener(this);
@@ -80,9 +102,9 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         setTextColor(is, alar_rl, alarm_tv);
         int chche = CommonUtil.getSharedPreferencesInt(ct, AppConfig.ALARM_MISSION_TIME, 5);
         alarm_tv.setText("提前" + chche + "分钟");
-        chche =PreferenceUtils.getInt(AppConfig.ALARM_MISSION_DISTANCE, 500);
+        chche = PreferenceUtils.getInt(AppConfig.ALARM_MISSION_DISTANCE, 500);
         distance_tv.setText(chche + "m");
-        chche =PreferenceUtils.getInt(AppConfig.AUTO_MISSION_TIME, 20);
+        chche = PreferenceUtils.getInt(AppConfig.AUTO_MISSION_TIME, 20);
         time_tv.setText(chche + "分钟");
     }
 
@@ -207,6 +229,6 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
     }
 
     private void updataSet() {
-        util.addOutSet(distance, time, isAuto,null);
+        util.addOutSet(distance, time, isAuto, null);
     }
 }

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

@@ -67,7 +67,6 @@ public class TestActivity extends BaseActivity implements View.OnClickListener {
                         show("getOffTime" + m.getOffTime());
                         show("getWorkStart" + m.getWorkStart());
                         show("getWorkSignin" + m.getWorkSignin());
-                        show("getOffTime" + m.getOffTime());
                         show("getOffSignin" + m.getOffSignin());
                         show("getOffend" + m.getOffend());
                         show("getOffStart" + m.getOffStart());

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

@@ -206,19 +206,20 @@ public class WorkActivity extends BaseActivity implements View.OnClickListener,
                 showDateDialog();
                 break;
             case R.id.unoffice_:
-                if (ListUtils.isEmpty(pois)) {
-                    Crouton.showToast(ct, "距离太远,无法微调至有效打卡范围", R.color.load_message);
-                } else {
-                    Intent intent = new Intent(ct, LocationSearchActivity.class);
-                    intent.putExtra("type", 1);
-                    intent.putExtra("title", "地点微调");
-                    intent.putExtra("single", true);
-                    intent.putExtra("radius", 300);
-                    intent.putExtra("latlng", latLng);
-                    intent.putExtra("resultCode", ADDRESS_CHANGE);
-                    intent.putExtra("resultName", "resultName");
-                    startActivityForResult(intent, ADDRESS_CHANGE);
-                }
+                //TODO 没办法处理好  先关闭
+//                if (ListUtils.isEmpty(pois)) {
+//                    Crouton.showToast(ct, "距离太远,无法微调至有效打卡范围", R.color.load_message);
+//                } else {
+                Intent intent = new Intent(ct, LocationSearchActivity.class);
+                intent.putExtra("type", 1);
+                intent.putExtra("title", "地点微调");
+                intent.putExtra("single", true);
+                intent.putExtra("radius", 300);
+                intent.putExtra("latlng", latLng);
+                intent.putExtra("resultCode", ADDRESS_CHANGE);
+                intent.putExtra("resultName", "resultName");
+                startActivityForResult(intent, ADDRESS_CHANGE);
+//                }
                 break;
         }
     }

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

@@ -149,7 +149,7 @@ public class WorkDailyAddActivity extends BaseActivity {
                             String result = msg.getData().getString("result");
                             LogUtil.prinlnLongMsg("GRAB_JOB_CONTENT", result);
                             if (!TextUtils.isEmpty(wd_finishedtask) || !TextUtils.isEmpty(wd_unfinishedtask)){
-                                ToastMessage("工作内容抓取成功");
+                                ToastMessage("尝试抓取工作内容");
                             }else {
                                 ToastMessage("无工作内容");
                             }
@@ -233,8 +233,8 @@ public class WorkDailyAddActivity extends BaseActivity {
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.push) {
-            startActivity(new Intent(activity, WorkDailyShowActivity.class));
-//            .putExtra("fromwhere","submitdaily"));
+            startActivity(new Intent(activity, WorkDailyShowActivity.class)
+                    .putExtra("fromwhere", "nosubmitdaily"));
         }
 
         if (item.getItemId() == android.R.id.home) {
@@ -249,7 +249,11 @@ public class WorkDailyAddActivity extends BaseActivity {
                         .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                             @Override
                             public void onClick(DialogInterface dialog, int which) {
-                               startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                                if (!TextUtils.isEmpty(resubmit) && "unsub_tosub".equals(resubmit)){
+                                    startActivity(new Intent(WorkDailyAddActivity.this,WorkDailyShowActivity.class));
+                                }else {
+                                    startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                                }
                                 finish();
                             }
                         }).show();
@@ -276,6 +280,11 @@ public class WorkDailyAddActivity extends BaseActivity {
                         @Override
                         public void onClick(DialogInterface dialog, int which) {
                             startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                            if (!TextUtils.isEmpty(resubmit) && "unsub_tosub".equals(resubmit)){
+                                startActivity(new Intent(WorkDailyAddActivity.this,WorkDailyShowActivity.class));
+                            }else {
+                                startActivity(new Intent(WorkDailyAddActivity.this,OAActivity.class));
+                            }
                             finish();
                         }
                     }).show();

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

@@ -123,7 +123,7 @@ public class WorkDailyShowActivity extends BaseActivity {
         });
         mPullToRefreshListView.setMode(PullToRefreshBase.Mode.BOTH);
 
-        //长按item弹出删除未提交对话框
+        //长按item弹出未提交单据删除对话框
        /* mPullToRefreshListView.getRefreshableView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
             @Override
             public boolean onItemLongClick(AdapterView<?> parent, View view, final int position, long id) {
@@ -259,29 +259,22 @@ public class WorkDailyShowActivity extends BaseActivity {
             putDownInput();
             final  Intent intent = getIntent();
             if (!TextUtils.isEmpty(intent.getStringExtra("fromwhere"))
-                    && ((intent.getStringExtra("fromwhere").equals("submitdaily") ||
-                    intent.getStringExtra("fromwhere").equals("dodaily")) ||
-                    intent.getStringExtra("fromwhere").equals("delete_succeed"))){
-                startActivity(new Intent(activity,OAActivity.class));
+                    && intent.getStringExtra("fromwhere").equals("nosubmitdaily")){
                 finish();
             }else {
+                startActivity(new Intent(activity, OAActivity.class));
                 finish();
             }
-        }else{
-            return super.onOptionsItemSelected(item);
-
-        }return  true;
+        }return true;
     }
     @Override
     public void onBackPressed() {
         final  Intent intent = getIntent();
-        if (!TextUtils.isEmpty(intent.getStringExtra("fromwhere")) &&
-              (intent.getStringExtra("fromwhere").equals("submitdaily") ||
-                    intent.getStringExtra("fromwhere").equals("dodaily")||
-                    intent.getStringExtra("fromwhere").equals("delete_succeed"))){
-                startActivity(new Intent(activity,OAActivity.class));
-                finish();
+        if (!TextUtils.isEmpty(intent.getStringExtra("fromwhere"))
+                && intent.getStringExtra("fromwhere").equals("nosubmitdaily")){
+            finish();
         }else {
+            startActivity(new Intent(activity, OAActivity.class));
             finish();
         }
         super.onBackPressed();

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MissionAdapter.java

@@ -57,7 +57,7 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
         MissionModel entity = models.get(position);
         if (entity == null) return;
         holder.item_title_tv.setText("目的地 " + (position + 1));
-        holder.item_delete_tv.setVisibility(entity.getStatus() != 1 ? View.VISIBLE : View.GONE);
+        holder.item_delete_tv.setVisibility((entity.getStatus() != 1 && position != 0) ? View.VISIBLE : View.GONE);
         if (entity.getLatLng() != null) {
             holder.item_length_tv.setText(entity.getDistance() + "米");
         } else {

+ 5 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/WorkAdapter.java

@@ -63,15 +63,16 @@ public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
             holder.off_time.setText(getNull(model.getOffTime()));
             holder.off_signin.setText(getNull(model.getOffSignin()));
             //处理迟到、早退、缺勤
-
             String workTag = null;
             if (StringUtils.isEmpty(model.getWorkSignin())) {
                 if (newTime.compareTo(model.getWorkend()) > 0) {
                     //缺勤(没有签到,同时当前时间大于上班时间后90分钟)
                     workTag = "缺勤";
-                } else if (newTime.compareTo(model.getWorkTime()) > 0) {
-                    workTag = "迟到";
                 }
+                //不打卡情况下,迟到不显示
+//                else if (newTime.compareTo(model.getWorkTime()) > 0) {
+//                    workTag = "迟到";
+//                }
                 if (!isToday) {
                     workTag = "缺勤";
                 }
@@ -99,7 +100,7 @@ public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
                         }
                     });
                 } else {
-                    holder.off_supple.setVisibility(View.GONE);
+                    holder.work_supple.setVisibility(View.GONE);
                 }
             }
 

+ 24 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/MissionPresenter.java

@@ -1,7 +1,9 @@
 package com.xzjmyk.pm.activity.ui.erp.presenter;
 
 import android.content.Context;
+import android.content.Intent;
 import android.os.Bundle;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
@@ -17,6 +19,7 @@ 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.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.attendance.AutoErpService;
 import com.xzjmyk.pm.activity.ui.erp.util.auto.HttpHandler;
 import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
@@ -155,6 +158,7 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
         param.put("param", "[" + StringUtils.mapToJson(params) + "]");
         Bundle bundle = new Bundle();
         bundle.putInt("position", position);
+        bundle.putParcelable("data", entity);
         HttpHandler.getInstance().loadERPByNet(SAVE_PLAN, "mobile/addOutPlan.action", param, bundle, this);
         saveOutAddress(entity);
     }
@@ -232,6 +236,26 @@ public class MissionPresenter implements IMissionPresenter, HttpHandler.OnResult
                         handlerData(array);
                         break;
                     case SAVE_PLAN:
+                        if (isJSON && JSON.parseObject(message).getBoolean("success")) {
+                            int mpd_id = JSON.parseObject(message).getIntValue("mpd_id");
+                            MissionModel entity = bundle.getParcelable("data");
+                            Log.i("gongpengming", "SAVE_PLAN");
+                            if (mpd_id != 0 && entity != null) {//保存数据库
+                                entity.setId(mpd_id);
+                                Log.i("gongpengming", "entity != null");
+                                boolean saveOk = MissionDao.getInstance().updataOrCreate(entity);
+                                Log.i("gongpengming", "saveOk=" + saveOk);
+                                if (saveOk) {
+                                    Intent intent = new Intent();
+                                    intent.setAction(AutoErpService.SAVE_MISSION_ACTION);
+                                    MyApplication.getInstance().sendBroadcast(intent);
+                                }
+                            }
+                        }
+//                        //TODO 保存成功后将对象添加到数据库中 并更新任务
+//                        Intent intent = new Intent();
+//                        intent.setAction(AutoErpService.INIT_MISSION_TASK);
+//                        MyApplication.getInstance().sendBroadcast(intent);
                         if (iMission != null) iMission.dimssLoading();
                         int position = bundle.getInt("position", -1);//成功保存第几个目标
                         if (iMission != null) iMission.showToast("保存成功", R.color.load_submit);

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

@@ -58,7 +58,6 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
     private boolean isMacInNet = false;//服务器上是否有mac地址
     private boolean isSubmiting = false;
     private CommonInterfaceUtil util;
-    private List<PoiInfo> pois;
 
     private String macAddress;
 
@@ -161,16 +160,16 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
 
     private void getPoi() {
         final LatLng compayLng = new LatLng(companyLatitude, companyLongitude);
-        final LatLng latLng = new LatLng(latitude, longitude);
-        BaiduMapUtil.getInstence().getNearInfo(500, 20, latLng,
+        LatLng latLng = new LatLng(latitude, longitude);
+        BaiduMapUtil.getInstence().getNearInfo(500, 0, latLng,
                 "公司", new BaiduMapUtil.OnSearchPoiListener() {
                     @Override
                     public void result(SearchResult result) {
                         if (result instanceof PoiResult) {
-                            pois = ((PoiResult) result).getAllPoi();
+                            List<PoiInfo> pois = ((PoiResult) result).getAllPoi();
                             if (ListUtils.isEmpty(pois)) return;
                             for (int i = 0; i < pois.size(); i++) {
-                                double dis = BaiduMapUtil.getInstence().distance(latLng, pois.get(i).location);
+                                double dis = BaiduMapUtil.getInstence().distance(compayLng, pois.get(i).location);
                                 if (companyDistance < dis) {
                                     pois.remove(i);
                                     i--;
@@ -198,15 +197,18 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
             return;
         }
         JSONObject object = JSON.parseObject(message);
+        int innerdistance = 0;
         boolean comaddressset = object.getBooleanValue("comaddressset");
         if (comaddressset) {
             companyLongitude = object.getDoubleValue("longitude");
             companyLatitude = object.getDoubleValue("latitude");
             companyDistance = object.getIntValue("distance");
+            innerdistance = object.getIntValue("innerdistance");
         }
         try {
             getPoi();
             PreferenceUtils.putInt("distance", companyDistance);
+            PreferenceUtils.putInt("innerdistance", innerdistance);
             PreferenceUtils.putFloat("longitude", (float) companyLongitude);
             PreferenceUtils.putFloat("latitude", (float) companyLatitude);
             setBaiduLocation();
@@ -335,7 +337,6 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
             iWorkView.showModel(models);
             iWorkView.dimssLoading();
         }
-
         //下拉数据后保存到数据库
         if (!ListUtils.isEmpty(models) &&
                 TimeUtils.s_long_2_str(longTime).equals(TimeUtils.s_long_2_str(System.currentTimeMillis()))) {
@@ -513,11 +514,10 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
                                 if ("0".equals(array.getJSONObject(0).getString("MACADDRESS"))) {
                                     //获取到新的mac地址
                                     isMacInNet = false;
-                                }
+                                } else isMacInNet = true;
                             }
                         }
                     } else isMacInNet = false;
-
                     break;
                 case SIGNING:
                     //签到成功
@@ -542,22 +542,32 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
 
     @Override
     public void error(int what, int statuCode, String message, Bundle bundle) {
-
         try {
+            if (iWorkView != null) iWorkView.dimssLoading();
+
             if (StringUtils.isInclude(message, "该设备不是考勤打卡常用设备")) {
                 if (iWorkView != null) iWorkView.showErrorMac();
             } else if (StringUtils.isInclude(message, "设备正处于申请变更绑定阶段")) {
                 if (iWorkView != null) {
-                    iWorkView.showToast(R.string.mac_changing, R.color.load_warning);
-                    iWorkView.setErrorMac(MyApplication.getInstance().getResources().getString(R.string.mac_changing));
+                    long time = 0;
+                    if (bundle != null) time = bundle.getLong("time");
+                    if (time != 0 && !TimeUtils.s_long_2_str(System.currentTimeMillis()).equals(TimeUtils.s_long_2_str(time))) {
+
+                    } else {
+                        iWorkView.showToast(R.string.mac_changing, R.color.load_warning);
+                        iWorkView.setErrorMac(MyApplication.getInstance().getResources().getString(R.string.mac_changing));
+                    }
                 }
+            } else if (StringUtils.isInclude(message, "该设备已被他人绑定")) {
+                iWorkView.showToast(R.string.mac_other, R.color.load_warning);
+                iWorkView.setErrorMac(MyApplication.getInstance().getResources().getString(R.string.mac_other));
             } else {
                 String mes = StringUtils.getChinese(message);
                 if (!StringUtils.isEmpty(mes) && iWorkView != null)
-                    iWorkView.showToast(R.string.mac_changing, R.color.load_warning);
+                    iWorkView.showToast(mes, R.color.load_warning);
             }
         } catch (Exception e) {
-            if (e != null) log("error Exception =" + e.getMessage());
+            if (e != null) log("Error Exception =" + e.getMessage());
         }
     }
 

+ 54 - 31
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java

@@ -36,28 +36,37 @@ public class AutoErpService extends Service {
     public static final String SAVE_WORK_ACTION = "SAVE_WORK_ACTION";
     public static final String SAVE_MISSION_ACTION = "SAVE_MISSION_ACTION";
     public static final String LOAD_MISSION = "LOAD_MISSION";
+    public static final String UPDATA_ERP_CHANGE = "com.app.home.update";//更新账套信息
+    public static final String CHANGE_WORK_TASK = "CHANGE_WORK_TASK";//自动打卡任务变更
+    public static final String CHANGE_MISSION_TASK = "CHANGE_MISSION_TASK";//自动外勤任务变更
+    public static final String INIT_MISSION_TASK = "INIT_MISSION_TASK";//初始化外勤签到任务
 
-    public static final int STATUS_SIGNING = 0x11;//自动打卡
-    public static final int STATUS_WORK_ALARM = 0x12;//上班提醒
-    public static final int STATUS_OFF_ALARM = 0x13;//下班提醒
-    public static final int STATUS_MISSION = 0x14;//外勤签到
-    public static final int STATUS_LEAVE_ALARM = 0x15;//离开提醒
+
+    public final int STATUS_SIGNING = 0x11;//自动打卡
+    public final int STATUS_WORK_ALARM = 0x12;//上班提醒
+    public final int STATUS_OFF_ALARM = 0x13;//下班提醒
+    public final int STATUS_MISSION = 0x14;//外勤签到
+    public final int STATUS_LEAVE_ALARM = 0x15;//离开提醒
 
 
     private ReckonAutoUtil reckonAutoUtil;//计算工具
     private NotificationManage notificationManage;//通知管理器
 
-
-    private boolean isAlarm;//是否打卡提醒
-    private boolean isAuto;//是否自动打卡
-
     private final long MINUTE = 60 * 1000;//一分钟的时间戳
     private long workInterval = MINUTE;//计算循环的时间
-    private long missionInterval = 2 * MINUTE;//计算循环的时间
+    private long missionInterval = 6 * MINUTE;//计算循环的时间
     private AutoErpSigninUitl signinUitl;
 
     private final String[] flags = {
-            SAVE_WORK_ACTION, SAVE_MISSION_ACTION, LOAD_MISSION
+            SAVE_WORK_ACTION,//保存班次数据成功
+            SAVE_MISSION_ACTION, //保存外勤计划数据成功
+            LOAD_MISSION,//下拉外勤数据
+
+            CHANGE_WORK_TASK,//下拉外勤数据
+            CHANGE_MISSION_TASK,//下拉外勤数据
+            INIT_MISSION_TASK,//初始化外勤签到任务
+
+            UPDATA_ERP_CHANGE//更换账套
     };
     private Handler handler = new Handler() {
         @Override
@@ -93,6 +102,8 @@ public class AutoErpService extends Service {
 
     private boolean isWorkRuning = false;
     private boolean isMissionRuning = false;
+    private boolean canWork = false;
+    private boolean canMission = false;
 
     private BroadcastReceiver updateReceiver = new BroadcastReceiver() {
         @Override
@@ -100,16 +111,32 @@ public class AutoErpService extends Service {
             try {
                 if (intent == null || StringUtils.isEmpty(intent.getAction())) return;
                 if (intent.getAction().equals(SAVE_WORK_ACTION)) {
+                    log(SAVE_WORK_ACTION);
                     if (!isWorkRuning)
                         startWorkTask();
-                } else if (intent.getAction().equals(SAVE_MISSION_ACTION)) {
-                    if (!isMissionRuning)
+                } else if (intent.getAction().equals(SAVE_MISSION_ACTION)) {//1.保存新增外勤计划成功
+                    log(SAVE_MISSION_ACTION);
+                    if (!isMissionRuning) {
+                        canMission = true;
                         startMissionTask();
+                    }
                 } else if (intent.getAction().equals(LOAD_MISSION)) {
+                    log(LOAD_MISSION);
                     signinUitl.loadMissionPlan();
+                } else if (intent.getAction().equals(UPDATA_ERP_CHANGE)) {
+                    log(UPDATA_ERP_CHANGE);
+                    init();
+                } else if (intent.getAction().equals(CHANGE_WORK_TASK)) {
+                    log(CHANGE_WORK_TASK);
+                    canWork = intent.getBooleanExtra(CHANGE_WORK_TASK, true);
+                } else if (intent.getAction().equals(CHANGE_MISSION_TASK)) {
+                    log(CHANGE_MISSION_TASK);
+                    canMission = intent.getBooleanExtra(CHANGE_MISSION_TASK, true);
+                }else if (intent.getAction().equals(INIT_MISSION_TASK)){
+                    initMission();
                 }
             } catch (Exception e) {
-
+                if (e != null) log("BroadcastReceiver Exception=" + e.getMessage());
             }
         }
     };
@@ -126,7 +153,6 @@ public class AutoErpService extends Service {
             initBroadcast();//初始化广播接受器
             initDB();//初始化数据库数据,1.删除昨天数据   2.下拉当天数据
             init();//初始化
-            initTask();//初始化任务
         } catch (Exception e) {
             e.printStackTrace();
         }
@@ -151,15 +177,6 @@ public class AutoErpService extends Service {
         registerReceiver(updateReceiver, filter);
     }
 
-    /**
-     * 初始化任务
-     * 1.判断任务是否应该启动
-     * 2.启动任务
-     */
-    private void initTask() throws Exception {
-
-    }
-
 
     /**
      * 开启自动打卡和提醒任务
@@ -179,7 +196,9 @@ public class AutoErpService extends Service {
                             isWorkRuning = false;
                             break;
                         }
-                        if (isAuto) {
+                        log("startWorkTask run");
+                        //是否提醒
+                        if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_SIGNIN, true)) {
                             WorkModel model = getReckonAutoUtil().reckonAutoWork();
                             if (model != null) {
                                 log("符合打卡");
@@ -191,8 +210,8 @@ public class AutoErpService extends Service {
                                 message.setData(bundle);
                                 handler.sendMessage(message);
                             }
-                        } else if (isAlarm) {//提醒  1.离开办公室 2.上班提醒   3.下班提醒
-                            int type = getReckonAutoUtil().reckonAlarm(isAlarm, workInterval);
+                        } else if (CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.ALARMA_CLICK, false)) {//提醒  1.离开办公室 2.上班提醒   3.下班提醒
+                            int type = getReckonAutoUtil().reckonAlarm(workInterval);
                             if (type == 1) {
                                 //TODO 符合离开办公室提醒
                                 handler.sendEmptyMessage(STATUS_LEAVE_ALARM);
@@ -236,6 +255,8 @@ public class AutoErpService extends Service {
                             isMissionRuning = false;
                             break;
                         }
+
+                        log("startMissionTask run");
                         List<MissionModel> plans = MissionDao.getInstance().queryByEnCode();
                         log("自动外勤 plans==" + (ListUtils.isEmpty(plans) ? 0 : plans.size()));
                         //符合外勤判断
@@ -298,6 +319,7 @@ public class AutoErpService extends Service {
             public void result(int code, String result) {
                 boolean isNeedAutoOut = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
                 if (isNeedAutoOut) {
+                    canMission = true;
                     signinUitl.loadMissionPlan();
                 } else {
                     try {
@@ -315,10 +337,11 @@ public class AutoErpService extends Service {
     private void initWork() {
         //判断是否是自动打卡
         //是否自动打卡
-        isAlarm = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.ALARMA_CLICK, false);
+        boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.ALARMA_CLICK, false);
         //是否提醒
-        isAuto = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_SIGNIN, true);
+        boolean isAuto = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_SIGNIN, true);
         if (isAlarm || isAuto) {
+            canWork = true;
             //TODO 下拉班次数据和是否本机账号
             signinUitl.loadWorkData();
         } else {
@@ -339,11 +362,11 @@ public class AutoErpService extends Service {
     }
 
     private boolean isCanMission() {
-        return true;
+        return canMission;
     }
 
     private boolean isCanWork() {
-        return true;
+        return canWork;
     }
 
     /**

+ 33 - 9
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java

@@ -155,7 +155,7 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
             //判断是否符合打卡
             BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
             form.put("cl_address", helper.getAddress());
-            form.put("cl_location", helper.getName());
+            form.put("cl_location", "android自动打卡记录");
             int comDistance = PreferenceUtils.getInt("distance", 0);
             float distance = BaiduMapUtil.getInstence().getDistance();
             if (comDistance < distance) {
@@ -330,9 +330,24 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
 
     }
 
+    boolean isErrorMac;
+
     @Override
     public void error(int what, int statuCode, String message, Bundle bundle) {
-
+        if (!StringUtils.isEmpty(message)) {
+            String msg = null;
+            if (StringUtils.isInclude(message, "该设备不是考勤打卡常用设备")) {
+                msg = "该设备不是考勤打卡常用设备,无法为您自动打卡";
+            } else if (StringUtils.isInclude(message, "设备正处于申请变更绑定阶段")) {
+                msg = "设备正处于申请变更绑定阶段,无法为您自动打卡";
+            } else if (StringUtils.isInclude(message, "该设备已被他人绑定")) {
+                msg = "该设备已被他人绑定,无法为您自动打卡";
+            }
+            if (!isErrorMac && !StringUtils.isEmpty(msg)) {
+                isErrorMac = true;
+                notificationManage.sendNotification(MyApplication.getInstance(), msg, WorkActivity.class);
+            }
+        }
     }
 
     /**
@@ -451,16 +466,18 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         String time = object.getString("cl_time");//获取最后一次打卡信息,班次打卡信息
         time = TimeUtils.clearDay(time);//获取到的
         if (StringUtils.isEmpty(time) || model == null) return;
-        if (StringUtils.isEmpty(model.getWorkSignin()) && model.getWorkStart().compareTo(time) < 0
-                && model.getWorkTime().compareTo(time) > 0) {
+        if (StringUtils.isEmpty(model.getWorkSignin()) && model.getWorkStart().compareTo(time) <= 0
+                && model.getWorkTime().compareTo(time) >= 0) {
             model.setWorkSignin(time);
             long i = WorkModelDao.getInstance().update(model);
+            log("i=" + i);
             notificationManage.sendNotification(MyApplication.getInstance(),
                     R.string.auto_signin, WorkActivity.class);
-        } else if (StringUtils.isEmpty(model.getOffSignin()) && model.getOffTime().compareTo(time) < 0
-                && model.getOffend().compareTo(time) > 0) {
+        } else if (StringUtils.isEmpty(model.getOffSignin()) && model.getOffTime().compareTo(time) <= 0
+                && model.getOffend().compareTo(time) >= 0) {
             model.setOffSignin(time);
             long i = WorkModelDao.getInstance().update(model);
+            log("i=" + i);
             notificationManage.sendNotification(MyApplication.getInstance(),
                     R.string.auto_signin, WorkActivity.class);
         }
@@ -492,13 +509,16 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         double companyLongitude = 0;
         double companyLatitude = 0;
         int companyDistance = 0;
+        int innerdistance = 0;
         if (comaddressset) {
             companyLongitude = object.getDoubleValue("longitude");
             companyLatitude = object.getDoubleValue("latitude");
             companyDistance = object.getIntValue("distance");
+            innerdistance = object.getIntValue("innerdistance");
         }
         try {
             PreferenceUtils.putInt("distance", companyDistance);
+            PreferenceUtils.putInt("innerdistance", innerdistance);
             PreferenceUtils.putFloat("longitude", (float) companyLongitude);
             PreferenceUtils.putFloat("latitude", (float) companyLatitude);
         } catch (ClassCastException e) {
@@ -574,14 +594,16 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
      * @param models  获取班次信息时候的数据
      * @throws Exception
      */
-    private void handlerWorkLog(boolean isJSON, String message, final ArrayList<WorkModel> models) throws Exception {
+    private void handlerWorkLog(boolean isJSON, String message, ArrayList<WorkModel> models) throws Exception {
         if (!isJSON || ListUtils.isEmpty(models)) {
+            saveDb(models);
             return;
         }
         JSONObject object = JSON.parseObject(message);
         JSONArray listdata = object.getJSONArray("listdata");
         if (ListUtils.isEmpty(listdata)) {
             log("ListUtils.isEmpty(listdata) 数据为空,容错处理");
+            saveDb(models);
             return;
         }
         String timeLog = null;
@@ -608,7 +630,10 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
                 }
             }
         }
-        //下拉数据后保存到数据库
+        saveDb(models);
+    }
+
+    private void saveDb(final List<WorkModel> models) {
         if (!ListUtils.isEmpty(models)) {
             //当天日期数据
             ThreadUtil.getInstance().addTask(new Runnable() {
@@ -629,7 +654,6 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         }
     }
 
-
     /**
      * 解析处理外勤计划列表并保存到数据库
      *

+ 3 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/ReckonAutoUtil.java

@@ -76,6 +76,7 @@ public class ReckonAutoUtil {
 
         long offStart = getTimeByHHmm(model.getOffTime());
         long offEnd = getTimeByHHmm(model.getOffend());
+
         if (workStart < System.currentTimeMillis() && workEnd > System.currentTimeMillis()) {
             int comDistance = PreferenceUtils.getInt(MyApplication.getInstance(), "distance", 0);//规定距离
             if (comDistance == 0) {
@@ -105,15 +106,13 @@ public class ReckonAutoUtil {
     /**
      * 计算是否符合提醒
      *
-     * @param isAlarm      是否开启提醒
      * @param intervalTime 轮回时间
      * @return
      */
-    public int reckonAlarm(boolean isAlarm, long intervalTime) {
+    public int reckonAlarm(long intervalTime) {
         WorkModel model = getPlaceWork();
         if (model == null) return 0;
         if (isOutoffWork(model)) return 1;
-        if (!isAlarm) return 0;
         long time = getWorkAlarm(model);
         if (time != 0 && Math.abs(System.currentTimeMillis() - time) <= intervalTime) {
             model.setWorkAlarm(true);
@@ -173,7 +172,7 @@ public class ReckonAutoUtil {
     //5.判断是否离开工作范围
     protected boolean isOutoffWork(WorkModel model) {
         if (!isWorkTime(model)) return false;
-        int comDistance = PreferenceUtils.getInt(MyApplication.getInstance(), "distance", 0);//规定距离
+        int comDistance = PreferenceUtils.getInt(MyApplication.getInstance(), "innerdistance", 0);//规定距离
         if (comDistance == 0) return false;
         boolean is = comDistance < BaiduMapUtil.getInstence().getDistance() && !model.isLeaveAlarm();
         if (is) {

+ 41 - 1
WeiChat/src/main/res/layout/activity_location_search.xml

@@ -40,7 +40,47 @@
         android:layout_height="0dp"
         android:layout_weight="3"
         android:clickable="false" />
-
+    <LinearLayout
+        android:id="@+id/qzone_map_ll"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="gone">
+        <TextView
+            android:id="@+id/hidden_location_tv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="5dp"
+            android:padding="5dp"
+            android:text="不显示位置"
+            android:textSize="@dimen/text_main"
+            android:textColor="@color/titleBlue"
+            android:visibility="visible"
+            />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="8dp"
+            android:background="@color/light_gray"
+            android:visibility="visible"/>
+        <TextView
+            android:id="@+id/location_city_tv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="5dp"
+            android:layout_marginBottom="5dp"
+            android:padding="5dp"
+            android:text=""
+            android:textSize="@dimen/text_main"
+            />
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/line"
+            android:layout_marginTop="8dp"
+            android:background="@color/light_gray"
+            />
+    </LinearLayout>
     <ListView
         android:id="@+id/listview"
         android:layout_width="match_parent"

+ 15 - 8
WeiChat/src/main/res/layout/item_location_ls.xml

@@ -5,11 +5,22 @@
     android:background="@drawable/selector_me_menu_item_bg"
     android:padding="5dp">
 
+
+    <TextView
+        android:id="@+id/distance_tv"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:text="name" />
+
     <TextView
         android:id="@+id/name_tv"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_toLeftOf="@+id/select_rb"
+        android:layout_toLeftOf="@+id/distance_tv"
+        android:ellipsize="end"
+        android:lines="1"
+        android:text="name"
         android:textColor="@color/text_main"
         android:textSize="@dimen/text_main" />
 
@@ -18,15 +29,11 @@
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_below="@+id/name_tv"
-        android:layout_marginTop="2dp"
+        android:layout_marginTop="5dp"
         android:layout_toLeftOf="@+id/select_rb"
+        android:text="name"
         android:textColor="@color/text_hine"
         android:textSize="@dimen/text_hine" />
 
-    <TextView
-        android:id="@+id/distance_tv"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_alignParentRight="true"
-        android:padding="10dp" />
+
 </RelativeLayout>