Selaa lähdekoodia

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

Arison 9 vuotta sitten
vanhempi
commit
7011850a31
26 muutettua tiedostoa jossa 482 lisäystä ja 303 poistoa
  1. 14 16
      WeiChat/src/main/AndroidManifest.xml
  2. 10 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OutSigninBean.java
  3. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SigninBean.java
  4. 9 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  5. 5 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java
  6. 8 31
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AddMeetingActivity.java
  7. 0 6
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/AlarmaActivity.java
  8. 3 9
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationMapActivity.java
  9. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MeetingActivity.java
  10. 103 33
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  11. 9 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutSigninOKActivity.java
  12. 32 24
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OutofficeSetActivity.java
  13. 16 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/WorkLogsActivity.java
  14. 55 46
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/OutofficeFragment.java
  15. 99 100
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/SigninFragment.java
  16. 1 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorksFragment.java
  17. 78 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CodeUtil.java
  18. 0 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/CommonUtil.java
  19. 7 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/BaiduMapUtil.java
  20. 7 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java
  21. 1 0
      WeiChat/src/main/res/layout/activity_oa.xml
  22. 2 1
      WeiChat/src/main/res/layout/activity_outoffice.xml
  23. 5 2
      WeiChat/src/main/res/layout/activity_outoffice_set.xml
  24. 2 1
      WeiChat/src/main/res/layout/activity_signin.xml
  25. 2 5
      WeiChat/src/main/res/layout/fragment_outoffice.xml
  26. 5 10
      WeiChat/src/main/res/layout/fragment_signin.xml

+ 14 - 16
WeiChat/src/main/AndroidManifest.xml

@@ -82,7 +82,10 @@
         <activity
             android:name=".ui.SplashActivity"
             android:theme="@style/SplashTheme">
-
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.LAUNCHER" />
+            </intent-filter>
         </activity>
         <!-- 登录模块 -->
         <activity android:name=".ui.account.LoginActivity" />
@@ -139,12 +142,7 @@
             android:label="@string/app_name"
             android:launchMode="singleTask"
             android:screenOrientation="portrait"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing" >
-            <intent-filter>
-                <action android:name="android.intent.action.MAIN" />
-                <category android:name="android.intent.category.LAUNCHER" />
-            </intent-filter>
-        </activity>
+            android:windowSoftInputMode="stateUnspecified|adjustNothing"></activity>
         <!-- 消息模块 -->
         <activity android:name=".ui.message.ChatActivity" />
         <activity android:name=".ui.message.NewFriendActivity" />
@@ -425,9 +423,12 @@
         <activity
             android:name=".ui.erp.activity.oa.OutofficeActivity"
             android:label="外勤签到" />
-        <activity android:name=".ui.erp.activity.oa.MeetDetailsActivity" />
-        <activity android:name=".ui.erp.activity.oa.OARegisterActivity" />
-        android:launchMode="singleTask" />
+        <activity
+            android:name=".ui.erp.activity.oa.MeetDetailsActivity"
+            android:label="会议详情" />
+        <activity
+            android:name=".ui.erp.activity.oa.OARegisterActivity"
+            android:label="查看签到情况" />
         <activity android:name=".ui.erp.activity.crm.CustomerAddActivity" />
         <activity android:name=".ui.erp.activity.crm.CustomerDetailActivity" />
         <activity android:name=".ui.erp.activity.crm.CustomerListActivity" />
@@ -449,8 +450,9 @@
         <activity android:name=".ui.erp.activity.oa.AddNextSigninActivity" />
         <activity android:name=".ui.erp.activity.oa.SigninTimeSetActivity" />
         <activity android:name=".ui.erp.activity.oa.SuperSetActivity" />
-        <activity android:name=".ui.erp.activity.oa.AddLogActivity"
-            android:label="新增日志"/>
+        <activity
+            android:name=".ui.erp.activity.oa.AddLogActivity"
+            android:label="新增日志" />
         <activity android:name=".ui.circle.view.SelectLocationActivity" />
         <activity
             android:name=".ui.erp.activity.oa.SigninTimeSetActivity"
@@ -481,10 +483,6 @@
             android:name=".ui.erp.activity.oa.OutSigninOKActivity"
             android:label="签到" />
         <activity android:name=".ui.erp.activity.crm.ContactManAddActivity"></activity>
-        <activity android:name=".ui.erp.activity.oa.TestActivity" />
-        <activity
-            android:name=".ui.erp.activity.oa.OutSigninOKActivity"
-            android:label="签到" />
         <activity android:name=".ui.erp.activity.oa.SaveMeetActivity" />
         <activity
             android:name=".ui.erp.activity.oa.MeetSelectActivity"

+ 10 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OutSigninBean.java

