Arison 9 жил өмнө
parent
commit
2220c3d746
19 өөрчлөгдсөн 612 нэмэгдсэн , 471 устгасан
  1. 1 1
      WeiChat/src/main/AndroidManifest.xml
  2. 3 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddLogActivity.java
  3. 8 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetingActivity.java
  4. 0 176
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmReceiver.java
  5. 93 181
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java
  6. 88 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ChangeMobileActivity.java
  7. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutSigninOKActivity.java
  8. 105 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SaveMeetActivity.java
  9. 12 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  10. 18 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  11. 39 23
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  12. 106 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmManage.java
  13. 26 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java
  14. 45 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/NotificationManage.java
  15. 23 27
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/SwitchView.java
  16. BIN
      WeiChat/src/main/res/drawable-hdpi/ic_subscription_number.png
  17. 25 16
      WeiChat/src/main/res/layout/activity_oa__alarma.xml
  18. 4 0
      WeiChat/src/main/res/layout/activity_select.xml
  19. 11 1
      WeiChat/src/main/res/values/strings.xml

+ 1 - 1
WeiChat/src/main/AndroidManifest.xml

@@ -370,7 +370,7 @@
             </intent-filter>
         </receiver>
         <!-- oA模块提醒功能本地推送 -->
-        <receiver android:name=".ui.erp.activity.oa.AlarmReceiver" />
+        <receiver android:name=".ui.erp.util.alarm.AlarmReceiver" />
         <!-- Push服务接收客户端发送的各种请求 -->
         <receiver
             android:name="com.baidu.android.pushservice.RegistrationReceiver"

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

@@ -132,19 +132,19 @@ public class AddLogActivity extends BaseActivity {
         }
         StringBuilder builder = new StringBuilder();
         builder.append(type_tv.getText().toString() + ":\n");
