Browse Source

1 刷新动画时间更改,信息界面本地图片圆角处理

Arison 9 years ago
parent
commit
fdce7e46be
25 changed files with 601 additions and 159 deletions
  1. 1 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/AppConfig.java
  2. 34 29
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java
  3. 2 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetingActivity.java
  4. 6 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionPlanActivity.java
  5. 55 29
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionSetActivity.java
  6. 3 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  7. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutSigninOKActivity.java
  8. 6 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/SelectActivity.java
  9. 11 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/TestActivity.java
  10. 6 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/SigninAdapter.java
  11. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java
  12. 13 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  13. 15 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  14. 72 15
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  15. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CodeUtil.java
  16. 128 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonInterfaceUtil.java
  17. 2 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/SigninUtil.java
  18. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/StringUtils.java
  19. 86 31
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmService.java
  20. 0 13
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmUtil.java
  21. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/NotificationManage.java
  22. 133 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/SigninPresenter.java
  23. 7 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java
  24. 1 0
      WeiChat/src/main/res/layout/activity_mission_set.xml
  25. 2 1
      WeiChat/src/main/res/layout/fragment_me.xml

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

@@ -12,7 +12,6 @@ public class AppConfig {
     public static final boolean COMPANY = true;//不可以乱动,调试接口
     public static final String TAG = "roamer";
     public static final boolean DEBUG = true;
-
     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
@@ -25,7 +24,7 @@ public class AppConfig {
 
     public final static String ALARM_MISSION_TIME = "ALARM_MISSION_TIME";//提醒时间
     public final static String ALARM_MISSION_DISTANCE = "ALARM_MISSION_DISTANCE";//有效距离
-    public final static String AUTO_MISSION_TIME= "AUTO_MISSION_TIME";//预留时间
+    public final static String AUTO_MISSION_TIME = "AUTO_MISSION_TIME";//预留时间
 
     public final static String IS_ADMIN = "IS_ADMIN";//管理员状态  1.管理员  2.非管理员
 

+ 34 - 29
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/circle/SendShuoshuoActivity.java

@@ -1,13 +1,14 @@
 package com.xzjmyk.pm.activity.ui.circle;
 
+import android.annotation.TargetApi;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.ProgressDialog;
-
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
@@ -20,7 +21,6 @@ import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.ImageView.ScaleType;
 import android.widget.TextView;
-import android.widget.Toast;
 
 import com.alibaba.fastjson.JSON;
 import com.android.volley.Response;
@@ -111,9 +111,9 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 
 
         //判是否有从工作日报心得传来数据
-        final  Intent intent = getIntent();
+        final Intent intent = getIntent();
         dailyexperience = intent.getStringExtra("Experience");
-        if(!TextUtils.isEmpty(dailyexperience)){
+        if (!TextUtils.isEmpty(dailyexperience)) {
             mTextEdit.setText(dailyexperience);
         }
         if (mType == 0) {
@@ -216,7 +216,8 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
         }
 
     }
-//public void senddailyshuoshuo(String experience){
+
+    //public void senddailyshuoshuo(String experience){
 //
 //}
     // 发布一条说说
@@ -236,10 +237,10 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
         // 消息隐私范围 0=不可见;1=朋友可见;2=粉丝可见;3=广场
         params.put("visible", "3");
 
-        if(!TextUtils.isEmpty(dailyexperience)){
+        if (!TextUtils.isEmpty(dailyexperience)) {
 //            params.put("text", mTextEdit.getText().toString()+"\n\n[来自:工作日报>工作心得分享]");// 消息内容
-            params.put("text", mTextEdit.getText().toString()+"\t(我也去分享(^_^)/~~)\n\n");
-        }else{
+            params.put("text", mTextEdit.getText().toString() + "\t(我也去分享(^_^)/~~)\n\n");
+        } else {
             params.put("text", mTextEdit.getText().toString());// 消息内容
         }
 
@@ -288,26 +289,26 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
                     intent.putExtra(AppConstant.EXTRA_MSG_ID, result.getData());
                     setResult(RESULT_OK, intent);
 
-                    if(!TextUtils.isEmpty(dailyexperience)){
-                       new AlertDialog
-                               .Builder(mContext)
-                               .setCancelable(false)  //设置点击对话框之外的对话框不消失
-                               .setTitle("分享成功")
-                               .setMessage("是否立即进入朋友圈查看")
-                               .setNegativeButton("编写日报", new DialogInterface.OnClickListener() {
-                                   @Override
-                                   public void onClick(DialogInterface dialog, int which) {
-                                       finish();
-                                   }
-                               })
-                               .setPositiveButton("立即进入", new DialogInterface.OnClickListener() {
-                                   @Override
-                                   public void onClick(DialogInterface dialog, int which) {
-                                       Intent intent1 = new Intent(ct,BusinessCircleActivity.class);
-                                       startActivity(intent1);
-                                   }
-                               }).show();
-                   }else{
+                    if (!TextUtils.isEmpty(dailyexperience)) {
+                        new AlertDialog
+                                .Builder(mContext)
+                                .setCancelable(false)  //设置点击对话框之外的对话框不消失
+                                .setTitle("分享成功")
+                                .setMessage("是否立即进入朋友圈查看")
+                                .setNegativeButton("编写日报", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        finish();
+                                    }
+                                })
+                                .setPositiveButton("立即进入", new DialogInterface.OnClickListener() {
+                                    @Override
+                                    public void onClick(DialogInterface dialog, int which) {
+                                        Intent intent1 = new Intent(ct, BusinessCircleActivity.class);
+                                        startActivity(intent1);
+                                    }
+                                }).show();
+                    } else {
                         finish();
                     }
                 }
@@ -319,6 +320,7 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
 
     private ProgressDialog mProgressDialog;
 
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     @Override
     public void onClick(View view) {
         switch (view.getId()) {
@@ -336,7 +338,10 @@ public class SendShuoshuoActivity extends BaseActivity implements View.OnClickLi
                 if (mPhotoList.size() <= 0) {// 发文字
                     sendShuoshuo();
                 } else {//  图片+文字
-                    new UploadPhpto().execute();
+                    if (Build.VERSION.SDK_INT >= 11)
+                        new UploadPhpto().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+                    else
+                        new UploadPhpto().execute();
                 }
                 break;
         }

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

@@ -4,6 +4,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -494,6 +495,7 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                     JSONObject object = JSON.parseObject(json);
                     if (object == null) return;
                     mr_code = object.containsKey("mr_code") ? object.getString("mr_code") : "";
+                    Log.i("gongpengming", "object=" + object);
                 }
             }
         }

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