@@ -4,14 +4,23 @@ package com.xzjmyk.pm.activity.bean.oa;
  * Created by gongpm on 2016/7/22.
  */
 public class OutSigninBean {
+    private String mo_code;
     private String mo_signtime;
     private String mo_address;
     private String mo_mancode;
     private String mo_man;
     private String mo_remark;
-    private int  mo_attachid;
+    private int mo_attachid;
     private String mo_company;
 
+    public String getMo_code() {
+        return mo_code;
+    }
+
+    public void setMo_code(String mo_code) {
+        this.mo_code = mo_code;
+    }
+
     public String getMo_company() {
         return mo_company;
     }

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/SigninBean.java

@@ -4,6 +4,7 @@ package com.xzjmyk.pm.activity.bean.oa;
  * Created by gongpm on 2016/7/14.
  */
 public class SigninBean {
+    private String cl_code;//
     private String cl_time;  //打卡时间
     private String cl_address;//打卡地址
     private String cl_phone;//打卡手机号
@@ -12,6 +13,14 @@ public class SigninBean {
     private String cl_location;//考勤地址
     private int cl_distance;//考勤距离
 
+    public String getCl_code() {
+        return cl_code;
+    }
+
+    public void setCl_code(String cl_code) {
+        this.cl_code = cl_code;
+    }
+
     public String getCl_time() {
         return cl_time;
     }

+ 9 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java

@@ -159,6 +159,10 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
             if (mBusinessCircleFragment != null) {
                 mBusinessCircleFragment.onResult();
             }
+        } else if (requestCode == 0x11) {
+            if (resultCode == 0x12) {
+                mTabRadioGroup.check(R.id.main_tab_five);
+            }
         }
     }
 
@@ -221,6 +225,10 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
     private AppConfig config;
     private String mLoginUserId;
 
+    public void chea() {
+
+    }
+
     public void changeRedZone(boolean b) {
         if (b) {
             unWorkReadTV.setVisibility(View.VISIBLE);
@@ -730,6 +738,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
      * @return
      */
     public BusinessCircleFragment getBusinessCircleFragment() {
+
         FragmentManager sfmanager = getSupportFragmentManager();
         return (BusinessCircleFragment) sfmanager.findFragmentByTag(TAG_BusinessCircle);
     }

+ 5 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/account/LoginActivity.java

@@ -93,7 +93,11 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener
     public void onClick(View v) {
         switch (v.getId()) {
             case R.id.login_btn:// 登陆
-                login();
+                //TODO 登陆修改
+//                login();
+                final String phoneNumber = "18565605807";
+                final String password = "111111";
+                login_manage(phoneNumber, password);
                 break;
         }
     }

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

@@ -37,6 +37,7 @@ import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.calendar.cons.DPMode;
 import com.xzjmyk.pm.activity.ui.calendar.views.TaskDatePicker;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 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.FlexJsonUtil;
@@ -84,14 +85,13 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
     private String baseUrl;
     private int request = 0x13;
     public static int resultCode = 0x14;
-    private final int codeWhat = 0x15;
 
     ArrayList<MeetUserEntity> entities = null;//成员
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             String message = (String) msg.getData().get("result");
-            Log.i("gongpengming", message);
+            progressDialog.dismiss();
             switch (msg.what) {
                 case whatSignin:
                     //TODO 创建会议成功  开始创建群组
@@ -109,18 +109,6 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 case whatAdd:
                     Log.i("gongpengming", "msg==whatAdd");
                     break;
-                case codeWhat:
-                    try {
-                        JSONObject json = new JSONObject(message);
-                        if (json.isNull("success") || !json.getBoolean("success") || json.isNull("code")) {
-                            ToastUtil.showToast(ct, "业务繁忙,请稍后重试");
-                        } else {
-                            signinAble(json.getString("code"));
-                        }
-                    } catch (JSONException e) {
-                        e.printStackTrace();
-                    }
-                    break;
                 case Constants.HTTP_SUCCESS_INIT:
                     break;
                 case Constants.APP_SOCKETIMEOUTEXCEPTION:
@@ -232,8 +220,13 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
                 showDialog(false);
                 break;
             case R.id.bt_save:
-                getCodeByNet();
                 progressDialog.show();
+                CodeUtil.getInstance().getCode(ct, "Meetingroomapply", new CodeUtil.OnCodeLinstener() {
+                    @Override
+                    public void callBack(String code) {
+                        signinAble(code);
+                    }
+                });
                 break;
             case R.id.users_rl://选择参会人员
                 Intent intent = new Intent(ct, MeetSelectActivity.class);
@@ -400,22 +393,6 @@ public class AddMeetingActivity extends BaseActivity implements View.OnClickList
         dialog.getWindow().setGravity(Gravity.CENTER);
     }
 
-
-    private void getCodeByNet() {
-        if (baseUrl == null) {
-            baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
-        }
-        String url = baseUrl + "common/getCodeString.action";
-        final Map<String, Object> param = new HashMap<>();
-        String caller = "Meetingroomapply";
-        param.put("caller", caller);
-        param.put("type", 2);
-        param.put("sessionId", CommonUtil.getSharedPreferences(ct, "sessionId"));
-        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
-        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
-        ViewUtil.httpSendRequest(ct, url, param, handler, headers, codeWhat, null, null, "post");
-    }
-
     //提交表单
     private void doSignin(String gruop, String ids, String code) {
         if (baseUrl == null) {

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

@@ -41,12 +41,6 @@ public class AlarmaActivity extends BaseActivity implements View.OnClickListener
     public static String KEY_ALAR_TIME = "KEY_ALAR_TIME";
     public static String KEY_UALAR_TIME = "KEY_UALAR_TIME";
 
-
-    public static String KEY_ALAR_MM = "KEY_ALAR_MM";
-    public static String KEY_UALAR_HH = "KEY_UALAR_HH";
-    public static String KEY_UALAR_MM = "KEY_UALAR_MM";
-
-
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);

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

@@ -14,14 +14,7 @@ import android.widget.BaseAdapter;
 import android.widget.CheckBox;
 import android.widget.TextView;
 
-import com.baidu.mapapi.map.BitmapDescriptor;
-import com.baidu.mapapi.map.BitmapDescriptorFactory;
-import com.baidu.mapapi.map.MapStatus;
-import com.baidu.mapapi.map.MapStatusUpdate;
-import com.baidu.mapapi.map.MapStatusUpdateFactory;
 import com.baidu.mapapi.map.MapView;
-import com.baidu.mapapi.map.MarkerOptions;
-import com.baidu.mapapi.map.OverlayOptions;
 import com.baidu.mapapi.model.LatLng;
 import com.baidu.mapapi.search.core.PoiInfo;
 import com.baidu.mapapi.search.poi.OnGetPoiSearchResultListener;
@@ -52,6 +45,7 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
     private int selectItem = 0;
     private PoiInfo myPoInfo;
     private int what = 0x12;
+    private int location;
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
@@ -67,10 +61,10 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_map_location);
-
+        location = getIntent().getIntExtra("data", 500);
         init();
         initView();
-        BaiduMapUtil.getInstence().getNearInfo(0, 0, point, mPoiSearch, handler, what);
+        BaiduMapUtil.getInstence().getNearInfo(location, 0, point, mPoiSearch, handler, what);
     }
 
     private void initView() {

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

@@ -153,7 +153,6 @@ public class MeetingActivity extends BaseActivity {
         param.put("pageSize", 10);
         param.put("condition", condition);
         param.put("sessionId", sessionId);
-        Log.i("gongpengming", url + "?emcode=" + emcode + "&caller=" + caller + "&sessionId=" + sessionId);
         LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
         headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, whatLoad, null, null, "post");

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

@@ -38,18 +38,21 @@ import com.xzjmyk.pm.activity.view.MyListView;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 public class OAActivity extends BaseActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {
     private static final int whatVisit = 0x10,//拜访报告接口
             whatTask = 0x11,    //任务接口
             whatSchedule = 0x12,//日程接口
             whatTaskNum = 0x13;//获取选中日期完成任务情况接口
-    private static String[] stateItems = {"状态", "确认中", "进行中", "已完成"};
+    private static String[] stateItems = {"确认中", "进行中", "已完成"};
     private static String[] typeItems = {"类型", "任务", "日程", "拜访"};
     private static String baseUrl;
 
@@ -74,22 +77,19 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
     @ViewInject(R.id.date_tv)
     private TextView date_tv;  //当前月份
 
-    private PopupMenu poAddMenu;
     private int typeWhat = -1;
-
+    private Set<Integer> set;
     private String date;
-    private List<Map<String, Object>> mapList;
-    private List<Map<String, Object>> taskList;
-    private List<Map<String, Object>> visitList;
-    private List<Map<String, Object>> scheduleList;
-    private MyListViewAdapter adapter;
+    private List<Map<String, Object>> taskList;//任务列表
+    private List<Map<String, Object>> visitList;//拜访列表
+    private List<Map<String, Object>> scheduleList;//日程列表
+    private MyListViewAdapter adapter;   //
 
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             progressDialog.dismiss();
             String message = (String) msg.getData().get("result");
-            typeWhat = msg.what;
             switch (msg.what) {
                 case whatVisit:
                     try {
@@ -98,7 +98,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                             ToastUtil.showToast(ct, "数据返回错误");
                             return;
                         }
-                        mapList = JsonUtils.parseListKeyMaps("visitplan", message);
+                        visitList = JsonUtils.parseListKeyMaps("visitplan", message);
+                        addTaskDate("vp_status", visitList);
                         updateUI();
                     } catch (JSONException e) {
                         e.printStackTrace();
@@ -111,7 +112,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                             ToastUtil.showToast(ct, "数据返回错误");
                             return;
                         }
-                        mapList = JsonUtils.parseListKeyMaps("taskMsg", message);
+                        taskList = JsonUtils.parseListKeyMaps("taskMsg", message);
+                        addTaskDate("status", taskList);
                         updateUI();
                     } catch (JSONException e) {
                         e.printStackTrace();
@@ -125,7 +127,8 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                             ToastUtil.showToast(ct, "数据返回错误");
                             return;
                         }
-                        mapList = JsonUtils.parseListKeyMaps("scheduleMsg", message);
+                        scheduleList = JsonUtils.parseListKeyMaps("scheduleMsg", message);
+                        addTaskDate("status", scheduleList);
                         updateUI();
                     } catch (JSONException e) {
                         e.printStackTrace();
@@ -146,12 +149,30 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                     } catch (JSONException e) {
                         e.printStackTrace();
                     }
-
                     break;
             }
         }
     };
 
