Browse Source

合并代码 2.0 验证问题

Bitliker 9 years ago
parent
commit
a96e9819ce

+ 58 - 74
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -1,7 +1,7 @@
 package com.xzjmyk.pm.activity;
 
 import android.content.Intent;
-import android.os.Bundle;
+import android.support.v4.content.LocalBroadcastManager;
 import android.util.Log;
 
 import com.baidu.location.BDLocation;
@@ -9,19 +9,24 @@ import com.baidu.location.BDLocationListener;
 import com.baidu.location.LocationClient;
 import com.baidu.location.LocationClientOption;
 import com.baidu.mapapi.model.LatLng;
-import com.xzjmyk.pm.activity.bean.LocationEntity;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
 import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 public class BdLocationHelper {
     public static final String UPLOCATION_ACTION = "UPLOCATION_ACTION";//更新位置时候广播数据
-    private LocationEntity locationEntity;//位置对象
+
+    private boolean locationOk;//是否定位成功
+    private LatLng latLng;
+    private String location;//位置信息
+    private String address;//详细地址
+    private String province;// 省份
+    private String cityName;// 城市
+    private String district;// 街道
+    private String errorMessage;//定位错误信息
+
     private final Intent broadcast = new Intent(UPLOCATION_ACTION);//更新后广播
     private LocationClient mLocationClient = null;
     private int mFaildCount = 0;//失败次数
-    private boolean runingLocation = false;
-    private long oldTime;//上一次获取定位时间
 
     public BdLocationHelper() {
         initLocation();
@@ -42,7 +47,7 @@ public class BdLocationHelper {
         LocationClientOption option = new LocationClientOption();
         option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
         option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
-        option.setScanSpan(0);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
+        option.setScanSpan(20 * 1000);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
         option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
         option.setOpenGps(true);//可选,默认false,设置是否使用gps
         option.setLocationNotify(false);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
@@ -90,29 +95,6 @@ public class BdLocationHelper {
         }
     }
 
-    /**
-     * 重新定位,循环
-     **/
-    public void requestLocation(final long time) {
-        if (runingLocation || mLocationClient == null) {//如果已经启动了
-            return;
-        }
-        runingLocation = true;
-        ThreadUtil.getInstance().addLoopTask(new Runnable() {
-            @Override
-            public void run() {
-                while (runingLocation) {
-                    log("requestLocation");
-                    mLocationClient.requestNotifyLocation();
-                    try {
-                        Thread.sleep(time);
-                    } catch (InterruptedException e) {
-                        e.printStackTrace();
-                    }
-                }
-            }
-        });
-    }
 
     private BDLocationListener mLocationListener = new BDLocationListener() {
         @Override
@@ -122,54 +104,48 @@ public class BdLocationHelper {
             } catch (Exception e) {
                 if (e != null)
                     log("onReceiveLocation Exception" + e.getMessage());
-                if (location == null)
-                    locationEntity = new LocationEntity();
-                locationEntity.clear();
+                clearLocation();
             }
         }
     };
 
+
     private void setLocation(BDLocation location) throws Exception {
-        if (System.currentTimeMillis() - oldTime < 10000) return;//防止过度
-        if (locationEntity == null)
-            locationEntity = new LocationEntity();
-        locationEntity.clear();
         if (location.getLocType() == BDLocation.TypeGpsLocation// GPS定位结果
                 || location.getLocType() == BDLocation.TypeNetWorkLocation//网络定位
                 || location.getLocType() == BDLocation.TypeOffLineLocation//离线定位(未验证离线定位的有效性)
                 ) {
             //定位成功
-            oldTime = System.currentTimeMillis();
-            locationEntity.setLocationOk(true);
-            locationEntity.setLatitude(location.getLatitude());
-            locationEntity.setLongitude(location.getLongitude());
-            locationEntity.setAddress(location.getAddrStr());
-            locationEntity.setLocation(location.getLocationDescribe());
-            locationEntity.setProvince(location.getProvince());
-            locationEntity.setCityName(location.getCity());
-            locationEntity.setDistrict(location.getDistrict());
-            if (StringUtils.isEmpty(location.getLocationDescribe()))
-                PreferenceUtils.putString("bdlocation", location.getLocationDescribe());
-            if (StringUtils.isEmpty(location.getAddrStr()))
-                PreferenceUtils.putString("bdaddress", location.getAddrStr());
+            locationOk = true;
+            latLng = new LatLng(location.getLatitude(), location.getLongitude());
+            this.location = location.getLocationDescribe();
+            province = location.getProvince();
+            cityName = location.getCity();
+            district = location.getDistrict();
+            address = location.getAddrStr();
+            if (!StringUtils.isEmpty(this.location))
+                PreferenceUtils.putString("bdlocation", this.location);
+            if (!StringUtils.isEmpty(address))
+                PreferenceUtils.putString("bdaddress", address);
+            errorMessage = "";
         } else {
             //统一为定位失败
-            locationEntity.setLocationOk(false);
+            locationOk = false;
             log("定位失败");
             if (location.getLocType() == BDLocation.TypeServerError) {
                 //服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因
-                locationEntity.setErrorMessage("服务端网络定位失败");
+                errorMessage = "服务端网络定位失败";
                 log("服务端网络定位失败");
             } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
                 //网络不同导致定位失败,请检查网络是否通畅
-                locationEntity.setErrorMessage("网络不同导致定位失败,请检查网络是否通畅");
+                errorMessage = "网络不同导致定位失败,请检查网络是否通畅";
                 log("网络不同导致定位失败,请检查网络是否通畅");
             } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
                 //无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机
-                locationEntity.setErrorMessage("无法获取有效定位依据导致定位失败");
+                errorMessage = "无法获取有效定位依据导致定位失败";
                 log("无法获取有效定位依据导致定位失败");
             } else {
-                locationEntity.setErrorMessage("未知错误");
+                errorMessage = "未知错误";
                 log("未知错误");
             }
             if (mFaildCount < 3) {
@@ -178,13 +154,9 @@ public class BdLocationHelper {
                 return;
             }
         }
-        //TODO 发送广播
-        Bundle bundle = broadcast.getExtras();
-        if (bundle == null) bundle = new Bundle();
-        bundle.putParcelable("data", locationEntity);
-        broadcast.putExtras(bundle);
-        MyApplication.getInstance().sendBroadcast(broadcast);
-
+        //发送广播
+        broadcast.putExtra(UPLOCATION_ACTION, locationOk);
+        LocalBroadcastManager.getInstance(MyApplication.getInstance()).sendBroadcast(broadcast);
     }
 
     private void log(String message) {
@@ -198,52 +170,64 @@ public class BdLocationHelper {
 
 
     public String getName() {
-        return locationEntity == null ? "" : StringUtils.isEmpty(locationEntity.getLocation()) ? "" : locationEntity.getLocation();
+        return StringUtils.isEmpty(location) ? "" : location;
     }
 
 
     // 获取经纬度
     public double getLongitude() {
-        return locationEntity == null ? 0 : locationEntity.getLongitude();
+        return latLng == null ? 1 : latLng.longitude;
     }
 
     // 获取经纬度
     public double getLatitude() {
-        return locationEntity == null ? 0 : locationEntity.getLatitude();
+        return latLng == null ? 1 : latLng.latitude;
     }
 
     // 获取地址详情
     public String getAddress() {
-        String addr = locationEntity == null ? "" : locationEntity.getAddress();
-        if (StringUtils.isEmpty(addr)) ;
-        addr = PreferenceUtils.getString("bdaddress");
-        return addr;
+        return StringUtils.isEmpty(address) ? PreferenceUtils.getString("bdaddress") : address;
     }
 
+
     public String getProvinceName() {
-        return locationEntity == null ? "" : locationEntity.getProvince();
+        return province;
     }
 
     public LatLng getLocation() {
-        return new LatLng(getLatitude(), getLongitude());
+        return latLng;
     }
 
     public String getCityName() {
-        return locationEntity == null ? "" : locationEntity.getCityName();
+        return cityName;
     }
 
     public String getDistrictName() {
-        return locationEntity == null ? "" : locationEntity.getDistrict();
+        return district;
     }
 
     public boolean locationOk() {
-        return locationEntity == null ? false : locationEntity.isLocationOk();
+        return locationOk;
+    }
+
+    public String getErrorMessage() {
+        return errorMessage;
     }
 
     public boolean isLocationUpdate() {
         return true;
     }
 
+    private void clearLocation() {
+        locationOk = false;
+        latLng = null;
+        location = null;
+        address = null;
+        province = null;
+        cityName = null;
+        district = null;
+        errorMessage = null;
+    }
 
 }
 

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

@@ -136,7 +136,7 @@ public class WorkModelDao {
                         offSignin = "";
                 }
                 model = new WorkModel(workStart, workTime, workend, workSignin, offStart,
-                        offTime, offend, offSignin, leaveAlarm, workAlarm, offAlarm, date);
+                        offTime, offend, offSignin, leaveAlarm, workAlarm, offAlarm );
                 models.add(model);
             }
         } catch (Exception e) {

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

@@ -7,6 +7,7 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
+import android.support.v4.content.LocalBroadcastManager;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.RecyclerView;
 import android.util.DisplayMetrics;
@@ -86,7 +87,7 @@ public class MissionActivity extends OABaseActivity implements View.OnClickListe
         ViewUtils.inject(this);
         IntentFilter filter = new IntentFilter();
         filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
-        registerReceiver(receiver, filter);
+        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver,filter);
         initView();
         initEvent();
     }