@@ -21,9 +21,9 @@ 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.MyApplication;
 import com.xzjmyk.pm.activity.R;
-import com.xzjmyk.pm.activity.db.dao.MissionDao;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.MissionPlanEntity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
@@ -32,6 +32,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.alarm.AlarmService;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.MostLinearLayoutManager;
@@ -56,7 +57,7 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
     @ViewInject(R.id.click_btn)
     private Button click_btn;
 
-    private MissionDao dao;
+    private boolean adminStatus;
     private MissonPlanAdapter adapter;
     private List<MissionPlanEntity> entitys;
     private int position;//选择的item,用于调转界面
@@ -108,6 +109,7 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_mission_plan);
         ViewUtils.inject(this);
+        adminStatus = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         initView();
         initEvent();
     }
@@ -132,6 +134,7 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
             return true;
         } else if (item.getItemId() == R.id.title) {
             Intent intent = new Intent(ct, MissionSetActivity.class);
+            intent.putExtra(AppConfig.IS_ADMIN, adminStatus);
             startActivityForResult(intent, 0x20);
         }
         return super.onOptionsItemSelected(item);
@@ -139,7 +142,7 @@ public class MissionPlanActivity extends BaseActivity implements View.OnClickLis
 
     private void endActivity() {
         setResult(0x20);
-        sendBroadcast(new Intent("com.xzjmyk.pm.activity.ui.erp.util.alarm"));
+        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_PLAN));
         finish();
     }
 

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

@@ -14,8 +14,10 @@ import com.xzjmyk.pm.activity.AppConfig;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.SelectBean;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.ui.erp.util.alarm.AlarmService;
 import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 
 import java.util.ArrayList;
@@ -30,6 +32,8 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
     private RelativeLayout alar_rl;
     @ViewInject(R.id.distance_rl)
     private RelativeLayout distance_rl;
+    @ViewInject(R.id.auto_rl)
+    private RelativeLayout auto_rl;
     @ViewInject(R.id.time_rl)
     private RelativeLayout time_rl;
     @ViewInject(R.id.alarm_tv)
@@ -38,13 +42,19 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
     private TextView distance_tv;
     @ViewInject(R.id.time_tv)
     private TextView time_tv;
+    private CommonInterfaceUtil util;
 
+    private boolean isAuto = false;//是否自动外勤
+    private int distance = 100;//
+    private int time = 30;
+    private boolean adminStatus;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_mission_set);
         ViewUtils.inject(this);
+        adminStatus = getIntent() == null ? false : getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         initView();
         initEvent();
     }
@@ -53,15 +63,18 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         auto_sv.setOnCheckedChangeListener(this);
         alarm_sv.setOnCheckedChangeListener(this);
         alarm_tv.setOnClickListener(this);
-        distance_tv.setOnClickListener(this);
-        time_tv.setOnClickListener(this);
+        if (adminStatus) {
+            distance_tv.setOnClickListener(this);
+            time_tv.setOnClickListener(this);
+        }
     }
 
     private void initView() {
-        boolean is = CommonUtil.getSharedPreferencesBoolean(ct, AppConfig.AUTO_MISSION, false);
-        auto_sv.setChecked(is);
-        is = CommonUtil.getSharedPreferencesBoolean(ct, AppConfig.ALARM_MISSION, false);
-        setTextColor(is);
+        setAdminStatus();
+        util = new CommonInterfaceUtil();
+        isAuto = CommonUtil.getSharedPreferencesBoolean(ct, AppConfig.AUTO_MISSION, false);
+        auto_sv.setChecked(isAuto);
+        boolean is = CommonUtil.getSharedPreferencesBoolean(ct, AppConfig.ALARM_MISSION, false);
         alarm_sv.setChecked(is);
         int chche = CommonUtil.getSharedPreferencesInt(ct, AppConfig.ALARM_MISSION_TIME, 5);
         alarm_tv.setText("提前" + chche + "分钟");
@@ -71,34 +84,38 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         time_tv.setText(chche + "分钟");
     }
 
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        sendBroadcast(new Intent(AlarmService.UPDATA_MISSION_SET));
+    }
 
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
-    public void setTextColor(boolean clicked) {
-        alarm_tv.setFocusable(clicked);
-        distance_tv.setFocusable(clicked);
-        time_tv.setFocusable(clicked);
-//        if (Build.VERSION.SDK_INT >= 9) {
-//            if (clicked) {
-//                alar_rl.setAlpha(1f);
-//                distance_rl.setAlpha(1f);
-//                time_rl.setAlpha(1f);
-//            } else {
-//                alar_rl.setAlpha(0.26f);
-//                distance_rl.setAlpha(0.26f);
-//                time_rl.setAlpha(0.26f);
-//            }
-//        }
+    public void setTextColor(boolean isAdmain, View... view) {
+        if (view != null && view.length > 0 && Build.VERSION.SDK_INT >= 9) {
+            for (View v : view) {
+                v.setAlpha(isAdmain ? 1f : 0.26f);
+                v.setClickable(isAdmain);
+                v.setFocusable(isAdmain);
+            }
+        }
+    }
+
+    private void setAdminStatus() {
+        //如果不是管理员
+        setTextColor(adminStatus, auto_rl, distance_rl, time_rl, auto_sv);
     }
 
     @Override
     public void onCheckedChanged(View view, boolean isChecked) {
         switch (view.getId()) {
             case R.id.auto_sv:
-                CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION, false);
+                isAuto = isChecked;
+                updataSet();
+                CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION, isAuto);
                 break;
             case R.id.alarm_sv:
                 CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION, false);
-                setTextColor(isChecked);
                 break;
         }
     }
@@ -168,20 +185,29 @@ public class MissionSetActivity extends BaseActivity implements SwitchView.OnChe
         switch (requestCode) {
             case 0x21:
                 alarm_tv.setText(bean.getName());
-                CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION_TIME,
-                        StringUtils.getIntByString(bean.getName(), 5));
+                CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION_TIME, StringUtils.getIntByString(bean.getName(), 5));
                 break;
             case 0x22:
                 distance_tv.setText(bean.getName());
-                CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION_DISTANCE,
-                        StringUtils.getIntByString(bean.getName(), 500));
+                distance = StringUtils.getIntByString(bean.getName(), 5);
+                CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION_DISTANCE, distance);
+                updataSet();
                 break;
             case 0x23:
                 time_tv.setText(bean.getName());