+    private void addTaskDate(String status, List<Map<String, Object>> list) {
+        if (set == null)
+            set = new HashSet();
+        for (Map<String, Object> en : list) {
+            if (en.get(status) == null || "null".equals(en.get(status) + "") || "FINISHED".equals(en.get(status).toString().trim())) {
+                if (en.get("enddate") != null && !"null".equals(en.get("enddate"))) {
+                    String timeStr = (String) en.get("enddate");
+                    long time = TimeUtils.f_str_2_long(timeStr);
+                    Calendar c = Calendar.getInstance();
+                    c.setTimeInMillis(time);
+                    set.add(c.get(Calendar.DAY_OF_MONTH));
+                }
+            }
+        }
+        if (set != null && set.size() > 0) {
+            picker.setTaskDay(set);
+        }
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -159,6 +180,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
         ViewUtils.inject(this);
         initView();
     }
+
     private void initView() {
         baseUrl = CommonUtil.getSharedPreferences(this, "erp_baseurl");
         rootScrollView.requestDisallowInterceptTouchEvent(false);
@@ -174,7 +196,17 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
     }
 
     private void initData() {
-//        loadNetData()
+        //先下拉三个列表数据
+        loadNetData(whatTask);
+        loadNetData(whatVisit);
+        loadNetData(whatSchedule);
+    }
+
+    public void loadNetData(String status) {
+        progressDialog.show();
+        String url = baseUrl + "mobile/crm/getVisitPlan.action";
+        String date = TimeUtils.long2str(System.currentTimeMillis(), "yyyyMM");
+        loadNetData(whatTask, url, date, status, 1);
     }
 
     //获取网络数据
@@ -183,7 +215,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
         //获取网络数据
         String url = baseUrl + "mobile/crm/getVisitPlan.action";
         String date = TimeUtils.long2str(System.currentTimeMillis(), "yyyyMM");
-        Log.i("gongpengming", date);
         switch (what) {
             case whatVisit:
                 url = baseUrl + "mobile/crm/getVisitPlan.action";
@@ -199,15 +230,17 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                 date = this.date;
                 break;
         }
-        loadNetData(what, url, date, 1);
+        loadNetData(what, url, date, "1", 1);
     }
 
     //获取网络数据
-    public void loadNetData(int what, String url, String date, int pager) {
+    public void loadNetData(int what, String url, String date, String status, int pager) {
         //获取网络数据
         final Map<String, Object> param = new HashMap<>();
         param.put("emcode", CommonUtil.getSharedPreferences(this, "erp_username"));
         param.put("date", date);
+        if (what == whatTask)
+            param.put("status", status);
         param.put("page", pager);
         param.put("pageSize", 10);
         param.put("sessionId", CommonUtil.getSharedPreferences(this, "sessionId"));
@@ -219,7 +252,23 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
     private void updateUI() {
         if (adapter == null)
             adapter = new MyListViewAdapter();
-        adapter.setData(mapList);
+        List<Map<String, Object>> mapList = null;
+        switch (typeWhat) {
+            case whatSchedule:
+                if (scheduleList != null)
+                    mapList = scheduleList;
+                break;
+            case whatTask:
+                if (taskList != null)
+                    mapList = taskList;
+                break;
+            case whatVisit:
+                if (visitList != null)
+                    mapList = visitList;
+                break;
+        }
+        if (mapList != null)
+            adapter.setData(mapList);
     }
 
     private void updateUI(int i, int completenum, int complrate, int notcomplnum) {
@@ -239,6 +288,7 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
 
     //设置控件点击事件
     private void setListener() {
+        findViewById(R.id.oa_img_people).setOnClickListener(this);
         findViewById(R.id.ll_signin).setOnClickListener(this);
         findViewById(R.id.ll_outside).setOnClickListener(this);
         findViewById(R.id.ll_meeting).setOnClickListener(this);
@@ -267,30 +317,48 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
     public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
         switch (adapterView.getId()) {
             case R.id.state:
-                Log.i("gongpengming", stateItems[i]);
-                break;
+                String status = "1";
+                switch (i) {
+                    case 0:
+                        status = "UNCONFIRMED";
+                        break;
+                    case 1:
+                        status = "DOING";
+                        break;
+                    case 2:
+                        status = "FINISHED";
+                        break;
+                }
+                loadNetData(status);
             case R.id.type:
                 Log.i("gongpengming", typeItems[i]);
                 switch (i) {
                     case 0:
+                        state.setVisibility(View.GONE);
                         break;
                     case 1:
-                        if (mapList != null)
-                            mapList.clear();
+                        typeWhat = whatTask;
+                        state.setVisibility(View.VISIBLE);
+                        if (taskList == null) {//如果前一次请求失败
+                            loadNetData(whatTask);
+                        }
                         updateUI();
-                        loadNetData(whatTask);
                         break;
                     case 2:
-                        if (mapList != null)
-                            mapList.clear();
+                        state.setVisibility(View.GONE);
+                        typeWhat = whatSchedule;
+                        if (scheduleList == null) {
+                            loadNetData(whatSchedule);
+                        }
                         updateUI();
-                        loadNetData(whatSchedule);
                         break;
                     case 3:
-                        if (mapList != null)
-                            mapList.clear();
+                        state.setVisibility(View.GONE);
+                        typeWhat = whatVisit;
+                        if (visitList == null) {
+                            loadNetData(whatVisit);
+                        }
                         updateUI();
-                        loadNetData(whatVisit);
                         break;
                 }
                 break;
@@ -344,9 +412,15 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
             case R.id.staff_tv://点击人员
 //                startActivity(new Intent(activity, StatisticsActivity.class));
                 break;
+            case R.id.oa_img_people://点击返回
+                setResult(0x12, null);
+                finish();
+                break;
         }
     }
 
+    private PopupMenu poAddMenu;
+
     @TargetApi(Build.VERSION_CODES.HONEYCOMB)
     private void popAdd(View view) {
         //点击添加按钮
@@ -456,7 +530,6 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
                 name = (String) mapList.get(postin).get("taskname");
                 addr = "结束时间:" + mapList.get(postin).get("enddate");
                 object = (String) mapList.get(postin).get("handler");
-                Log.i("gongpengming", mapList.get(postin).get("status") + "");
                 if (mapList.get(postin).get("status") == null || "null".equals(mapList.get(postin).get("status") + ""))
                     status = "未完成";
                 else
@@ -486,7 +559,4 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Ad
         }
     }
 
-    enum Mode{
-
-    }
 }

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

@@ -16,6 +16,7 @@ import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.bean.oa.OutSigninBean;
 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;
 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.FlexJsonUtil;
@@ -63,7 +64,12 @@ public class OutSigninOKActivity extends BaseActivity {
         exit_btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                doSignin();
+                CodeUtil.getInstance().getCode(ct, "mobile_outsign", new CodeUtil.OnCodeLinstener() {
+                    @Override
+                    public void callBack(String code) {
+                        doSignin(code);
+                    }
+                });
             }
         });
     }
@@ -98,12 +104,13 @@ public class OutSigninOKActivity extends BaseActivity {
         }
     };
 
