Browse Source

打卡签到迁移完成

FANGLH 8 years ago
parent
commit
874ec89eae
17 changed files with 713 additions and 280 deletions
  1. 3 5
      WeiChat/src/main/AndroidManifest.xml
  2. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  3. 1 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAMainActivity.java
  4. 5 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/oa/WorkAdapter.java
  5. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenterhi.java
  6. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpService.java
  7. 16 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpSigninUitl.java
  8. 0 163
      app_core/common/src/main/java/com/core/widget/view/ClearEditText.java
  9. 4 0
      app_modular/appworks/src/main/AndroidManifest.xml
  10. 13 14
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ChangeMobileActivity.java
  11. 47 60
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkActivity.java
  12. 312 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkAdapter.java
  13. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/IWorkPresenter.java
  14. 8 10
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java
  15. 296 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/OASigninPicker.java
  16. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/WifiReceiverUtil.java
  17. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/view/IWorkView.java

+ 3 - 5
WeiChat/src/main/AndroidManifest.xml

@@ -147,7 +147,7 @@
         </activity>
         <!-- 登录模块 -->
         <activity
-            android:name=".ui.account.LoginActivity"
+            android:name="com.modular.login.LoginActivity"
             android:launchMode="singleTask"
             android:windowSoftInputMode="adjustPan" />
         <activity android:name=".ui.account.LoginHistoryActivity" />
@@ -759,7 +759,7 @@
             android:windowSoftInputMode="adjustResize" />
 
         <activity
-            android:name=".ui.erp.activity.oa.ChangeMobileActivity"
+            android:name="com.uas.appworks.OA.erp.activity.ChangeMobileActivity"
             android:label="@string/change_mobile" />
         <activity
             android:name="com.umeng.socialize.editorpage.ShareActivity"
@@ -889,9 +889,7 @@
             android:label="@string/activity_select_aims" />
         <!-- 动态表单 -->
 
-        <activity
-            android:name=".ui.erp.activity.oa.WorkActivity"
-            android:label="@string/activity_signing" />
+
 
         <service
             android:name=".util.oa.AutoErpService"

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

@@ -49,6 +49,7 @@ import com.core.net.http.ViewUtil;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
+import com.core.selectcalendar.OACalendarView;
 import com.core.utils.CommonInterface;
 import com.core.utils.TimeUtils;
 import com.core.widget.EmptyLayout;
@@ -58,6 +59,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.uas.appworks.OA.erp.activity.ExpenseReimbursementActivity;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
 import com.uas.appworks.OA.erp.activity.WorkDailyAddActivity;
 import com.uas.appworks.OA.erp.activity.form.DataFormDetailActivity;
 import com.xzjmyk.pm.activity.R;
@@ -76,7 +78,6 @@ import com.xzjmyk.pm.activity.ui.platform.task.TaskAddErpActivity;
 import com.xzjmyk.pm.activity.ui.platform.task.TaskDetailB2BActivity;
 import com.xzjmyk.pm.activity.util.oa.CommonUtil;
 import com.xzjmyk.pm.activity.util.oa.OAHttpUtil;
-import com.core.selectcalendar.OACalendarView;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 

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

@@ -30,6 +30,7 @@ import com.handmark.pulltorefresh.library.PullToRefreshBase;
 import com.handmark.pulltorefresh.library.PullToRefreshScrollView;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
 import com.uas.appworks.OA.erp.activity.WorkDailyAddActivity;
 import com.uas.appworks.OA.erp.activity.form.DataFormDetailActivity;
 import com.xzjmyk.pm.activity.R;

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

@@ -14,15 +14,15 @@ import android.widget.TextView;
 
 import com.common.data.CalendarUtil;
 import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.core.app.AppConfig;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.ChangeMobileActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
-import com.core.model.WorkModel;
-import com.common.data.ListUtils;
 import com.core.model.OAConfig;
+import com.core.model.WorkModel;
 import com.core.utils.TimeUtils;
+import com.uas.appworks.OA.erp.activity.ChangeMobileActivity;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
+import com.xzjmyk.pm.activity.R;
 
 import java.util.List;
 

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

@@ -3,8 +3,8 @@ package com.xzjmyk.pm.activity.ui.erp.presenter;
 import android.os.Bundle;
 
 import com.core.model.WorkModel;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IWorkPresenter;
 import com.core.net.http.http.OnHttpResultListener;
+import com.uas.appworks.OA.erp.presenter.IWorkPresenter;
 
 import java.util.ArrayList;
 

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpService.java

@@ -30,12 +30,12 @@ import com.core.model.WorkModel;
 import com.core.utils.CommonInterface;
 import com.core.utils.TimeUtils;
 import com.uas.appme.pedometer.service.StepService;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.db.dao.MessageDao;
 import com.xzjmyk.pm.activity.db.dao.MissionDao;
 import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.xzjmyk.pm.activity.ui.MainActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
 import com.xzjmyk.pm.activity.ui.erp.model.book.SureBookModel;
 import com.xzjmyk.pm.activity.ui.me.TimeStatisticsActivity;
 

+ 16 - 16
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/AutoErpSigninUitl.java

@@ -15,39 +15,39 @@ import com.baidu.mapapi.search.route.DrivingRouteResult;
 import com.common.LogUtil;
 import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
+import com.common.data.ListUtils;
 import com.common.data.StringUtil;
 import com.common.preferences.PreferenceUtils;
 import com.common.system.SystemUtil;
 import com.common.thread.ThreadUtil;
+import com.core.api.wxapi.ApiConfig;
+import com.core.api.wxapi.ApiPlatform;
+import com.core.api.wxapi.ApiUtils;
 import com.core.app.AppConfig;
+import com.core.app.MyApplication;
+import com.core.broadcast.MsgBroadcast;
+import com.core.dao.UserDao;
+import com.core.model.MissionModel;
 import com.core.model.OAConfig;
+import com.core.model.User;
+import com.core.model.WorkModel;
+import com.core.net.http.http.OAHttpHelper;
+import com.core.net.http.http.OnHttpResultListener;
+import com.core.net.http.http.Request;
 import com.core.net.location.BdLocationHelper;