-                CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION_TIME,
-                        StringUtils.getIntByString(bean.getName(), 20));
+                time = StringUtils.getIntByString(bean.getName(), 5);
+                CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION_TIME, time);
+                updataSet();
                 break;
         }
+    }
+
+    private void updataSet() {
+        util.addOutSet(distance, time, isAuto, new CommonInterfaceUtil.OnResultListener() {
+            @Override
+            public void result(int code, String result) {
 
+            }
+        });
     }
 }

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

@@ -47,8 +47,6 @@ import com.xzjmyk.pm.activity.ui.erp.activity.QueryActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.crm.TaskAddActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.crm.VisitReportAddActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.crm.VisitReportPlanActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.form.DataFormDetailActivity;
-import com.xzjmyk.pm.activity.ui.erp.activity.form.FormListSelectActivity;
 import com.xzjmyk.pm.activity.ui.erp.adapter.OAListAdapter;
 import com.xzjmyk.pm.activity.ui.erp.fragment.CalendarFragmet;
 import com.xzjmyk.pm.activity.ui.erp.model.Employees;
@@ -452,9 +450,9 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
         pagerAdapter = new PagerAdapter(getSupportFragmentManager());
         viewPager.setAdapter(pagerAdapter);
         viewPager.setCurrentItem(MAX_PAGER / 2);
-
         //判断是否是管理员
-        adminStatus = CommonUtil.getSharedPreferencesInt(ct, AppConfig.IS_ADMIN, -1);
+        String code = CommonUtil.getSharedPreferences(ct, "erp_username");
+        adminStatus = CommonUtil.getSharedPreferencesInt(ct, AppConfig.IS_ADMIN + code, -1);
         if (adminStatus == -1) {
             judgeManager();
         }
@@ -743,8 +741,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener {
                     intent = new Intent(activity, MissionPlanActivity.class);
                 } else {
                     intent = new Intent(activity, OutofficeActivity.class);
-                    intent.putExtra(AppConfig.IS_ADMIN, adminStatus);//上传管理员状态
                 }
+                intent.putExtra(AppConfig.IS_ADMIN, adminStatus > 0);//上传管理员状态
                 startActivity(intent);
                 break;
             case R.id.meeting://会议管理

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

@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -135,7 +136,10 @@ public class OutSigninOKActivity extends BaseActivity {
     private void initView(String addr, String com, JSONArray json) {
         baseUrl = CommonUtil.getSharedPreferences(ct, "erp_baseurl");
         com_tv.setText(com);
-        task.execute();
+        if (Build.VERSION.SDK_INT >= 11)
+            task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+        else
+            task.execute();
         time_tv.setText(TimeUtils.f_long_2_str(System.currentTimeMillis()));
         addr_tv.setText(addr);
         image_tag.setOnClickListener(new View.OnClickListener() {

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

@@ -65,7 +65,7 @@ public class SelectActivity extends BaseActivity {
     private int type = -1;//1 网络  2.本地
     private String title = "";//标题
     private boolean isSingle = true;//是否单选
-   
+
     //location
     private List<SelectBean> formBeaan;//数据来源
     private Object object;
@@ -92,7 +92,7 @@ public class SelectActivity extends BaseActivity {
                     if ("common/dbfind.action".equals(action)) {
                         LogUtil.d("单选模式和单选接口");
                         dispalayMuliSelect(message);
-                    }else{
+                    } else {
                         LogUtil.d("单选模式和单选接口");
                         if (!StringUtils.isEmpty(key)) {
                             if (StringUtils.isEmpty(showKey)) return;
@@ -132,7 +132,7 @@ public class SelectActivity extends BaseActivity {
                         } else {//当返回的没有不需要key值时候
                         }
                     }
-                  
+
                 } else {
                     //多选解析
                     LogUtil.d("多选模式和多选接口");
@@ -288,7 +288,8 @@ public class SelectActivity extends BaseActivity {
                     putDownInput();
                     SelectBean bean = formBeaan.get(i);
                     bean.setId(id);
-                    bean.setJson(JSON.toJSONString(object));
+                    //TODO 出错 先删除  如果要修改  bean.setJson 的返回  联系负责人 Bitliker
+//                    bean.setJson(JSON.toJSONString(object));
                     Intent intent = new Intent();
                     intent.putExtra("data", bean);
                     setResult(0x20, intent);
@@ -317,7 +318,7 @@ public class SelectActivity extends BaseActivity {
         type = intent.getIntExtra("type", -1);
         title = intent.getStringExtra("title");
         id = intent.getIntExtra("id", 0);
-        object=intent.getParcelableExtra("object");
+        object = intent.getParcelableExtra("object");
         LogUtil.d(JSON.toJSONString(object));
         isSingle = intent.getBooleanExtra("isSingle", true);
         int reid = intent.getIntExtra("reid", -1);

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

@@ -12,11 +12,11 @@ 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.db.dao.ErrorMagDao;
 import com.xzjmyk.pm.activity.db.dao.MissionDao;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.ErrorEntity;
 import com.xzjmyk.pm.activity.ui.erp.entity.MissionPlanEntity;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
@@ -50,9 +50,16 @@ public class TestActivity extends BaseActivity implements View.OnClickListener {
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.error_list:
-                beans = ErrorMagDao.getInstance().queryAll();
-                listView.setAdapter(adaptr);
-                adaptr.notifyDataSetChanged();
+                CommonInterfaceUtil util=new CommonInterfaceUtil();
+                util.getOutSetInfo(new CommonInterfaceUtil.OnResultListener() {
+                    @Override
+                    public void result(int code, String result) {
+
+                    }
+                });
+//                beans = ErrorMagDao.getInstance().queryAll();
+//                listView.setAdapter(adaptr);
+//                adaptr.notifyDataSetChanged();
                 break;
             case R.id.test_btn:
                 List<MissionPlanEntity> list = MissionDao.getInstance().queryByEnCode();

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

@@ -37,6 +37,11 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
         return beans;
     }
 
+    /**
+     * @param beans
+     * @param isToday
+     * @param selectTime
+     */
     public void setBeans(List<SigninBean> beans, boolean isToday, long selectTime) {
         this.selectTime = selectTime;
         this.isToday = isToday;
@@ -190,6 +195,6 @@ public class SigninAdapter extends RecyclerView.Adapter<SigninAdapter.ViewHoler>
 
     private String getTimeForHHmm(String hhmm) {
         if (StringUtils.isEmpty(hhmm)) return "";
-        return TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + TimeUtils.getWeek(System.currentTimeMillis()) + " " + hhmm;
+        return TimeUtils.s_long_2_str(selectTime) + " " + TimeUtils.getWeek(System.currentTimeMillis()) + " " + hhmm;
     }
 }

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/db/DBOpenHelper.java

@@ -13,7 +13,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.Constants;
  */
 public class DBOpenHelper extends SQLiteOpenHelper {
 
-    private static final int DATABASE_VERSION = 61;//数据库版本号(每添加一个表要增加版本号)
+    private static final int DATABASE_VERSION = 62;//数据库版本号(每添加一个表要增加版本号)
     public static String dataBaseName = "erp.db";//数据库名称
     public Context context;
 

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

@@ -1,5 +1,6 @@
 package com.xzjmyk.pm.activity.ui.erp.fragment;
 
+import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
@@ -78,9 +79,12 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     private OutofficeActivity ct;
     private JSONArray json = null;
     private String baseAddr;
+    private boolean adminStatus = false;
     private boolean isAddress = false;
     private boolean isImage = false;
     private int distance = 0;
+    boolean isRetuen = false;
+
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -124,7 +128,6 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         super.onDestroy();
     }
 
-    boolean isRetuen = false;
 
     @Override
     public void onClick(View view) {
@@ -167,7 +170,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
 
     @Override
     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
-        if (ct.getIntent() != null && ct.getIntent().getIntExtra(AppConfig.IS_ADMIN, -1) == 1)//管理员
+        if (ct.getIntent() != null && adminStatus)//管理员
             inflater.inflate(R.menu.menu_outoffice, menu);
         super.onCreateOptionsMenu(menu, inflater);
     }
@@ -203,11 +206,18 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         }
     }
 
+    @Override
+    public void onAttach(Context context) {
+        super.onAttach(context);
+        ct= (OutofficeActivity) context;
+
+    }
+
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
         setHasOptionsMenu(true);
         ViewUtils.inject(getmRootView());
-        ct = (OutofficeActivity) getActivity();
+        adminStatus = ct.getIntent() == null ? false : ct.getIntent().getBooleanExtra(AppConfig.IS_ADMIN, false);
         initview();
         initData();
     }

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

@@ -139,7 +139,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     } else {
                         //没有班次
                         isWork = false;
-                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
+                        ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
                         setDataByNoDegree(jsonObject);
                     }
 //                     else {
@@ -185,7 +185,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     if (parseObject(message).containsKey("listdata")) {
                         setDataByLogs(parseObject(message).getJSONArray("listdata"));
                     } else {
-                        ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
+                        ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_workdata), Style.holoRedLight, 3000);
+
                     }
                     break;
                 case 0x13:
@@ -232,6 +233,8 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                     break;
                 default:
                     try {
+                        if (isSignining)
+                            isSignining = false;
                         JsonValidator validator = new JsonValidator();
                         if (validator.validate(message)) {
                             ViewUtil.ToastMessage(ct, message, Style.holoRedLight, 3000);
@@ -244,6 +247,9 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
                             showError(getString(R.string.other_phone_error));
                         } else if (StringUtils.isInclude(message, "设备正处于申请变更绑定阶段")) {
                             macError = getResources().getString(R.string.mac_changing);
+                        } else {
+                            if (!StringUtils.isEmpty(message))
+                                Crouton.makeText(ct, com.xzjmyk.pm.activity.util.StringUtils.getChinese(message));
                         }
                     } catch (Exception e) {
 
@@ -530,10 +536,10 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             return false;
         }
         if (ListUtils.isEmpty(getDataByAdapter())) {
-            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_work_message)
+            ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_work_message)
                     , Style.holoRedLight, 2000);
             if (companyDistance == -1) {
-                ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_addr_message)
                         , Style.holoRedLight, 2000);
             }
             return false;