-    private void doSignin() {
+    private void doSignin(String code) {
         progressDialog.show();
         //获取网络数据
         String url = baseUrl + "mobile/oa/saveOutSign.action";
         final Map<String, Object> param = new HashMap<>();
         OutSigninBean bean = new OutSigninBean();
+        bean.setMo_code(code);
         bean.setMo_address(addr_tv.getText().toString().trim());
         bean.setMo_mancode(CommonUtil.getSharedPreferences(this, "erp_username"));
         bean.setMo_man(MyApplication.getInstance().mLoginUser.getNickName());

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

@@ -4,75 +4,83 @@ import android.content.DialogInterface;
 import android.os.Bundle;
 import android.support.v7.app.AlertDialog;
 import android.view.View;
+import android.widget.RelativeLayout;
 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.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.ui.erp.view.SwitchView;
 
 public class OutofficeSetActivity extends BaseActivity {
+    public static final String OA_LOCATION_DISTANCE = "OA_LOCATION_DISTANCE";
+    public static final String OA_LOCATION_IS = "OA_LOCATION_IS";
 
+    @ViewInject(R.id.location_tv)
     private TextView location_tv;
+    @ViewInject(R.id.location_tag)
+    private TextView location_tag;
+    @ViewInject(R.id.location_rl)
+    private RelativeLayout location_rl;
+    @ViewInject(R.id.allow_chance_location)
     private SwitchView allow_chance_location;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_outoffice_set);
+        ViewUtils.inject(this);
         initview();
     }
 
     private void initview() {
-        location_tv = (TextView) findViewById(R.id.location_tv);
-        allow_chance_location = (SwitchView) findViewById(R.id.allow_chance_location);
         allow_chance_location.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
             @Override
             public void onCheckedChanged(View view, boolean isChecked) {
-                CommonUtil.setSharedPreferences(OutofficeSetActivity.this, "outoffice_allow", isChecked);
+                setClickAble(isChecked);
+                CommonUtil.setSharedPreferences(OutofficeSetActivity.this, OA_LOCATION_IS, isChecked);
             }
         });
-        findViewById(R.id.location_rl).setOnClickListener(new View.OnClickListener() {
+        location_rl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
                 ShowDalogs();
             }
         });
+        //获取保存信息
+        String location = CommonUtil.getSharedPreferences(ct, OA_LOCATION_DISTANCE);
+        if (location == null || location.length() <= 0)
+            location = "100米";
+        location_tv.setText(location);
+        allow_chance_location.setChecked(CommonUtil.getSharedPreferencesBoolean(ct, OA_LOCATION_IS, false));
     }
 
     private void ShowDalogs() {
         AlertDialog.Builder builder = new AlertDialog.Builder(OutofficeSetActivity.this);
         builder.setTitle("选择微调距离");
         //    指定下拉列表的显示数据
-        final String[] cities = {"200米", "400米", "600米", "800米", "1000米"};
+        final String[] cities = {"100米", "200米", "400米", "600米", "1000米"};
         //    设置一个下拉的列表选择项
         builder.setItems(cities, new DialogInterface.OnClickListener() {
             @Override
             public void onClick(DialogInterface dialog, int which) {
                 location_tv.setText(cities[which]);
-                long i = 0;
-                switch (which) {
-                    case 0:
-                        i = 200;
-                        break;
-                    case 1:
-                        i = 400;
-                        break;
-                    case 2:
-                        i = 600;
-                        break;
-                    case 3:
-                        i = 700;
-                        break;
-                    case 4:
-                        i = 1000;
-                        break;
-                }
-                CommonUtil.putSharedPreferencesLong(OutofficeSetActivity.this, "outoffice_location", i);
+                CommonUtil.setSharedPreferences(ct, OA_LOCATION_DISTANCE, cities[which]);
             }
         });
         builder.show();
     }
 
 
+    public void setClickAble(boolean clickAble) {
+        location_rl.setClickable(clickAble);
+        location_rl.setFocusable(clickAble);
+        int color = R.color.hintColor;
+        if (clickAble)
+            color = R.color.text_main;
+        location_tag.setTextColor(getResources().getColor(color));
+        location_tv.setTextColor(getResources().getColor(color));
+    }
 }

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