-import com.core.app.MyApplication;
 import com.core.utils.CommonInterface;
+import com.core.utils.TimeUtils;
 import com.core.utils.WorkHandlerUtil;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
 import com.xzjmyk.pm.activity.R;
-import com.core.model.User;
-import com.core.broadcast.MsgBroadcast;
 import com.xzjmyk.pm.activity.db.dao.MessageDao;
 import com.xzjmyk.pm.activity.db.dao.MissionDao;
-import com.core.dao.UserDao;
 import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.MissionActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
-import com.core.model.MissionModel;
-import com.core.model.WorkModel;
 import com.xzjmyk.pm.activity.ui.erp.presenter.MessagePresenter;
-import com.common.data.ListUtils;
-import com.core.utils.TimeUtils;
 import com.xzjmyk.pm.activity.util.baidu.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.baidu.OnGetDrivingRouteResult;
-import com.core.net.http.http.OAHttpHelper;
-import com.core.net.http.http.OnHttpResultListener;
-import com.core.net.http.http.Request;
-import com.core.api.wxapi.ApiConfig;
-import com.core.api.wxapi.ApiPlatform;
-import com.core.api.wxapi.ApiUtils;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -55,8 +55,8 @@ import java.util.List;
 import java.util.Map;
 
 import static com.core.net.http.ViewUtil.ct;
-import static com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences;
 import static com.xzjmyk.pm.activity.util.oa.AutoErpService.CHANGE_WORK_TASK;
+import static com.xzjmyk.pm.activity.util.oa.CommonUtil.getSharedPreferences;
 
 /**
  * 负责签到   内外勤

+ 0 - 163
app_core/common/src/main/java/com/core/widget/view/ClearEditText.java

@@ -1,163 +0,0 @@
-package com.core.widget.view;
-
-import android.content.Context;
-import android.graphics.drawable.Drawable;
-import android.support.v4.view.MotionEventCompat;
-import android.text.Editable;
-import android.text.TextUtils;
-import android.text.TextWatcher;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-import android.view.View.OnFocusChangeListener;
-import android.view.animation.Animation;
-import android.view.animation.CycleInterpolator;
-import android.view.animation.TranslateAnimation;
-import android.widget.EditText;
-
-import com.core.app.R;
-
-
-public class ClearEditText extends EditText implements OnFocusChangeListener, TextWatcher {
-	/**
-	 * 删除按钮的引用
-	 */
-	private Drawable mClearDrawable;
-	private boolean mFocusClear = false;
-
-	public ClearEditText(Context context) {
-		this(context, null);
-	}
-
-	public ClearEditText(Context context, AttributeSet attrs) {
-		this(context, attrs, android.R.attr.editTextStyle);
-	}
-
-	public ClearEditText(Context context, AttributeSet attrs, int defStyle) {
-		super(context, attrs, defStyle);
-		init();
-	}
-
-	private void init() {
-		// 获取EditText的DrawableRight,假如没有设置我们就使用默认的图片
-		mClearDrawable = getCompoundDrawables()[2];
-		if (mClearDrawable == null) {
-			mClearDrawable = getResources().getDrawable(R.drawable.search_clear);
-		}
-		mClearDrawable.setBounds(0, 0, mClearDrawable.getIntrinsicWidth(), mClearDrawable.getIntrinsicHeight());
-		setClearIconVisible(false);
-		setOnFocusChangeListener(this);
-		addTextChangedListener(this);
-	}
-
-	/**
-	 * 因为我们不能直接给EditText设置点击事件,所以我们用记住我们按下的位置来模拟点击事件 当我们按下的位置 在 EditText的宽度 - 图标到控件右边的间距 - 图标的宽度 和 EditText的宽度 - 图标到控件右边的间距之间我们就算点击了图标,竖直方向没有考虑
-	 */
-	@Override
-	public boolean onTouchEvent(MotionEvent event) {
-		int action = MotionEventCompat.getActionMasked(event);
-		if (action == MotionEvent.ACTION_DOWN) {
-			if (!TextUtils.isEmpty(getError())) {
-				setError(null, null);
-				setClearIconVisible(getText().length() > 0);
-				return false;
-			}
-		}
-
-		if (getCompoundDrawables()[2] != null) {
-			if (event.getAction() == MotionEvent.ACTION_UP) {
-				boolean touchable = event.getX() > (getWidth() - getPaddingRight() - mClearDrawable.getIntrinsicWidth())
-						&& (event.getX() < ((getWidth() - getPaddingRight())));
-				if (touchable) {
-					this.setText("");
-				}
-			}
-		}
-
-		return super.onTouchEvent(event);
-	}
-
-	/**
-	 * 当ClearEditText焦点发生变化的时候,判断里面字符串长度设置清除图标的显示与隐藏
-	 */
-	@Override
-	public void onFocusChange(View v, boolean hasFocus) {
-		if (mFocusClear) {
-			if (hasFocus) {
-				setClearIconVisible(getText().length() > 0);
-			} else {
-				setClearIconVisible(false);
-			}
-		}
-	}
-
-	/**
-	 * 当焦点改变的时候,显示或者隐藏Clear icon
-	 */
-	public void setFocusClear(boolean focusClear) {
-		mFocusClear = focusClear;
-	}
-
-	/**
-	 * 设置清除图标的显示与隐藏,调用setCompoundDrawables为EditText绘制上去
-	 * 
-	 * @param visible
-	 */
-	protected void setClearIconVisible(boolean visible) {
-		if (visible) {
-			if (!TextUtils.isEmpty(getError())) {
-				setError(null);
-			}
-		}
-		if (visible) {
-			if (mFocusClear && !hasFocus()) {
-				visible = false;
-			}
-		}
-		Drawable right = visible ? mClearDrawable : null;
-		if (getCompoundDrawables()[2] != right) {
-			setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], null, getCompoundDrawables()[3]);
-		}
-		setCompoundDrawables(getCompoundDrawables()[0], getCompoundDrawables()[1], right, getCompoundDrawables()[3]);
-	}
-
-	/**
-	 * 当输入框里面内容发生变化的时候回调的方法
-	 */
-	@Override
-	public void onTextChanged(CharSequence s, int start, int count, int after) {
-		setClearIconVisible(s.length() > 0);
-	}
-
-	@Override
-	public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
-	}
-
-	@Override
-	public void afterTextChanged(Editable s) {
-
-	}
-
-	/**
-	 * 设置晃动动画
-	 */
-	public void setShakeAnimation() {
-		this.setAnimation(shakeAnimation(5));
-	}
-
-	/**
-	 * 晃动动画
-	 * 
-	 * @param counts
-	 *            1秒钟晃动多少下
-	 * @return
-	 */
-	public static Animation shakeAnimation(int counts) {
-		Animation translateAnimation = new TranslateAnimation(0, 10, 0, 0);
-		translateAnimation.setInterpolator(new CycleInterpolator(counts));
-		translateAnimation.setDuration(1000);
-		return translateAnimation;
-	}
-
-}