@@ -544,22 +550,22 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
             return false;
         }
         if (isSignining) {
-            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_signin_agin)
+            ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_signin_agin)
                     , Style.holoRedLight, 2000);
             return false;
         }
         if (!isWork) {
-            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_workdata)
+            ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_workdata)
                     , Style.holoRedLight, 2000);
             if (companyDistance == -1) {
-                ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+                ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_addr_message)
                         , Style.holoRedLight, 2000);
             }
             return false;
         }
 
         if (companyDistance == -1) {
-            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+            ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_addr_message)
                     , Style.holoRedLight, 2000);
             return false;
         }
@@ -737,7 +743,7 @@ public class SigninFragment extends EasyFragment implements View.OnClickListener
 
     private void setDataForAdapter(List<SigninBean> beans) {
         if (companyDistance == -1 || (companyX == 0 && companyY == 0)) {
-            ViewUtil.ToastMessage(ct, ct.getResources().getString(R.string.not_addr_message)
+            ViewUtil.ToastMessageNoRepeat(ct, ct.getResources().getString(R.string.not_addr_message)
                     , Style.holoRedLight, 2000);
         }
         if (adapter == null) {

+ 72 - 15
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java

@@ -90,28 +90,80 @@ public class ViewUtil {
         return params.height;
     }
 
-//    private static String oldMsg;
-//    private static long time;
-//    private static String oldMsg2;
-//    private static long time2;
-    
-    private static  Crouton crouton;
+    private static String oldMsg;
+    private static long time;
+    private static String oldMsg2;
+    private static long time2;
+
+    /**
+     * 弹出Toast消息
+     * 间隔时间不超过三秒的重复信息不会反复弹出
+     *
+     * @param msg
+     * @author RaoMeng
+     */
+    public static void ToastMessageNoRepeat(Context cont, String msg) {
+        if (cont instanceof Activity) {
+            if (!msg.equals(oldMsg)) {
+                Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000).show();
+                time = System.currentTimeMillis();
+            } else {
+                if ((System.currentTimeMillis() - time) > 3000) {
+                    Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000).show();
+                    time = System.currentTimeMillis();
+                }
+            }
+            oldMsg = msg;
+        } else {
+            Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
+        }
+
+    }
 
     /**
      * 弹出Toast消息
      * 间隔时间不超过三秒的重复信息不会反复弹出
+     *
+     * @param msg
+     * @author RaoMeng
+     */
+    public static void ToastMessageNoRepeat(Context cont, String msg, int toastColor, int toastTime) {
+        if (cont instanceof Activity) {
+            if (!msg.equals(oldMsg2)) {
+                Crouton.makeText((Activity) cont, msg, toastColor, toastTime).show();
+                time2 = System.currentTimeMillis();
+            } else {
+                if ((System.currentTimeMillis() - time2) > 3000) {
+                    Crouton.makeText((Activity) cont, msg, toastColor, toastTime).show();
+                    time2 = System.currentTimeMillis();
+                }
+            }
+            oldMsg2 = msg;
+        } else {
+            Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
+        }
+
+    }
+
+
+
+    private static  Crouton crouton;
+
+    /**
+     * 弹出Toast消息
+     *
      *  update for LiuJie
      * @param msg
      * @author RaoMeng
      */
     public static void ToastMessage(Context cont, String msg) {
         if (cont instanceof Activity) {
-            if (crouton!=null){
+            if (crouton != null) {
                 crouton.cancel();
-                crouton= Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000);
+                crouton = Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000);
                 crouton.show();
-            }else{
-                crouton= Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000);
+            } else {
+                crouton = Crouton.makeText((Activity) cont, msg, Style.holoGreenLight, 3000);
                 crouton.show();
             }
         } else {
@@ -122,19 +174,19 @@ public class ViewUtil {
 
     /**
      * 弹出Toast消息
-     * 间隔时间不超过三秒的重复信息不会反复弹出
+     *
      *
      * @param msg
      * @author RaoMeng
      */
     public static void ToastMessage(Context cont, String msg, int toastColor, int toastTime) {
         if (cont instanceof Activity) {
-            if (crouton!=null){
+            if (crouton != null) {
                 crouton.cancel();
-                crouton=   Crouton.makeText((Activity) cont, msg, toastColor, toastTime);
+                crouton = Crouton.makeText((Activity) cont, msg, toastColor, toastTime);
                 crouton.show();
-            }else{
-                crouton=   Crouton.makeText((Activity) cont, msg, toastColor, toastTime);
+            } else {
+                crouton = Crouton.makeText((Activity) cont, msg, toastColor, toastTime);
                 crouton.show();
             }
         } else {
@@ -688,11 +740,13 @@ public class ViewUtil {
                                 Bundle bundle = new Bundle();
                                 Message message = Message.obtain();
                                 bundle.putString("result", result.getResponseText());
+                                bundle.putInt("code", 200);
                                 message.setData(bundle);
                                 message.what = what;
                                 handler.sendMessage(message);
                             } else {
                                 bundle.putString("result", result.getResponseText());
+                                bundle.putInt("code", 200);
                                 message.setData(bundle);
                                 message.what = what;
                                 handler.sendMessage(message);
@@ -718,6 +772,7 @@ public class ViewUtil {
                             Bundle bundle = new Bundle();
                             Message message = new Message();
                             bundle.putString("result", exception);
+                            bundle.putInt("code", result.getStatusCode());
                             message.setData(bundle);
                             message.what = Constants.APP_SOCKETIMEOUTEXCEPTION;
                             handler.sendMessage(message);
@@ -726,6 +781,7 @@ public class ViewUtil {
                         Bundle bundle = new Bundle();
                         Message message = new Message();
                         bundle.putString("result", "服务器异常!");
+                        bundle.putInt("code", 0);
                         message.setData(bundle);
                         message.what = Constants.APP_SOCKETIMEOUTEXCEPTION;
                         handler.sendMessage(message);
@@ -734,6 +790,7 @@ public class ViewUtil {
                     Bundle bundle = new Bundle();
                     Message message = new Message();
                     bundle.putString("result", "网络未连接!");
+                    bundle.putInt("code", -1);
                     message.setData(bundle);
                     message.what = Constants.APP_SOCKETIMEOUTEXCEPTION;
                     handler.sendMessage(message);

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

@@ -15,9 +15,10 @@ import java.util.Map;
 import static com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ct;
 
 /**
- * 多数用到了code  抽取出来使用
+ * 因为没有处理好内存,该类会引起内存泄露
  * Created by gongpm on 2016/8/5.
  */
+@Deprecated
 public class CodeUtil {
     private static CodeUtil instance = null;//多次使用,转为静态
     private static OnCodeLinstener linstener;

+ 128 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonInterfaceUtil.java

@@ -0,0 +1,128 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+import android.os.Handler;
+import android.os.Message;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.AppConfig;
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.view.crouton.Crouton;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import static com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.ct;
+
+/**
+ * 多用接口
+ * Created by Bitliker on 2016/12/2.
+ */
+public class CommonInterfaceUtil {
+    private final int CODE_WHAT = 0x11;//获取code
+    private final int ID_WHAT = 0x12;//获取id
+    private final int OUT_SET_WHAT = 0x13;//获取
+    private final int ADD_OUT_SET_WHAT = 0x14;//外勤设置
+    private OnResultListener onResultListener;
+
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            try {
+                String message = msg.getData().getString("result");
+                int status = msg.getData().getInt("code");
+                JsonValidator validator = new JsonValidator();
+                boolean isJSON = StringUtils.isEmpty(message) ? false : validator.validate(message);
+                if (onResultListener == null || isJSON) return;
+                JSONObject json = JSON.parseObject(message);
+                switch (msg.what) {
+                    case CODE_WHAT:
+                        String code = json.getString("code");
+                        onResultListener.result(status, code);
+                        break;
+                    case ID_WHAT:
+                        if (json.containsKey("success") && json.getBoolean("success")) {
+                            int id = JSON.parseObject(message).getInteger("id");
+                            onResultListener.result(status, String.valueOf(id));
+                        } else {
+                            Crouton.makeText(ct, "获取id错误");
+                        }
+                        break;
+                    case OUT_SET_WHAT:
+                        if (json.containsKey("success") && json.getBoolean("success") && json.containsKey("result")) {
+                            JSONArray array = json.getJSONArray("result");
+                            if (ListUtils.isEmpty(array)) return;
+                            JSONObject object = array.getJSONObject(0);
+                            int distance = object.getIntValue("MO_DISTANCE");
+                            int time = object.getIntValue("MO_TIME");
+                            boolean isAuto = object.getIntValue("MO_AUTOSIGN") > 0 ? true : false;
+                            //获取到外勤设置   保存下来
+                            CommonUtil.setSharedPreferences(ct, AppConfig.ALARM_MISSION_DISTANCE, distance);
+                            CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION_TIME, time);
+                            CommonUtil.setSharedPreferences(ct, AppConfig.AUTO_MISSION, isAuto);
+                        }
+
+                        break;
+                }
+            } catch (NullPointerException e) {
+
+            } catch (Exception e) {
+
+            }
+        }
+    };
+
+    //获取服务端表的编号
+    public void getCodeByNet(String titleName, OnResultListener onResultListener) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", titleName);
+        param.put("type", 2);
+        net(onResultListener, "common/getCodeString.action", param, CODE_WHAT);
+    }
+
+    //获取服务端表的id
+    public void getIdByNet(String sql, OnResultListener onResultListener) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("seq", sql);
+        net(onResultListener, "common/getId.action", param, ID_WHAT);
+    }
+
+
+    //获取外勤设置
+    public void getOutSetInfo(OnResultListener onResultListener) {
+        net(onResultListener, "mobile/getOutSetInfo.action", new HashMap<String, Object>(), OUT_SET_WHAT);
+    }
+
+    //获取服务端表的id
+    public void addOutSet(int distance, int time, boolean isAuto, OnResultListener onResultListener) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("caller", "OUTSET");
+        Map<String, Object> map = new HashMap<>();
+        map.put("mo_distance", distance);//距离
+        map.put("mo_time", time);//预留时间
+        map.put("mo_autosign", isAuto ? 1 : 0);//是否自动外勤
+        param.put("formStore", StringUtils.mapToJson(map));
+        net(onResultListener, "mobile/addOutSet.action", param, ADD_OUT_SET_WHAT);
+    }
+
+    private void net(OnResultListener onResultListener, String action, Map<String, Object> param, int what) {
+        this.onResultListener = onResultListener;
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId"));
+        String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + action;
+        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, handler, headers, what, null, null, "post");
+    }
+
+    public interface OnResultListener {
+        /**
+         * 接口返回信息
+         *
+         * @param code   状态码
+         * @param result 返回结果
+         */
+        void result(int code, String result);
+    }
+
+}

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

@@ -286,12 +286,10 @@ public class SigninUtil {
                 continue;
             //符合该班次打卡时间
             //上班打过卡
-            if (time.compareTo(e.getWorkTime()) < 0) {
-                //TODO 符合上班打卡
+            if (time.compareTo(e.getWorkTime()) <= 0) {
                 e.setWorkSignin(time);
             }
-            if (time.compareTo(e.getOffTime()) > 0) {
-                //TODO 符合下班打卡
+            if (time.compareTo(e.getOffTime()) >= 0) {
                 e.setOffSignin(time);
             }
             boolean saveOk = dao.updateByBrean(e);

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

@@ -57,7 +57,7 @@ public class StringUtils {
         }
     }
     //Bitliker 从字符串中取出第一个数字
-    public static int getIntByString(String chche,int defValue) {
+    public static int getIntByString(String chche,int defValue)  {
         if (StringUtils.isEmpty(chche)) return defValue;
         Pattern p = Pattern.compile("(\\d+)");
         Matcher m = p.matcher(chche);

+ 86 - 31
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/alarm/AlarmService.java

@@ -1,11 +1,13 @@
 package com.xzjmyk.pm.activity.ui.erp.util.alarm;
 
+import android.annotation.TargetApi;
 import android.app.Service;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
@@ -22,6 +24,7 @@ import com.xzjmyk.pm.activity.ui.erp.activity.oa.MissionPlanActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SigninActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.MissionPlanEntity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CommonInterfaceUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.util.JsonValidator;
 import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
@@ -34,19 +37,29 @@ import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferencesBoolean;
+
 
 public class AlarmService extends Service {
+    public static final String UPDATA_MISSION_PLAN = "UPDATA_MISSION_PLAN";//更新外勤计划
+    public static final String UPDATA_MISSION_SET = "UPDATA_MISSION_SET";//更新外勤设置
     public static long intervalTime = 1 * 60 * 1000;//轮询时间间隔,初始化1分钟,外勤时候为6分钟
-    public static int aralmType = 1;//提醒类型   1.内勤  2.外勤
+
+    public static int aralmType = 1;//提醒类型   1.内勤  2.外勤  0.无内勤,无外勤
+
     private AlarmTask alarmTask;
-    private AlarmManage iManage;
-    private NotificationManage manage;
+    private AlarmManage alarmManage;
+    private NotificationManage notificationManage;
+    private CommonInterfaceUtil commonInterfaceUtil;
 
     private BroadcastReceiver receiver = new BroadcastReceiver() {
         @Override
         public void onReceive(Context context, Intent intent) {
-            if (intent != null) {
+            if (intent == null) return;
+            if (intent.getAction().equals(UPDATA_MISSION_PLAN))//更新外勤计划
                 loadIsMission();
+            else if (intent.getAction().equals(UPDATA_MISSION_SET)) {//获取外勤设置
+                loadMissionSet();
             }
         }
     };
@@ -66,6 +79,7 @@ public class AlarmService extends Service {
                     if (object.containsKey("isOffline")) {
                         try {
                             int isOffline = Integer.valueOf(object.getString("isOffline"));
+                            //当判断到外勤计划为有值  1.外勤计划有  2.自动外勤
                             aralmType = isOffline > 0 ? 2 : 1;
                             if (aralmType == 2) {
                                 intervalTime = 6 * 60000;
@@ -104,25 +118,55 @@ public class AlarmService extends Service {
         return null;
     }
 
-
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {//每次启动服务
-        IntentFilter filter = new IntentFilter();
-        filter.addAction("com.xzjmyk.pm.activity.ui.erp.util.alarm");
-        registerReceiver(receiver, filter);
-        if (iManage == null) iManage = new AlarmManage();
-        if (manage == null) manage = new NotificationManage();
+        initBroadcast();
+        init();
+        return super.onStartCommand(intent, flags, startId);
+    }
+
+
+    //初始化数据
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
+    private void init() {
+        //初始化任务线程
         if (alarmTask == null) {
             alarmTask = new AlarmTask();
-            alarmTask.execute();
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
+                alarmTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+            else
+                alarmTask.execute();
         } else {
             if (alarmTask.isCancelled()) {
                 alarmTask = new AlarmTask();
-                alarmTask.execute();
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
+                    alarmTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
+                else
+                    alarmTask.execute();
             }
         }
-        loadIsMission();
-        return super.onStartCommand(intent, flags, startId);
+        if (alarmManage == null) alarmManage = new AlarmManage();
+        if (notificationManage == null) notificationManage = new NotificationManage();
+        if (commonInterfaceUtil == null) commonInterfaceUtil = new CommonInterfaceUtil();
+        loadMissionSet();
+        commonInterfaceUtil.getOutSetInfo(new CommonInterfaceUtil.OnResultListener() {
+            @Override
+            public void result(int code, String result) {
+                if (code == 200) {
+                    boolean isAuto = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_MISSION, false);
+                    if (isAuto)
+                        loadIsMission();
+                }
+            }
+        });
+    }
+
+    //注册广播
+    private void initBroadcast() {
+        IntentFilter filter = new IntentFilter();
+        filter.addAction(UPDATA_MISSION_PLAN);
+        filter.addAction(UPDATA_MISSION_SET);
+        registerReceiver(receiver, filter);
     }
 
     @Override
@@ -153,7 +197,7 @@ public class AlarmService extends Service {
                     if (aralmType == 1) {//内勤签到
                         Log.i("gongpengming", "内勤签到计算");
                         //1.自动打卡  2.提醒上班   3.提醒下班
-                        int i = getiManage().reckonNextAlarm();//获取签到还是提醒,当为-1时候为错误
+                        int i = getAlarmManage().reckonNextAlarm();//获取签到还是提醒,当为-1时候为错误
                         Log.i("gongpengming", "自动打卡i==" + i);
                         if (i != -1 || i != 0) {
                             map.clear();
@@ -163,15 +207,15 @@ public class AlarmService extends Service {
                     } else if (aralmType == 2) {//外勤签到
                         Log.i("gongpengming", "进来外勤签到计算");
                         //判断是否自动外勤
-                        boolean isAuto = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_MISSION, false);
+                        boolean isAuto = getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.AUTO_MISSION, false);
                         //判断是否外勤提醒
-                        boolean isAlarm = CommonUtil.getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.ALARM_MISSION, false);
+                        boolean isAlarm = getSharedPreferencesBoolean(MyApplication.getInstance(), AppConfig.ALARM_MISSION, false);
                         List<MissionPlanEntity> plans = MissionDao.getInstance().queryByEnCode();
                         if (ListUtils.isEmpty(plans)) Log.i("gongpengming", "plans是空");
                         MissionPlanEntity mission = null;
                         if (isAuto) {
                             Log.i("gongpengming", "自动外勤");
-                            mission = getiManage().reckonMission(plans);
+                            mission = getAlarmManage().reckonMission(plans);
                             if (mission != null) {//如果返回不为空,打卡
                                 Log.i("gongpengming", "符合打卡");
                                 map.clear();
@@ -179,7 +223,7 @@ public class AlarmService extends Service {
                                 map.put("data", mission);
                                 publishProgress(map);
                             } else if (isAlarm) {//如果为空,且提醒
-                                mission = getiManage().alarmMission(plans);
+                                mission = getAlarmManage().alarmMission(plans);
                                 if (mission != null) {
                                     Log.i("gongpengming", "符合提醒");
                                     map.clear();
@@ -189,7 +233,7 @@ public class AlarmService extends Service {
                                 }
                             }
                         } else if (isAlarm) {//且提醒
-                            mission = getiManage().alarmMission(plans);
+                            mission = getAlarmManage().alarmMission(plans);
                             if (mission != null) {
                                 map.clear();
                                 map.put("type", 5);
@@ -221,10 +265,10 @@ public class AlarmService extends Service {
                         util.autoSignin();
                         break;
                     case 2://上班提醒
-                        getManage().sendNotification(MyApplication.getInstance(), "上班时间快到了,请及时打卡", SigninActivity.class);
+                        getNotificationManage().sendNotification(MyApplication.getInstance(), "上班时间快到了,请及时打卡", SigninActivity.class);
                         break;
                     case 3://下班提醒
-                        getManage().sendNotification(MyApplication.getInstance(), "下班时间已到了,请及时打卡", SigninActivity.class);
+                        getNotificationManage().sendNotification(MyApplication.getInstance(), "下班时间已到了,请及时打卡", SigninActivity.class);
                         break;
                     case 4://自动外勤
                         MissionPlanEntity bean = (MissionPlanEntity) map.get("data");
@@ -238,7 +282,7 @@ public class AlarmService extends Service {
                         boolean isOk = updateDB(bean1.getId(), 3);
                         if (isOk)
                             Log.i("gongpengming", "更新完成" + bean1.getCompanyName());
-                        getManage().sendNotification(MyApplication.getInstance(),
+                        getNotificationManage().sendNotification(MyApplication.getInstance(),
                                 "您的外勤" + bean1.getCompanyName() + "已到达时间", MissionPlanActivity.class);
                         break;
                     default:
@@ -250,6 +294,10 @@ public class AlarmService extends Service {
         }
     }
 
+    //获取外勤设置
+    private void loadMissionSet() {
+        getCommonInterfaceUtil().getOutSetInfo(null);
+    }
 
     //获取是否有外勤计划
     private void loadIsMission() {
@@ -308,15 +356,22 @@ public class AlarmService extends Service {
     }
 
 
-    private NotificationManage getManage() {
-        if (manage == null)
-            manage = new NotificationManage();
-        return manage;
+    //防止空值
+    private NotificationManage getNotificationManage() {
+        if (notificationManage == null)
+            notificationManage = new NotificationManage();
+        return notificationManage;
+    }
+
+    private CommonInterfaceUtil getCommonInterfaceUtil() {
+        if (commonInterfaceUtil == null)
+            commonInterfaceUtil = new CommonInterfaceUtil();
+        return commonInterfaceUtil;
     }
 
-    public AlarmManage getiManage() {
-        if (iManage == null)
-            iManage = new AlarmManage();
-        return iManage;
+    private AlarmManage getAlarmManage() {
+        if (alarmManage == null)
+            alarmManage = new AlarmManage();
+        return alarmManage;
     }
 }

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

@@ -1,13 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.util.alarm;
-
-/**
- * Created by Bitliker on 2016/11/18.
- */
-
-public class AlarmUtil {
-
-
-
-
-
-}

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

@@ -11,6 +11,7 @@ import android.support.v7.app.NotificationCompat;
 
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 
 /**
  * 通知工具类
@@ -29,6 +30,10 @@ public class NotificationManage {
      * @param clazz   点击跳转的界面
      */
     private void sendNotification(Context context, int icon, String title, String content, Class<? extends Activity> clazz) {
+        sendNotification(context, icon, title, null, content, clazz);
+    }
+
+    private void sendNotification(Context context, int icon, String title, String group, 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);
@@ -36,6 +41,8 @@ public class NotificationManage {
         builder.setAutoCancel(true);
         builder.setContentTitle(title);
         builder.setContentText(content);
+        if (!StringUtils.isEmpty(group))
+            builder.setGroup(group);
         Intent intent = new Intent(context, clazz);
         PendingIntent pendingIntent = PendingIntent.getActivity(context.getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
         builder.setContentIntent(pendingIntent);
@@ -45,6 +52,7 @@ public class NotificationManage {
     public void sendNotification(Context context, Class<? extends Activity> clazz) {
         sendNotification(context, R.drawable.uuu, "提醒", "提醒", clazz);
     }
+
     public void sendNotification(Context context, int action, Class<? extends Activity> clazz) {
         SharedPreferences sharePrefer = MyApplication.getInstance().getSharedPreferences("SIGNIN", Context.MODE_APPEND);
         long oldTime = sharePrefer.getLong("SIGNIN_TIME", -1);
@@ -55,6 +63,7 @@ public class NotificationManage {
             //无效
         }
     }
+
     public void sendNotification(Context context, String action, Class<? extends Activity> clazz) {
         SharedPreferences sharePrefer = MyApplication.getInstance().getSharedPreferences("SIGNIN", Context.MODE_APPEND);
         long oldTime = sharePrefer.getLong("SIGNIN_TIME", -1);

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

@@ -0,0 +1,133 @@
+package com.xzjmyk.pm.activity.ui.erp.util.alarm;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.xzjmyk.pm.activity.MyApplication;
+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.JsonValidator;
+import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
+import com.xzjmyk.pm.activity.util.MacAndIDUtil;
+import com.xzjmyk.pm.activity.util.TimeUtils;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import static com.xzjmyk.pm.activity.ui.erp.util.CommonUtil.getSharedPreferences;
+
+/**
+ * 针对打卡签到的数据存储和页面显示转接口
+ * Created by Bitliker on 2016/11/18.
+ */
+public class SigninPresenter {
+    private final int WORK_DATA = 0x11;
+    private final int WORK_LOG = 0x12;
+    private final int MAC_VAL = 0x13;
+    private long dayLong;
+    private Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            try {
+                String message = msg.getData().getString("result");
+                JsonValidator validator = new JsonValidator();
+                boolean isJSON = StringUtils.isEmpty(message) ? false : validator.validate(message);
+                if (!isJSON && msg.what == Constants.APP_SOCKETIMEOUTEXCEPTION) {
+                    //500错误
+                    handlerError(message);
+                    return;
+                }
+                JSONObject object = JSON.parseObject(message);
+                switch (msg.what) {
+                    case WORK_DATA:
+                        handlerWork(object);
+                        break;
+                    case WORK_LOG:
+                        break;
+                    default:
+                        break;
+                }
+            } catch (Exception e) {
+
+            }
+        }
+    };
+
+    public SigninPresenter(long dayLong) {
+        this.dayLong = dayLong;
+    }
+
+    public SigninPresenter() {
+        this.dayLong = System.currentTimeMillis();
+    }
+
+
+
+
+
+    //处理班次信息
+    private void handlerWork(JSONObject object) {
+
+    }
+
+    //处理错误信息   500
+    private void handlerError(String message) {
+        if (StringUtils.isEmpty(message)) return;
+
+    }
+
+
+    //获取 1.获取班次  2.获取打卡列表
+    public void loadSigninAndLogs() {
+
+    }
+
+    //判断mac地址
+    private void validatorMac() {
+        //获取网络数据
+        MacAndIDUtil util = new MacAndIDUtil();
+        Context ct = MyApplication.getInstance();
+        Map<String, Object> param = new HashMap<>();
+        param.put("macAddress", util.getMac(ct));
+        param.put("emcode", getSharedPreferences(ct, "erp_username"));
+        net("mobile/addMobileMac.action", param, MAC_VAL);
+    }
+
+    //获取打卡班次
+    private void loadWorkData(long day) {
+        Map<String, Object> param = new HashMap<>();
+        param.put("date", TimeUtils.int_long_2_str(day));
+        net("mobile/getWorkDate.action", param, WORK_DATA);
+    }
+
+    //获取打卡记录
+    private void loadLog(long day) {
+        String date = TimeUtils.s_long_2_str(day);
+        //获取网络数据
+        Map<String, Object> param = new HashMap<>();
+        String code = getSharedPreferences(MyApplication.getInstance(), "erp_username");
+        param.put("currentMaster", getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        param.put("page", 1);
+        param.put("pageSize", 100);
+        param.put("condition", "cl_emcode='" + code + "' and to_char(cl_time,'yyyy-MM-dd')='" + date + "'");
+        param.put("caller", "CardLog");
+        param.put("emcode", code);
+        param.put("master", getSharedPreferences(MyApplication.getInstance(), "erp_master"));
+        net("mobile/oa/workdata.action", param, WORK_LOG);
+    }
+
+
+    private void net(String action, Map<String, Object> param, int what) {
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId"));
+        String url = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_baseurl") + action;
+        ViewUtil.httpSendRequest(MyApplication.getInstance(), url, param, handler, headers, what, null, null, "post");
+    }
+
+
+}

+ 7 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/me/SettingActivity.java

@@ -1,11 +1,13 @@
 package com.xzjmyk.pm.activity.ui.me;
 
+import android.annotation.TargetApi;
 import android.app.AlertDialog;
 import android.app.ProgressDialog;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.net.Uri;
 import android.os.AsyncTask;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.util.Log;
@@ -216,13 +218,17 @@ public class SettingActivity extends ActionBackActivity implements View.OnClickL
                     }
                 }).create().show();
     }
+    @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     private void clearCache() {
         String filePath = MyApplication.getInstance().mAppDir;
         //删除文件
         VideoFileDao.getInstance().deleteAllVideoFile(
                 VideoFileDao.getInstance().getVideoFiles(
                         MyApplication.getInstance().mLoginUser.getUserId()));
-        new ClearCacheAsyncTaska(filePath).execute(true);
+        if (Build.VERSION.SDK_INT >= 11)
+            new ClearCacheAsyncTaska(filePath).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,true);
+        else
+            new ClearCacheAsyncTaska(filePath).execute(true);
     }
 
     private class ClearCacheAsyncTaska extends AsyncTask<Boolean, String, Integer> {

+ 1 - 0
WeiChat/src/main/res/layout/activity_mission_set.xml

@@ -8,6 +8,7 @@
 
     <RelativeLayout
         android:layout_width="match_parent"
+        android:id="@+id/auto_rl"
         android:layout_height="@dimen/item_height"
         android:padding="10dp">
 

+ 2 - 1
WeiChat/src/main/res/layout/fragment_me.xml

@@ -493,8 +493,9 @@
             android:id="@+id/test_rl"
             style="@style/IMTbleLine_UP_Me"
             android:layout_marginTop="7dp"
+            android:visibility="gone"
             android:background="@drawable/selector_me_menu_item_bg"
-            android:visibility="gone">
+            >
 
             <TextView
                 android:layout_width="wrap_content"