-        if (sum_tv.getText().toString().length() > 0) {
+        if (!StringUtils.isEmpty(sum_tv.getText().toString())) {
             builder.append("  工作总结:\n     " + sum_tv.getText().toString() + "\n");
         } else {
             Crouton.makeText(ct, R.string.add_summed);
             return;
         }
-        if (plan_tv.getText().toString().length() > 0) {
+        if (!StringUtils.isEmpty(plan_tv.getText().toString())) {
             builder.append("  工作计划:\n     " + plan_tv.getText().toString() + "\n");
         } else {
             Crouton.makeText(ct, R.string.add_plan);
             return;
         }
-        if (learned_tv.getText().toString().length() > 0) {
+        if (!StringUtils.isEmpty(learned_tv.getText().toString())) {
             builder.append("  心得体会:\n     " + learned_tv.getText().toString() + "\n");
         } else {
             Crouton.makeText(ct, R.string.add_learned);

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

@@ -64,7 +64,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     private String baseUrl;
     ArrayList<Employees> entities = null;//成员
     //已选择参会人员存放入listpeoplechoose
-   // ArrayList<Employees> listpeoplechoose = new ArrayList<>();
+    // ArrayList<Employees> listpeoplechoose = new ArrayList<>();
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -162,7 +162,10 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
 
 
     private void initView() {
-        user_tv.setText(MyApplication.getInstance().mLoginUser.getNickName());
+        String name = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (StringUtils.isEmpty(name))
+            name = MyApplication.getInstance().mLoginUser.getNickName();
+        user_tv.setText(name);
         findViewById(R.id.bt_save).setOnClickListener(this);
         findViewById(R.id.start_rl).setOnClickListener(this);
         findViewById(R.id.end_rl).setOnClickListener(this);
@@ -193,7 +196,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
             case R.id.users_rl://选择参会人员
                 intent = new Intent(ct, UserSelectActivity.class);
                 //已选择参会人员传递
-                intent.putExtra("users",users_tv.getText().toString().trim());
+                intent.putExtra("users", users_tv.getText().toString().trim());
                 startActivityForResult(intent, 0x21);
                 break;
             case R.id.tag_rl://点击会议标签
@@ -365,6 +368,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         if (baseUrl == null) {
             baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
         }
+
         String url = baseUrl + "oa/meeting/saveMeetingroomapply.action";
         final Map<String, Object> param = new HashMap<>();
         String form = "{" +
@@ -376,7 +380,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 "\"ma_isturndoc\":" + "\"" + "否" + "\",\n" +
                 "\"ma_mrname\":" + "\"" + location_et.getText().toString() + "\",\n" +
                 "\"ma_recorddate\":" + "\"" + TimeUtils.s_long_2_str(System.currentTimeMillis()) + "\",\n" +
-                "\"ma_recorder\":" + "\"" + MyApplication.getInstance().mLoginUser.getNickName() + "\",\n" +
+                "\"ma_recorder\":" + "\"" + user_tv.getText().toString() + "\",\n" +
                 "\"ma_remark\":" + "\"" + about_et.getText().toString() + "\",\n" +
                 "\"ma_starttime\":" + "\"" + start_tv.getText().toString() + "\",\n" +
                 "\"ma_endtime\":" + "\"" + end_tv.getText().toString() + "\",\n" +

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

@@ -1,176 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.activity.oa;
-
-import android.app.AlarmManager;
-import android.app.Notification;
-import android.app.NotificationManager;
-import android.app.PendingIntent;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.support.v7.app.NotificationCompat;
-import android.util.Log;
-
-import com.alibaba.fastjson.JSONArray;
-import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.bean.oa.SigninBean;
-import com.xzjmyk.pm.activity.db.dao.SigninDao;
-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.util.TimeUtils;
-
-import java.util.Calendar;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferences;
-import static com.xzjmyk.pm.activity.util.TimeUtils.f_long_2_str;
-import static com.xzjmyk.pm.activity.util.TimeUtils.f_str_2_long;
-
-/**
- * AlarmReceiver
- */
-public class AlarmReceiver extends BroadcastReceiver {
-    private long newTime = System.currentTimeMillis();//当前时间(先取网络时间在取本地时间)
-    private Context ct;
-    private long h = 1000 * 3600;
-
-    @Override
-    public void onReceive(Context context, Intent intent) {
-        ct = context;
-        if (intent.getAction() != null && "ALARMA_ACTION".equals(intent.getAction())) {
-            if (CommonUtil.getSharedPreferencesBoolean(context, "ALARMA_CLICK", false)) {
-                //判断是否打卡到当前时间
-                String thisTime = TimeUtils.f_long_2_str(newTime);
-                String oldTime = CommonUtil.getSharedPreferences(context, "ALARMA_CLICK_LONG");
-                if (StringUtils.isEmpty(oldTime)) {//没有保存过
-                    sendNotification(ct);
-                } else {
-                    long oldlong = TimeUtils.f_str_2_long(oldTime) + h;
-                    if (oldlong < newTime) {//上次打卡时间距离没那么近了
-                        sendNotification(ct);
-                    }
-                }
-                CommonUtil.setSharedPreferences(context, "ALARMA_CLICK_LONG", thisTime);
-            }
-        }
-    }
-
-    //判断打卡是否在时间里面
-    private boolean isSignined(String start, String end, JSONArray array) {
-        String time = null;
-        for (int i = 0; i < array.size(); i++) {//获取打卡记录中的打卡时间
-            time = clearDay(array.getJSONObject(i).containsKey("cl_time") ? (array.getJSONObject(i).getString("cl_time") == null ? " " : array.getJSONObject(i).getString("cl_time")) : " ");
-            if ((time.compareTo(start) < 0) && (time.compareTo(end) > 0)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    //获取打卡时间列表去除年月日和秒
-    private String clearDay(String time) {
-        return TimeUtils.long2str(f_str_2_long(time), "HH:mm");
-    }
-
-    /**
-     * 签到提醒弹出通知栏
-     *
-     * @param context
-     */
-    private void sendNotification(Context context) {
-        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
-        NotificationCompat.Builder builder = new NotificationCompat.Builder(
-                context.getApplicationContext());
-        builder.setSmallIcon(R.drawable.uuu);
-        builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
-        builder.setAutoCancel(true);
-        builder.setContentTitle("签到提醒");
-        CharSequence stringExtra = "注意按时打卡";
-        builder.setContentText(stringExtra);
-        Intent intent = new Intent(context, SigninActivity.class);
-        PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-        builder.setContentIntent(pendingIntent);
-        mNotificationManager.notify(1000, builder.build());
-        //设置签到提醒
-        if (CommonUtil.getSharedPreferencesBoolean(context, "ALARMA_CLICK", false))
-            initArmmanager(context);
-    }
-
-    private int getMin(String chche) {
-        if (StringUtils.isEmpty(chche)) return 5;
-        Pattern p = Pattern.compile("(\\d+)");
-        Matcher m = p.matcher(chche);
-        if (m.find()) {
-            return Integer.parseInt(m.group(0));
-        }
-        return -1;
-    }
-
-    //初始化提醒
-    private void initArmmanager(Context ct) {
-        //1.获取打卡时间
-//        ArrayList<Signin> signins = SigninDao.getInstance(ct).query();
-        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
-        if (ListUtils.isEmpty(beans)) return;
-        //判断最近的时间是哪个
-        //获取提前和往后提醒时间
-        int uTime = getMin(getSharedPreferences(ct, AlarmaActivity.KEY_ALAR_TIME));
-        int dTime = getMin(getSharedPreferences(ct, AlarmaActivity.KEY_UALAR_TIME));
-        long utime = (uTime * 60 * 1000);//与上班时间提前的时间
-        long dtime = (dTime * 60 * 1000);//与下班时间延后的时间
-        long chche = 0;//时间毫秒数
-        boolean isOk = false;
-        long chchelong = -1;
-        for (SigninBean e : beans) {
-            //获取与当前时间最近的时间
-            if (!StringUtils.isEmpty(e.getWorkTime())) {
-                chche = f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + e.getWorkTime() + ":00") - utime;
-                if (chchelong == 0)
-                    chchelong = chche;
-                if (chche > System.currentTimeMillis()) {//在允许范围
-                    isOk = true;
-                    break;
-                }
-                if (!StringUtils.isEmpty(e.getOffTime())) {
-                    chche = f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + e.getOffTime() + ":00") + dtime;
-                    if (chche > System.currentTimeMillis()) {//在允许范围
-                        isOk = true;
-                        break;
-                    }
-                }
-            }
-        }
-        if (isOk) {//在当天允许提醒范围内
-            setArmmanager(ct, chche);
-        } else {
-            if (chchelong != 0) {
-                chchelong += 24 * 60 * 60 * 1000;
-                setArmmanager(ct, chchelong);
-            }
-        }
-    }
-
-    //清空提醒
-    private void unArmmanager(Context ct) {
-        Intent intent = new Intent(ct, AlarmReceiver.class);
-        intent.setAction("ALARMA_ACTION");
-        PendingIntent pi = PendingIntent.getBroadcast(ct, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-        AlarmManager alarm = (AlarmManager) ct.getSystemService(ct.ALARM_SERVICE);
-        alarm.cancel(pi);
-    }
-
-    //TODO 在这里提醒时候会延迟6分钟不知道为什么
-    private void setArmmanager(Context ct, long time) {
-        unArmmanager(ct);
-        Log.i("gongpengming", f_long_2_str(time));
-        //操作:发送一个广播,广播接收后Toast提示定时操作完成
-        Intent intent = new Intent(ct, AlarmReceiver.class);
-        intent.setAction("ALARMA_ACTION");
-        AlarmManager alarm = (AlarmManager) ct.getSystemService(ct.ALARM_SERVICE);
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTimeInMillis(time);
-        alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), PendingIntent.getBroadcast(ct, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT));
-    }
-}

+ 93 - 181
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java

@@ -1,161 +1,145 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
-import android.app.AlarmManager;
-import android.app.PendingIntent;
-import android.content.DialogInterface;
 import android.content.Intent;
 import android.os.Bundle;
-import android.support.v7.app.AlertDialog;
 import android.view.View;
-import android.widget.EditText;
 import android.widget.TextView;
 
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.bean.oa.SigninBean;
-import com.xzjmyk.pm.activity.db.dao.SigninDao;
+import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 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.alarm.AlarmManage;
 import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
-import com.xzjmyk.pm.activity.util.TimeUtils;
-import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
-import java.util.Calendar;
-import java.util.List;
+import java.util.ArrayList;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import static com.xzjmyk.pm.activity.ui.erp.util.alarm.AlarmManage.ALARMA_CLICK;
+import static com.xzjmyk.pm.activity.ui.erp.util.alarm.AlarmManage.AUTO_SIGNIN;
+
 //签到提醒
-public class AlarmaActivity extends BaseActivity implements View.OnClickListener {
+public class AlarmaActivity extends BaseActivity implements View.OnClickListener, SwitchView.OnCheckedChangeListener {
     @ViewInject(R.id.isalarma_sw)
     private SwitchView isalarma_sw;
-    @ViewInject(R.id.editText)
-    private EditText editText;
-    @ViewInject(R.id.editText2)
-    private EditText editText2;
+    @ViewInject(R.id.auto_signin_sw)
+    private SwitchView auto_signin_sw;
+
     @ViewInject(R.id.tv_alar)
     private TextView tv_alar;//上班时间
+
     @ViewInject(R.id.tv_ualar)
     private TextView tv_ualar;//下班时间
-    private boolean isClick;//判断是否为提醒
-    private AlarmaActivity ct;
-    private static String ALARMA_CLICK = "ALARMA_CLICK";//判断是否选中
-    public static String KEY_ALAR_TIME = "KEY_ALAR_TIME";
-    public static String KEY_UALAR_TIME = "KEY_UALAR_TIME";
-    private long newTime = System.currentTimeMillis();//当前时间(先取网络时间再取本地时间)
+
+    private boolean isAlarm;//判断是否为提醒
+    private boolean isAuto;//判断是否为自动
+
+
+    public static String KEY_ALAR_TIME = "KEY_ALAR_TIME";//上班提醒时间
+    public static String KEY_UALAR_TIME = "KEY_UALAR_TIME";//下班时间
+
+    private AlarmManage manage;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_oa__alarma);
         ViewUtils.inject(this);
-        ct = this;
         initView();
     }
 
     private void initView() {
-        //测试使用
-        editText.setVisibility(View.GONE);
-        editText2.setVisibility(View.GONE);
-        //初始化界面显示时间
+        isAlarm = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);
+        isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AUTO_SIGNIN, false);
+        isalarma_sw.setChecked(isAlarm);
+        auto_signin_sw.setChecked(isAuto);
+        manage = new AlarmManage();
+        manage.setSigninAlarm(ct);
         tv_alar.setOnClickListener(this);
         tv_ualar.setOnClickListener(this);
-        isClick = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);
-        isalarma_sw.setChecked(isClick);
-        String uDateTime = CommonUtil.getSharedPreferences(ct, KEY_ALAR_TIME);
-        String dDateTime = CommonUtil.getSharedPreferences(ct, KEY_UALAR_TIME);
-        if (uDateTime == null) {
-            uDateTime = "提前5分钟";
-            CommonUtil.setSharedPreferences(ct, KEY_ALAR_TIME, uDateTime);
-        }
-        if (dDateTime == null) {
-            dDateTime = "延后5分钟";
-            CommonUtil.setSharedPreferences(ct, KEY_ALAR_TIME, dDateTime);
+        isalarma_sw.setOnCheckedChangeListener(this);
+        auto_signin_sw.setOnCheckedChangeListener(this);
+    }
+
+
+    @Override
+    public void onClick(View view) {
+        String pre = null;
+        String[] time = getResources().getStringArray(R.array.alarm_time);
+        int requestCode = 0;
+        switch (view.getId()) {
+            case R.id.tv_alar:
+                pre = "提前";
+                requestCode = 0x21;
+                break;
+            case R.id.tv_ualar:
+                pre = "延迟";
+                requestCode = 0x22;
+                break;
+            default:
+                pre = "提前";
+                requestCode = 0x21;
+                break;
         }
-        tv_alar.setText(uDateTime);
-        tv_ualar.setText(dDateTime);
-        if (isClick) {
-            startThread(isClick);
+        ArrayList<SelectBean> beans = new ArrayList<>();
+        SelectBean bean = null;
+        for (String e : time) {
+            bean = new SelectBean();
+            bean.setName(pre + e);
+            bean.setClick(false);
+            beans.add(bean);
         }
-        isalarma_sw.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
-            @Override
-            public void onCheckedChanged(View view, boolean isChecked) {
-                CommonUtil.putSharedPreferencesBoolean(ct, ALARMA_CLICK, isChecked);
-                isClick = isChecked;
-                startThread(isChecked);
-            }
-        });
+        Intent intent = new Intent(ct, SelectActivity.class);
+        intent.putExtra("type", 2);
+        intent.putParcelableArrayListExtra("data", beans);
+        intent.putExtra("title", "选择时间");
+        startActivityForResult(intent, requestCode);
     }
 
-    private void startThread(final boolean isChecked) {
-        if (isChecked) {
-            unArmmanager();
-            initArmmanager();
-        } else {
-            unArmmanager();
+    @Override
+    public void onCheckedChanged(View view, boolean isChecked) {
+
+        switch (view.getId()) {
+            case R.id.isalarma_sw:
+                CommonUtil.setSharedPreferences(ct, AlarmManage.ALARMA_CLICK, isChecked);
+                break;
+            case R.id.auto_signin_sw:
+                CommonUtil.setSharedPreferences(ct, AlarmManage.AUTO_SIGNIN, isChecked);
+                break;
         }
+        if (manage == null)
+            manage = new AlarmManage();
+        manage.setSigninAlarm(ct);
     }
 
-    //初始化提醒
-    private void initArmmanager() {
-        //1.获取打卡时间
-        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
-        if (ListUtils.isEmpty(beans)) return;
-        //判断最近的时间是哪个
-        //获取提前和往后提醒时间
-        int uTime = getMin(CommonUtil.getSharedPreferences(ct, KEY_ALAR_TIME));
-        int dTime = getMin(CommonUtil.getSharedPreferences(ct, KEY_UALAR_TIME));
-        long utime = (uTime * 60 * 1000);//与上班时间提前的时间
-        long dtime = (dTime * 60 * 1000);//与下班时间延后的时间
-        long chche = 0;//时间毫秒数
-        long chchelong = 0;
-        boolean isOk = false;
-        for (SigninBean e : beans) {
-            //获取与当前时间最近的时间
-            if (!StringUtils.isEmpty(e.getWorkTime())) {
-                chche = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + e.getWorkTime() + ":00") - utime;
-                if (chchelong == 0)
-                    chchelong = chche;
-                if (chche > System.currentTimeMillis()) {//在允许范围
-                    isOk = true;
-                    break;
-                }
-                if (!StringUtils.isEmpty(e.getOffTime())) {
-                    chche = TimeUtils.f_str_2_long(TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + e.getOffTime() + ":00") + dtime;
-                    if (chche > System.currentTimeMillis()) {//在允许范围
-                        isOk = true;
-                        break;
-                    }
-                }
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (data == null) return;
+        if (resultCode == 0x20) {
+            SelectBean b = data.getParcelableExtra("data");
+            if (b == null) return;
+            String name = StringUtils.isEmpty(b.getName()) ? "" : b.getName();
+            if (requestCode == 0x22) {
+                tv_ualar.setText(name);
+                CommonUtil.setSharedPreferences(ct, "ALARM_OFFWORK_TIME", getNumByString(name));
+            } else {
+                tv_alar.setText(name);
+                CommonUtil.setSharedPreferences(ct, "ALARM_WORK_TIME", getNumByString(name));
             }
-        }
-        if (isOk) {//在当天允许提醒范围内
-            setArmmanager(chche);
-        } else {
-            if (chchelong != 0) {
-                chchelong += 24 * 60 * 60 * 1000;
-                setArmmanager(chchelong);
+            if (requestCode == 0x21 || requestCode == 0x22) {
+                if (manage == null)
+                    manage = new AlarmManage();
+                manage.setSigninAlarm(ct);
             }
         }
     }
 
-    private void setArmmanager(long time) {
-        if (time <= 0) return;
-        //操作:发送一个广播,广播接收后Toast提示定时操作完成
-        Intent intent = new Intent(AlarmaActivity.this, AlarmReceiver.class);
-        intent.setAction("ALARMA_ACTION");
-        AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
-        Calendar calendar = Calendar.getInstance();
-        calendar.setTimeInMillis(time);
-        Crouton.makeText(ct, "将在" + TimeUtils.long2str(time, "yyyy-MM-dd HH:mm") + "为您提醒");
-        alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), getPendingIntent(intent));
-    }
-
-
-    private int getMin(String chche) {
+    private int getNumByString(String chche) {
         if (StringUtils.isEmpty(chche)) return 5;
         Pattern p = Pattern.compile("(\\d+)");
         Matcher m = p.matcher(chche);
@@ -165,76 +149,4 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
         return -1;
     }
 
-    private PendingIntent getPendingIntent(Intent intent) {
-        return PendingIntent.getBroadcast(AlarmaActivity.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-    }
-
-    //清空提醒
-    private void unArmmanager() {
-        Intent intent = new Intent(AlarmaActivity.this, AlarmReceiver.class);
-        intent.setAction("ALARMA_ACTION");
-        PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
-        AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
-        alarm.cancel(pi);
-    }
-
-    private void showSelectDalog(final TextView tv, final boolean isU) {
-        /*
-         *上班时间设置,弹出框:提前1分钟,提前2分钟,提前5分钟,提前10分钟,提前20分钟,提前30分钟
-         *下班时间设置,弹出款:延迟1分钟,延迟2分钟,延迟5分钟,延迟10分钟,延迟20分钟,延迟30分钟
-         */
-        final String[] str = new String[6];
-        if (isU) {
-            str[0] = "提前1分钟";
-            str[1] = "提前2分钟";
-            str[2] = "提前5分钟";
-            str[3] = "提前10分钟";
-            str[4] = "提前20分钟";
-            str[5] = "提前30分钟";
-        } else {
-            str[0] = "延迟1分钟";
-            str[1] = "延迟2分钟";
-            str[2] = "延迟5分钟";
-            str[3] = "延迟10分钟";
-            str[4] = "延迟20分钟";
-            str[5] = "延迟30分钟";
-        }
-        AlertDialog.Builder builder = new AlertDialog.Builder(ct);
-        builder.setTitle("选择时间");
-        builder.setItems(str, new DialogInterface.OnClickListener() {
-            @Override
-            public void onClick(DialogInterface dialogInterface, int i) {
-                tv.setText(str[i]);
-                if (isU) {
-                    CommonUtil.setSharedPreferences(ct, KEY_ALAR_TIME, str[i]);//保存上班签到的
-                } else {
-                    CommonUtil.setSharedPreferences(ct, KEY_UALAR_TIME, str[i]);//保存下班班签到的
-                }
-                if (isClick) {
-                    startThread(isClick);
-                }
-            }
-        });
-        builder.show();
-    }
-
-    @Override
-    public void onClick(View view) {
-        switch (view.getId()) {
-            case R.id.tv_ualar:
-                showSelectDalog(tv_ualar, false);
-                break;
-            case R.id.tv_alar:
-                showSelectDalog(tv_alar, true);
-                break;
-        }
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-        //退出时候保存时间到本地
-        CommonUtil.setSharedPreferences(ct, KEY_ALAR_TIME, tv_alar.getText().toString().trim());//保存上班签到的
-        CommonUtil.setSharedPreferences(ct, KEY_UALAR_TIME, tv_ualar.getText().toString().trim());//保存下班签到的时间
-    }
 }

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

@@ -1,21 +1,34 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
+import android.widget.Toast;
 
+import com.alibaba.fastjson.JSON;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.Constants;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
 import java.io.IOException;
 import java.io.InputStreamReader;
 import java.io.LineNumberReader;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
 
 /**
  * Created by pengminggong on 2016/10/26.
@@ -29,6 +42,46 @@ public class ChangeMobileActivity extends BaseActivity {
     @ViewInject(R.id.exit_btn)
     private Button exit_btn;
 
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
+            switch (msg.what) {
+                case 0x11:
+                    try {
+                        int id = JSON.parseObject(message).getInteger("id");
+                        validatorMac(id);
+                    } catch (Exception e) {
+                        progressDialog.dismiss();
+                        Crouton.makeText(ct, "解析异常");
+                    }
+                    break;
+                case 0x12:
+                    progressDialog.dismiss();
+                    finish();
+                    Toast.makeText(ct, R.string.change_mobile_ok, Toast.LENGTH_SHORT).show();
+                    break;
+                case Constants.APP_SOCKETIMEOUTEXCEPTION:
+                    progressDialog.dismiss();
+                    if (!StringUtils.isEmpty(message))
+                        Crouton.makeText(ct, message);
+//                    JsonValidator validator = new JsonValidator();
+//                    if (validator.validate(message)) {
+//                        Log.i("gongpengming","validate(message");
+//                        if (JSON.parseObject(message).containsKey("exceptionInfo")) {
+//                            Log.i("gongpengming","containsKey(message");
+//                            String error = JSON.parseObject(message).getString("exceptionInfo");
+//                            if (!StringUtils.isEmpty(error))
+//                                Crouton.makeText(ct, error);
+//                        }
+//                    }
+                    break;
+                default:
+                    break;
+            }
+        }
+    };
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -38,7 +91,9 @@ public class ChangeMobileActivity extends BaseActivity {
     }
 
     private void initView() {
-        mac_tv.setText(getMac());
+        String mac = getMac();
+        if (!StringUtils.isEmpty(mac))
+            mac_tv.setText(getMac());
         exit_btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -46,16 +101,45 @@ public class ChangeMobileActivity extends BaseActivity {
                 if (StringUtils.isEmpty(message))
                     ToastMessage("请填写理由");
                 else
-                    subMit(message);
+                    validatorMac();
+
             }
         });
 
 
     }
 
-    private void subMit(String message) {
-        //TODO 提交
+    private void validatorMac() {
+        //获取网络数据
+        progressDialog.show();
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/saveCommon.action";
+        Map<String, Object> param = new HashMap<>();
+        Map<String, Object> params = new HashMap<>();
+        params.put("mm_emcode", CommonUtil.getSharedPreferences(ct, "erp_username"));
+        params.put("mm_emname", MyApplication.getInstance().mLoginUser.getNickName());
+        params.put("mm_macaddress", mac_tv.getText().toString());
+        params.put("mm_remark", sum_tv.getText().toString());
+        params.put("mm_status", "在录入");
+        params.put("mm_statuscode", "ENTERING");
+        params.put("mm_date", TimeUtils.f_long_2_str(System.currentTimeMillis()));
+        param.put("caller", "MobileMacChange");
+        param.put("formStore", StringUtils.mapToJson(params));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x11, null, null, "get");
+    }
+
 
+    private void validatorMac(int id) {
+        //获取网络数据
+        progressDialog.show();
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/submitCommon.action";
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", "MobileMacChange");
+        param.put("id", id);
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x12, null, null, "get");
     }
 
     public static String getMac() {

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

@@ -438,6 +438,7 @@ public class OutSigninOKActivity extends BaseActivity {
      * 签到
      */
     private void doSignin(int mo_id, int id) {
+
         progressDialog.show();
         //获取网络数据
         String url = baseUrl + "mobile/oa/saveOutSign.action";
@@ -447,7 +448,10 @@ public class OutSigninOKActivity extends BaseActivity {
             bean.setMo_id(mo_id);
         bean.setMo_address(addr_tv.getText().toString().trim());
         bean.setMo_mancode(CommonUtil.getSharedPreferences(this, "erp_username"));
-        bean.setMo_man(MyApplication.getInstance().mLoginUser.getNickName());
+        String name = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (com.xzjmyk.pm.activity.util.StringUtils.isEmpty(name))
+            name = MyApplication.getInstance().mLoginUser.getNickName();
+        bean.setMo_man(name);
         bean.setMo_remark(text_edit.getText().toString());
         bean.setMo_attachid(id);
         bean.setMo_company(com_tv.getText().toString().trim());

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

@@ -1,5 +1,6 @@
 package com.xzjmyk.pm.activity.ui.erp.activity.oa;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -8,11 +9,13 @@ import android.view.MenuItem;
 import android.widget.EditText;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.MeetingDocBean;
+import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
@@ -23,9 +26,13 @@ import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.util.ToastUtil;
 import com.xzjmyk.pm.activity.view.crouton.Crouton;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 import static com.alibaba.fastjson.JSON.parseObject;
 
@@ -40,6 +47,7 @@ public class SaveMeetActivity extends BaseActivity {
     @ViewInject(R.id.follow_et)
     private EditText follow_et;
     private int id;
+    private String noid = null;
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -57,6 +65,27 @@ public class SaveMeetActivity extends BaseActivity {
                 case 0x12://保存后更新编号后提交审批流
                     submitMeeting(id);
                     break;
+                case 0x13:
+                    try {
+                        if (!StringUtils.isEmpty(message) && message.length() > 10) {
+                            JsonValidator validator = new JsonValidator();
+                            if (validator.validate(message)) {
+                                JSONArray array = JSON.parseObject(message).getJSONArray("assigns");
+                                JSONObject object = array.getJSONObject(0);
+                                noid = object.getString("JP_NODEID");
+                                JSONArray data = object.getJSONArray("JP_CANDIDATES");
+                                sendToSelect(data);
+                            }
+                        } else {//只有一个审批人
+                            submitMeeting(id);
+                        }
+                    } catch (Exception e) {
+                        ToastMessage("解析数据错误");
+                    }
+                    break;
+                case 0x14:
+                    finish();
+                    break;
                 case 0x16://获取id
                     if (parseObject(message).containsKey("success") && parseObject(message).getBoolean("success")) {
                         id = parseObject(message).getInteger("id");
@@ -71,8 +100,9 @@ public class SaveMeetActivity extends BaseActivity {
                     }
                     break;
                 case 0x17://提交审批流
-                    Crouton.makeText(SaveMeetActivity.this, "保存会议纪要成功");
                     finish();
+//                    TODO 先关闭发布版本
+//                    judgeApprovers();
                     break;
                 default:
                     JsonValidator validator = new JsonValidator();
@@ -99,7 +129,32 @@ public class SaveMeetActivity extends BaseActivity {
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x16, null, null, "post");
     }
 
-    //保存会议后提交
+    //提交动作,增加判断节点是否有多人的情况
+    private void judgeApprovers() {
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/getMultiNodeAssigns.action";
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", "MeetingDoc");
+        param.put("id", id);
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x13, null, null, "post");
+    }
+
+    //提交动作,增加判断节点是否有多人的情况
+    private void selectApprovers(String emName) {
+        String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "common/takeOverTask.action";
+        Map<String, Object> param = new HashMap<>();
+        Map<String, Object> params = new HashMap<>();
+        params.put("em_code", emName);
+        params.put("nodeId", noid);
+        param.put("_noc", 1);
+        param.put("params", StringUtils.mapToJson(params));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, 0x14, null, null, "post");
+    }
+
+    //保存会议后提交审批流
     private void submitMeeting(int id) {
         String url = CommonUtil.getSharedPreferences(ct, "erp_baseurl") + "oa/meeting/submitMeetingDoc.action";
         Map<String, Object> param = new HashMap<>();
@@ -132,6 +187,22 @@ public class SaveMeetActivity extends BaseActivity {
         bean = getIntent().getParcelableExtra("data");
     }
 
+    private void sendToSelect(JSONArray data) {
+        ArrayList<SelectBean> beans = new ArrayList<>();
+        SelectBean bean = null;
+        for (int i = 0; i < data.size(); i++) {
+            bean = new SelectBean();
+            bean.setName(data.getString(i));
+            bean.setClick(false);
+            beans.add(bean);
+        }
+        Intent intent = new Intent(ct, SelectActivity.class);
+        intent.putExtra("type", 2);
+        intent.putParcelableArrayListExtra("data", beans);
+        intent.putExtra("title", "选择审批人");
+        startActivityForResult(intent, 0x22);
+    }
+
     private void saveAble(String code, int id) {
         StringBuilder builder = new StringBuilder();
         String chche = "";
@@ -225,4 +296,36 @@ public class SaveMeetActivity extends BaseActivity {
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(this, "sessionId"));
         ViewUtil.httpSendRequest(this, url, param, handler, headers, 0x11, null, null, "post");
     }
+
+    public List<String> getTeacherList(String managers) {
+        List<String> ls = new ArrayList<String>();
+        Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
+        Matcher matcher = pattern.matcher(managers);
+
+        while (matcher.find())
+            ls.add(matcher.group());
+        return ls;
+    }
+
+    private void getEmnameByReturn(String text) {
+        if (StringUtils.isEmpty(text)) return;
+        Pattern pattern = Pattern.compile("(?<=\\()(.+?)(?=\\))");
+        Matcher matcher = pattern.matcher(text);
+        while (matcher.find()) {
+            String name = matcher.group();
+            if (!StringUtils.isEmpty(name))
+                selectApprovers(name);
+        }
+    }
+
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+        if (requestCode == 0x22 && resultCode == 0x20) {
+            SelectBean b = data.getParcelableExtra("data");
+            if (b == null) return;
+            String name = StringUtils.isEmpty(b.getName()) ? "" : b.getName();
+            getEmnameByReturn(name);
+        }
+    }
 }

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

@@ -5,7 +5,6 @@ import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
 import android.text.Html;
-import android.util.Log;
 import android.view.Menu;
 import android.view.MenuInflater;
 import android.view.MenuItem;
@@ -22,7 +21,6 @@ import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.lidroid.xutils.ViewUtils;
 import com.lidroid.xutils.view.annotation.ViewInject;
-import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -44,6 +42,8 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
+import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferences;
+
 /**
  * 1.0x11 获取打卡记录列表
  * 2.0x12 获取判断用户是否是管理员接口
@@ -233,7 +233,10 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         num_tv.setText("" + sigNum);
         String loginUserId = MyApplication.getInstance().mLoginUser.getUserId();
         AvatarHelper.getInstance().displayAvatar(loginUserId, name_img, true);
-        name_tv.setText(MyApplication.getInstance().mLoginUser.getNickName());
+        String name = CommonUtil.getSharedPreferences(ct, "erp_emname");
+        if (StringUtils.isEmpty(name))
+            name = MyApplication.getInstance().mLoginUser.getNickName();
+        name_tv.setText(name);
         com_tv.setText(CommonUtil.getSharedPreferences(ct, "erp_commpany"));
         setLocation();
         do_trim.setOnClickListener(this);
@@ -293,9 +296,9 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     //获取打卡记录 date:yyyy-MM-dd
     private void loadLog() {
         if (emcode == null)
-            emcode = CommonUtil.getSharedPreferences(ct, "erp_username");
+            emcode = getSharedPreferences(ct, "erp_username");
         final Map<String, Object> param = new HashMap<>();
-        param.put("currentMaster", CommonUtil.getSharedPreferences(ct, "erp_master"));
+        param.put("currentMaster", getSharedPreferences(ct, "erp_master"));
         param.put("page", 1);
         param.put("pageSize", 1000);
         param.put("condition", "mo_mancode='" + emcode + "' and to_char(mo_signtime,'yyyy-MM-dd')='" + TimeUtils.s_long_2_str(System.currentTimeMillis()) + "'");
@@ -309,15 +312,15 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     private void net(String action, Map<String, Object> param, int what) {
         ct.progressDialog.show();
         if (baseUrl == null)
-            baseUrl = CommonUtil.getSharedPreferences(ct, "erp_baseurl");
+            baseUrl = getSharedPreferences(ct, "erp_baseurl");
         if (emcode == null)
-            emcode = CommonUtil.getSharedPreferences(ct, "erp_username");
+            emcode = getSharedPreferences(ct, "erp_username");
         String url = baseUrl + action;
 
         param.put("emcode", emcode);
-        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
+        param.put("sessionId", getSharedPreferences(ct, "sessionId"));
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        headers.put("Cookie", "JSESSIONID=" + getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, what, null, null, "get");
     }
 

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

@@ -32,6 +32,7 @@ import com.xzjmyk.pm.activity.bean.oa.SigninBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.base.EasyFragment;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.AlarmaActivity;
+import com.xzjmyk.pm.activity.ui.erp.activity.oa.ChangeMobileActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationMapActivity;
 import com.xzjmyk.pm.activity.ui.erp.adapter.SigninAdapter;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -67,6 +68,7 @@ import static com.alibaba.fastjson.JSON.parseObject;
  * 0x15:获取mac地址
  * 0x16:重新登陆
  * 0x17:上传新的mac地址
+ * 0x18:更改手机
  * Created by gongpengming on 2016/9/1.
  */
 public class SigninFragment extends EasyFragment implements View.OnClickListener {
@@ -180,6 +182,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     loadNetData(System.currentTimeMillis());
                     break;
                 case 0x17:
+                    isMacInNet = true;
                     if (JSON.parseObject(message).containsKey("success") && JSON.parseObject(message).getBoolean("success")) {
                         CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
                             @Override
@@ -199,16 +202,14 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     } else if (StringUtils.isInclude(message, "该设备不是考勤打卡常用设备")
                             || StringUtils.isInclude(message, "该设备已被他人绑定")) {
                         showError(message);
+                    } else if (StringUtils.isInclude(message, "404")) {
+                        CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
+                            @Override
+                            public void callBack(String code) {
+                                doSignin(code);
+                            }
+                        });
                     }
-                    //TODO 发布版本不适用
-//                    else if (StringUtils.isInclude(message, "404")) {
-//                        CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
-//                            @Override
-//                            public void callBack(String code) {
-//                                doSignin(code);
-//                            }
-//                        });
-//                    }
                     break;
             }
         }
@@ -264,17 +265,11 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                         Crouton.makeText(ct, "当前网络不可用,请检查网络连接");
                         return;
                     }
-                    CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
-                        @Override
-                        public void callBack(String code) {
-                            doSignin(code);
-                        }
-                    });
-//                    if (isMacInNet) {
-//                        validatorMac();
-//                    } else {
-//                        showFristMac();
-//                    }
+                    if (isMacInNet) {
+                        validatorMac();
+                    } else {
+                        showFristMac();
+                    }
                 }
                 break;
             case R.id.title:
@@ -312,7 +307,6 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
     }
 
     private void returnLogin() {
-        //TODO 重新登陆
         loginNum++;
         if (loginNum > 1) return;
         if (AppConfig.DEBUG)
@@ -386,8 +380,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
         listview.setAdapter(adapter);
         office_addr.setText(Html.fromHtml("<font color=\'#575757\'>当前位置  " + "</font><font color=\'#000000\'>" + addr + "</font>"));
         loadNetData(System.currentTimeMillis());//获取打卡班次信息
-        //TODO 发布版本不使用
-//        getMacByNet();
+        getMacByNet();
         //判断是否有定位权限
         if (!isOpenGps()) {
             Crouton.makeText(ct, "为了更好体验,请打开GPS", 3000);
@@ -407,6 +400,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     public void onPositive(MaterialDialog dialog) {
                         //TODO 调转到申请更换手机界面
                         dialog.dismiss();
+                        Intent intent = new Intent(ct, ChangeMobileActivity.class);
+                        startActivityForResult(intent, 0x18);
                     }
 
                     @Override

+ 39 - 23
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java

@@ -84,7 +84,6 @@ public class CommonUtil {
     private final static String AppShareName = "setting";
 
 
-
     public final static UMShareListener umShareListener = new UMShareListener() {
         @Override
         public void onResult(SHARE_MEDIA platform) {
@@ -98,7 +97,7 @@ public class CommonUtil {
                     Toast.makeText(MyApplication.getInstance(), "QQ空间" + " 分享成功", Toast.LENGTH_SHORT).show();
 
                 } else if (platform.name().equals("SINA")) {
-                    Toast.makeText(MyApplication.getInstance(), "微博"+ " 分享成功", Toast.LENGTH_SHORT).show();
+                    Toast.makeText(MyApplication.getInstance(), "微博" + " 分享成功", Toast.LENGTH_SHORT).show();
                 } else if (platform.name().equals("QQ")) {
                     Toast.makeText(MyApplication.getInstance(), "QQ" + " 分享成功", Toast.LENGTH_SHORT).show();
                 } else if (platform.name().equals("WEIXIN_CIRCLE")) {
@@ -203,10 +202,10 @@ public class CommonUtil {
                 .considerExifParams(true)  //是否考虑JPEG图像EXIF参数(旋转,翻转)
                 .imageScaleType(ImageScaleType.IN_SAMPLE_INT)//设置图片以如何的编码方式显示
                 .bitmapConfig(Bitmap.Config.RGB_565)//设置图片的解码类型
-                        //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置
+                //.decodingOptions(BitmapFactory.Options decodingOptions)//设置图片的解码配置
                 .delayBeforeLoading(0)//int delayInMillis为你设置的下载前的延迟时间
-                        //设置图片加入缓存前,对bitmap进行设置
-                        //.preProcessor(BitmapProcessor preProcessor)
+                //设置图片加入缓存前,对bitmap进行设置
+                //.preProcessor(BitmapProcessor preProcessor)
                 .resetViewBeforeLoading(true)//设置图片在下载前是否重置,复位
                 .build();//构建完成
         return options;
@@ -319,10 +318,11 @@ public class CommonUtil {
 
     /**
      * 检验是否是正确的网址
+     *
      * @param s
      * @return
      */
-    public static boolean isWebsite(String s){
+    public static boolean isWebsite(String s) {
         String regex = "^([hH][tT]{2}[pP]://|[hH][tT]{2}[pP][sS]://)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~\\\\/])+$";
         Pattern p = Pattern.compile(regex);
         Matcher m = p.matcher(s);
@@ -345,6 +345,16 @@ public class CommonUtil {
         return (int) (pxValue / scale + 0.5f);
     }
 
+    public static boolean setSharedPreferences(Context ct, String key, int value) {
+        if (key != null) {
+            SharedPreferences sPreferences = ct.getSharedPreferences(AppShareName, Context.MODE_PRIVATE);
+            boolean falg = sPreferences.edit().putInt(key, value).commit();
+            return falg;
+        } else {
+            return false;
+        }
+    }
+
     public static boolean setSharedPreferences(Context ct, String key, String value) {
         if (key != null) {
             SharedPreferences sPreferences = ct.getSharedPreferences(AppShareName, Context.MODE_PRIVATE);
@@ -353,7 +363,6 @@ public class CommonUtil {
         } else {
             return false;
         }
-
     }
 
     public static boolean setSharedPreferences(Context ct, String key, String value, String preName) {
@@ -432,12 +441,12 @@ public class CommonUtil {
         return value;
     }
 
-    public static int getSharedPreferencesInt(Context ct, String key) {
+    public static int getSharedPreferencesInt(Context ct, String key,int defValues) {
         if (key == null) {
             return 0;
         }
         SharedPreferences sPreferences = ct.getSharedPreferences(AppShareName, Context.MODE_PRIVATE);
-        int value = sPreferences.getInt(key, -1);
+        int value = sPreferences.getInt(key, defValues);
         return value;
     }
 
@@ -810,17 +819,18 @@ public class CommonUtil {
 
     /**
      * 对话框是否展示
+     *
      * @param dialog
      * @return
      */
-    public static boolean isDialogShowing(Dialog dialog){
-        if (dialog != null && dialog.isShowing()){
+    public static boolean isDialogShowing(Dialog dialog) {
+        if (dialog != null && dialog.isShowing()) {
             return true;
         }
         return false;
     }
 
-    public static void getCommonId(Context ct,String seq,Handler mHandler,int codeWhat){
+    public static void getCommonId(Context ct, String seq, Handler mHandler, int codeWhat) {
         String url = Constants.getAppBaseUrl(ct) + "/common/getId.action";
         final Map<String, Object> param = new HashMap<>();
         param.put("seq", seq);
@@ -854,12 +864,13 @@ public class CommonUtil {
 
     /**
      * 去除字符串中的换行符,空格
+     *
      * @param s
      * @return
      */
-    public static String removeStringMark(String s){
+    public static String removeStringMark(String s) {
         String result = "";
-        if (!TextUtils.isEmpty(s)){
+        if (!TextUtils.isEmpty(s)) {
             Pattern pattern = Pattern.compile("\\s*|\t|\r|\n");
 //            Pattern pattern = Pattern.compile("\r|\n");
             Matcher matcher = pattern.matcher(s);
@@ -870,10 +881,11 @@ public class CommonUtil {
 
     /**
      * 返回输入框内去除换行符和空格之后的字符串
+     *
      * @param et
      * @return
      */
-    public static String getNoMarkEditText(FormEditText et){
+    public static String getNoMarkEditText(FormEditText et) {
         String temp = "";
         temp = et.getText().toString().trim();
         temp = removeStringMark(temp);
@@ -882,6 +894,7 @@ public class CommonUtil {
 
     /**
      * 添加图片的toast
+     *
      * @param context
      * @param imageId  图片id
      * @param content  文字内容
@@ -965,10 +978,10 @@ public class CommonUtil {
     }
 
     /**
-      * @desc:打印异常信息
-      * @author: on 2016/10/14
-      */
-    public static String getExceptionStack(Context ct, Throwable ex,boolean isDisplay) {
+     * @desc:打印异常信息
+     * @author: on 2016/10/14
+     */
+    public static String getExceptionStack(Context ct, Throwable ex, boolean isDisplay) {
         StringBuffer sb = new StringBuffer();
         sb.append("----------------------异常信息输出-------------------------------------\n");
         StringWriter writer = new StringWriter();
@@ -1014,6 +1027,7 @@ public class CommonUtil {
 
     /**
      * 获取网络时间
+     *
      * @param mHandler
      */
     public static void getNetTime(final Handler mHandler) {
@@ -1040,7 +1054,7 @@ public class CommonUtil {
                     mHandler.sendMessage(message);
                 }
                 long id = uc.getDate();
-                if (id != 0){
+                if (id != 0) {
                     date = new Date(id);
                     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                     nowTime = format.format(date);
@@ -1050,7 +1064,7 @@ public class CommonUtil {
                     message = Message.obtain();
                     message.what = GET_NET_TIME;
                     message.obj = nowTime;
-                }else {
+                } else {
                     message = Message.obtain();
                     message.what = GET_NET_TIME;
                     message.obj = null;
@@ -1064,6 +1078,7 @@ public class CommonUtil {
 
     /**
      * EditText竖直方向是否可以滚动
+     *
      * @param editText 需要判断的EditText
      * @return true:可以滚动  false:不可以滚动
      */
@@ -1073,11 +1088,11 @@ public class CommonUtil {
         //控件内容的总高度
         int scrollRange = editText.getLayout().getHeight();
         //控件实际显示的高度
-        int scrollExtent = editText.getHeight() - editText.getCompoundPaddingTop() -editText.getCompoundPaddingBottom();
+        int scrollExtent = editText.getHeight() - editText.getCompoundPaddingTop() - editText.getCompoundPaddingBottom();
         //控件内容总高度与实际显示高度的差值
         int scrollDifference = scrollRange - scrollExtent;
 
-        if(scrollDifference == 0) {
+        if (scrollDifference == 0) {
             return false;
         }
 
@@ -1088,6 +1103,7 @@ public class CommonUtil {
 
     /**
      * 弹出选择时间框,并显示在指定TextView上
+     *
      * @param context
      * @param textView
      */

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

@@ -0,0 +1,106 @@
+package com.xzjmyk.pm.activity.ui.erp.util.alarm;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+
+import com.xzjmyk.pm.activity.bean.oa.SigninBean;
+import com.xzjmyk.pm.activity.db.dao.SigninDao;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+import java.util.Calendar;
+import java.util.List;
+
+import static android.content.Context.ALARM_SERVICE;
+import static com.xzjmyk.pm.activity.util.TimeUtils.f_str_2_long;
+
+/**
+ * 提醒管理器
+ * Created by pengminggong on 2016/10/26.
+ */
+public class AlarmManage {
+    public final static String AUTO_SIGNIN_ACTION = "AUTO_SIGNIN_ACTION";//自动打卡action
+    public final static String WORK_ALARM_ACTION = "WORK_ALARM_ACTION";//上班提醒action
+    public final static String OFFWORK_ALARM_ACTION = "OFFWORK_ALARM_ACTION";//下班提醒action
+
+    public final static String ALARMA_CLICK = "ALARMA_CLICK";//判断是否选中提醒
+    public final static String AUTO_SIGNIN = "AUTO_SIGNIN";//判断是否选中
+
+    public void setSigninAlarm(Context ct) {
+        if (true) return;
+        boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(ct, ALARMA_CLICK, false);//是否自动打卡
+        boolean isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AUTO_SIGNIN, false);//是否提醒
+        if (!isAlarm && !isAuto) {
+            unArmmanager(ct);
+            return;
+        }
+        List<SigninBean> beans = SigninDao.getInstance(ct).queryByEmcode();
+        int u = CommonUtil.getSharedPreferencesInt(ct, "ALARM_WORK_TIME", 5);//上班提前xx分钟
+        int d = CommonUtil.getSharedPreferencesInt(ct, "ALARM_OFFWORK_TIME", 5);//下班延迟xx分钟
+        long time = System.currentTimeMillis();
+        String today = TimeUtils.s_long_2_str(time);//当天日期   yyyy-MM-dd
+
+        String alarmTime = null;//提醒时间  yyyy-MM-dd HH:mm
+
+
+        for (SigninBean e : beans) {
+            if (isAlarm) {//提醒
+                alarmTime = today + " " + e.getWorkTime() + ":00";//当天下班时间
+
+                break;
+
+            }
+        }
+
+    }
+
+
+    private long getTimeByHHmm(String time) {
+        String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";//当天下班时间
+        return TimeUtils.f_str_2_long(che);
+    }
+
+    /**
+     * 该时间符合提醒时间
+     *
+     * @param ct
+     * @param action
+     * @param time   HH:mm
+     */
+    private void allowAlarm(Context ct, String action, String time) {
+        String che = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time + ":00";
+        long l = f_str_2_long(che);
+        CommonUtil.setSharedPreferences(ct, "old_action", action);
+        setNextAlarm(ct, action, l);
+    }
+
+    private void setNextAlarm(Context ct, String action, long time) {
+        String str = TimeUtils.f_long_2_str(time);
+//        Toast.makeText(ct, "提醒时间为:" + str, Toast.LENGTH_SHORT).show();
+        Intent intent = new Intent(ct, AlarmReceiver.class);
+        intent.setAction(StringUtils.isEmpty(action) ? WORK_ALARM_ACTION : action);
+        AlarmManager alarm = (AlarmManager) ct.getSystemService(ALARM_SERVICE);
+        Calendar calendar = Calendar.getInstance();
+        calendar.setTimeInMillis(time);
+        alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), getPendingIntent(ct, intent));
+    }
+
+    //清空提醒
+    public void unArmmanager(Context ct) {
+        Intent intent = new Intent(ct, AlarmReceiver.class);
+        String action = CommonUtil.getSharedPreferences(ct, "old_action");
+        if (StringUtils.isEmpty(action))
+            action = AUTO_SIGNIN_ACTION;
+        intent.setAction(action);
+        AlarmManager alarm = (AlarmManager) ct.getSystemService(ALARM_SERVICE);
+        alarm.cancel(getPendingIntent(ct, intent));
+    }
+
+    private PendingIntent getPendingIntent(Context ct, Intent intent) {
+        return PendingIntent.getBroadcast(ct, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+}

+ 26 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmReceiver.java

@@ -0,0 +1,26 @@
+package com.xzjmyk.pm.activity.ui.erp.util.alarm;
+
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+/**
+ * Created by pengminggong on 2016/10/26.
+ */
+
+public class AlarmReceiver extends BroadcastReceiver {
+
+    @Override
+    public void onReceive(Context context, Intent intent) {
+        String chche = TimeUtils.f_long_2_str(System.currentTimeMillis());
+        String action = intent.getAction();
+        AlarmManage manage = new AlarmManage();
+//        manage.setSigninAlarm(context);
+    }
+
+
+
+
+}

+ 45 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/NotificationManage.java

@@ -0,0 +1,45 @@
+package com.xzjmyk.pm.activity.ui.erp.util.alarm;
+
+import android.app.Activity;
+import android.app.Notification;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.support.v7.app.NotificationCompat;
+
+import com.xzjmyk.pm.activity.R;
+
+/**
+ * 通知工具类
+ * Created by pengminggong on 2016/10/27.
+ */
+public class NotificationManage {
+
+    /**
+     * 显示通知栏
+     *
+     * @param context
+     * @param icon    标题图标资源id
+     * @param title   标题
+     * @param content 内容
+     * @param clazz   点击跳转的界面
+     */
+    private void sendNotification(Context context, int icon, String title, String content, Class<? extends Activity> clazz) {
+        NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+        NotificationCompat.Builder builder = new NotificationCompat.Builder(context.getApplicationContext());
+        builder.setSmallIcon(icon);
+        builder.setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);
+        builder.setAutoCancel(true);
+        builder.setContentTitle(title);
+        builder.setContentText(content);
+        Intent intent = new Intent(context, clazz);
+        PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
+        builder.setContentIntent(pendingIntent);
+        mNotificationManager.notify(1000, builder.build());
+    }
+
+    public void sendNotification(Context context, Class<? extends Activity> clazz) {
+        sendNotification(context, R.drawable.uuu, "提醒", "提醒", clazz);
+    }
+}

+ 23 - 27
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/SwitchView.java

@@ -70,10 +70,7 @@ public class SwitchView extends View {
                 initAnimator();
             }
         });
-
         setChecked(true);
-
-
     }
 
     private void initAnimator() {
@@ -88,7 +85,7 @@ public class SwitchView extends View {
 
 
     public void setChecked(boolean check) {
-        if (mOnCheckedlistener!=null && check!=isChecked) {
+        if (mOnCheckedlistener != null && check != isChecked) {
             mOnCheckedlistener.onCheckedChanged(this, check);
         }
         isChecked = check;
@@ -109,9 +106,9 @@ public class SwitchView extends View {
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         super.onLayout(changed, left, top, right, bottom);
         if (changed) {
-            mEdgeWidth = getWidth()/30;
-            mLeftStartX = getWidth()/3;
-            mLeftTargetX = getWidth()*2/3;
+            mEdgeWidth = getWidth() / 30;
+            mLeftStartX = getWidth() / 3;
+            mLeftTargetX = getWidth() * 2 / 3;
             mRightStartX = mLeftStartX;
             mRightTargetX = mLeftTargetX;
         }
@@ -137,22 +134,22 @@ public class SwitchView extends View {
     private int getInnerBackR() {
         if (isPlayingRight || isPlaying) {
             long duration = isChecked ? Math.min(mDuration, mRightDuration) * 2 / 3 : Math.max(mDuration, mRightDuration);
-            if (System.currentTimeMillis() >= duration+mStartTime) {
-                return isChecked ? 0: getWidth() / 3 - mEdgeWidth;
+            if (System.currentTimeMillis() >= duration + mStartTime) {
+                return isChecked ? 0 : getWidth() / 3 - mEdgeWidth;
             }
-            float ratio = (float)(System.currentTimeMillis() - mStartTime) / duration;
+            float ratio = (float) (System.currentTimeMillis() - mStartTime) / duration;
             ratio = Math.min(ratio, 1);
-            ratio = isChecked ? (1-ratio) : ratio;
-            return (int)((getWidth()/3 - mEdgeWidth) * ratio);
+            ratio = isChecked ? (1 - ratio) : ratio;
+            return (int) ((getWidth() / 3 - mEdgeWidth) * ratio);
         } else {
-            return isChecked ? 0: getWidth() / 3 - mEdgeWidth;
+            return isChecked ? 0 : getWidth() / 3 - mEdgeWidth;
         }
     }
 
     private int getInnerLeftCenterX() {
         int innerRadius = getInnerBackR();
-        float ratio = (float)innerRadius / (getWidth()/3 -mEdgeWidth);
-        int leftX = (int) (getWidth()/2 - (getWidth()/4) * ratio);
+        float ratio = (float) innerRadius / (getWidth() / 3 - mEdgeWidth);
+        int leftX = (int) (getWidth() / 2 - (getWidth() / 4) * ratio);
         leftX = Math.max(leftX, getWidth() / 3);
         return leftX;
     }
@@ -162,13 +159,13 @@ public class SwitchView extends View {
         int curColor = UNCHECK_COLOR;
         if (isPlayingRight || isPlaying) {
             long duration = Math.min(mDuration, mRightDuration);
-            if (System.currentTimeMillis() >= duration+mStartTime) {
+            if (System.currentTimeMillis() >= duration + mStartTime) {
                 return isChecked ? CHECK_COLOR : UNCHECK_COLOR;
             }
-            float ratio = (float)(System.currentTimeMillis() - mStartTime) / duration;
+            float ratio = (float) (System.currentTimeMillis() - mStartTime) / duration;
             ratio = Math.min(ratio, 1);
             ratio = isChecked ? ratio : 1 - ratio;
-            int curAlpha =(int) (0xff * ratio);
+            int curAlpha = (int) (0xff * ratio);
             curColor = Color.argb(curAlpha, Color.red(CHECK_COLOR), Color.green(CHECK_COLOR), Color.blue(CHECK_COLOR));
 
         } else {
@@ -182,10 +179,10 @@ public class SwitchView extends View {
         int currentLeftCenerX = isChecked ? mLeftStartX : mLeftTargetX;
 
         if (isPlaying) {
-            float ratio = ((float)(System.currentTimeMillis()-mStartTime) / mDuration) * (isChecked ? 1 : -1);
+            float ratio = ((float) (System.currentTimeMillis() - mStartTime) / mDuration) * (isChecked ? 1 : -1);
             currentLeftCenerX += (mLeftTargetX - mLeftStartX) * ratio;
-            if ((isChecked && currentLeftCenerX >= mLeftTargetX ) ||
-                    !isChecked && currentLeftCenerX <= mLeftStartX ) {
+            if ((isChecked && currentLeftCenerX >= mLeftTargetX) ||
+                    !isChecked && currentLeftCenerX <= mLeftStartX) {
                 isPlaying = false;
             }
         } else {
@@ -198,27 +195,26 @@ public class SwitchView extends View {
     private int getRightCenterX() {
         int currentRightX = isChecked ? mRightStartX : mRightTargetX;
         if (isPlayingRight) {
-            float ratio = ((float)(System.currentTimeMillis()-mRightStartTime) / mRightDuration) * (isChecked ? 1 : -1);
+            float ratio = ((float) (System.currentTimeMillis() - mRightStartTime) / mRightDuration) * (isChecked ? 1 : -1);
             currentRightX += (mRightTargetX - mRightStartX) * ratio;
             if ((isChecked && currentRightX >= mRightTargetX) ||
-                !isChecked && currentRightX <= mRightStartX ) {
+                    !isChecked && currentRightX <= mRightStartX) {
                 isPlayingRight = false;
             }
         } else {
-            return isChecked ?  mRightTargetX : mRightStartX;
+            return isChecked ? mRightTargetX : mRightStartX;
         }
         return currentRightX;
     }
 
 
-
     private void drawRectCir(Canvas canvas, int radius, int leftCenterX, int rightCenterX, int centerY, Paint paint) {
-        canvas.drawRoundRect(new RectF(leftCenterX-radius, centerY-radius, rightCenterX+radius, centerY+radius), radius, radius, paint);
+        canvas.drawRoundRect(new RectF(leftCenterX - radius, centerY - radius, rightCenterX + radius, centerY + radius), radius, radius, paint);
     }
 
     @Override
     public boolean onTouchEvent(MotionEvent event) {
-        if (isPlaying||isPlayingRight) {
+        if (isPlaying || isPlayingRight) {
             return true;
         }
         return super.onTouchEvent(event);

BIN
WeiChat/src/main/res/drawable-hdpi/ic_subscription_number.png


+ 25 - 16
WeiChat/src/main/res/layout/activity_oa__alarma.xml

@@ -6,6 +6,29 @@
     android:orientation="vertical"
     tools:context=".ui.erp.activity.oa.AlarmaActivity">
 
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/item_height"
+        android:layout_margin="2dp"
+        android:visibility="gone"
+        android:background="@drawable/oa_signin_tv_bg"
+        android:padding="8dp">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerVertical="true"
+            android:text="自动打卡"
+            android:textSize="@dimen/text_main" />
+
+        <com.xzjmyk.pm.activity.ui.erp.view.SwitchView
+            android:id="@+id/auto_signin_sw"
+            android:layout_width="50dp"
+            android:layout_height="35dp"
+            android:layout_alignParentRight="true"
+            android:layout_centerVertical="true" />
+    </RelativeLayout>
+
     <RelativeLayout
         android:layout_width="match_parent"
         android:layout_height="@dimen/item_height"
@@ -59,6 +82,7 @@
             android:layout_alignParentRight="true"
             android:layout_centerVertical="true"
             android:drawableRight="@drawable/oa_next"
+            android:text="提前5分钟"
             android:textSize="@dimen/text_main" />
     </RelativeLayout>
 
@@ -92,24 +116,9 @@
             android:layout_alignParentRight="true"
             android:layout_centerVertical="true"
             android:drawableRight="@drawable/oa_next"
+            android:text="延迟5分钟"
             android:textSize="@dimen/text_main" />
     </RelativeLayout>
 
-    <EditText
-        android:id="@+id/editText"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:ems="10"
-        android:inputType="number" />
-
-    <EditText
-        android:id="@+id/editText2"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center_horizontal"
-        android:ems="10"
-        android:inputType="number" />
-
 
 </LinearLayout>

+ 4 - 0
WeiChat/src/main/res/layout/activity_select.xml

@@ -3,6 +3,8 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
+    android:focusable="true"
+    android:focusableInTouchMode="true"
     android:orientation="vertical"
     tools:context="com.xzjmyk.pm.activity.ui.message.SelectActivity">
 
@@ -11,6 +13,7 @@
         android:layout_height="48dp"
         android:background="@drawable/bg_bar"
         android:focusable="true"
+        android:focusableInTouchMode="true"
         android:orientation="horizontal"
         android:paddingBottom="5dp"
         android:paddingLeft="15dp"
@@ -25,6 +28,7 @@
             android:background="@drawable/search_input"
             android:drawableLeft="@drawable/search"
             android:drawableRight="@drawable/search_clear"
+            android:focusableInTouchMode="false"
             android:hint="@string/search"
             android:textColor="@color/dark_grey"
             android:textColorHint="@color/grey"

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

@@ -7,7 +7,17 @@
         <item>转为新客户</item>
         <item>关联已有客户</item>
     </string-array>
+
+    <string-array name="alarm_time">
+        <item>1分钟</item>
+        <item>2分钟</item>
+        <item>5分钟</item>
+        <item>10分钟</item>
+        <item>20分钟</item>
+        <item>30分钟</item>
+    </string-array>
     <string name="add_summed">请添加工作总结!</string>
+    <string name="change_mobile_ok">申请变更成功,待系统审批完即可正常打卡!</string>
     <string name="submit">提交</string>
     <string name="change_mobile">手机变更单</string>
     <string name="play_phone">拨打电话</string>
@@ -270,7 +280,7 @@
     <string name="select_contacts">选择联系人</string>
     <string name="please_input_room_name">请输入群名</string>
     <string name="please_input_room_desc">请输入群描述</string>
-    <string name="service_start_failed">服务启动失败</string>
+    <string name="service_start_failed">您当前处于离线状态,请检查网络或重新登陆</string>
     <string name="create_room">创建群</string>
     <string name="room_name_empty_error">群名不能为空</string>
     <string name="room_des_empty_error">群描述不能为空</string>