+ 4 - 0
app_modular/appworks/src/main/AndroidManifest.xml

@@ -31,5 +31,9 @@
             android:hardwareAccelerated="false"
             android:launchMode="singleTask"
             android:windowSoftInputMode="adjustPan" />
+
+        <activity
+            android:name="com.uas.appworks.OA.erp.activity.WorkActivity"
+            android:label="@string/activity_signing" />
     </application>
 </manifest>

+ 13 - 14
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ChangeMobileActivity.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ChangeMobileActivity.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+package com.uas.appworks.OA.erp.activity;
 
 import android.content.Intent;
 import android.os.Bundle;
@@ -23,21 +23,19 @@ import com.core.api.wxapi.ApiUtils;
 import com.core.app.Constants;
 import com.core.app.MyApplication;
 import com.core.base.BaseActivity;
+import com.core.dao.work.WorkModelDao;
 import com.core.model.SelectBean;
 import com.core.model.WorkModel;
 import com.core.net.http.ViewUtil;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
+import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.ToastUtil;
+import com.core.widget.crouton.Crouton;
 import com.core.widget.view.Activity.SelectActivity;
-import com.lidroid.xutils.ViewUtils;
-import com.lidroid.xutils.view.annotation.ViewInject;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
-import com.xzjmyk.pm.activity.view.crouton.Crouton;
+import com.me.appworks.R;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -52,15 +50,10 @@ import java.util.regex.Pattern;
  * Created by pengminggong on 2016/10/26.
  */
 public class ChangeMobileActivity extends BaseActivity {
-    @ViewInject(R.id.mac_tv)
     private TextView mac_tv;
-    @ViewInject(R.id.title_tv)
     private TextView title_tv;
-    @ViewInject(R.id.sum_tag)
     private TextView sum_tag;
-    @ViewInject(R.id.sum_tv)
     private EditText sum_tv;
-    @ViewInject(R.id.exit_btn)
     private Button exit_btn;
 
     private int type;
@@ -157,7 +150,6 @@ public class ChangeMobileActivity extends BaseActivity {
             type = getIntent().getIntExtra("type", 1);
             tag = getIntent().getStringExtra("tag");
         }
-        ViewUtils.inject(this);
         initView();
     }
 