@@ -26,12 +26,15 @@ import com.xzjmyk.pm.activity.view.SuperSwipeRefreshLayout;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 /**
  * 工作日志
  * by gongpm 16\07\05
  */
 public class WorkLogsActivity extends BaseActivity {
+    private static final int PAGER_SIZE = 10;
     private WorkLogsActivity ct;
     private SuperSwipeRefreshLayout root_view;
     private ListView context_rv;
@@ -110,6 +113,18 @@ public class WorkLogsActivity extends BaseActivity {
         mAdapter.notifyDataSetChanged();
     }
 
+    private static void getStrings() {
+        String str = "rrwerqq84461376qqasfdasdfrrwerqq84461377qqasfdasdaa654645aafrrwerqq84461378qqasfdaa654646aaasdfrrwerqq84461379qqasfdasdfrrwerqq84461376qqasfdasdf";
+        Pattern p = Pattern.compile("qq(.*?)qq");
+        Matcher m = p.matcher(str);
+        ArrayList<String> strs = new ArrayList<String>();
+        while (m.find()) {
+            strs.add(m.group(1));
+        }
+        for (String s : strs){
+           Log.i("gongepngming",s);
+        }
+    }
     private void initView() {
         bottom_view = (PMsgBottomView) findViewById(R.id.bottom_view);
         root_view = (SuperSwipeRefreshLayout) findViewById(R.id.root_view);
@@ -197,7 +212,7 @@ public class WorkLogsActivity extends BaseActivity {
         if (!TextUtils.isEmpty(messageId)) {
             params.put("messageId", messageId);
         }
-        params.put("pageSize", "10");
+        params.put("pageSize", PAGER_SIZE);
         ViewUtil.httpSendRequest(this, mConfig.MSG_LIST, params, handler, null, LOAD_WHAT, null, null, "get");
     }
 

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

@@ -7,12 +7,13 @@ import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.widget.Button;
-import android.widget.ImageView;
 import android.widget.TextView;
 
 import com.baidu.mapapi.map.MapView;
 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.BdLocationHelper;
 import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
@@ -24,29 +25,42 @@ import com.xzjmyk.pm.activity.ui.erp.activity.oa.OutofficeSetActivity;
 import com.xzjmyk.pm.activity.ui.erp.util.CommonUtil;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 import com.xzjmyk.pm.activity.util.TimeUtils;
-
-import java.util.Calendar;
+import com.xzjmyk.pm.activity.util.ToastUtil;
 
 /**
  * Created by gongpm on 2016/7/14.
  */
 public class OutofficeFragment extends EasyFragment implements View.OnClickListener {
+    private LatLng point;//位置
+    private static int requestCode = 0x11;
+    private int sigNum;//签到次数
+
+    @ViewInject(R.id.num_tv)
     private TextView num_tv; //签到次数
+    @ViewInject(R.id.out_add_name_tv)
     private TextView out_add_name_tv;//地点名称
-    private ImageView name_img;//头像
+    @ViewInject(R.id.name_img)
+    private TextView name_img;//头像
+    @ViewInject(R.id.name_tv)
     private TextView name_tv;//名字
+    @ViewInject(R.id.out_date_tv)
     private TextView out_date_tv;//日期
+    @ViewInject(R.id.out_time_tv)
     private TextView out_time_tv;//当前时间
+    @ViewInject(R.id.click_btn)
     private Button click_btn;//点击签到
+    @ViewInject(R.id.out_add_t_tv)
     private TextView out_add_t_tv;//地址
-    private OutofficeActivity ct;
-    //当前位置
-    private LatLng point;
-    int requestCode = 0x11;
+    @ViewInject(R.id.mapView)
     private MapView mapView;
+    @ViewInject(R.id.com_tv)
     private TextView com_tv;
+    @ViewInject(R.id.date_tag)
     private TextView date_tag;
-    private int sigNum = 0;
+    @ViewInject(R.id.do_trim)
+    private TextView do_trim;
+
+    private OutofficeActivity ct;
 
     @Override
     protected int inflateLayoutId() {
@@ -56,6 +70,7 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     @Override
     protected void onCreateView(Bundle savedInstanceState, boolean createView) {
         setHasOptionsMenu(true);
+        ViewUtils.inject(getmRootView());
         ct = (OutofficeActivity) getActivity();
         initview();
     }
@@ -71,28 +86,44 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
     }
 
     private void initview() {
-        out_add_name_tv = (TextView) findViewById(R.id.out_add_name_tv);
-        out_add_t_tv = (TextView) findViewById(R.id.out_add_t_tv);
-        num_tv = (TextView) findViewById(R.id.num_tv);
-        name_img = (ImageView) findViewById(R.id.name_img);
-        name_tv = (TextView) findViewById(R.id.name_tv);
-        out_date_tv = (TextView) findViewById(R.id.out_add_t_tv);
-        out_time_tv = (TextView) findViewById(R.id.out_time_tv);
-        click_btn = (Button) findViewById(R.id.click_btn);
-        mapView = (MapView) findViewById(R.id.mapView);
-        com_tv = (TextView) findViewById(R.id.com_tv);
-        date_tag = (TextView) findViewById(R.id.date_tag);
-        findViewById(R.id.do_trim).setOnClickListener(this);
-        initData();
+        num_tv.setText("" + sigNum);
+        name_tv.setText(MyApplication.getInstance().mLoginUser.getNickName());
+        com_tv.setText(CommonUtil.getSharedPreferences(ct, "erp_commpany"));
+        long timeLong = System.currentTimeMillis();
+        date_tag.setText(TimeUtils.getWeek(timeLong) + ":");//星期
+        out_date_tv.setText(TimeUtils.s_long_2_str(timeLong));//日期
+        out_time_tv.setText(TimeUtils.long2str(timeLong, "HH:mm"));//时间点
+        BdLocationHelper locationHelper = MyApplication.getInstance().getBdLocationHelper();
+        double latitude = locationHelper.getLatitude();
+        double longitude = locationHelper.getLongitude();
+        out_add_name_tv.setText(locationHelper.getDistrictName());
+        out_add_t_tv.setText(locationHelper.getAddress());
+        point = new LatLng(latitude, longitude);
+        BaiduMapUtil.getInstence().setMapViewPoint(mapView, point);
+        do_trim.setOnClickListener(this);
         click_btn.setOnClickListener(this);
-    }
 
+    }
 
     @Override
     public void onClick(View view) {
         switch (view.getId()) {
             case R.id.do_trim:
-                startActivityForResult(new Intent(getActivity(), LocationMapActivity.class), requestCode);
+                boolean isClick = CommonUtil.getSharedPreferencesBoolean(ct, OutofficeSetActivity.OA_LOCATION_IS);
+                if (isClick) {
+                    Intent i = new Intent(getActivity(), LocationMapActivity.class);
+                    String location = CommonUtil.getSharedPreferences(ct, OutofficeSetActivity.OA_LOCATION_DISTANCE);
+                    StringBuilder builder = new StringBuilder(location);
+                    location = builder.deleteCharAt(builder.length() - 1).toString();
+                    try {
+                        i.putExtra("data", Integer.parseInt(location));
+                    } catch (NumberFormatException e) {
+                        e.printStackTrace();
+                    }
+                    startActivityForResult(i, requestCode);
+                } else {
+                    ToastUtil.showToast(ct, "您已关闭地点微调功能,请在设置里面修改设置");
+                }
                 break;
             case R.id.click_btn:
                 Intent intent = new Intent(getActivity(), OutSigninOKActivity.class);
@@ -104,28 +135,6 @@ public class OutofficeFragment extends EasyFragment implements View.OnClickListe
         }
     }
 
-    private void initData() {
-        long time = System.currentTimeMillis();
-        Calendar mCalendar = Calendar.getInstance();
-        mCalendar.setTimeInMillis(time);
-        int mHour = mCalendar.get(Calendar.HOUR);
-        int mMin = mCalendar.get(Calendar.MINUTE);
-        num_tv.setText("" + sigNum);
-        name_tv.setText(MyApplication.getInstance().mLoginUser.getNickName());
-        com_tv.setText(CommonUtil.getSharedPreferences(ct, "erp_commpany"));
-        long timeLong = System.currentTimeMillis();
-        date_tag.setText(TimeUtils.getWeek(timeLong) + ":");//星期
-        out_date_tv.setText(TimeUtils.s_long_2_str(System.currentTimeMillis()));//日期
-        out_time_tv.setText((mHour < 10 ? "0" : "") + mHour + ":" + (mMin < 10 ? "0" : "") + mMin);//时间点
-        BdLocationHelper locationHelper = MyApplication.getInstance().getBdLocationHelper();
-        double latitude = locationHelper.getLatitude();
-        double longitude = locationHelper.getLongitude();
-        out_add_name_tv.setText(locationHelper.getDistrictName());
-        out_add_t_tv.setText(locationHelper.getAddress());
-        point = new LatLng(latitude, longitude);
-        BaiduMapUtil.getInstence().setMapViewPoint(mapView, point);
-    }
-
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         if (item.getItemId() == R.id.title) {

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

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -32,6 +33,7 @@ import com.xzjmyk.pm.activity.ui.erp.activity.oa.AlarmaActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.LocationMapActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.SigninActivity;
 import com.xzjmyk.pm.activity.ui.erp.net.ViewUtil;
+import com.xzjmyk.pm.activity.ui.erp.util.CodeUtil;
 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.FlexJsonUtil;
@@ -53,6 +55,15 @@ import java.util.Map;
  * Created by gongpm on 2016/7/5.
  */
 public class SigninFragment extends EasyFragment {
+    private static final int NEW_TIME_WHAT = 0x10;
+    private static final int whatLoad = 0x11;
+    private static final int whatSignin = 0x12;
+    private static final int thrad = 0x13;
+    private static final int requcode = 0x14;
+    private static final int whatLog = 0x15;
+    private static final double X = 22.540551;
+    private static final double Y = 113.953345;
+
     @ViewInject(R.id.location_tv)
     private TextView location_tv;
     @ViewInject(R.id.newtime_tv)
@@ -75,40 +86,35 @@ public class SigninFragment extends EasyFragment {
     private LinearLayout signin_btn;
 
     private LatLng location;
-    private static final int NEW_TIME_WHAT = 0x10;
-    private final int whatLoad = 0x11;
-    private final int whatSignin = 0x12;
-    private final int thrad = 0x13;
-    private static final double X = 22.540551;
-    private static final double Y = 113.953345;
+
     private AlertDialog dateDialog;
     private SigninActivity ct;
-    private int requcode = 0x11;
     private PoiInfo myPoInfo;
     private String baseUrl;
-    private int uHH, uMM, dHH, dMM;//上下班的时分
-    private int hh, mm;//距离时间
     private boolean isPlay = false;//是否已经签到
     private Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             ct.progressDialog.dismiss();
-            Bundle message = msg.getData();
+            String message = msg.getData().getString("result");
             switch (msg.what) {
+                case whatLog:
+
+                    break;
                 case whatLoad:
                     try {
                         //获取到当前时间
-                        JSONObject object = new JSONObject(message.getString("result"));
+                        JSONObject object = new JSONObject(message);
                         String u = object.isNull("ondutytime") ? "00:00" : object.getString("ondutytime");
                         String d = object.isNull("offdutytime") ? "00:00" : object.getString("offdutytime");
-                        uHH = Integer.parseInt(u.split(":")[0]);
-                        uMM = Integer.parseInt(u.split(":")[1]);
-                        dHH = Integer.parseInt(d.split(":")[0]);
-                        dMM = Integer.parseInt(d.split(":")[1]);
+                        int uHH = Integer.parseInt(u.split(":")[0]);
+                        int uMM = Integer.parseInt(u.split(":")[1]);
+                        int dHH = Integer.parseInt(d.split(":")[0]);
+                        int dMM = Integer.parseInt(d.split(":")[1]);
                         time0fwork_tv.setText((uHH < 10 ? "0" : "") + uHH + ":" + (uMM < 10 ? "0" : "") + uMM);
                         time0fuwork_tv.setText((dHH < 10 ? "0" : "") + dHH + ":" + (dMM < 10 ? "0" : "") + dMM);
                         //获取到签到时间后开线程计算距离签到时间
-                        startThrad();
+                        startThrad(time0fwork_tv.getText().toString().trim() + ":00", time0fuwork_tv.getText().toString().trim() + ":00");
                     } catch (JSONException e) {
                         e.printStackTrace();
                     }
@@ -119,8 +125,6 @@ public class SigninFragment extends EasyFragment {
                     mCalendar.setTimeInMillis(time);
                     int mHour = mCalendar.get(Calendar.HOUR_OF_DAY);
                     int mMin = mCalendar.get(Calendar.MINUTE);
-                    int h = Math.abs(mHour - uHH);
-                    int m = Math.abs(mHour - dHH);
                     String strTime = (mHour < 10 ? "0" : "") + mHour + ":" + (mMin < 10 ? "0" : "") + mMin;
                     int k = SigninDao.getInstance(ct).getDateStatus(em_code, TimeUtils.s_long_2_str(System.currentTimeMillis()));
                     if (k == 0) {
@@ -139,9 +143,8 @@ public class SigninFragment extends EasyFragment {
                     signinAble(false);//关闭签到入口
                     break;
                 case thrad:
-                    String str = message.getString("result");
-                    if (str == null) return;
-                    untime_signin.setText(str);
+                    if (message == null) return;
+                    untime_signin.setText(message);
                     break;
                 case NEW_TIME_WHAT:
                     newtime_tv.setText(TimeUtils.f_long_2_str(System.currentTimeMillis()));
@@ -155,6 +158,7 @@ public class SigninFragment extends EasyFragment {
     };
     private String em_code;
     long distanceTime = 60 * 1000 * 20;//允许提前20分钟签到
+    private int signinNum;//打卡次数
 
     private void signinAble() {
         int k = SigninDao.getInstance(ct).getDateStatus(em_code, TimeUtils.s_long_2_str(System.currentTimeMillis()));
@@ -166,7 +170,6 @@ public class SigninFragment extends EasyFragment {
             String str = BaiduMapUtil.getInstence().getDistance(lalat, location);
             unoffice_mm.setText("距离考勤地点:" + str + "米");
             if (BaiduMapUtil.getInstence().getDistanceD(lalat, location) < 500) {
-                //TODO 在允许的距离内签到
                 signinAble(true);
             } else {
                 signinAble(false);
@@ -198,95 +201,60 @@ public class SigninFragment extends EasyFragment {
     }
 
     //开启线程计算时间
-    private void startThrad() {
+    private void startThrad(final String uTime, final String dTime) {
         ThreadPool.getThreadPool().addTask(new Runnable() {
             @Override
             public void run() {
-                long time = System.currentTimeMillis();
-                Calendar mCalendar = Calendar.getInstance();
-                mCalendar.setTimeInMillis(time);
-                int mHour = mCalendar.get(Calendar.HOUR);
-                int mMin = mCalendar.get(Calendar.MINUTE);
-                int mSecond = mCalendar.get(Calendar.SECOND);
-                if (mHour < uHH) {//当前时间在上班时间之前
-                    beforeTheTime(mHour, mMin, mSecond);
-                } else if (mHour == uHH) {//
-                    if (mMin < uMM) {//还没到上班考勤时间
-                        beforeTheTime(mHour, mMin, mSecond);
-                    } else {//过了上班考勤时间
-                        endTheTime(mHour, mMin, mSecond);
-                    }
-                } else if (mHour < dHH && mHour > uHH) {//当前时间在上班时间之后在下班时间之前
-                    endTheTime(mHour, mMin, mSecond);
-                } else {//当前时间在上班时间和下班时间之后  当天打卡时间已过
-                    sendHandle(-1, -1);
+                long distance = -1;
+                if (signinNum == 0) {//没有打过卡,那当前时间和上班时间对比
+                    distance = getDistanceTime(uTime);
+                } else {//打了上班卡,拿当前时间和下班时间对比
+                    distance = getDistanceTime(dTime);
                 }
-            }
-        });
-    }
 
-    private void endTheTime(int mHour, int mMin, int mSecond) {
-        try {
-            int m = dMM - mMin;
-            int h = dHH - mHour;
-            while (true) {
-                if (isPlay) break;
-                m--;
-                if (m < 0) {
-                    h--;
-                    m = 60 + m;
-                    if (h < 0) {
-                        sendHandle(00, 00);
-                        break;//退出
+                long unit;
+                if (distance > 0) {//当前时间超过指定签到时间,要不断加
+                    unit = 1000;
+                } else {//当前时间还没到签到时间,要减
+                    unit = -1000;
+                }
+                distance = Math.abs(distance);
+                try {
+                    while (distance > 0) {
+                        distance -= unit;
+                        sendHandle(distance);
+                        Thread.sleep(1000);
                     }
+                } catch (InterruptedException e) {
+                    e.printStackTrace();
                 }
-                sendHandle(h, m);
-                Thread.sleep(1000 * 60);
             }
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+        });
     }
 
     /**
-     * @param mHour   当前时
-     * @param mMin    当前分
-     * @param mSecond 当前秒
+     * 获取当天的指定时分秒和当前的时间差
+     *
+     * @param time 时分秒 "HH:mm:ss"
+     * @return 相差时间long(指定时间去减当前时间)
      */
-    private void beforeTheTime(int mHour, int mMin, int mSecond) {//当前时间在上班时间之前
-        try {
-            int m = mMin - uMM;
-            int h = uHH - mHour;
-
-            while (true) {
-                if (isPlay) break;
-                m--;
-                if (m < 0) {
-                    h--;
-                    m = 60 + m;
-                    if (h < 0) {
-                        sendHandle(00, 00);
-                        break;//退出
-                    }
-                }
-                sendHandle(h, m);
-                Thread.sleep(1000 * 60);
-            }
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
+    private long getDistanceTime(String time) {
+        String temp = TimeUtils.s_long_2_str(System.currentTimeMillis()) + " " + time;
+        return TimeUtils.f_str_2_long(temp) - System.currentTimeMillis();
     }
 
-    private void sendHandle(int h, int m) {
+    private void sendHandle(long distance) {
         Message message = handler.obtainMessage();
         message.what = thrad;
-        String time;
-        if (h == -1 && m == -1) {
-            time = "今天打开时间已经过了";
-        } else {
-            time = (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m;
-        }
-        message.getData().putString("result", time);
+        Log.i("gongpengming", "distance=" + distance);
+        int d = (int) distance / 1000;
+        int h = d / 3600;
+        int m = (d % 3600) / 60;
+        int s = ((d % 3600) % 60);
+        String str = (h < 10 ? "0" : "") + h + ":" + (m < 10 ? "0" : "") + m + ":" + (s < 10 ? "0" : "") + s;
+        Bundle bundle = new Bundle();
+        bundle.putString("result", str);
+        message.setData(bundle);
         handler.sendMessage(message);
     }
 
@@ -299,6 +267,7 @@ public class SigninFragment extends EasyFragment {
         baseUrl = CommonUtil.getSharedPreferences(ct, "erp_baseurl");
         initView();
         loadNetData();
+        loadLog();
     }
 
     //获取网络数据
@@ -319,6 +288,27 @@ public class SigninFragment extends EasyFragment {
         ViewUtil.httpSendRequest(ct, url, param, handler, headers, whatLoad, null, null, "post");
     }
 
+    private void loadLog() {
+        ct.progressDialog.show();
+        //获取网络数据
+        String url = baseUrl + "mobile/common/list.action";
+        int date = TimeUtils.int_long_2_str(System.currentTimeMillis());
+        String emcode = CommonUtil.getSharedPreferences(ct, "erp_username");
+        String sessionId = CommonUtil.getSharedPreferences(ct, "sessionId");
+        final Map<String, Object> param = new HashMap<>();
+        param.put("emcode", emcode);
+        param.put("currentMaster", CommonUtil.getSharedPreferences(ct, "erp_master"));
+        param.put("page", 1);
+        param.put("pageSize", 10);
+        param.put("condition", "1=1");
+        param.put("sessionId", sessionId);
+        param.put("caller", "CardLog");
+        param.put("sessionId", sessionId);
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(ct, "sessionId"));
+        ViewUtil.httpSendRequest(ct, url, param, handler, headers, whatLog, null, null, "get");
+    }
+
     public String getLocation() {
         String temp = location_tv.getText().toString();
         String locationStr = "";
@@ -331,17 +321,18 @@ public class SigninFragment extends EasyFragment {
         return locationStr;
     }
 
-    private void doSignin() {
+    private void doSignin(String code) {
         //获取网络数据
         String url = baseUrl + "mobile/saveCardLog.action";
         final Map<String, Object> param = new HashMap<>();
         SigninBean bean = new SigninBean();
+        bean.setCl_code(code);
         bean.setCl_address(office_addr.getText().toString());
         bean.setCl_distance(300);
         bean.setCl_emcode(CommonUtil.getSharedPreferences(ct, "erp_username"));
-        bean.setCl_emname(MyApplication.getInstance().mLoginUser.getNickName());
         bean.setCl_time(TimeUtils.f_long_2_str(System.currentTimeMillis()));
         bean.setCl_location(getLocation());
+        bean.setCl_emname(MyApplication.getInstance().mLoginUser.getNickName());
         bean.setCl_phone(MyApplication.getInstance().mLoginUser.getTelephone());
         String formStore = FlexJsonUtil.toJson(bean);
         String caller = "CardLog";
@@ -358,12 +349,14 @@ public class SigninFragment extends EasyFragment {
         location_tv.setText(MyApplication.getInstance().getBdLocationHelper().getAddress());
         em_code = CommonUtil.getSharedPreferences(ct, "erp_username");
         Signin bean = SigninDao.getInstance(ct).query(em_code, TimeUtils.s_long_2_str(System.currentTimeMillis()));
+        signinNum = 0;
         if (bean != null) {
-            if (bean.getSigninNum() >= 1) {
+            signinNum = bean.getSigninNum();
+            if (signinNum >= 1) {
                 //只打一次卡
                 signin0fwork_tv.setText(TimeUtils.long2str(TimeUtils.f_str_2_long(bean.getUtime()), "HH:mm"));
             }
-            if (bean.getSigninNum() == 2) {
+            if (signinNum == 2) {
                 signin0fuwork_tv.setText(TimeUtils.long2str(TimeUtils.f_str_2_long(bean.getDtime()), "HH:mm"));
             }
         }
@@ -393,7 +386,13 @@ public class SigninFragment extends EasyFragment {
         signin_btn.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                doSignin();
+                CodeUtil.getInstance().getCode(ct, "CardLog", new CodeUtil.OnCodeLinstener() {
+                    @Override
+                    public void callBack(String code) {
+                        doSignin(code);
+                    }
+                });
+
             }
         });
         findViewById(R.id.addr_rl).setOnClickListener(new View.OnClickListener() {

+ 1 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/fragment/WorksFragment.java

@@ -93,7 +93,7 @@ public class WorksFragment extends XutilsFragment implements View.OnClickListene
                 ViewUtil.WebLinks(ct, url, "我的商务");
                 break;
             case R.id.rl_uas_sys:
-                ct.startActivity(new Intent(ct, OAActivity.class));
+                getActivity().startActivityForResult(new Intent(ct, OAActivity.class), 0x11);
                 break;
             case R.id.my_client_rl:
                 ct.startActivity(new Intent(ct, ClientActivity.class));

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

@@ -0,0 +1,78 @@
+package com.xzjmyk.pm.activity.ui.erp.util;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.util.Log;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * 多数用到了code  抽取出来使用
+ * Created by gongpm on 2016/8/5.
+ */
+public class CodeUtil {
+    private static CodeUtil instance = null;//多次使用,转为静态
+    private static OnCodeLinstener linstener;
+
+    public static CodeUtil getInstance() {
+        if (instance == null) {
+            synchronized (CodeUtil.class) {
+                instance = new CodeUtil();
+            }
+        }
+        return instance;
+    }
+
+    //多次重复使用,采用静态方式保证内存唯一
+    private static Handler handler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            String message = msg.getData().getString("result");
+            String code = null;
+            Log.i("gongpengming", message);
+            if (msg.what == 0x11) {
+                JSONObject json = JSON.parseObject(message);
+                code = json.getString("code");
+                Log.i("gongpengming", "message=" + code);
+                if (linstener != null) {
+                    linstener.callBack(code);
+                    return;
+                }
+            }
+            //TODO 容错、待修改(网络修复后)
+            if (linstener != null) {
+                linstener.callBack(code);
+            }
+        }
+    };
+
+    private void getCodeByNet(Context context, String titleName) {
+        String url = CommonUtil.getSharedPreferences(context, "erp_baseurl") + "common/getCodeString.action";
+        final Map<String, Object> param = new HashMap<>();
+        String caller = titleName;
+        param.put("caller", caller);
+        param.put("type", 2);
+        param.put("sessionId", CommonUtil.getSharedPreferences(context, "sessionId"));
+        LinkedHashMap<String, Object> headers = new LinkedHashMap<>();
+        headers.put("Cookie", "JSESSIONID=" + CommonUtil.getSharedPreferences(context, "sessionId"));
+        com.xzjmyk.pm.activity.ui.erp.net.ViewUtil.httpSendRequest(context, url, param, handler, headers, 0x11, null, null, "post");
+    }
+
+    private CodeUtil() {
+    }
+
+    public void getCode(Context context, String titleName, OnCodeLinstener linstener) {
+        this.linstener = linstener;
+        getCodeByNet(context, titleName);
+    }
+
+    public interface OnCodeLinstener {
+        void callBack(String code);
+    }
+}

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

@@ -21,7 +21,6 @@ import android.os.Build;
 import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.style.ForegroundColorSpan;
-import android.text.style.StrikethroughSpan;
 import android.text.style.StyleSpan;
 import android.text.style.UnderlineSpan;
 import android.util.DisplayMetrics;
@@ -56,19 +55,15 @@ import java.util.regex.Pattern;
 
 @SuppressLint("NewApi")
 public class CommonUtil {
-
     private final static String AppShareName = "setting";
-
     public static boolean isBackground(Context context) {
         ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
         List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
         for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
             if (appProcess.processName.equals(context.getPackageName())) {
                 if (appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_BACKGROUND) {
-                    Log.i("Process", "进入后台..." + appProcess.processName);
                     return true;
                 } else {
-                    Log.i("Process", "进入前台..." + appProcess.processName);
                     return false;
                 }
             }

+ 7 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/BaiduMapUtil.java

@@ -58,15 +58,17 @@ public class BaiduMapUtil implements OnGetPoiSearchResultListener {
 
     //计算距离
     public String getDistance(LatLng a, LatLng b) {
-        double distance = DistanceUtil.getDistance(a, b);
+        double distance = Math.abs(DistanceUtil.getDistance(a, b));
         DecimalFormat df = new DecimalFormat(".##");
         return df.format(distance);
     }
+
     //计算距离
     public double getDistanceD(LatLng a, LatLng b) {
         double distance = DistanceUtil.getDistance(a, b);
         return distance;
     }
+
     public String getDistance(double a1, double a2, double b1, double b2) {
         LatLng a = new LatLng(a1, a2);
         LatLng b = new LatLng(b1, b2);
@@ -112,10 +114,11 @@ public class BaiduMapUtil implements OnGetPoiSearchResultListener {
         mPoiSearch.searchNearby(option);
     }
 
-    public void getLocation(){
+    public void getLocation() {
 
     }
-    public  void getNearInfo(int radius, int pagerNum, LatLng location, Handler handler) {
+
+    public void getNearInfo(int radius, int pagerNum, LatLng location, Handler handler) {
         getNearInfo(radius, pagerNum, location, PoiSearch.newInstance(), handler, NEAR_WHAT);
     }
 
@@ -128,6 +131,7 @@ public class BaiduMapUtil implements OnGetPoiSearchResultListener {
         message.setData(bundle);
         handler.sendMessage(message);
     }
+
     @Override
     public void onGetPoiResult(PoiResult poiResult) {
         if (handler == null) return;

+ 7 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/view/CalendarView.java

@@ -13,6 +13,7 @@ import android.view.View;
 
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Set;
 
 /**
  * 日历控件 功能:获得点选的日期区间
@@ -33,7 +34,7 @@ public class CalendarView extends View implements View.OnTouchListener {
     private int curStartIndex, curEndIndex; // 当前显示的日历起始的索引
     private boolean completed = false; // 为false表示只选择了开始日期,true表示结束日期也选择了
     private boolean isSelectMore = false;
-    private int[] taskDay;
+    private Set<Integer> taskDay;
     //给控件设置监听事件
     private OnItemClickListener onItemClickListener;
 
@@ -58,11 +59,13 @@ public class CalendarView extends View implements View.OnTouchListener {
         setOnTouchListener(this);
     }
 
-    public void setTaskDay(int[] taskDay) {
+    public void setTaskDay(Set<Integer> taskDay) {
         this.taskDay = taskDay;
+        Log.i("gongpengming", taskDay.size() + "大小");
+        invalidate();
     }
 
-    public int[] getTaskDay() {
+    public Set<Integer> getTaskDay() {
         return taskDay;
     }
 
@@ -124,7 +127,7 @@ public class CalendarView extends View implements View.OnTouchListener {
             } else if (isNextMonth(i)) {//是下个月日期
                 color = surface.borderColor;
             } else {//是这个月日期
-                if (taskDay != null && taskDay.length > 0) {//如果有的日期又任务
+                if (taskDay != null && taskDay.size() > 0) {//如果有的日期又任务
                     for (int j : taskDay) {
                         if (j == date[i]) {//当前日期为由任务日期
                             drawTask(canvas, i, color);

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

@@ -382,6 +382,7 @@
 
             <Spinner
                 android:id="@+id/state"
+                android:visibility="gone"
                 android:layout_width="0dp"
                 android:layout_height="match_parent"
                 android:layout_weight="2.5"

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

@@ -31,7 +31,8 @@
             android:button="@null"
             android:drawableTop="@drawable/outoffice_play"
             android:gravity="center"
-            android:text="足迹" />
+            android:text="足迹"
+            android:visibility="gone" />
 
     </RadioGroup>
 

+ 5 - 2
WeiChat/src/main/res/layout/activity_outoffice_set.xml

@@ -66,6 +66,7 @@
         android:padding="5dp">
 
         <TextView
+            android:id="@+id/location_tag"
             android:layout_width="wrap_content"
             android:layout_height="match_parent"
             android:gravity="center_vertical"
@@ -80,10 +81,12 @@
             android:layout_alignParentRight="true"
             android:drawableRight="@drawable/oa_next"
             android:gravity="center_vertical"
-            android:text="500米" />
+            android:text="500米"
+            android:textColor="@color/text_main" />
     </RelativeLayout>
+
     <View
         android:layout_width="match_parent"
         android:layout_height="2px"
-        android:background="@color/item_line"/>
+        android:background="@color/item_line" />
 </LinearLayout>

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

@@ -37,7 +37,8 @@
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:drawableTop="@drawable/tab_signin_set"
-            android:text="设置" />
+            android:text="设置"
+            android:visibility="gone" />
     </RadioGroup>
 
 </RelativeLayout>

+ 2 - 5
WeiChat/src/main/res/layout/fragment_outoffice.xml

@@ -4,14 +4,13 @@
     android:layout_height="match_parent"
     android:padding="20dp">
 
-    <ImageView
+    <TextView
         android:id="@+id/name_img"
         android:layout_width="80dp"
         android:layout_height="80dp"
-        android:background="@drawable/text_button_stye2"
+        android:background="@drawable/text_button_stye3"
         android:gravity="center"
         android:scaleType="fitXY"
-        android:src="@drawable/home_image_01"
         android:textSize="25dp" />
 
     <TextView
@@ -82,7 +81,6 @@
         android:layout_below="@+id/line1"
         android:layout_marginTop="10dp"
         android:drawableLeft="@drawable/alarm"
-        android:text=":"
         android:textSize="@dimen/text_hine" />
 
     <TextView
@@ -92,7 +90,6 @@
         android:layout_alignTop="@+id/date_tag"
         android:layout_below="@+id/line1"
         android:layout_toRightOf="@+id/date_tag"
-        android:text="2016.06.13"
         android:textSize="@dimen/text_hine" />
 
     <TextView

+ 5 - 10
WeiChat/src/main/res/layout/fragment_signin.xml

@@ -30,8 +30,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:layout_weight="1"
-                android:gravity="center"
-                android:text="--:--" />
+                android:gravity="center" />
         </LinearLayout>
 
         <LinearLayout
@@ -54,8 +53,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:layout_weight="1"
-                android:gravity="center"
-                android:text="--:--" />
+                android:gravity="center" />
         </LinearLayout>
 
         <LinearLayout
@@ -79,8 +77,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:layout_weight="1"
-                android:gravity="center"
-                android:text="--:--" />
+                android:gravity="center" />
         </LinearLayout>
 
         <LinearLayout
@@ -105,8 +102,7 @@
                 android:layout_width="match_parent"
                 android:layout_height="0dp"
                 android:layout_weight="1"
-                android:gravity="center"
-                android:text="--:--" />
+                android:gravity="center" />
         </LinearLayout>
 
         <RelativeLayout
@@ -125,8 +121,7 @@
                 android:id="@+id/untime_signin"
                 style="@style/add_signin_tv_hine"
                 android:layout_alignParentRight="true"
-                android:layout_marginRight="10dp"
-                android:text="--:--" />
+                android:layout_marginRight="10dp" />
         </RelativeLayout>
 
         <LinearLayout