@@ -137,7 +138,7 @@ public class MissionActivity extends OABaseActivity implements View.OnClickListe
 
 
     private void endActivity() {
-        unregisterReceiver(receiver);
+        LocalBroadcastManager.getInstance(ct).unregisterReceiver(receiver);
         boolean isAuto = PreferenceUtils.getBoolean(AppConfig.AUTO_MISSION, false);
         if (isAuto) {
             setResult(0x20);

+ 32 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectDepartmentActivity.java

@@ -3,7 +3,6 @@ package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 import android.content.Intent;
 import android.os.Bundle;
 import android.text.Editable;
-import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -55,6 +54,8 @@ public class SelectDepartmentActivity extends OABaseActivity {
     private String selectName = "";
     private SeachAdapter seachAdapter = null;
 
+    boolean isClick = true;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -65,6 +66,7 @@ public class SelectDepartmentActivity extends OABaseActivity {
         initEvent();
     }
 
+
     private void initData() {
         DBManager manager = new DBManager(ct);
         String master = CommonUtil.getSharedPreferences(ct, "erp_master");
@@ -77,8 +79,6 @@ public class SelectDepartmentActivity extends OABaseActivity {
         for (HrorgsEntity e : hrorgsEntities) {
             mDatas.add(new HrorgsModel(e.getOr_id(), e.getOr_subof(), e.getOr_name(), e.getOr_code()));
         }
-
-
     }
 
     private void initEvent() {
@@ -86,8 +86,15 @@ public class SelectDepartmentActivity extends OABaseActivity {
             @Override
             public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                 if (StringUtils.isEmpty(search_edit.getText().toString())) {
-                    if (b) adapter.selectAll();
-                    else adapter.deleteAll();
+                    if (b) {
+                        if (isClick)
+                            adapter.selectAll();
+                        all_sure_cb.setText("取消选择");
+                    } else {
+                        if (isClick)
+                            adapter.deleteAll();
+                        all_sure_cb.setText("全选");
+                    }
                 } else {
                     if (!ListUtils.isEmpty(seachAdapter.getSearch())) {
                         seachAdapter.setClicked(b);
@@ -100,7 +107,6 @@ public class SelectDepartmentActivity extends OABaseActivity {
             @Override
             public void onClick(View view) {
                 endActivity();
-
             }
         });
         search_edit.addTextChangedListener(new EditChangeListener() {
@@ -132,7 +138,19 @@ public class SelectDepartmentActivity extends OABaseActivity {
                 if (seachAdapter == null || seachAdapter.getSearch().size() <= position) return;
                 seachAdapter.getSearch().get(position).setChecked(!seachAdapter.getSearch().get(position).isChecked());
                 seachAdapter.notifyDataSetChanged();
-                setMumberSelect(adapter.getClick().size());
+                int clickSize = adapter.getClick().size();
+                setMumberSelect(clickSize);
+                if (clickSize != adapter.getCount()) {
+                    if (all_sure_cb.isChecked()) {
+                        isClick = false;
+                        all_sure_cb.setText("全选");
+                    }
+                } else {
+                    if (!all_sure_cb.isChecked()) {
+                        isClick = false;
+                        all_sure_cb.setText("取消选择");
+                    }
+                }
             }
         });
     }
@@ -166,7 +184,6 @@ public class SelectDepartmentActivity extends OABaseActivity {
             adapter.setOnTreeNodeClickListener(new TreeListViewAdapter.OnTreeNodeClickListener() {
                 @Override
                 public void onClick(Node node, int position) {
-
                 }
 
                 @Override
@@ -181,7 +198,12 @@ public class SelectDepartmentActivity extends OABaseActivity {
             e.printStackTrace();
         }
         adapter.setClick(selectName);
-        setMumberSelect(adapter.getClick().size());
+        int clickSize = adapter.getClick().size();
+        setMumberSelect(clickSize);
+        if (clickSize == mDatas.size()) {
+            all_sure_cb.setChecked(true);
+            all_sure_cb.setText("取消选择");
+        }
         context_lv.setAdapter(adapter);
     }
 
@@ -192,7 +214,7 @@ public class SelectDepartmentActivity extends OABaseActivity {
     private void endActivity() {
         ArrayList<HrorgsModel> baseNodeBeans = adapter.getClick();
         if (ListUtils.isEmpty(baseNodeBeans)) {
-            Log.i("gongpengming", "这个是空的");
+            finish();
             return;
         }
         StringBuilder ids = new StringBuilder();

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

@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
+import android.support.v4.content.LocalBroadcastManager;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
 import android.view.Gravity;
@@ -107,7 +108,7 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
 
     @Override
     protected void onDestroy() {
-        unregisterReceiver(receiver);
+        LocalBroadcastManager.getInstance(ct).unregisterReceiver(receiver);
         super.onDestroy();
     }
 
@@ -117,7 +118,7 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
         setContentView(R.layout.activity_work);
         IntentFilter filter = new IntentFilter();
         filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
-        registerReceiver(receiver, filter);
+        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver, filter);
         ViewUtils.inject(this);
         initView();
         initLcation();
@@ -130,6 +131,7 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
 
     }
 
+
     private void initView() {
         isAdmin = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         selectTime = System.currentTimeMillis();

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

@@ -243,8 +243,8 @@ public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
     private String getOffTag(WorkModel model, boolean isFinal) {
         if (StringUtils.isEmpty(model.getOffTime())) return "";
         if (!StringUtils.isEmpty(model.getOffSignin())) {
-            if (getForAddMin(model.getOffTime(), AutoMemoryUtil.earlyoff).compareTo(model.getOffSignin()) >= 0
-                    && getForAddMin(model.getOffTime(), AutoMemoryUtil.nonclass).compareTo(model.getOffSignin()) <= 0) {
+            if (getForAddMin(model.getOffTime(), -AutoMemoryUtil.earlyoff).compareTo(model.getOffSignin()) >= 0
+                    && getForAddMin(model.getOffTime(), -AutoMemoryUtil.nonclass).compareTo(model.getOffSignin()) <= 0) {
                 //早退  下班开始时间到早退时间之间
                 return EARLYOFF;
             }

+ 3 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java

@@ -7,6 +7,7 @@ import android.content.IntentFilter;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.support.v4.content.LocalBroadcastManager;
 import android.text.Html;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -132,7 +133,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
 
     @Override
     public void onDestroy() {
-        ct.unregisterReceiver(receiver);
+        LocalBroadcastManager.getInstance(ct).unregisterReceiver(receiver);
         super.onDestroy();
     }
 
@@ -233,7 +234,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         ViewUtils.inject(getmRootView());
         IntentFilter filter = new IntentFilter();
         filter.addAction(BdLocationHelper.UPLOCATION_ACTION);
-        ct.registerReceiver(receiver, filter);
+        LocalBroadcastManager.getInstance(ct).registerReceiver(receiver, filter);
         adminStatus = ct.getIntent() == null ? false : ct.getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         initview();
         initData();

+ 55 - 57
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/model/oa/WorkModel.java

@@ -4,7 +4,7 @@ import android.os.Parcel;
 import android.os.Parcelable;
 
 /**
- * 班次的模型
+ * 班次的模型,
  * Created by Bitliker on 2016/12/12.
  */
 public class WorkModel implements Parcelable {
@@ -17,18 +17,19 @@ public class WorkModel implements Parcelable {
     private String offTime;//下班时间
     private String offend;//下班结束时间
     private String offSignin;//下班签到时间
+
     private boolean leaveAlarm;//离开提醒
     private boolean workAlarm;//上班提醒
     private boolean offAlarm;//下班提醒
-    private String date;
 
+    //判断是否隔天的班次
+    private boolean isNextDay = false;
 
     public WorkModel() {
+
     }
 
-    public WorkModel(String workStart, String workTime, String workend,
-                     String workSignin, String offStart, String offTime, String offend,
-                     String offSignin, boolean leaveAlarm, boolean workAlarm, boolean offAlarm,String date) {
+    public WorkModel(String workStart, String workTime, String workend, String workSignin, String offStart, String offTime, String offend, String offSignin, boolean leaveAlarm, boolean workAlarm, boolean offAlarm) {
         this.workStart = workStart;
         this.workTime = workTime;
         this.workend = workend;
@@ -40,8 +41,6 @@ public class WorkModel implements Parcelable {
         this.leaveAlarm = leaveAlarm;
         this.workAlarm = workAlarm;
         this.offAlarm = offAlarm;
-        this.date = date;
-
     }
 
     protected WorkModel(Parcel in) {
@@ -56,7 +55,7 @@ public class WorkModel implements Parcelable {
         leaveAlarm = in.readByte() != 0;
         workAlarm = in.readByte() != 0;
         offAlarm = in.readByte() != 0;
-        date = in.readString();
+        isNextDay = in.readByte() != 0;
     }
 
     @Override
@@ -72,7 +71,7 @@ public class WorkModel implements Parcelable {
         dest.writeByte((byte) (leaveAlarm ? 1 : 0));
         dest.writeByte((byte) (workAlarm ? 1 : 0));
         dest.writeByte((byte) (offAlarm ? 1 : 0));
-        dest.writeString(date);
+        dest.writeByte((byte) (isNextDay ? 1 : 0));
     }
 
     @Override
@@ -92,45 +91,52 @@ public class WorkModel implements Parcelable {
         }
     };
 
+    public String getWorkStart() {
+        return workStart;
+    }
 
-    public String getDate() {
-        return date;
+    public void setWorkStart(String workStart) {
+        this.workStart = workStart;
     }
 
-    public void setDate(String date) {
-        this.date = date;
+    public String getWorkTime() {
+        return workTime;
     }
 
-    public boolean isOffAlarm() {
-        return offAlarm;
+    public void setWorkTime(String workTime) {
+        this.workTime = workTime;
     }
 
-    public void setOffAlarm(boolean offAlarm) {
-        this.offAlarm = offAlarm;
+    public String getWorkend() {
+        return workend;
     }
 
-    public boolean isWorkAlarm() {
-        return workAlarm;
+    public void setWorkend(String workend) {
+        this.workend = workend;
     }
 
-    public void setWorkAlarm(boolean workAlarm) {
-        this.workAlarm = workAlarm;
+    public String getWorkSignin() {
+        return workSignin;
     }
 
-    public boolean isLeaveAlarm() {
-        return leaveAlarm;
+    public void setWorkSignin(String workSignin) {
+        this.workSignin = workSignin;
     }
 
-    public void setLeaveAlarm(boolean leaveAlarm) {
-        this.leaveAlarm = leaveAlarm;
+    public String getOffStart() {
+        return offStart;
     }
 
-    public String getOffSignin() {
-        return offSignin;
+    public void setOffStart(String offStart) {
+        this.offStart = offStart;
     }
 
-    public void setOffSignin(String offSignin) {
-        this.offSignin = offSignin;
+    public String getOffTime() {
+        return offTime;
+    }
+
+    public void setOffTime(String offTime) {
+        this.offTime = offTime;
     }
 
     public String getOffend() {
@@ -141,51 +147,43 @@ public class WorkModel implements Parcelable {
         this.offend = offend;
     }
 
-    public String getOffTime() {
-        return offTime;
-    }
-
-    public void setOffTime(String offTime) {
-        this.offTime = offTime;
-    }
-
-    public String getOffStart() {
-        return offStart;
+    public String getOffSignin() {
+        return offSignin;
     }
 
-    public void setOffStart(String offStart) {
-        this.offStart = offStart;
+    public void setOffSignin(String offSignin) {
+        this.offSignin = offSignin;
     }
 
-    public String getWorkSignin() {
-        return workSignin;
+    public boolean isLeaveAlarm() {
+        return leaveAlarm;
     }
 
-    public void setWorkSignin(String workSignin) {
-        this.workSignin = workSignin;
+    public void setLeaveAlarm(boolean leaveAlarm) {
+        this.leaveAlarm = leaveAlarm;
     }
 
-    public String getWorkend() {
-        return workend;
+    public boolean isWorkAlarm() {
+        return workAlarm;
     }
 
-    public void setWorkend(String workend) {
-        this.workend = workend;
+    public void setWorkAlarm(boolean workAlarm) {
+        this.workAlarm = workAlarm;
     }
 
-    public String getWorkTime() {
-        return workTime;
+    public boolean isOffAlarm() {
+        return offAlarm;
     }
 
-    public void setWorkTime(String workTime) {
-        this.workTime = workTime;
+    public void setOffAlarm(boolean offAlarm) {
+        this.offAlarm = offAlarm;
     }
 
-    public String getWorkStart() {
-        return workStart;
+    public boolean isNextDay() {
+        return isNextDay;
     }
 
-    public void setWorkStart(String workStart) {
-        this.workStart = workStart;
+    public void setNextDay(boolean nextDay) {
+        isNextDay = nextDay;
     }
 }

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

@@ -56,6 +56,7 @@ public class FlightsPresernter implements HttpHandler.OnResultListener {
     public void deleteWork(FlightsModel model, int position) {
         if (!MyApplication.getInstance().isNetworkActive()) {
             iFlightsView.showToast("当前网络不可用,请稍后重试!", R.color.load_error);
+            return;
         }
         showLoading();
         Map<String, Object> param = new HashMap<>();

+ 9 - 6
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/MeFragment.java

@@ -26,6 +26,7 @@ import com.alibaba.fastjson.JSON;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.uuzuche.lib_zxing.activity.CaptureActivity;
 import com.uuzuche.lib_zxing.activity.CodeUtils;
+import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.AppConstant;
 import com.xzjmyk.pm.activity.CaptureResultActivity;
 import com.xzjmyk.pm.activity.CommonWebviewActivity;
@@ -37,7 +38,7 @@ import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.circle.BusinessCircleActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.BaseInfoActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.SearchLocationActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.Master;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.Constants;
@@ -272,7 +273,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         findViewById(R.id.test_rl).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivity(new Intent(ct, SearchLocationActivity.class));
+                Intent intent = new Intent(ct, WorkActivity.class);
+                intent.putExtra(AppConfig.IS_ADMIN, true);//上传管理员状态
+                startActivity(intent);
             }
         });
 
@@ -280,7 +283,7 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
         findViewById(R.id.time_statistics_rl).setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
-                startActivity(new Intent(ct,TimeStatisticsActivity.class));
+                startActivity(new Intent(ct, TimeStatisticsActivity.class));
             }
         });
 
@@ -342,9 +345,9 @@ public class MeFragment extends EasyFragment implements View.OnClickListener {
                 startActivity(new Intent(getActivity(), LocalVideoActivity.class));
                 break;
             case R.id.setting_rl:// 设置
-              // startActivity(new Intent(getActivity(), DataFormDetailActivity.class));
-               // startActivity(new Intent(getActivity(), DataFormFieldActivity.class));
-               startActivity(new Intent(getActivity(), SettingActivity.class));
+                // startActivity(new Intent(getActivity(), DataFormDetailActivity.class));
+                // startActivity(new Intent(getActivity(), DataFormFieldActivity.class));
+                startActivity(new Intent(getActivity(), SettingActivity.class));
                 break;
             case R.id.app_scan_code_rl://APP二维码
                 ImageView imageView = new ImageView(getActivity());

+ 21 - 19
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/WorkHandlerUtil.java

@@ -3,8 +3,8 @@ package com.xzjmyk.pm.activity.util;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.baidu.mapapi.model.LatLng;
-import com.xzjmyk.pm.activity.ui.erp.model.oa.WorkLocationModel;
 import com.xzjmyk.pm.activity.db.dao.WorkLocationDao;
+import com.xzjmyk.pm.activity.ui.erp.model.oa.WorkLocationModel;
 import com.xzjmyk.pm.activity.ui.erp.model.oa.WorkModel;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.OACheckUtil;
@@ -71,14 +71,10 @@ public class WorkHandlerUtil {
                 if (StringUtils.isEmpty(e.getWorkStart()) || StringUtils.isEmpty(e.getWorkTime()) ||
                         StringUtils.isEmpty(e.getOffend()) || StringUtils.isEmpty(e.getOffTime()))
                     continue;
-                if (e.getWorkStart().compareTo(timeLog) <= 0 && e.getOffend().compareTo(timeLog) >= 0) {
-                    //符合该班次    上班开始时间<time<下班结束时间
-                    if (enoughWork(e, timeLog)) {//属于上班打卡
-                        models.get(j).setWorkSignin(timeLog);
-                    } else if (enoughOff(e, timeLog)) {//属于下班打卡
-                        models.get(j).setOffSignin(timeLog);
-                    }
-                    break;
+                if (enoughWork(e, timeLog)) {//属于上班打卡
+                    models.get(j).setWorkSignin(timeLog);
+                } else if (enoughOff(e, timeLog)) {//属于下班打卡
+                    models.get(j).setOffSignin(timeLog);
                 }
             }
         }
@@ -158,10 +154,7 @@ public class WorkHandlerUtil {
      * @return
      */
     private static boolean enoughOff(WorkModel e, String time) {
-        if (time.compareTo(e.getOffTime()) > 0) return true;//大于下班时间
-        if (time.compareTo(e.getWorkTime()) > 0 && time.compareTo(e.getOffStart()) > 0 &&
-                !StringUtils.isEmpty(e.getWorkSignin()))
-            return true;//小于下班时间
+        if (time.compareTo(e.getOffStart()) >= 0 && time.compareTo(e.getOffend()) <= 0) return true;
         return false;
     }
 
@@ -175,9 +168,8 @@ public class WorkHandlerUtil {
      */
     private static boolean enoughWork(WorkModel e, String time) {
         if (!StringUtils.isEmpty(e.getWorkSignin())) return false;
-        if (time.compareTo(e.getWorkTime()) < 0) return true;//小于上班时间
-        if (time.compareTo(e.getOffTime()) < 0 && time.compareTo(e.getWorkend()) < 0)
-            return true;//小于(下班时间于上班结束计算时间)最小值,小于但是上班没有签到过
+        if (time.compareTo(e.getWorkStart()) >= 0 && time.compareTo(e.getWorkend()) <= 0)
+            return true;//小于上班时间
         return false;
     }
 
@@ -248,14 +240,24 @@ public class WorkHandlerUtil {
             if (!(i == models.size() - 1)) {//如果当前是不最后一个
                 nextWorkStartTime = models.get(i + 1).getWorkTime();
             }
+            //TODO 判断是否是跨天
+            boolean isNextDay = false;
             if (i != 0) {//如果不是第一个
+                if (models.get(0).getWorkTime().compareTo(models.get(i).getOffTime()) > 0)
+                    isNextDay = true;
                 lastOffEndTime = models.get(i - 1).getOffend();
                 models.get(i).setWorkStart(getWorkStart(lastOffEndTime));
-                models.get(i).setOffend(getOffEnd(models.get(i).getOffTime(), nextWorkStartTime));
             } else {//如果是第一个
+                if (models.get(i).getWorkTime().compareTo(models.get(i).getOffTime()) > 0)
+                    isNextDay = true;
                 models.get(i).setWorkStart(getMinTimeByDiffer(models.get(i).getWorkTime(), -earlytime * 60));
-                models.get(i).setOffend(getOffEnd(models.get(i).getOffTime(), nextWorkStartTime));
             }
+            //如果没有下一个班次,就设置结束时间为
+            models.get(i).setOffend(getOffEnd(models.get(i).getOffTime(), nextWorkStartTime));
+
+            if (StringUtils.isEmpty(models.get(i).getOffend()))
+                models.get(i).setOffend(isNextDay ? models.get(0).getWorkStart() : "24:00");
+            models.get(i).setNextDay(isNextDay);
         }
     }
 
@@ -284,7 +286,7 @@ public class WorkHandlerUtil {
      */
     private static String getOffEnd(String offTime, String nextWorkStartTime) {
         if (StringUtils.isEmpty(nextWorkStartTime)) {//没有下一个班次
-            return "24:00";
+            return nextWorkStartTime;
         } else {
             String time = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + offTime + ":00";
             long currentTime = TimeUtils.f_str_2_long(time);