@@ -182,7 +174,14 @@ public class ChangeMobileActivity extends BaseActivity {
 
     private boolean submiting = false;
 
-    private void initView() {
+    private void initView(){
+
+        mac_tv = (TextView) findViewById(R.id.mac_tv);
+        title_tv = (TextView) findViewById(R.id.title_tv);
+        sum_tag = (TextView) findViewById(R.id.sum_tag);
+        sum_tv = (EditText) findViewById(R.id.sum_tv);
+        exit_btn = (Button) findViewById(R.id.exit_btn);
+
         String title;
         String sumTag;
         int actionTitle;

+ 47 - 60
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkActivity.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/WorkActivity.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+package com.uas.appworks.OA.erp.activity;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -33,19 +33,14 @@ import com.core.app.MyApplication;
 import com.core.base.OABaseActivity;
 import com.core.model.WorkModel;
 import com.core.net.location.BdLocationHelper;
+import com.core.widget.crouton.Crouton;
 import com.lidroid.xutils.ViewUtils;
-import com.lidroid.xutils.view.annotation.ViewInject;
-import com.uas.appworks.OA.erp.activity.FlightsActivity;
-import com.uas.appworks.OA.erp.activity.MyRuleSetActivity;
-import com.uas.appworks.OA.erp.activity.OfficeAddressSettingsActivity;
-import com.uas.appworks.OA.erp.activity.SignSeniorSettingActivity;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.ui.erp.adapter.oa.WorkAdapter;
-import com.xzjmyk.pm.activity.ui.erp.presenter.WorkPresenter;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IWorkView;
-import com.xzjmyk.pm.activity.util.oa.WifiReceiverUtil;
-import com.xzjmyk.pm.activity.view.crouton.Crouton;
-import com.xzjmyk.pm.activity.view.wheel.OASigninPicker;
+import com.me.appworks.R;
+import com.uas.appworks.OA.erp.adapter.WorkAdapter;
+import com.uas.appworks.OA.erp.presenter.WorkPresenter;
+import com.uas.appworks.OA.erp.utils.OASigninPicker;
+import com.uas.appworks.OA.erp.utils.WifiReceiverUtil;
+import com.uas.appworks.OA.erp.view.IWorkView;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -61,19 +56,12 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
     public static final int ALLEGEDLY = 0x16;
     private final int PHONE_CHANGE = 0x15;
     private final int ADDRESS_CHANGE = 0x14;
-    @ViewInject(R.id.listview)
     private RecyclerView listview;//列表
-    @ViewInject(R.id.office_addr)
     private TextView office_addr;//当前位置
-    @ViewInject(R.id.unoffice_mm)
     private TextView unoffice_mm;//距离
-    @ViewInject(R.id.date_tv)
     private TextView date_tv;//当前日期
-    @ViewInject(R.id.line)
     private View line;//当前日期
-    @ViewInject(R.id.empty_rl)
     private RelativeLayout empty_rl;//当前日期
-    @ViewInject(R.id.empty_tv)
     private TextView empty_tv;//当前日期
 
     private PopupWindow setWindow = null;//
@@ -100,10 +88,8 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
 
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case R.id.title:
-                showPopupWindow();
-                break;
+        if (item.getItemId() == R.id.title){
+            showPopupWindow();
         }
         return super.onOptionsItemSelected(item);
     }
@@ -135,6 +121,15 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
     private void initView() {
         getSupportActionBar().setTitle(R.string.activity_signing);
         isAdmin = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
+
+
+        listview = (RecyclerView) findViewById(R.id.listview);
+        office_addr = (TextView) findViewById(R.id.office_addr);
+        unoffice_mm = (TextView) findViewById(R.id.unoffice_mm);
+        line = findViewById(R.id.line);
+        empty_rl = (RelativeLayout) findViewById(R.id.empty_rl);
+        date_tv = (TextView) findViewById(R.id.date_tv);
+
         selectTime = System.currentTimeMillis();
         getMac();
         presenter = new WorkPresenter(this, macAddress);
@@ -265,43 +260,35 @@ public class WorkActivity extends OABaseActivity implements View.OnClickListener
     @Override
     public void onClick(View view) {
         Intent intent = null;
-        switch (view.getId()) {
-            case R.id.signin_btn:
-                if (isSubmitAble()) {
-                    isShowTocstAble = true;
-                    presenter.submit((ArrayList<WorkModel>) adapter.getModels(), macAddress);
-                }
-                break;
-            case R.id.date_tv:
-                isShowTocstAble = true;
-                showDateDialog();
-                break;
-            case R.id.unoffice_:
+
+        if (view.getId() == R.id.signin_btn){
+            if (isSubmitAble()) {
                 isShowTocstAble = true;
-                presenter.gotoLocationActivity(WorkActivity.this);
-                break;
-            case R.id.super_setting_tv:
-                startActivityForResult(new Intent(ct, SignSeniorSettingActivity.class), 0x12);
-                closePopupWindow();
-                break;
-            case R.id.work_setting_tv:
-                intent = new Intent(ct, FlightsActivity.class);
-                startActivityForResult(intent, 0x12);
-                closePopupWindow();
-                break;
-            case R.id.office_addr_setting_tv:
-                startActivityForResult(new Intent(ct, OfficeAddressSettingsActivity.class), 0x12);
-                closePopupWindow();
-                break;
-            case R.id.my_rule_setting_tv:
-                intent = new Intent(ct, MyRuleSetActivity.class);
-                presenter.showMyRele(intent, adapter.getModels());
-                startActivity(intent);
-                closePopupWindow();
-                break;
-            case R.id.cancel_tv:
-                closePopupWindow();
-                break;
+                presenter.submit((ArrayList<WorkModel>) adapter.getModels(), macAddress);
+            }
+        }else if (view.getId() == R.id.date_tv){
+            isShowTocstAble = true;
+            showDateDialog();
+        }else if (view.getId() == R.id.unoffice_){
+            isShowTocstAble = true;
+            presenter.gotoLocationActivity(WorkActivity.this);
+        }else if (view.getId() == R.id.super_setting_tv){
+            startActivityForResult(new Intent(ct, SignSeniorSettingActivity.class), 0x12);
+            closePopupWindow();
+        }else if (view.getId() == R.id.work_setting_tv){
+            intent = new Intent(ct, FlightsActivity.class);
+            startActivityForResult(intent, 0x12);
+            closePopupWindow();
+        }else if (view.getId() == R.id.office_addr_setting_tv){
+            startActivityForResult(new Intent(ct, OfficeAddressSettingsActivity.class), 0x12);
+            closePopupWindow();
+        }else if (view.getId() == R.id.my_rule_setting_tv){
+            intent = new Intent(ct, MyRuleSetActivity.class);
+            presenter.showMyRele(intent, adapter.getModels());
+            startActivity(intent);
+            closePopupWindow();
+        }else if (view.getId() ==  R.id.cancel_tv){
+            closePopupWindow();
         }
     }
 

+ 312 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/adapter/WorkAdapter.java

@@ -0,0 +1,312 @@
+package com.uas.appworks.OA.erp.adapter;
+
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.widget.RecyclerView;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.common.data.CalendarUtil;
+import com.common.data.DateFormatUtil;
+import com.common.data.ListUtils;
+import com.common.data.StringUtil;
+import com.core.app.AppConfig;
+import com.core.model.OAConfig;
+import com.core.model.WorkModel;
+import com.core.utils.TimeUtils;
+import com.me.appworks.R;
+import com.uas.appworks.OA.erp.activity.ChangeMobileActivity;
+import com.uas.appworks.OA.erp.activity.WorkActivity;
+
+import java.util.List;
+
+/**
+ * Created by Bitliker on 2016/12/5.
+ */
+
+public class WorkAdapter extends RecyclerView.Adapter<WorkAdapter.ViewHoler> {
+    private final String NONCLASS;
+    private final String LATETIME;
+    private final String OVERLATETIME;
+    private final String EARLYOFF;
+
+    private List<WorkModel> models;
+    private Context ct;
+    private boolean isToday;
+    private String newTime;
+    private long seletTime;
+    private boolean isFreeWork = false;//是否是自由打卡
+
+    public WorkAdapter(Context ct) {
+        this.ct = ct;
+        NONCLASS = ct.getString(R.string.sign_Absenteeism);
+        LATETIME = ct.getString(R.string.sign_late);
+        OVERLATETIME = ct.getString(R.string.over_latetime);
+        EARLYOFF = ct.getString(R.string.sign_leave);
+        isToday = true;
+        newTime = DateFormatUtil.long2Str(System.currentTimeMillis(), "HH:mm");
+    }
+
+    public List<WorkModel> getModels() {
+        return models;
+    }
+
+    public void setModels(boolean isToday, boolean isFreeWork, long seletTime, List<WorkModel> models) {
+        this.models = models;
+        this.isFreeWork = isFreeWork;
+        this.isToday = isToday;
+        this.seletTime = seletTime;
+        newTime = DateFormatUtil.long2Str(System.currentTimeMillis(), "HH:mm");
+        notifyDataSetChanged();
+    }
+
+    @Override
+    public WorkAdapter.ViewHoler onCreateViewHolder(ViewGroup parent, int viewType) {
+        ViewHoler holer = new ViewHoler(LayoutInflater.from(ct).inflate(R.layout.item_works, parent, false));
+        return holer;
+    }
+
+    @Override
+    public void onBindViewHolder(WorkAdapter.ViewHoler holder, int position) {
+        try {
+            WorkModel model = models.get(position);
+            if (isFreeWork) {
+                holder.free_context.setVisibility(View.VISIBLE);
+                holder.work_context.setVisibility(View.GONE);
+                bindFreeView(holder, model, position);
+            } else {
+                holder.free_context.setVisibility(View.GONE);
+                holder.work_context.setVisibility(View.VISIBLE);
+                bindWorkView(holder, model, (position == models.size() - 1));
+            }
+        } catch (ClassCastException e) {
+            if (e != null)
+                log("onBindViewHolder ClassCastException=" + e.getMessage());
+        } catch (Exception e) {
+            if (e != null)
+                log("onBindViewHolder Exception=" + e.getMessage());
+        }
+    }
+
+    private void bindFreeView(WorkAdapter.ViewHoler holder, final WorkModel model, int position) {
+        holder.free_work_tag.setText(position % 2 == 0 ? ct.getString(R.string.work_signin) : ct.getString(R.string.unwork_signin));
+        holder.free_work_time.setText(model.getWorkTime());
+    }
+
+    private void bindWorkView(WorkAdapter.ViewHoler holder, final WorkModel model, boolean isFinal) {
+        holder.work_time.setText("  " + getNull(model.getWorkTime()));
+        holder.work_signin.setText("  " + getNull(model.getWorkSignin()));
+        holder.off_time.setText("  " + getNull(model.getOffTime()));
+        holder.off_signin.setText("  " + getNull(model.getOffSignin()));
+        //处理迟到、早退、缺勤
+        String workTag = getWorkTag(model);
+        if (StringUtil.isEmpty(workTag)) {
+            holder.work_tag.setVisibility(View.GONE);
+            holder.work_supple.setVisibility(View.GONE);
+        } else {//TODO 进入申述
+            bindTag(true, workTag, model, holder);
+        }
+        String offTag = getOffTag(model, isFinal);
+        if (StringUtil.isEmpty(offTag)) {
+            holder.off_tag.setVisibility(View.GONE);
+            holder.off_supple.setVisibility(View.GONE);
+        } else {//TODO 进入申述
+            bindTag(false, offTag, model, holder);
+        }
+    }
+
+
+    @Override
+    public int getItemCount() {
+        return ListUtils.isEmpty(models) ? 0 : models.size();
+    }
+
+    public class ViewHoler extends RecyclerView.ViewHolder {
+        TextView work_time,
+                work_signin,
+                off_time,
+                off_signin,
+                work_tag,//上班迟到标识
+                free_work_tag,//上班打卡  下班打卡
+                free_work_time,//上下班打卡时间
+                off_tag;//上班迟到标识
+        ImageView
+                off_supple,
+                work_supple;
+        RelativeLayout work_context;//
+        LinearLayout free_context;//
+
+        public ViewHoler(View itemView) {
+            super(itemView);
+            work_time = (TextView) itemView.findViewById(R.id.work_time);
+            work_signin = (TextView) itemView.findViewById(R.id.work_signin);
+            off_time = (TextView) itemView.findViewById(R.id.off_time);
+            off_signin = (TextView) itemView.findViewById(R.id.off_signin);
+            work_tag = (TextView) itemView.findViewById(R.id.work_tag);
+            off_tag = (TextView) itemView.findViewById(R.id.off_tag);
+            free_work_tag = (TextView) itemView.findViewById(R.id.free_work_tag);
+            free_work_time = (TextView) itemView.findViewById(R.id.free_work_time);
+            off_supple = (ImageView) itemView.findViewById(R.id.off_supple);
+            work_supple = (ImageView) itemView.findViewById(R.id.work_supple);
+            work_context = (RelativeLayout) itemView.findViewById(R.id.work_context);
+            free_context = (LinearLayout) itemView.findViewById(R.id.free_context);
+
+        }
+    }
+
+    private void bindTag(final boolean isWork, String tag, final WorkModel model, ViewHoler holder) {
+        TextView tag_tv = isWork ? holder.work_tag : holder.off_tag;
+        ImageView supple_img = isWork ? holder.work_supple : holder.off_supple;
+        tag_tv.setText(tag);
+        tag_tv.setVisibility(View.VISIBLE);
+        if (NONCLASS.equals(tag)) {
+            int suppleReid = R.drawable.btn_shensu;
+            supple_img.setVisibility(View.VISIBLE);
+            String allegedly = isWork ? model.getWorkAllegedly() : model.getOffAllegedly();
+            if (!StringUtil.isEmpty(allegedly)) {
+                supple_img.setOnClickListener(null);
+                TextView signin_tv = isWork ? holder.work_signin : holder.off_signin;
+                signin_tv.setText("");
+                suppleReid = R.drawable.allegedlying;
+            } else {
+                supple_img.setOnClickListener(new View.OnClickListener() {
+                    @Override
+                    public void onClick(View view) {
+                        if (!StringUtil.isEmpty(isWork ? model.getWorkAllegedly() : model.getOffAllegedly()))
+                            return;
+                        Intent intent = new Intent(ct, ChangeMobileActivity.class);
+                        intent.putExtra("type", 2);
+                        if (seletTime > 0)
+                            intent.putExtra("date", TimeUtils.s_long_2_str(seletTime));
+                        intent.putExtra("tag", isWork ? model.getWorkTime() : model.getOffTime());
+                        intent.putExtra("macAddress", getTimeForHHmm(isWork ? model.getWorkTime() : model.getOffTime()));
+                        intent.putExtra("model", model);
+                        intent.putExtra("isWork", isWork);
+                        if (ct instanceof WorkActivity)
+                            ((WorkActivity) ct).startActivityForResult(intent, WorkActivity.ALLEGEDLY);
+                        else
+                            ct.startActivity(intent);
+                    }
+                });
+            }
+            supple_img.setImageResource(suppleReid);
+        } else {
+            supple_img.setVisibility(View.GONE);
+        }
+    }
+
+    /**
+     * 获取上班签到的状态
+     *
+     * @param model
+     * @return
+     */
+
+    private String getWorkTag(WorkModel model) {
+        if (StringUtil.isEmpty(model.getWorkTime())) return "";
+        if (isToday) {//是今天
+            if (StringUtil.isEmpty(model.getWorkSignin())) {
+                if (!model.isNextDay() && getWorkEndOrOffStart(model.getWorkTime(), true).compareTo(newTime) < 0) {
+                    //矿工 当前时间在上班结束时间或是下班打卡存在
+                    return NONCLASS;
+                } else return "";
+            } else {
+                if (getForAddMin(model.getWorkTime(), OAConfig.latetime).compareTo(model.getWorkSignin()) < 0//迟到时间之后
+                        && getForAddMin(model.getWorkTime(), OAConfig.overlatetime).compareTo(model.getWorkSignin()) >= 0) {
+                    //迟到   迟到之后  严重迟到之前
+                    return LATETIME;
+                } else if (getForAddMin(model.getWorkTime(), OAConfig.overlatetime).compareTo(model.getWorkSignin()) < 0//迟到时间之后
+                        && getWorkEndOrOffStart(model.getWorkTime(), true).compareTo(model.getWorkSignin()) >= 0) {
+                    //严重迟到  严重迟到之后   矿工之前
+                    return OVERLATETIME;
+                } else return "";
+            }
+        } else {//是昨天及以前的
+            if (StringUtil.isEmpty(model.getWorkSignin()))
+                return NONCLASS;
+            else if (getForAddMin(model.getWorkTime(), OAConfig.latetime).compareTo(model.getWorkSignin()) < 0
+                    && getForAddMin(model.getWorkTime(), OAConfig.overlatetime).compareTo(model.getWorkSignin()) >= 0) {
+                //迟到  迟到时间getForAddMin(model.getWorkTime(), AutoMemoryUtil.latetime) 到严重迟到时间之间
+                return LATETIME;
+            } else if (getForAddMin(model.getWorkTime(), OAConfig.overlatetime).compareTo(model.getWorkSignin()) < 0
+                    && getWorkEndOrOffStart(model.getWorkTime(), true).compareTo(model.getWorkSignin()) >= 0) {
+                //严重迟到 严重迟到时间到矿工之间
+                return OVERLATETIME;
+            } else {
+                return "";
+            }
+        }
+    }
+
+
+    /**
+     * 下班只显示早退和矿工
+     * 早退:下班开始时间到早退时间之间
+     * 矿工:非今天没有签到记录为矿工  今天有签到记录不会显示矿工
+     *
+     * @param model
+     * @param isFinal
+     * @return
+     */
+    private String getOffTag(WorkModel model, boolean isFinal) {
+        if (StringUtil.isEmpty(model.getOffTime())) return "";
+        if (!StringUtil.isEmpty(model.getOffSignin())) {
+            if (getForAddMin(model.getOffTime(), -OAConfig.earlyoff).compareTo(model.getOffSignin()) > 0
+                    && getWorkEndOrOffStart(model.getOffTime(), false).compareTo(model.getOffSignin()) <= 0) {
+                //早退  下班开始时间到早退时间之间
+                return EARLYOFF;
+            }
+            return "";
+        } else if (!isToday) {
+            return NONCLASS;
+        } else if (!model.isNextDay() && !isFinal && !StringUtil.isEmpty(model.getOffend()) && model.getOffend().compareTo(newTime) < 0) {
+            return NONCLASS;
+        } else return "";
+    }
+
+
+    //当前时间
+    private String getWorkEndOrOffStart(String hhmm, boolean iswork) {
+        if (OAConfig.nonclass == 0)
+            OAConfig.nonclass = 90;
+        String time = getForAddMin(hhmm, iswork ? OAConfig.nonclass : -OAConfig.nonclass);
+        if (iswork && time.compareTo(hhmm) < 0)//上跨天
+            return "23:59";
+        else
+            return time;
+    }
+
+    private String getForAddMin(String hhmm, int time) {
+        long f_time = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) +
+                " " + hhmm + ":00");
+        f_time += time * 60000;
+        return DateFormatUtil.long2Str(f_time, "HH:mm");
+    }
+
+    private String getTimeForHHmm(String hhmm) {
+        if (StringUtil.isEmpty(hhmm)) return "";
+        return TimeUtils.s_long_2_str(seletTime) + " " + CalendarUtil.getWeek(seletTime) + " " + hhmm;
+    }
+
+    private String getNull(String str) {
+        if (StringUtil.isEmpty(str)) return "";
+        return str;
+    }
+
+    private void log(String message) {
+        try {
+            if (!AppConfig.DEBUG || StringUtil.isEmpty(message)) return;
+            Log.i("gongpengming", message);
+        } catch (Exception e) {
+
+        }
+    }
+
+
+}

+ 2 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IWorkPresenter.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/IWorkPresenter.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter.imp;
+package com.uas.appworks.OA.erp.presenter;
 
 import com.core.model.WorkModel;
 
@@ -11,7 +11,7 @@ import java.util.ArrayList;
 public interface IWorkPresenter {
 
 
-    void start( boolean canShowTocat);
+    void start(boolean canShowTocat);
 
 //    void loadWorkData(long time);//下拉班次,只有打卡界面才有
 

+ 8 - 10
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter;
+package com.uas.appworks.OA.erp.presenter;
 
 import android.app.Activity;
 import android.content.Intent;
@@ -22,23 +22,22 @@ import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.MyApplication;
 import com.core.dao.UserDao;
+import com.core.dao.work.WorkModelDao;
 import com.core.model.User;
 import com.core.model.WorkLocationModel;
 import com.core.model.WorkModel;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
+import com.core.utils.BaiduMapUtil;
 import com.core.utils.CommonInterface;
+import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.WorkHandlerUtil;
-import com.core.widget.view.model.SearchPoiParam;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.db.dao.WorkModelDao;
 import com.core.widget.view.Activity.SearchLocationActivity;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IWorkPresenter;
-import com.xzjmyk.pm.activity.ui.erp.presenter.imp.IWorkView;
-import com.xzjmyk.pm.activity.util.baidu.BaiduMapUtil;
-import com.xzjmyk.pm.activity.util.oa.CommonUtil;
+import com.core.widget.view.model.SearchPoiParam;
+import com.me.appworks.R;
+import com.uas.appworks.OA.erp.view.IWorkView;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -47,7 +46,6 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static com.xzjmyk.pm.activity.util.baidu.BaiduMapUtil.getInstence;
 
 /**
  * 班次管理器
@@ -294,7 +292,7 @@ public class WorkPresenter implements OnHttpResultListener, IWorkPresenter {
         try {
             if (ListUtils.isEmpty(locationList)) return -1;
             for (WorkLocationModel b : locationList) {
-                String dis = getInstence().getDistance(
+                String dis =  BaiduMapUtil.getInstence().getDistance(
                         new LatLng(b.getLocation().longitude, b.getLocation().latitude)
                         , new LatLng(latitude, longitude));
                 if (StringUtil.isEmpty(dis)) continue;

+ 296 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/OASigninPicker.java

@@ -0,0 +1,296 @@
+package com.uas.appworks.OA.erp.utils;
+
+import android.app.Activity;
+import android.support.annotation.IntDef;
+import android.support.annotation.NonNull;
+import android.text.TextUtils;
+import android.view.Gravity;
+import android.view.View;
+import android.widget.LinearLayout;
+import android.widget.TextView;
+
+import com.core.utils.timeutils.wheel.DateUtils;
+import com.core.utils.timeutils.wheel.WheelPicker;
+import com.core.widget.view.WheelView;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+
+/**
+ * Created by Dong on 2016/5/13.
+ * 年月日 时分秒
+ */
+public class OASigninPicker extends WheelPicker {
+
+    /**
+     * 年月日
+     */
+    public static final int YEAR_MONTH_DAY = 0;
+    private ArrayList<String> years = new ArrayList<String>();
+    private ArrayList<String> months = new ArrayList<String>();
+    private ArrayList<String> days = new ArrayList<String>();
+    private String yearLabel = "年", monthLabel = "月", dayLabel = "日";
+    private int selectedYearIndex = 0, selectedMonthIndex = 0, selectedDayIndex = 0;
+    private OnDateTimePickListener onDateTimePickListener;
+    private int year, month, day = 0;
+
+    @IntDef(flag = false, value = {YEAR_MONTH_DAY})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface Mode {
+    }
+
+    public OASigninPicker(Activity activity) {
+        super(activity);
+        textSize = 16;//年月日时分,比较宽,设置字体小一点才能显示完整
+        for (int i = 2015; i <= 2017; i++) {
+            years.add(String.valueOf(i));
+        }
+        for (int i = 1; i <= 12; i++) {
+            months.add(DateUtils.fillZero(i));
+        }
+        for (int i = 1; i <= 31; i++) {
+            days.add(DateUtils.fillZero(i));
+        }
+    }
+
+    @NonNull
+    @Override
+    protected View makeCenterView() {
+        LinearLayout layout = new LinearLayout(activity);
+        layout.setOrientation(LinearLayout.HORIZONTAL);
+        layout.setGravity(Gravity.CENTER);
+        WheelView yearView = new WheelView(activity.getBaseContext());
+        yearView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        yearView.setTextSize(textSize);
+        yearView.setTextColor(textColorNormal, textColorFocus);
+        yearView.setLineVisible(lineVisible);
+        yearView.setLineColor(lineColor);
+        yearView.setOffset(offset);
+        layout.addView(yearView);
+        TextView yearTextView = new TextView(activity);
+        yearTextView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        yearTextView.setTextSize(textSize);
+        yearTextView.setTextColor(textColorFocus);
+        if (!TextUtils.isEmpty(yearLabel)) {
+            yearTextView.setText(yearLabel);
+        }
+        layout.addView(yearTextView);
+
+        final WheelView monthView = new WheelView(activity.getBaseContext());
+        monthView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        monthView.setTextSize(textSize);
+        monthView.setTextColor(textColorNormal, textColorFocus);
+        monthView.setLineVisible(lineVisible);
+        monthView.setLineColor(lineColor);
+        monthView.setOffset(offset);
+        layout.addView(monthView);
+        TextView monthTextView = new TextView(activity);
+        monthTextView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        monthTextView.setTextSize(textSize);
+        monthTextView.setTextColor(textColorFocus);
+        if (!TextUtils.isEmpty(monthLabel)) {
+            monthTextView.setText(monthLabel);
+        }
+        layout.addView(monthTextView);
+
+        final WheelView dayView = new WheelView(activity.getBaseContext());
+        dayView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        dayView.setTextSize(textSize);
+        dayView.setTextColor(textColorNormal, textColorFocus);
+        dayView.setLineVisible(lineVisible);
+        dayView.setLineColor(lineColor);
+        dayView.setOffset(offset);
+        layout.addView(dayView);
+        TextView dayTextView = new TextView(activity);
+        dayTextView.setLayoutParams(new LinearLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+        dayTextView.setTextSize(textSize);
+        dayTextView.setTextColor(textColorFocus);
+        if (!TextUtils.isEmpty(dayLabel)) {
+            dayTextView.setText(dayLabel);
+        }
+        layout.addView(dayTextView);
+        yearView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
+            @Override
+            public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
+                selectedYearIndex = selectedIndex;
+                int maxDays = 0, maxMonth = 0;
+                if (isRange() && item.equals(getIntMonth(year))) {
+                    maxMonth = month;
+                    if (getSelectedMonth().equals(getIntMonth(month))) {
+                        maxDays = day;
+                    } else {
+                        maxDays = DateUtils.calculateDaysInMonth(stringToYearMonthDay(item), stringToYearMonthDay(months.get(selectedMonthIndex)));
+                    }
+                } else {
+                    maxMonth = 12;
+                    maxDays = DateUtils.calculateDaysInMonth(stringToYearMonthDay(item), stringToYearMonthDay(months.get(selectedMonthIndex)));
+                }
+
+                days.clear();
+                for (int i = 1; i <= maxDays; i++) {
+                    days.add(DateUtils.fillZero(i));
+                }
+                if (selectedDayIndex >= maxDays) {
+                    //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
+                    selectedDayIndex = days.size() - 1;
+                }
+                dayView.setItems(days, selectedDayIndex);
+                months.clear();
+                for (int i = 1; i <= maxMonth; i++) {
+                    months.add(DateUtils.fillZero(i));
+                }
+                if (selectedMonthIndex >= maxMonth) {
+                    //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
+                    selectedMonthIndex = months.size() - 1;
+                }
+                monthView.setItems(months, selectedMonthIndex);
+            }
+        });
+
+        monthView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
+            @Override
+            public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
+                selectedMonthIndex = selectedIndex;
+                int maxDays = 0;
+                if (isRange() && getSelectedYear().equals(String.valueOf(year)) && months.get(selectedIndex).equals(getIntMonth(month))) {
+                    maxDays = day;
+                } else
+                    maxDays = DateUtils.calculateDaysInMonth(stringToYearMonthDay(years.get(selectedYearIndex)), stringToYearMonthDay(item));
+                days.clear();
+                for (int i = 1; i <= maxDays; i++) {
+                    days.add(DateUtils.fillZero(i));
+                }
+                if (selectedDayIndex >= maxDays) {
+                    //年或月变动时,保持之前选择的日不动:如果之前选择的日是之前年月的最大日,则日自动为该年月的最大日
+                    selectedDayIndex = days.size() - 1;
+                }
+                dayView.setItems(days, selectedDayIndex);
+            }
+        });
+        dayView.setOnWheelViewListener(new WheelView.OnWheelViewListener() {
+            @Override
+            public void onSelected(boolean isUserScroll, int selectedIndex, String item) {
+                selectedDayIndex = selectedIndex;
+            }
+        });
+        yearView.setItems(years, selectedYearIndex);
+        monthView.setItems(months, selectedMonthIndex);
+        dayView.setItems(days, selectedDayIndex);
+        return layout;
+    }
+
+    private boolean isRange() {
+        if (year != 0 && month != 0 && day != 0)
+            return true;
+        else return false;
+    }
+
+    @Override
+    protected void onSubmit() {
+        if (onDateTimePickListener != null) {
+            String year = getSelectedYear();
+            String month = getSelectedMonth();
+            String day = getSelectedDay();
+            onDateTimePickListener.setTime(year, month, day);
+        }
+    }
+
+    /**
+     * Gets selected year.
+     *
+     * @return the selected year
+     */
+    public String getSelectedYear() {
+        return years.get(selectedYearIndex);
+    }
+
+    private String getIntMonth(int t) {
+        return (t < 10 ? "0" : "") + String.valueOf(t);
+    }
+
+    /**
+     * Gets selected month.
+     *
+     * @return the selected month
+     */
+    public String getSelectedMonth() {
+        return months.get(selectedMonthIndex);
+    }
+
+    /**
+     * Gets selected day.
+     *
+     * @return the selected day
+     */
+    public String getSelectedDay() {
+        return days.get(selectedDayIndex);
+    }
+
+    private int stringToYearMonthDay(String text) {
+        if (text.startsWith("0")) {
+            //截取掉前缀0以便转换为整数
+            text = text.substring(1);
+        }
+        return Integer.parseInt(text);
+    }
+
+    /**
+     * Sets label.
+     *
+     * @param yearLabel  the year label
+     * @param monthLabel the month label
+     * @param dayLabel   the day label
+     */
+    public void setLabel(String yearLabel, String monthLabel, String dayLabel, String hourLabel, String minuteLabel) {
+        this.yearLabel = yearLabel;
+        this.monthLabel = monthLabel;
+        this.dayLabel = dayLabel;
+    }
+
+
+    public void setRange(int year, int month, int day) {
+        this.year = year;
+        this.month = month;
+        this.day = day;
+
+    }
+
+    private int findItemIndex(ArrayList<String> items, int item) {
+        //折半查找有序元素的索引
+        int index = Collections.binarySearch(items, item, new Comparator<Object>() {
+            @Override
+            public int compare(Object lhs, Object rhs) {
+                String lhsStr = lhs.toString();
+                String rhsStr = rhs.toString();
+                lhsStr = lhsStr.startsWith("0") ? lhsStr.substring(1) : lhsStr;
+                rhsStr = rhsStr.startsWith("0") ? rhsStr.substring(1) : rhsStr;
+                return Integer.parseInt(lhsStr) - Integer.parseInt(rhsStr);
+            }
+        });
+        if (index < 0) {
+            index = 0;
+        }
+        return index;
+    }
+
+    public void setSelectedItem(int yeas, int month, int day) {
+        selectedMonthIndex = findItemIndex(months, month);
+        selectedDayIndex = findItemIndex(days, day);
+        selectedYearIndex = findItemIndex(years, yeas);
+    }
+
+    /**
+     * The interface On DateTime pick listener.
+     */
+    public interface OnDateTimePickListener {
+        void setTime(String year, String month, String day);
+    }
+
+    public void setOnDateTimePickListener(OnDateTimePickListener listener) {
+        this.onDateTimePickListener = listener;
+    }
+
+}

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/oa/WifiReceiverUtil.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/WifiReceiverUtil.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.util.oa;
+package com.uas.appworks.OA.erp.utils;
 
 import android.content.BroadcastReceiver;
 import android.content.Context;

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/imp/IWorkView.java → app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/view/IWorkView.java

@@ -1,4 +1,4 @@
-package com.xzjmyk.pm.activity.ui.erp.presenter.imp;
+package com.uas.appworks.OA.erp.view;
 
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;