Browse Source

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

# Conflicts:
#	WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/OAListAdapter.java
Arison 9 years ago
parent
commit
b7d7fe2f27
38 changed files with 544 additions and 618 deletions
  1. 1 1
      WeiChat/build.gradle
  2. 23 16
      WeiChat/src/main/AndroidManifest.xml
  3. 14 3
      WeiChat/src/main/java/basepedo/service/BootCompleteReceiver.java
  4. 1 1
      WeiChat/src/main/java/basepedo/service/StepDcretor.java
  5. 36 10
      WeiChat/src/main/java/basepedo/service/StepService.java
  6. 11 0
      WeiChat/src/main/java/basepedo/ui/MyPedometerActivity.java
  7. 5 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java
  8. 9 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/CommonDocApprovalFlowAdapter.java
  9. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java
  10. 4 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/MainActivity.java
  11. 5 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java
  12. 2 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/WebViewCommActivity.java
  13. 32 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java
  14. 4 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DailydetailsActivity.java
  15. 15 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/DestinationActivity.java
  16. 15 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/ErpActivity.java
  17. 38 16
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationSearchActivity.java
  18. 13 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/MissionActivity.java
  19. 68 24
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/OAActivity.java
  20. 0 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/MissionAdapter.java
  21. 5 4
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/adapter/OAListAdapter.java
  22. 4 5
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpUtil.java
  23. 3 1
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/ViewUtil.java
  24. 4 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/presenter/WorkPresenter.java
  25. 8 0
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java
  26. 9 3
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java
  27. 0 27
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/MonthView.java
  28. 0 437
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/OACalendarView.java
  29. 0 37
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/Surface.java
  30. 16 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/util/PreferenceUtils.java
  31. 8 0
      WeiChat/src/main/res/drawable/selector_oa_itembg.xml
  32. 177 0
      WeiChat/src/main/res/layout/activity_erp.xml
  33. 2 2
      WeiChat/src/main/res/layout/activity_pedometer.xml
  34. 1 1
      WeiChat/src/main/res/layout/activity_setting.xml
  35. 5 2
      WeiChat/src/main/res/layout/activity_test.xml
  36. 4 2
      WeiChat/src/main/res/layout/fragment_me.xml
  37. 1 1
      WeiChat/src/main/res/layout/item_oa_list.xml
  38. 1 0
      WeiChat/src/main/res/values/colors.xml

+ 1 - 1
WeiChat/build.gradle

@@ -13,7 +13,7 @@ android {
     }
     signingConfigs {
         config {
-            storeFile file('C:/Users/Arison/Desktop/applicationsignname[20150409]')
+            storeFile file('D:/config/applicationsignname[20150409]')
             storePassword '13237658359'
             keyAlias 'jie-20150409'
             keyPassword '13237658359'

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

@@ -105,7 +105,7 @@
     <uses-feature android:name="android.hardware.camera" />
     <!-- 使用照相机权限 -->
     <uses-feature android:name="android.hardware.camera.autofocus" />
-    <!--计步器用到-->
+    <!-- 计步器用到 -->
     <uses-feature android:name="android.hardware.sensor.accelerometer" />
 
     <!-- 自动聚焦权限 -->
@@ -117,6 +117,7 @@
         android:icon="@drawable/uuu"
         android:label="@string/app_name"
         android:largeHeap="true"
+        android:persistent="true"
         android:theme="@style/AppTheme">
         <meta-data
             android:name="UMENG_CHANNEL"
@@ -669,7 +670,6 @@
             android:name=".ui.erp.activity.message.ProcessMsgActivity"
             android:label="@string/title_activity_process_msg" />
 
-
         <!-- 百度推送相关 -->
         <!-- push必须的receviver和service声明 -->
         <receiver
@@ -766,9 +766,9 @@
         <activity
             android:name=".ui.message.Subscription2Activity"
             android:label="订阅号" />
-        <activity android:name=".ui.erp.activity.oa.LocationSearchActivity"
-            android:windowSoftInputMode="stateUnspecified|adjustNothing"
-            />
+        <activity
+            android:name=".ui.erp.activity.oa.LocationSearchActivity"
+            android:windowSoftInputMode="stateUnspecified|adjustNothing" />
         <activity
             android:name=".ui.erp.activity.oa.MissionSetActivity"
             android:label="@string/activity_mission_set" />
@@ -783,8 +783,8 @@
         <activity
             android:name=".ui.erp.activity.form.FormListSelectActivity"
             android:hardwareAccelerated="false"
-            android:windowSoftInputMode="adjustPan"
-            android:launchMode="singleTask" />
+            android:launchMode="singleTask"
+            android:windowSoftInputMode="adjustPan" />
         <activity
             android:name=".ui.erp.activity.oa.WorkActivity"
             android:label="@string/activity_signing" />
@@ -797,16 +797,18 @@
         <activity
             android:name=".ui.erp.activity.oa.MissionActivity"
             android:label="@string/activity_mission_plan" />
-        <activity android:name="basepedo.ui.MyPedometerActivity"
-            android:label="UU运动"/>
+        <activity
+            android:name="basepedo.ui.MyPedometerActivity"
+            android:label="UU运动" />
+
         <service
             android:name="basepedo.service.StepService"
-            android:process="com.base.basepedo.step"
-            android:priority="1000">
-            <intent-filter >
-                <!-- 系统启动完成后会调用-->
-                <action android:name="android.intent.action.BOOT_COMPLETED"/>
-                <action android:name="android.intent.action.DATE_CHANGED"/>
+            android:process="com.base.basepedo.step">
+            <intent-filter android:priority="1000">
+
+                <!-- 系统启动完成后会调用 -->
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.intent.action.DATE_CHANGED" />
                 <action android:name="android.intent.action.MEDIA_MOUNTED" />
                 <action android:name="android.intent.action.USER_PRESENT" />
                 <action android:name="android.intent.action.ACTION_TIME_TICK" />
@@ -814,11 +816,16 @@
                 <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
             </intent-filter>
         </service>
+
         <receiver android:name="basepedo.service.BootCompleteReceiver">
             <intent-filter>
-                <action android:name="android.intent.action.BOOT_COMPLETED"/>
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.intent.action.USER_PRESENT" />
+                <action android:name="uu.step.destory" />
             </intent-filter>
         </receiver>
+
+        <activity android:name=".ui.erp.activity.oa.ErpActivity"></activity>
     </application>
 
 </manifest>

+ 14 - 3
WeiChat/src/main/java/basepedo/service/BootCompleteReceiver.java

@@ -4,15 +4,26 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 
+import com.xzjmyk.pm.activity.MyApplication;
+import com.xzjmyk.pm.activity.ui.MainActivity;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
+
 /**
  * 开机完成广播
- *
  * Created by FANGlh on 2016/12/30.
  */
 public class BootCompleteReceiver extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
-        Intent i = new Intent(context, StepService.class);
-        context.startService(i);
+        if (PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP) == 1 || intent.getAction().equals("uu.step.destory")){
+            Intent i = new Intent(context, StepService.class);
+            context.startService(i);
+        }
+        if (intent.getAction().equals("uu.step.destory")){
+            Intent i = new Intent(context, StepService.class);
+            context.startService(i);
+        }
+
     }
+
 }

+ 1 - 1
WeiChat/src/main/java/basepedo/service/StepDcretor.java

@@ -62,7 +62,7 @@ public class StepDcretor implements SensorEventListener {
     //用x、y、z轴三个维度算出的平均值
     public static float average = 0;
     private Timer timer;
-    // 倒计时3秒,3秒内不会显示计步,用于屏蔽细微波动
+    // 倒计时3秒,,用于屏蔽细微波动
     private long duration = 3000;
     private TimeCount time;
     OnSensorChangeListener onSensorChangeListener;

+ 36 - 10
WeiChat/src/main/java/basepedo/service/StepService.java

@@ -1,6 +1,7 @@
 package basepedo.service;
 
 import android.annotation.TargetApi;
+import android.app.ActivityManager;
 import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -25,7 +26,10 @@ import android.os.RemoteException;
 import android.support.v7.app.NotificationCompat;
 import android.util.Log;
 
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
+import com.xzjmyk.pm.activity.ui.MainActivity;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import java.text.SimpleDateFormat;
 import java.util.Calendar;
@@ -59,7 +63,7 @@ public class StepService extends Service implements SensorEventListener {
     //测试
     private static int i = 0;
     private String DB_NAME = "basepedo";
-
+    private String uustep_service_name = "basepedo.service.StepService";
     private static class MessenerHandler extends Handler {
         @Override
         public void handleMessage(Message msg) {
@@ -92,19 +96,24 @@ public class StepService extends Service implements SensorEventListener {
             }
         }).start();
         startTimeCount();
+
+        Log.i("StepService","oncreated");
     }
 
     @Override
     public void onStart(Intent intent, int startId) {
         super.onStart(intent, startId);
+        Log.i("StepService", "onStart");
     }
 
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
         initTodayData();
-
         updateNotification("今日步数:" + StepDcretor.CURRENT_SETP + " 步");
-        return START_STICKY;
+        flags = START_STICKY;
+        Log.i("StepService", "onStartCommand");
+        return super.onStartCommand(intent,flags,startId);
+
     }
     private String getTodayDate() {
         Date date = new Date(System.currentTimeMillis());
@@ -122,7 +131,7 @@ public class StepService extends Service implements SensorEventListener {
         } else if (list.size() == 1) {
             StepDcretor.CURRENT_SETP = Integer.parseInt(list.get(0).getStep());
         } else {
-            Log.v(TAG, "出错了!");
+            Log.i(TAG, "出错了!");
         }
     }
 
@@ -192,7 +201,7 @@ public class StepService extends Service implements SensorEventListener {
     private void updateNotification(String content) {
         builder = new NotificationCompat.Builder(this);
         builder.setPriority(Notification.PRIORITY_MIN);
-        PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
+        PendingIntent contentIntent = PendingIntent.getActivity(this, 100,
                 new Intent(this, MyPedometerActivity.class), 0);
         builder.setContentIntent(contentIntent);
         builder.setSmallIcon(R.drawable.uuu);
@@ -205,7 +214,11 @@ public class StepService extends Service implements SensorEventListener {
 
         startForeground(0, notification);
         nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
-        nm.notify(R.string.app_name, notification);
+        if (PreferenceUtils.getInt(this,MyPedometerActivity.UU_STEP_NOTICE) == 1){
+            nm.notify(R.string.app_name, notification);
+        }else if(PreferenceUtils.getInt(this,MyPedometerActivity.UU_STEP_NOTICE) == 0){
+            nm.cancelAll();
+        }
     }
 
     @Override
@@ -270,8 +283,7 @@ public class StepService extends Service implements SensorEventListener {
     @Override
     public void onSensorChanged(SensorEvent event) {
         i++;
-        StepDcretor.CURRENT_SETP++; //TODO 这里取消屏蔽功能,动一次计步叠加一次
-//        updateNotification("今日步数:" + StepDcretor.CURRENT_SETP + "," + i + " 步");
+        StepDcretor.CURRENT_SETP ++; //TODO 这里取消屏蔽功能,动一次计步叠加一次
         updateNotification("今日步数:" + StepDcretor.CURRENT_SETP + " 步");
     }
 
@@ -320,8 +332,13 @@ public class StepService extends Service implements SensorEventListener {
         stopForeground(true);
         DbUtils.closeDb();
         unregisterReceiver(mBatInfoReceiver);
-        Intent intent = new Intent(this, StepService.class);
-        startService(intent);
+        if (! isServiceRunning(uustep_service_name) && PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP)==1){
+            Intent intent = new Intent(this, StepService.class);
+            startService(intent);
+        }
+        Intent intent = new Intent("uu.step.destory");
+        sendBroadcast(intent);
+        Log.v("StepService", "onDestroy");
         super.onDestroy();
     }
 
@@ -363,4 +380,13 @@ public class StepService extends Service implements SensorEventListener {
         }
         return (mWakeLock);
     }
+    private boolean isServiceRunning(String servicename) { //判断UU运动服务是否已经运行
+        ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
+        for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
+            if (servicename.equals(service.service.getClassName())) {
+                return true;
+            }
+        }
+        return false;
+    }
 }

+ 11 - 0
WeiChat/src/main/java/basepedo/ui/MyPedometerActivity.java

@@ -15,9 +15,12 @@ import android.view.Menu;
 import android.view.MenuItem;
 import android.widget.TextView;
 
+import com.baidu.android.pushservice.PushManager;
+import com.xzjmyk.pm.activity.MyApplication;
 import com.xzjmyk.pm.activity.R;
 import com.xzjmyk.pm.activity.ui.base.BaseActivity;
 import com.xzjmyk.pm.activity.ui.me.SettingActivity;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 import basepedo.config.Constant;
 import basepedo.service.StepService;
@@ -33,6 +36,8 @@ public class MyPedometerActivity extends BaseActivity implements Handler.Callbac
     private Messenger mGetReplyMessenger = new Messenger(new Handler(this));
     private Handler delayHandler;
     private String uustep_service_name = "basepedo.service.StepService";
+    public static String UU_STEP_NOTICE = "UUSTEPNOTICE";
+
     ServiceConnection conn = new ServiceConnection() {
         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
@@ -92,11 +97,15 @@ public class MyPedometerActivity extends BaseActivity implements Handler.Callbac
         setContentView(R.layout.activity_pedometer);
         init();
 
+
     }
     private void init() {
         text_step = (TextView) findViewById(R.id.text_step);
         delayHandler = new Handler(this);
         setupService();
+
+        PreferenceUtils.putInt(MyPedometerActivity.UU_STEP_NOTICE, 0);
+        PushManager.resumeWork(MyApplication.getInstance());
     }
 
 
@@ -120,6 +129,7 @@ public class MyPedometerActivity extends BaseActivity implements Handler.Callbac
         if (item.getItemId() == android.R.id.home) {
             if (isServiceRunning(uustep_service_name)){
                 unbindService(conn);
+                startService(new Intent(mContext, StepService.class));
             }
             startActivity(new Intent(mContext, SettingActivity.class));
         }
@@ -131,6 +141,7 @@ public class MyPedometerActivity extends BaseActivity implements Handler.Callbac
 
         if (isServiceRunning(uustep_service_name)){
             unbindService(conn);
+            startService(new Intent(mContext, StepService.class));
         }
         startActivity(new Intent(mContext, SettingActivity.class));
         super.onBackPressed();

+ 5 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/BdLocationHelper.java

@@ -11,6 +11,7 @@ import com.baidu.location.LocationClientOption;
 import com.xzjmyk.pm.activity.bean.LocationEntity;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.ui.tool.ThreadUtil;
+import com.xzjmyk.pm.activity.util.PreferenceUtils;
 
 public class BdLocationHelper {
     public static final String UPLOCATION_ACTION = "UPLOCATION_ACTION";//更新位置时候广播数据
@@ -135,6 +136,10 @@ public class BdLocationHelper {
                     locationEntity.setProvince(location.getProvince());
                     locationEntity.setCityName(location.getCity());
                     locationEntity.setDistrict(location.getDistrict());
+                    if (StringUtils.isEmpty(location.getLocationDescribe()))
+                        PreferenceUtils.putString("bdlocation", location.getLocationDescribe());
+                    if (StringUtils.isEmpty(location.getAddrStr()))
+                        PreferenceUtils.putString("bdaddress", location.getAddrStr());
                 } else {
                     //统一未定位失败
                     locationEntity.setLocationOk(false);

+ 9 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/adapter/CommonDocApprovalFlowAdapter.java

@@ -58,7 +58,11 @@ public class CommonDocApprovalFlowAdapter extends BaseAdapter {
         this.mCommonApprovalFlowBean = mCommonApprovalFlowBeanList;
     }
     public int getCount() {
-        return mCommonApprovalFlowBean == null ? 0 : mCommonApprovalFlowBean.getData().size();
+        if (ListUtils.isEmpty(mCommonApprovalFlowBean.getData())){
+            return mCommonApprovalFlowBean == null ? 0 : mCommonApprovalFlowBean.getNodes().size();
+        }else{
+            return mCommonApprovalFlowBean == null ? 0 : mCommonApprovalFlowBean.getData().size();
+        }
     }
     @Override
     public Object getItem(int position) {
@@ -96,16 +100,16 @@ public class CommonDocApprovalFlowAdapter extends BaseAdapter {
         int datanum = mCommonApprovalFlowBean.getData().size();
 
         //设置显示审批人头像
-        if (ListUtils.isEmpty(im_ids) && nodesnum == datanum) {
+        if (ListUtils.isEmpty(im_ids) ) {
             String imageUri = "drawable://" + R.drawable.common_header_boy;
             AvatarHelper.getInstance().display(imageUri, viewHolder.AppFlowPhoto, true);
-        } else if (!ListUtils.isEmpty(im_ids) && nodesnum == datanum){
+        } else if (!ListUtils.isEmpty(im_ids) ){
             AvatarHelper.getInstance().display(im_ids.get(getCount() - position - 1), viewHolder.AppFlowPhoto, true, false);//显示圆角图片
         }
         //设置显示审批人名字
-        if (ListUtils.isEmpty(afpeople_names) && nodesnum == datanum){
+        if (ListUtils.isEmpty(afpeople_names) ){
             viewHolder.AppFlowName.setText("");
-        }else if (!ListUtils.isEmpty(afpeople_names) && nodesnum == datanum){
+        }else if (!ListUtils.isEmpty(afpeople_names) ){
             viewHolder.AppFlowName.setText(afpeople_names.get(getCount() - position - 1));
         }
 

+ 0 - 1
WeiChat/src/main/java/com/xzjmyk/pm/activity/bean/oa/OABean.java

@@ -7,7 +7,6 @@ import android.os.Parcelable;
  * oa首页对象实体
  * Created by gongp on 2016/8/17.
  */
-@Deprecated
 public class OABean implements Parcelable {
     //通用属性
     private int type;//类型  1、任务 2、日程 3、拜访

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

@@ -70,6 +70,7 @@ import java.util.List;
 
 import basepedo.config.Constant;
 import basepedo.service.StepService;
+import basepedo.ui.MyPedometerActivity;
 
 
 /**
@@ -418,6 +419,8 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
         int isUUStep = PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP);
         if (isUUStep == 1){
             startService(new Intent(mContext,StepService.class));
+            PreferenceUtils.putInt(MyPedometerActivity.UU_STEP_NOTICE, 1);
+            PushManager.resumeWork(MyApplication.getInstance());
         }
         //TODO 发布版本关闭
         if (AppConfig.COMPANY){
@@ -500,6 +503,7 @@ public class MainActivity extends BaseActivity implements NetWorkObservable.NetW
 
         //开启APP后自动开启UU运动服务,这里为了耗电占内存等情况暂时不设置开启APP自动开启UU运动
 //        openUUStepService();
+
     }
     private Messenger messenger;
     private Messenger mGetReplyMessenger = new Messenger(new Handler());

+ 5 - 4
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/CommonDocDetailsActivity.java

@@ -464,10 +464,10 @@ public class CommonDocDetailsActivity extends BaseActivity {
                 appflow_lv.setVisibility(View.GONE);
             }else{
                 mCommonApprovalFlowBean = JSON.parseObject(resultJsonObject.toString(), CommonApprovalFlowBean.class);
-                LogUtil.prinlnLongMsg("mCommonApprovalFlowBean", mCommonApprovalFlowBean.toString());
                 em_code = new String();
                 if (manager == null) manager = new DBManager(mContext);
-                if("已审核".equals(real_status)){  // TODO 已审核直接从node里面取数据
+                if("已审核".equals(real_status) && (mCommonApprovalFlowBean.getData().size() == 0 ||
+                        mCommonApprovalFlowBean.getData().size() == mCommonApprovalFlowBean.getNodes().size())){  // TODO 已审核直接从node里面取数据
                     for (int i = 0; i <mCommonApprovalFlowBean.getNodes().size(); i++) {
                         //取名字
                         if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManName())){
@@ -626,10 +626,11 @@ public class CommonDocDetailsActivity extends BaseActivity {
 
                         }
                     }
-                }else if ("已审核".equals(real_status) && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()){
+                }else if ("已审核".equals(real_status) && mCommonApprovalFlowBean.getData().size() != 0
+                        && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()){
                     appflow_lv.setVisibility(View.GONE);
                 }
-                Log.i("last_afpeople_names", "空"+afpeople_names.toString());
+                Log.i("last_afpeople_names", afpeople_names.toString());
                 Log.i("last_imids", im_ids.toString());
                 mCommonDocApprovalFlowAdapter.setIm_ids(im_ids);
                 mCommonDocApprovalFlowAdapter.setAfpeople_names(afpeople_names);

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

@@ -128,7 +128,8 @@ public class WebViewCommActivity extends BaseActivity implements View.OnClickLis
             url = mSubsurl + "?numId=" + mSubscriptionMessages.get(mPosition).getNumId()
                     + "&mainId=" + mSubscriptionMessages.get(mPosition).getInstanceId()
                     + "&insId=" + mSubscriptionMessages.get(mPosition).getId()
-                    + "&title=" + mSubscriptionMessages.get(mPosition).getTitle();
+                    + "&title=" + mSubscriptionMessages.get(mPosition).getTitle()
+                    + "&sessionId=" + CommonUtil.getSharedPreferences(ct, "sessionId");
             if (mSubscriptionMessages.size() == 1) {
                 mPreTv.setVisibility(View.GONE);
                 mNextTv.setVisibility(View.GONE);

+ 32 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/crm/VisitReportAddActivity.java

@@ -86,7 +86,20 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
     }
 
     private void initListener() {
-        if (getIntent().getBooleanExtra("isMe", true)) {
+        boolean isMe = getIntent().getBooleanExtra("isMe", true);
+//        setFocusable(tv_date_start, isMe);
+//        setFocusable(tv_date_end, isMe);
+//        setFocusable(tv_customer_login, isMe);
+//        setFocusable(tv_visit_steps, isMe);
+//        setFocusable(tv_relate_business, isMe);
+
+//        setFocusable(tv_visit_content, isMe);
+//        setFocusable(tv_visit_theme, isMe);
+//        setFocusable(tv_address_login, isMe);
+//        setFocusable(tv_linksman_login, isMe);
+
+
+        if (isMe) {
             tv_date_start.setOnClickListener(this);
             tv_date_end.setOnClickListener(this);
             tv_date_start.setKeyListener(null);
@@ -151,19 +164,35 @@ public class VisitReportAddActivity extends BaseActivity implements View.OnClick
             nichecode = object.getString(getJSONString(object, "vr_nichecode"));
             tv_relate_business.setText(getJSONString(object, "vr_nichename"));
 //            tv_visit_content.setText(getJSONString(object, "vr_detail"));
-            Log.i("VisitRecord2", chche);
         } else if (type == 3) {
             //1.开始日期==预计拜访时间  2.客户名称==公司名称  客户地址
             String chche = getIntent().getStringExtra("data");
             JSONObject object = JSON.parseObject(chche);
+            vp_id = object.containsKey("mpd_id") ? object.getInteger("mpd_id") : -1;
             tv_date_start.setText(getJSONString(object, "mpd_actdate"));
             tv_date_end.setText(getJSONString(object, "mpd_outdate"));
             tv_customer_login.setText(getJSONString(object, "mpd_company"));
             tv_address_login.setText(getJSONString(object, "mpd_address"));
-            Log.i("gongpengming", chche);
+            tv_visit_theme.setText(getJSONString(object, "mpd_remark"));
+            boolean isMe = getIntent().getBooleanExtra("isMe", true);
+            setFocusable(tv_date_start, isMe && TextUtils.isEmpty(tv_date_start.getText()));
+            setFocusable(tv_date_end, isMe && TextUtils.isEmpty(tv_date_end.getText()));
+            setFocusable(tv_customer_login, isMe && TextUtils.isEmpty(tv_customer_login.getText()));
+            setFocusable(tv_address_login, isMe && TextUtils.isEmpty(tv_address_login.getText()));
+            setFocusable(tv_visit_theme, isMe && TextUtils.isEmpty(tv_visit_theme.getText()));
+            Log.i("gongpengming", "vp_id=" + vp_id);
         }
     }
 
+    private void setFocusable(FormEditText v, boolean focusable) {
+        if (focusable) {
+            v.setOnClickListener(this);
+            v.setKeyListener(null);
+        } else
+            v.setFocusable(focusable);
+
+    }
+
     private String getJSONString(JSONObject object, String key) {
         if (object.containsKey(key) && !StringUtils.isEmpty(object.getString(key))) {
             return object.getString(key);

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

@@ -199,7 +199,8 @@ public class DailydetailsActivity extends BaseActivity {
                 LogUtil.prinlnLongMsg("mCommonApprovalFlowBean", mCommonApprovalFlowBean.toString());
                 em_code = new String();
                 if (manager == null) manager = new DBManager(mContext);
-                if("已审核".equals(wd_status) && mCommonApprovalFlowBean.getData().size() == mCommonApprovalFlowBean.getNodes().size()){  // TODO 已审核直接从node里面取数据
+                if("已审核".equals(wd_status) && (mCommonApprovalFlowBean.getData().size() == 0 ||
+                mCommonApprovalFlowBean.getData().size() == mCommonApprovalFlowBean.getNodes().size())){  // TODO 已审核直接从node里面取数据
                     for (int i = 0; i <mCommonApprovalFlowBean.getNodes().size(); i++) {
                         //取名字
                         if (!TextUtils.isEmpty(mCommonApprovalFlowBean.getNodes().get(i).getJn_dealManName())){
@@ -358,7 +359,8 @@ public class DailydetailsActivity extends BaseActivity {
 
                         }
                     }
-                }else if ("已审核".equals(wd_status) && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()){
+                }else if ("已审核".equals(wd_status) && mCommonApprovalFlowBean.getData().size() != 0
+                        && mCommonApprovalFlowBean.getData().size() != mCommonApprovalFlowBean.getNodes().size()){
                     approval_flowlv.setVisibility(View.GONE);
                 }
                 Log.i("last_afpeople_names", "空"+afpeople_names.toString());

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

@@ -42,6 +42,7 @@ import com.xzjmyk.pm.activity.util.TimeUtils;
 import com.xzjmyk.pm.activity.view.ClearEditText;
 import com.xzjmyk.pm.activity.view.crouton.Style;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
@@ -52,9 +53,6 @@ public class DestinationActivity extends BaseActivity {
 
     @ViewInject(R.id.listView)
     private PullToRefreshListView listView;
-//    @ViewInject(R.id.search_edit)
-//    private EditText search_edit;
-
     private int pager = 1;
     private List<MissionModel> allList;//所有数据搜索
     private List<MissionModel> showList;//适配器数据
@@ -309,7 +307,7 @@ public class DestinationActivity extends BaseActivity {
                 holder.companyaddr_tv.setText(getNotNull(entity.getCompanyAddr()));
                 holder.visit_num_tv.setText("总拜访 " + entity.getVisitcount() + "次");
                 holder.last_time_tv.setText("上次拜访 " + getLastime(entity.getVisitTime()));
-                holder.long_tv.setText(BaiduMapUtil.getInstence().getDistance(entity.getLatLng()) + "m");
+                holder.long_tv.setText(getKm(BaiduMapUtil.getInstence().getDistance(entity.getLatLng())) + "km");
             }
             return view;
         }
@@ -338,6 +336,19 @@ public class DestinationActivity extends BaseActivity {
         }
     }
 
+    private String getKm(String dis) {
+        if (StringUtils.isEmpty(dis)) return String.valueOf(0);
+        try {
+            DecimalFormat fnum = new DecimalFormat("##0.00");
+            String dd = fnum.format(Float.valueOf(dis) / 1000);
+            return dd;
+        } catch (ClassCastException e) {
+            return String.valueOf(0);
+        } catch (Exception e) {
+            return String.valueOf(0);
+        }
+    }
+
     private String getNotNull(String str) {
         return StringUtils.isEmpty(str) ? "" : str;
     }

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

@@ -0,0 +1,15 @@
+package com.xzjmyk.pm.activity.ui.erp.activity.oa;
+
+import android.os.Bundle;
+import android.support.v7.app.AppCompatActivity;
+
+import com.xzjmyk.pm.activity.R;
+
+public class ErpActivity extends AppCompatActivity {
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_erp);
+    }
+}

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

@@ -32,6 +32,7 @@ import com.xzjmyk.pm.activity.ui.erp.util.ListUtils;
 import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
 import com.xzjmyk.pm.activity.util.BaiduMapUtil;
 
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -47,6 +48,7 @@ import java.util.List;
  * 1、title(标题String) 2、style(主题 int)
  * 3、latlng(对比距离的位置)   l 4、search(是否有搜索框 boolean)
  * 5、resultCode(返回码 int) 6、resultName(返回key String )
+ * 6、isKm(是否使用km距离计算 boolean)
  */
 public class LocationSearchActivity extends BaseActivity {
     @ViewInject(R.id.search_edit)
@@ -65,6 +67,7 @@ public class LocationSearchActivity extends BaseActivity {
     private String resultName = "resultName";//返回的参数名称
     private String keyWork;//返回的参数名称
     private int radius = 1000;
+    private boolean isKm = false;
 
 
     private List<PoiInfo> listData;  //周围地址主体;列表
@@ -118,6 +121,7 @@ public class LocationSearchActivity extends BaseActivity {
         if (!StringUtils.isEmpty(title))
             getSupportActionBar().setTitle(title);
         single = intent.getBooleanExtra("single", true);
+        isKm = intent.getBooleanExtra("isKm", false);
         search = intent.getBooleanExtra("search", false);
         resultCode = intent.getIntExtra("resultCode", 0x20);
         resultName = intent.getStringExtra("resultName");
@@ -164,7 +168,6 @@ public class LocationSearchActivity extends BaseActivity {
                     loadDataByNeer();
                 } else
                     loadDataByCity();
-
                 break;
             default:
                 break;
@@ -177,11 +180,14 @@ public class LocationSearchActivity extends BaseActivity {
         search_edit.addTextChangedListener(new EditChangeListener() {
             @Override
             public void afterTextChanged(Editable editable) {
-                if (editable == null || StringUtils.isEmpty(editable.toString())) return;
+                if (editable == null) return;
                 keyWork = editable.toString();
-                if (StringUtils.isEmpty(keyWork))
-                    loadDataByNeer();
-                else
+                if (StringUtils.isEmpty(keyWork)) {
+                    keyWork = getIntent().getStringExtra("keyWork");
+                    if (StringUtils.isEmpty(keyWork))
+                        loadDataByNeer();
+                    else search();
+                } else
                     search();
             }
         });
@@ -243,34 +249,28 @@ public class LocationSearchActivity extends BaseActivity {
         @Override
         public void result(SearchResult result) {
             if (result == null) {
-                Log.i("gongpengming", "返回为空");
-                listData = null;
+                listData.clear();
                 adapter.setListData(listData);
                 return;
             }
-            Log.i("gongpengming", "进来else ");
             PoiResult poiResult = (PoiResult) result;
             List<PoiInfo> chches = poiResult.getAllPoi();
             if (ListUtils.isEmpty(chches)) {
-                Log.i("gongpengming", "chches==nulll");
-                Log.i("gongpengming", "isChina=" + isChina);
                 if (isChina) {
                     isChina = false;
                     BaiduMapUtil.getInstence().searchByInput(keyWork, pageNum, listener);
                     return;
-                }
+                } else listData.clear();
             } else {
-                Log.i("gongpengming", "chches!!!!!!!!!!!!=nulll ");
                 BaiduMapUtil.getInstence().setMapViewPoint(bmapView, chches.get(0).location, true);
                 for (int i = 0; i < chches.size(); i++) {
-                    Log.i("gongpengming", "chches.get(i).name=" + chches.get(i).name);
                     if (StringUtils.isEmpty(chches.get(i).name) || StringUtils.isEmpty(chches.get(i).address)) {
                         chches.remove(i);
                         i--;
                     }
                 }
+                listData = chches;
             }
-            listData = chches;
             adapter.setListData(listData);
         }
     };
@@ -318,11 +318,33 @@ public class LocationSearchActivity extends BaseActivity {
             }
             holder.address_tv.setText(listData.get(i).address);
             holder.name_tv.setText(listData.get(i).name);
-            holder.distance_tv.setText(BaiduMapUtil.getInstence().
-                    getDistance(listData.get(i).location, companyLat) + " m");
+            holder.distance_tv.setText(getDistance(listData.get(i).location));
             return view;
         }
 
+        private String getDistance(LatLng location) {
+            String dis = BaiduMapUtil.getInstence().getDistance(location, companyLat);
+            if (StringUtils.isEmpty(dis)) return String.valueOf(0);
+            if (isKm) {
+                return getKm(dis) + " km";
+            } else {
+                return dis + " m";
+            }
+        }
+
+        private String getKm(String dis) {
+            if (StringUtils.isEmpty(dis)) return String.valueOf(0);
+            try {
+                DecimalFormat fnum = new DecimalFormat("##0.00");
+                String dd = fnum.format(Float.valueOf(dis) / 1000);
+                return dd;
+            } catch (ClassCastException e) {
+                return String.valueOf(0);
+            } catch (Exception e) {
+                return String.valueOf(0);
+            }
+        }
+
         class ViewHolder {
             TextView name_tv, address_tv, distance_tv;
         }

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

@@ -217,13 +217,13 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 intent.putExtra("title", "选择地址");
                 intent.putExtra("single", true);
                 intent.putExtra("resultCode", 0x20);
+                intent.putExtra("isKm", true);
                 intent.putExtra("resultName", "resultName");
                 startActivityForResult(intent, 0x21);
                 break;
             case R.id.item_delete_tv://删除选项
                 try {
                     MissionModel m = adapter.getModels().get(position);
-                    Log.i("gongpengming", "position1=" + position);
                     if (!StringUtils.isEmpty(m.getCompanyName()) || !StringUtils.isEmpty(m.getCompanyAddr()) ||
                             !StringUtils.isEmpty(m.getVisitTime())) {
                         AlertDialog.Builder builder = new AlertDialog.Builder(ct);
@@ -262,7 +262,7 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
                 });
                 break;
             case R.id.item_remark_tv:
-                String[] str = new String[]{"客户维护", "业务办理", "其它"};
+                String[] str = new String[]{"客情维护", "业务办理", "其它拜访"};
                 ArrayList<SelectBean> beans = new ArrayList<>();
                 SelectBean bean = null;
                 for (String e : str) {
@@ -347,6 +347,12 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
     }
 
 
+    /**
+     *
+     * @param name
+     * @param dis
+     * @update by 2017/1/11
+     */
     private void setEndTime(String name, final double dis) {
         BaiduMapUtil.getInstence().getDrivingRoute(MyApplication.getInstance().
                 getBdLocationHelper().getCityName(), MyApplication.getInstance().
@@ -378,9 +384,14 @@ public class MissionActivity extends BaseActivity implements View.OnClickListene
 
     /**
      * @param time 秒
+     * @update by 2017/1/11
      */
     private void setVoisitTime(long time) {
+        //TODO 修改通过经纬度获取地址,在通过地址获取路线
         String realTime = TimeUtils.f_long_2_str(System.currentTimeMillis() + (time * 1000));
+
+
+
         adapter.getModels().get(position).setVisitTime(realTime);
         adapter.notifyItemChanged(position);
     }

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

@@ -297,15 +297,15 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
             if (data == null) return;
             Employees entity = data.getParcelableExtra("data");
             if (entity == null) return;
-            //TODO 选择下属后返回
             String otherName = entity.getEm_name();
             if (!StringUtils.isEmpty(otherName)) {
                 JSONArray array = new JSONArray();
                 for (int i = 0; i < otherArray.size(); i++) {
                     JSONObject object = otherArray.getJSONObject(i);
-                    String name = "," + (object.containsKey("handler") ? object.getString("handler") :
-                            (object.containsKey("recordman") ? object.getString("recordman") :
-                                    (object.containsKey("visitman") ? object.getString("visitman") : ""))) + ",";
+                    String name = "," + getString(object, "handler") +
+                            getString(object, "recordman") +
+                            getString(object, "visitman") +
+                            getString(object, "mp_recorder") + ",";
                     if (StringUtils.isEmpty(otherName)//没有选择下属
                             || getIsDecorat(name, "," + otherName + ",")) {
                         array.add(object);
@@ -392,15 +392,28 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
                     intent.putExtra("data", object.toString());
                     startActivityForResult(intent, isMe ? 0x20 : 0x21);
                 } else if (adapter.isOutplan(object)) {
-                    //TODO 发布版本关闭
+                    String status = adapter.getJSONString(object, "mpd_status");
                     String actdate = adapter.getJSONString(object, "mpd_actdate");
                     String outdate = adapter.getJSONString(object, "mpd_outdate");
-                    if (StringUtils.isEmpty(actdate) || StringUtils.isEmpty(outdate)) return;
-                    intent = new Intent(activity, VisitReportAddActivity.class);
-                    intent.putExtra("type", 3);
-                    intent.putExtra("isMe", isMe);//可以提交拜访报告
-                    intent.putExtra("data", object.toString());
-                    startActivityForResult(intent, isMe ? 0x20 : 0x21);
+                    //TODO 根据状态判断是否可以对外勤计划进行录入
+                    if ("已完成".equals(status)) {
+                        intent = new Intent(activity, VisitReportAddActivity.class);
+                        intent.putExtra("type", 3);
+                        intent.putExtra("isMe", false);//可以提交拜访报告
+                        intent.putExtra("data", object.toString());
+                        startActivityForResult(intent, isMe ? 0x20 : 0x21);
+                    } else {
+                        if (StringUtils.isEmpty(actdate) || StringUtils.isEmpty(outdate)) {
+                            if (isMe)
+                                Crouton.makeText(ct, "外勤计划尚未完成");
+                            return;
+                        }
+                        intent = new Intent(activity, VisitReportAddActivity.class);
+                        intent.putExtra("type", 3);
+                        intent.putExtra("isMe", isMe);//可以提交拜访报告
+                        intent.putExtra("data", object.toString());
+                        startActivityForResult(intent, isMe ? 0x20 : 0x21);
+                    }
                 }
             }
         });
@@ -602,24 +615,15 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         String time = null;
         for (int i = 0; i < array.size(); i++) {
             object = array.getJSONObject(i);
-            time = (object.containsKey("startdate") &&
-                    !StringUtils.isEmpty(object.getString("startdate"))) ?
-                    object.getString("startdate") :
-                    ((object.containsKey("vr_visittime") &&
-                            !StringUtils.isEmpty(object.getString("vr_visittime")))
-                            ? object.getString("vr_visittime") : ((object.containsKey("mpd_arrivedate") &&
-                            !StringUtils.isEmpty(object.getString("mpd_arrivedate"))) ? object.getString("mpd_arrivedate") : ""));
+            time = getTimeForObject(object);
+            if (adapter.isOutplan(object) && !StringUtils.isEmpty(adapter.getJSONString(object, "mpd_status")) && "已完成".equals(adapter.getJSONString(object, "mpd_status")))
+                continue;
             if (!StringUtils.isEmpty(time) && getIsDecorat(time, TimeUtils.s_format.format(curDate))) {//该时间为选择时间
                 //判断是否为该下属
                 chche.add(object);
                 size++;
-                if (!object.containsKey("status") ||
-                        (object.containsKey("status") &&
-                                !StringUtils.isEmpty(object.getString("status")) &&
-                                "已拜访".equals(object.getString("status")) ||
-                                "已完成".equals(object.getString("status")))) {
+                if (isTaskOk(object))
                     ok++;
-                }
             }
         }
         if (chche.size() <= 0) {
@@ -636,6 +640,42 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
     }
 
 
+    /**
+     * 通过JSONObject获取开始时间,用于筛选
+     *
+     * @param object
+     * @return
+     */
+    private String getTimeForObject(JSONObject object) {
+        return (object.containsKey("startdate") &&
+                !StringUtils.isEmpty(object.getString("startdate"))) ?
+                object.getString("startdate") :
+                ((object.containsKey("vr_visittime") &&
+                        !StringUtils.isEmpty(object.getString("vr_visittime")))
+                        ? object.getString("vr_visittime") : ((object.containsKey("mpd_arrivedate") &&
+                        !StringUtils.isEmpty(object.getString("mpd_arrivedate"))) ? object.getString("mpd_arrivedate")
+                        : ""));
+    }
+
+    /**
+     * 用于判断该任务是否已经完成
+     *
+     * @param object
+     * @return
+     */
+    private boolean isTaskOk(JSONObject object) {
+        if (!object.containsKey("status") || StringUtils.isEmpty(object.getString("status"))) {
+            String actdate = object.getString("mpd_actdate");
+            String outdate = object.getString("mpd_outdate");
+            if ((adapter != null && adapter.isVisitRecord(object)) ||
+                    (!StringUtils.isEmpty(actdate) && !StringUtils.isEmpty(outdate))) return true;
+            else return false;
+        } else if ("已拜访".equals(object.getString("status")) || "已完成".equals(object.getString("status")))
+            return true;
+        return false;
+    }
+
+
     //弹出菜单
     private PopupWindow popupWindow = null;
 
@@ -950,6 +990,10 @@ public class OAActivity extends BaseActivity implements View.OnClickListener, Wo
         return super.dispatchTouchEvent(ev);
     }
 
+    private String getString(JSONObject object, String key) {
+        return object == null ? "" : (object.containsKey(key) ? object.getString(key) : "");
+    }
+
     public interface OnTaskChangeListener {
         void onChange(Set<Integer> in);
     }

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

@@ -236,7 +236,6 @@ public class MissionAdapter extends RecyclerView.Adapter<MissionAdapter.BaseView
         } catch (Exception e) {
             return String.valueOf(0);
         }
-
     }
 
     public interface OnitemClickListener {

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

@@ -152,13 +152,14 @@ public class OAListAdapter extends BaseAdapter {
         } else if (isOutplan(object)) {
             holder.addr_time_tv.setCompoundDrawables(null, null, null, null);
             holder.title_tv.setText(getJSONString(object, "mpd_address"));
-            holder.name_remak_tv.setText(getJSONString(object, "mpd_company"));
+            String title = getJSONString(object, "mpd_company") + "   " + getJSONString(object, "mpd_remark");
+            holder.name_remak_tv.setText(title);
             String actdate = getJSONString(object, "mpd_actdate");
             String outdate = getJSONString(object, "mpd_outdate");
-            holder.addr_time_tv.setText(actdate);//实际到达时间
+            holder.object_tv.setText("");//实际到达时间
             if (!isMe)
-                holder.object_tv.setText(getJSONString(object, "mp_recorder"));//实际离开时间
-            else holder.object_tv.setText("");
+                holder.addr_time_tv.setText(getJSONString(object, "mp_recorder"));//显示人员
+            else holder.addr_time_tv.setText("");//实际离开时间
             //当天未完成的不显示任何图标,状态为未完成,超过拜访时间,即第二天0点,添加图标 未完成。
             holder.status_tv.setText("");
             if (isMoreToday) {

+ 4 - 5
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/net/HttpUtil.java

@@ -107,11 +107,10 @@ public class HttpUtil {
             if (params != null && !params.isEmpty()) {
                 Set<Entry<String, Object>> entrys = params.entrySet();
                 for (Map.Entry<String, Object> entry : entrys) {
-                    nvps.add(new BasicNameValuePair(entry.getKey(),
-                            URLDecoder.decode(
-                                    entry.getValue().toString()
-                                    , "utf-8")
-                    ));
+                    if (entry.getValue() != null)
+                        nvps.add(new BasicNameValuePair(entry.getKey(), URLDecoder.decode(entry.getValue().toString(), "utf-8")));
+                    else
+                        nvps.add(new BasicNameValuePair(entry.getKey(), URLDecoder.decode("", "utf-8")));
                 }
             }
             httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));

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

@@ -190,7 +190,7 @@ public class ViewUtil {
                 crouton.show();
             }
         } else {
-            if(cont!=null) {
+            if (cont != null) {
                 Toast.makeText(cont, msg, Toast.LENGTH_SHORT).show();
             }
         }
@@ -811,6 +811,8 @@ public class ViewUtil {
                 response = HttpUtil.sendPostRequest(url, params, headers, false);
             }
         } catch (Exception e) {
+            if (e != null)
+                Log.i("gongpengming", "httpSendTask Exception=" + e.getMessage());
             e.printStackTrace();
         }
         return response;

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

@@ -118,6 +118,8 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
         Map<String, Object> param = new HashMap<>();
         Map<String, Object> form = new HashMap<>();
         form.put("cl_code", code);
+        if (StringUtils.isEmpty(address))
+            address = PreferenceUtils.getString("bdaddress");
         form.put("cl_address", address);
         form.put("cl_phone", MyApplication.getInstance().mLoginUser.getTelephone());
         form.put("cl_emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username"));
@@ -126,6 +128,8 @@ public class WorkPresenter implements HttpHandler.OnResultListener, IWorkPresent
             emname = MyApplication.getInstance().mLoginUser.getNickName().trim();
         }
         form.put("cl_emname", emname);
+        if (StringUtils.isEmpty(loaction))
+            loaction = PreferenceUtils.getString("bdlocation");
         form.put("cl_location", loaction);
         form.put("cl_distance", distance);
         String formStore = StringUtils.mapToJson(form);

+ 8 - 0
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpService.java

@@ -17,6 +17,7 @@ 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.db.dao.WorkModelDao;
+import com.xzjmyk.pm.activity.ui.MainActivity;
 import com.xzjmyk.pm.activity.ui.erp.activity.oa.WorkActivity;
 import com.xzjmyk.pm.activity.ui.erp.entity.ErrorEntity;
 import com.xzjmyk.pm.activity.ui.erp.model.MissionModel;
@@ -32,6 +33,8 @@ import com.xzjmyk.pm.activity.util.TimeUtils;
 
 import java.util.List;
 
+import basepedo.service.StepService;
+
 /**
  * 自动Erp服务,开启线程
  */
@@ -134,6 +137,11 @@ public class AutoErpService extends Service {
             } catch (Exception e) {
                 if (e != null) log("BroadcastReceiver Exception=" + e.getMessage());
             }
+
+            if (PreferenceUtils.getInt(MyApplication.getInstance(), MainActivity.UU_STEP) == 1 && intent.getAction().equals("uu.step.destory")){
+                Intent i = new Intent(context, StepService.class);
+                context.startService(i);
+            }
         }
     };
 

+ 9 - 3
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/util/attendance/AutoErpSigninUitl.java

@@ -130,14 +130,17 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
                 param, bundle, this);
     }
 
-
     //签到
     private void signinWork(Bundle bunder, String code) {
         Context ct = MyApplication.getInstance();
         Map<String, Object> param = new HashMap<>();
         Map<String, Object> form = new HashMap<>();
         form.put("cl_code", code);
-        form.put("cl_phone", MyApplication.getInstance().mLoginUser.getTelephone());
+        String phone = MyApplication.getInstance().mLoginUser.getTelephone();
+        if (StringUtils.isEmpty(phone)) {
+            phone = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "user_phone", "");
+        }
+        form.put("cl_phone", phone);
         form.put("cl_emcode", getSharedPreferences(ct, "erp_username"));
         String emname = getSharedPreferences(ct, "erp_emname");
         if (StringUtils.isEmpty(emname)) {
@@ -162,7 +165,10 @@ public class AutoErpSigninUitl implements HttpHandler.OnResultListener {
         try {
             //判断是否符合打卡
             BdLocationHelper helper = MyApplication.getInstance().getBdLocationHelper();
-            form.put("cl_address", helper.getAddress());
+            String address = helper.getAddress();
+            if (StringUtils.isEmpty(address))
+                address = PreferenceUtils.getString("bdaddress");
+            form.put("cl_address", address);
             form.put("cl_location", "android自动打卡记录");
             int comDistance = PreferenceUtils.getInt("distance", 0);
             float distance = BaiduMapUtil.getInstence().getDistance();

+ 0 - 27
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/MonthView.java

@@ -1,27 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.view.oacalender;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-
-/**
- * Created by Bitliker on 2017/1/6.
- */
-
-public class MonthView extends View {
-    public MonthView(Context context) {
-        this(context,null);
-    }
-
-    public MonthView(Context context, AttributeSet attrs) {
-        this(context, attrs,0);
-    }
-
-    public MonthView(Context context, AttributeSet attrs, int defStyleAttr) {
-        super(context, attrs, defStyleAttr);
-    }
-
-
-
-
-}

+ 0 - 437
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/OACalendarView.java

@@ -1,437 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.view.oacalender;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Color;
-import android.graphics.Paint;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-import android.view.View;
-
-import com.xzjmyk.pm.activity.ui.erp.util.StringUtils;
-import com.xzjmyk.pm.activity.util.DisplayUtil;
-
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-
-/**
- * Created by pengminggong on 2016/9/20.
- */
-public class OACalendarView extends View implements View.OnTouchListener {
-    //日期记录
-    private Date curDate; // 当前日历显示的月
-    private Date today; // 今天的日期
-    private Date downDate; // 手指按下状态时临时日期
-    //索引
-    private String yeasMonth = "";//年月  yyyymm
-    private int todayIndex; // 今天的索引
-    private int downIndex; // 按下的格子索引
-    private int startIndex; // 开始的格子索引(当月)
-    private int endIndex; // 开始的格子索引(当月)
-    //装饰物 decorat
-    private String decoratDays;
-    private int maxDay;//当月有多少天
-
-
-    private Calendar calendar;
-    private Surface surface;
-    private int[] date; // 日历显示格子数目
-
-    public OACalendarView(Context context) {
-        this(context, null);
-    }
-
-    public OACalendarView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-        surface = new Surface();
-        curDate = today = new Date();
-        calendar = Calendar.getInstance();
-        calendar.setTime(curDate);
-        todayIndex = calendar.get(Calendar.DAY_OF_MONTH);
-        setBackgroundColor(surface.bgColor);
-        surface.density = getResources().getDisplayMetrics().density;
-        //计算格子数
-        calendar.set(Calendar.DAY_OF_MONTH, 1);//设置为当月第一天
-        startIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1;//获取第一天在当周的星期几,返回多1,所以减1
-        maxDay = calendar.getActualMaximum(Calendar.DATE);//获取当月有多少天
-        //如果从星期日开始作为第一天
-        date = new int[maxDay + startIndex];
-        //如果从星期一作为开始第一天         date = new int[daysCountOfMonth + dayInWeek-1];
-        endIndex = date.length - 1;
-        todayIndex += startIndex - 1;
-        for (int i = startIndex, j = 1; i < date.length; i++, j++) {
-            date[i] = j;
-        }
-        downIndex = todayIndex;
-        setOnTouchListener(this);
-    }
-
-
-    private void setCalendar(Date d) {
-        curDate = today = d;
-        calendar.setTime(curDate);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);//设置为当月第一天
-        startIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1;//获取第一天在当周的星期几,返回多1,所以减1
-        maxDay = calendar.getActualMaximum(Calendar.DATE);//获取当月有多少天
-
-        //如果从星期日开始作为第一天
-        date = new int[maxDay + startIndex];
-        endIndex = date.length - 1;
-        for (int i = startIndex, j = 1; i < date.length; i++, j++) {
-            date[i] = j;
-        }
-        if (isThisMonth())
-            downIndex = todayIndex;
-        else
-            downIndex = startIndex;
-        surface.init();
-    }
-
-    /**
-     * 它有三种模式:计算视图大小
-     * UNSPECIFIED(未指定),父元素不对子元素施加任何束缚,子元素可以得到任意想要的大小;(具体值)
-     * EXACTLY(完全),父元素决定子元素的确切大小,子元素将被限定在给定的边界里而忽略它本身大小;(match_parent)
-     * AT_MOST(至多),子元素至多达到指定大小的值。(wrap_parent)
-     */
-    @Override
-    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
-        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
-        int heightMode = MeasureSpec.getMode(heightMeasureSpec);
-        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
-        int heightSize = MeasureSpec.getSize(heightMeasureSpec);
-        switch (widthMode) {
-            case MeasureSpec.UNSPECIFIED:
-                surface.width = widthSize;
-                break;
-            case MeasureSpec.EXACTLY:
-                surface.width = getResources().getDisplayMetrics().widthPixels;
-                break;
-            case MeasureSpec.AT_MOST:
-                surface.width = getResources().getDisplayMetrics().widthPixels;
-                break;
-        }
-        switch (heightMode) {
-            case MeasureSpec.UNSPECIFIED:
-                surface.height = heightSize;
-                break;
-            case MeasureSpec.EXACTLY:
-                surface.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);
-                break;
-            case MeasureSpec.AT_MOST:
-                surface.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);
-                break;
-        }
-        widthMeasureSpec = MeasureSpec.makeMeasureSpec(surface.width, widthMode);
-        heightMeasureSpec = MeasureSpec.makeMeasureSpec(surface.height, heightMode);
-        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
-        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-//        surface.width = getResources().getDisplayMetrics().widthPixels;
-//        surface.height = (getResources().getDisplayMetrics().heightPixels * 1 / 3);
-//        widthMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.width, View.MeasureSpec.EXACTLY);
-//        heightMeasureSpec = View.MeasureSpec.makeMeasureSpec(surface.height, View.MeasureSpec.EXACTLY);
-//        setMeasuredDimension(widthMeasureSpec, heightMeasureSpec);
-//        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
-    }
-
-    @Override
-    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        if (changed) {
-            surface.init();
-        }
-        super.onLayout(changed, left, top, right, bottom);
-    }
-
-    float x;
-    float y;
-
-    @Override
-    public boolean onTouch(View view, MotionEvent event) {
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_DOWN:
-                x = event.getX();
-                y = event.getY();
-                break;
-            case MotionEvent.ACTION_MOVE:
-                break;
-            case MotionEvent.ACTION_UP:
-                if (Math.abs(event.getX() - x) < 10 && Math.abs(event.getY() - y) < 10) {//为点击事件
-                    if (setReckon()) {
-                        if (dateListener != null)
-                            this.dateListener.result(downDate);
-                        invalidate();
-                    }
-                } else {
-                    return true;
-                }
-                break;
-        }
-        return true;
-    }
-
-    @Override
-    protected void onDraw(Canvas canvas) {
-        super.onDraw(canvas);
-        //画星期
-        drawWeek(canvas);
-        //画背景
-        drawSelect(canvas);
-        //画日期
-        drawDay(canvas);
-    }
-
-    //绘画点击的内容
-    private void drawSelect(Canvas canvas) {
-        if (downIndex >= startIndex && downIndex <= endIndex) {
-            //圆的最中心
-            float cellY = surface.weekHeight + surface.cellHeight * (downIndex / 7) + surface.cellHeight / 2;
-            float cellX = surface.cellWidth * (downIndex % 7) + surface.cellWidth / 2;
-//            float radius = Math.min(surface.cellHeight, surface.cellWidth) * surface.downScale;
-            canvas.drawCircle(cellX, cellY, surface.downTaxtSize, surface.selectPaint);
-        }
-    }
-
-    //画日期
-    private void drawDay(Canvas canvas) {
-        String chche = "";
-        //画上个月日期
-        calendar.setTime(curDate);
-        calendar.add(Calendar.MONTH, -1);
-        int startItem = calendar.getActualMaximum(Calendar.DATE) - startIndex + 1;//获取当月有多少天
-        calendar.set(Calendar.DAY_OF_MONTH, startItem);
-        //使文字垂直居中
-        Paint.FontMetrics fontMetrics = surface.hineDatePaint.getFontMetrics();
-        float fontHeight = fontMetrics.bottom - fontMetrics.top;
-//        float dayTextY = surface.weekHeight +(surface.cellHeight +surface.dateTaxtSize) / 2;
-        float dayTextY = surface.weekHeight + (surface.cellHeight + fontHeight) / 2 - fontMetrics.bottom;
-
-        for (int i = 0; i < startIndex; i++) {
-            float dayTextX = i * surface.cellWidth + (surface.cellWidth - surface.hineDatePaint.measureText("今")) / 2f;
-            canvas.drawText(calendar.get(Calendar.DAY_OF_MONTH) + "", dayTextX, dayTextY, surface.hineDatePaint);
-            calendar.add(Calendar.DAY_OF_MONTH, 1);
-        }
-        //画当月
-        for (int i = startIndex; i < date.length; i++) {
-            int item = i % surface.weekText.length;
-            if (i != 0 && item == 0) {
-                dayTextY += surface.cellHeight;
-            }
-            if (todayIndex == i && isThisMonth()) {
-                chche = "今";
-                surface.datePaint.setColor(surface.todayColor);
-            } else {
-                chche = String.valueOf(date[i]);
-                surface.datePaint.setColor(surface.dateColor);
-            }
-            if (downIndex == i) {
-                surface.datePaint.setColor(surface.selectColor);
-            }
-            float dayTextX = surface.cellWidth * (i % surface.weekText.length) +
-                    (surface.cellWidth - surface.datePaint.measureText(chche)) / 2f;
-            canvas.drawText(chche, dayTextX, dayTextY, surface.datePaint);
-            //画装饰物
-            int day = (i - startIndex + 1);
-            if (!StringUtils.isEmpty(decoratDays) && getIsDecorat(day)) {
-                drawDecorat(canvas, i, surface.decorPaint);
-            }
-        }
-        //画下个月日期
-        calendar.setTime(curDate);
-        calendar.add(Calendar.MONTH, 1);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);
-        int next = date.length % 7 == 0 ? 0 : (date.length + (7 - date.length % 7));
-        for (int i = date.length; i < next; i++) {
-            float dayTextX = surface.cellWidth * (i % surface.weekText.length) + (surface.cellWidth - surface.datePaint.measureText("今")) / 2f;
-            canvas.drawText(calendar.get(Calendar.DAY_OF_MONTH) + "", dayTextX, dayTextY, surface.hineDatePaint);
-            calendar.add(Calendar.DAY_OF_MONTH, 1);
-        }
-    }
-
-    /*判断*/
-    private boolean getIsDecorat(int day) {
-        Pattern p = Pattern.compile("," + day + ",");//遍历对象
-        Matcher m = p.matcher(decoratDays);//遍历源
-        return m.find();
-    }
-
-    /*判断是否是当月*/
-    public boolean isThisMonth() {
-        calendar.setTime(curDate);
-        int month = calendar.get(Calendar.MONTH);
-        int year = calendar.get(Calendar.YEAR);
-        calendar.setTime(new Date());
-        if (year != calendar.get(Calendar.YEAR))
-            return false;
-        if (month != calendar.get(Calendar.MONTH))
-            return false;
-        return true;
-    }
-    /*end 判断*/
-
-    /**
-     * 绘画装饰物
-     *
-     * @param index      date索引
-     * @param decorPaint 画笔
-     */
-    private void drawDecorat(Canvas canvas, int index, Paint decorPaint) {
-        //圆的最中心
-        float cellY = surface.weekHeight + surface.cellHeight * (index / 7) + surface.cellHeight / 2;
-        float cellX = surface.cellWidth * (index % 7) + surface.cellWidth / 2;
-//        float radius = Math.min(surface.cellWidth, surface.weekHeight) * surface.downScale;
-        canvas.drawCircle(cellX, cellY, surface.downTaxtSize, decorPaint);
-    }
-
-    //画星期
-    private void drawWeek(Canvas canvas) {
-        //1.星期的Y抽位置,星期字体为星期框高度的一半,所以在3/4的位置开始绘画
-        float weekTextY = surface.weekHeight - (surface.weekHeight - surface.weekTaxtSize) / 2;
-        for (int i = 0; i < surface.weekText.length; i++) {
-            //Paint.measureText  获取该字的宽度值
-            float weekTextX = surface.cellWidth * i + (surface.cellWidth - surface.weekPaint.measureText(surface.weekText[i])) / 2f;
-            canvas.drawText(surface.weekText[i], weekTextX, weekTextY, surface.weekPaint);
-        }
-    }
-
-    /*计算判断的点击的索引*/
-    private boolean setReckon() {
-        int indexX = (int) Math.floor(x / surface.cellWidth);
-        int indexY = (int) Math.floor((y - surface.weekHeight) / surface.cellHeight);
-        downIndex = indexY * 7 + indexX;
-        if (downIndex < startIndex || downIndex > endIndex) return false;//当点击的是非本月的日期时候
-        calendar.setTime(curDate);
-        calendar.set(Calendar.DAY_OF_MONTH, date[downIndex]);
-        downDate = calendar.getTime();
-        return true;
-    }
-
-    public Date getCurDate() {
-        return curDate;
-    }
-
-    /*设置月份*/
-    public void setCurDate(Date date) {
-        curDate = date;
-        calendar.setTime(curDate);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);
-        startIndex = calendar.get(Calendar.DAY_OF_WEEK) - 1;//获取第一天在当周的星期几,返回多1,所以减1
-        maxDay = calendar.getActualMaximum(Calendar.DATE);//获取当月有多少天
-        //如果从星期日开始作为第一天
-        this.date = new int[maxDay + startIndex];
-        endIndex = this.date.length - 1;
-        for (int i = startIndex, j = 1; i < this.date.length; i++, j++) {
-            this.date[i] = j;
-        }
-        if (isThisMonth())
-            downIndex = todayIndex;
-        else
-            downIndex = startIndex;
-        surface.init();
-        invalidate();
-    }
-
-    /*设置为上个月*/
-    private void setNextMonth() {
-        calendar.setTime(curDate);
-        calendar.add(Calendar.MONTH, 1);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);
-        setCalendar(calendar.getTime());
-    }
-
-    /*设置为下个月*/
-    private void setLastMonth() {
-        calendar.setTime(curDate);
-        calendar.add(Calendar.MONTH, -1);
-        calendar.set(Calendar.DAY_OF_MONTH, 1);
-        setCalendar(calendar.getTime());
-    }
-
-    public void setDecoratDays(Set<Integer> decoratDays) {
-        this.decoratDays = "";
-        StringBuilder builder = new StringBuilder();
-        builder.append(",");
-        for (Integer e : decoratDays) {
-            builder.append(e + ",");
-        }
-        this.decoratDays = builder.toString();
-        invalidate();
-    }
-
-    private class Surface {
-        private float density;//手机屏幕密度
-        private int width;//整个控件宽度
-        private int height;   //整个控件高度
-        private float weekHeight;//周的方框高度
-        private float cellWidth; // 日期方框宽度
-        private float cellHeight; // 日期方框高度
-        private int bgColor = 0xEBE9E9;
-        private int weekColor = Color.BLACK;//周视图的画笔颜色
-        private int dateColor = Color.BLACK;//月视图的画笔颜色x
-        private int selectColor = Color.WHITE;//选择中的画笔颜色
-        private int selectBgColor = Color.RED;//选择中的画笔颜色
-        private int todayColor = Color.RED;//选择中的画笔颜色
-        private int decorColor = Color.RED;//装饰画笔颜色
-        private int hineDateColor = Color.parseColor("#BFD3D3D3");//装饰画笔颜色
-
-        private Paint weekPaint;//周视图的画笔
-        private Paint datePaint;//月视图的画笔
-        private Paint selectPaint;//选择中的画笔
-        private Paint decorPaint;//装饰画笔
-        private Paint hineDatePaint;//非本月日期
-
-        private float weekTaxtSize = 55f;
-        private float dateTaxtSize = 55f;
-        private float downTaxtSize;
-        private String[] weekText = {"日", "一", "二", "三", "四", "五", "六"};
-
-        private void init() {
-            dateTaxtSize = weekTaxtSize = DisplayUtil.dip2px(getContext(), 18);
-            downTaxtSize = (dateTaxtSize + DisplayUtil.dip2px(getContext(), 10)) / 2;
-            //计算周框的高度 1.获取日期共多少行
-            int dateRowNum = date.length / 7 + (date.length % 7 > 0 ? 1 : 0);
-            cellHeight = weekHeight = height / (dateRowNum + 1);
-            cellWidth = width / 7f;
-            selectPaint = new Paint();//选择中的画笔
-            selectPaint.setColor(selectBgColor);
-            selectPaint.setAntiAlias(true);
-            decorPaint = new Paint();//装饰画笔
-            decorPaint.setColor(decorColor);
-            decorPaint.setStyle(Paint.Style.STROKE);
-            decorPaint.setStrokeWidth(3);
-            decorPaint.setAntiAlias(true);
-            weekPaint = new Paint();//周视图的画笔
-            weekPaint.setColor(weekColor);
-            weekPaint.setAntiAlias(true);
-            weekPaint.setTextSize(weekTaxtSize);
-
-            datePaint = new Paint();//日期视图的画笔
-            datePaint.setColor(dateColor);
-            datePaint.setAntiAlias(true);
-            datePaint.setTextSize(dateTaxtSize);
-
-            hineDatePaint = new Paint();//日期视图的画笔
-            hineDatePaint.setColor(hineDateColor);
-            hineDatePaint.setAntiAlias(true);
-            hineDatePaint.setTextSize(dateTaxtSize);
-        }
-    }
-
-    // 接口管理
-    public void setDateListener(OnSelectDateListener dateListener) {
-        this.dateListener = dateListener;
-    }
-
-    private OnSelectDateListener dateListener;
-
-    public interface OnSelectDateListener {
-        /**
-         * @param date 日期对象
-         */
-        void result(Date date);
-    }
-
-}

+ 0 - 37
WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/view/oacalender/Surface.java

@@ -1,37 +0,0 @@
-package com.xzjmyk.pm.activity.ui.erp.view.oacalender;
-
-import android.graphics.Color;
-import android.graphics.Paint;
-
-/**
- * Created by Bitliker on 2017/1/6.
- */
-
-public class Surface {
-
-    private int width;//整个控件宽度
-    private int height;   //整个控件高度
-
-    private float weekHeight;//周的方框高度
-    private float cellWidth; // 日期方框宽度
-    private float cellHeight; // 日期方框高度
-    private int bgColor = 0xEBE9E9;
-    private int weekColor = Color.BLACK;//周视图的画笔颜色
-    private int dateColor = Color.BLACK;//月视图的画笔颜色x
-    private int selectColor = Color.WHITE;//选择中的画笔颜色
-    private int selectBgColor = Color.RED;//选择中的画笔颜色
-    private int todayColor = Color.RED;//选择中的画笔颜色
-    private int decorColor = Color.RED;//装饰画笔颜色
-    private int hineDateColor = Color.parseColor("#BFD3D3D3");//装饰画笔颜色
-
-    private Paint weekPaint;//周视图的画笔
-    private Paint datePaint;//月视图的画笔
-    private Paint selectPaint;//选择中的画笔
-    private Paint decorPaint;//装饰画笔
-    private Paint hineDatePaint;//非本月日期
-
-    private float weekTaxtSize = 55f;
-    private float dateTaxtSize = 55f;
-    private float downTaxtSize;
-    private String[] weekText = {"日", "一", "二", "三", "四", "五", "六"};
-}

+ 16 - 2
WeiChat/src/main/java/com/xzjmyk/pm/activity/util/PreferenceUtils.java

@@ -30,9 +30,11 @@ public class PreferenceUtils {
     public static boolean getBoolean(Context context, String key) {
         return getBoolean(context, key, false);
     }
-    public static boolean getBoolean( String key,boolean vaule) {
+
+    public static boolean getBoolean(String key, boolean vaule) {
         return getBoolean(MyApplication.getInstance(), key, vaule);
     }
+
     /**
      * 获得boolean类型的信息
      *
@@ -78,6 +80,13 @@ public class PreferenceUtils {
         edit.commit();
     }
 
+    public static void putString(String key, String value) {
+        SharedPreferences sp = getPreferences(MyApplication.getInstance());
+        Editor edit = sp.edit();
+        edit.putString(key, value);//去定义一个常量
+        edit.commit();
+    }
+
     public static String getString(Context context, String key, String defValue) {
         SharedPreferences sp = getPreferences(context);
         return sp.getString(key, defValue);
@@ -88,6 +97,10 @@ public class PreferenceUtils {
         return getString(context, key, null);
     }
 
+    public static String getString(String key) {
+        return getString(MyApplication.getInstance(), key, "");
+    }
+
     /**
      * 存储int型数据
      *
@@ -111,9 +124,10 @@ public class PreferenceUtils {
         return getInt(context, key, -1);
     }
 
-    public static int getInt(  String key,int value) {
+    public static int getInt(String key, int value) {
         return getInt(MyApplication.getInstance(), key, value);
     }
+
     /**
      * 存储long型数据
      *

+ 8 - 0
WeiChat/src/main/res/drawable/selector_oa_itembg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:drawable="@color/me_menu_item_press" android:state_checked="true" />
+    <item android:drawable="@color/me_menu_item_press" android:state_pressed="true" />
+    <item android:drawable="@color/me_menu_item_press" android:state_selected="true" />
+
+    <item android:drawable="@color/oa_bg" />
+</selector>

+ 177 - 0
WeiChat/src/main/res/layout/activity_erp.xml

@@ -0,0 +1,177 @@
+<?xml version="1.0" encoding="utf-8"?>
+<com.handmark.pulltorefresh.library.PullToRefreshScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/pullrefresh_sv"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#EBE9E9"
+    android:fillViewport="true"
+    android:focusableInTouchMode="true">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:focusableInTouchMode="true"
+        android:orientation="vertical">
+
+        <LinearLayout
+            android:id="@+id/oamain_head_menu_ll"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:focusable="true"
+            android:focusableInTouchMode="true"
+            android:orientation="vertical">
+            <!--头布局-->
+            <LinearLayout
+                android:id="@+id/oa_rl_choose"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_below="@+id/toobar"
+                android:background="#6A6A6A"
+                android:orientation="vertical"
+                android:paddingTop="10dp">
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:paddingBottom="10dp">
+
+                    <TextView
+                        android:id="@+id/work_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_1"
+                        android:gravity="center"
+                        android:text="打卡签到"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:id="@+id/mission_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_2"
+                        android:gravity="center"
+                        android:text="外勤签到"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:id="@+id/worklog_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_4"
+                        android:gravity="center"
+                        android:text="工作日报"
+                        android:textColor="@color/white" />
+
+                    <LinearLayout
+                        android:id="@+id/oamain_more_menu_ll"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:orientation="vertical">
+
+                        <ImageView
+                            android:id="@+id/oamain_more_menu_iv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:gravity="center"
+                            android:src="@drawable/ic_oa_more" />
+
+                        <TextView
+                            android:id="@+id/more_menu_tv"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:layout_marginTop="5dp"
+                            android:gravity="center"
+                            android:text="更多"
+                            android:textColor="@color/white" />
+                    </LinearLayout>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="horizontal"
+                    android:paddingBottom="10dp">
+
+
+                    <!--<TextView
+                        android:id="@+id/stroke"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_6"
+                        android:gravity="center"
+                        android:text="我的行程"
+                        android:textColor="@color/white" />-->
+
+
+                    <TextView
+                        android:id="@+id/meeting"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_3"
+                        android:gravity="center"
+                        android:text="会议管理"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:id="@+id/erp"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_5"
+                        android:gravity="center"
+                        android:text="请假申请"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:id="@+id/outtask"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_chuchai"
+                        android:gravity="center"
+                        android:text="出差申请"
+                        android:textColor="@color/white" />
+
+                    <TextView
+                        android:id="@+id/oamain_overtime_apply_tv"
+                        android:layout_width="0dp"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="2dp"
+                        android:layout_weight="1"
+                        android:drawablePadding="@dimen/drawable_padding"
+                        android:drawableTop="@drawable/oa_jiaban"
+                        android:gravity="center"
+                        android:text="加班申请"
+                        android:textColor="@color/white" />
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+        </LinearLayout>
+
+
+    </LinearLayout>
+</com.handmark.pulltorefresh.library.PullToRefreshScrollView>

+ 2 - 2
WeiChat/src/main/res/layout/activity_pedometer.xml

@@ -25,7 +25,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="5dp"
-            android:text="计步功能:触发感应器开始计步,在持续运动3秒后才开始计数,不足3秒停止则时间重置。"
+            android:text="计步功能:触发感应器开始计步,在持续运动3秒后才开始有效计数,不足3秒停止则时间重置,新增步数重置(屏蔽细微移动)。"
             />
         <TextView
             android:visibility="gone"
@@ -38,7 +38,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginTop="5dp"
-            android:text="通知栏提醒:实时通知更新步数,目前版本只做了在杀死进程下关闭UU计步,考虑到之后是否存在外勤需要。"
+            android:text="通知栏提醒:实时通知更新步数,但最终只显示持续运动超过3秒的有效步数,通知栏便于实时测试观察,暂时不做点击取消显示。"
             />
         <TextView
             android:layout_width="wrap_content"

+ 1 - 1
WeiChat/src/main/res/layout/activity_setting.xml

@@ -56,7 +56,7 @@
                 android:id="@+id/uu_step_rl"
                 style="@style/IMTbleLine1"
                 android:background="@drawable/selector_me_menu_item_bg"
-                android:visibility="gone">
+                android:visibility="visible">
 
                 <TextView
                     android:id="@+id/uu_step_text"

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

@@ -47,11 +47,14 @@
             android:text="测试按钮" />
     </LinearLayout>
 
+
+
     <ListView
         android:id="@+id/listView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:layout_above="@id/bottom"
-        android:layout_below="@id/ll"
+        android:layout_alignParentLeft="true"
+        android:layout_alignParentStart="true"
+        android:layout_alignParentTop="true"
         android:divider="@color/item_line" />
 </RelativeLayout>

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

@@ -230,13 +230,14 @@
             android:layout_width="match_parent"
             android:layout_height="@dimen/line"
             android:background="@color/item_line" />
+
         <RelativeLayout
             android:id="@+id/uu_sport_step"
             style="@style/IMTbleLine_UP_Me"
             android:layout_marginTop="7dp"
             android:background="@drawable/selector_me_menu_item_bg"
-            android:visibility="gone"
-            >
+            android:visibility="gone">
+
             <TextView
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
@@ -257,6 +258,7 @@
                 android:background="@drawable/oa_next"
                 android:contentDescription="@string/app_name" />
         </RelativeLayout>
+
         <View
             android:layout_width="match_parent"
             android:layout_height="@dimen/line"

+ 1 - 1
WeiChat/src/main/res/layout/item_oa_list.xml

@@ -4,7 +4,7 @@
     android:layout_height="match_parent"
     android:descendantFocusability="blocksDescendants"
     android:padding="10dp"
-    android:background="@drawable/selector_me_menu_item_bg">
+    android:background="@drawable/selector_oa_itembg">
 
     <TextView
         android:id="@+id/status_tv"

+ 1 - 0
WeiChat/src/main/res/values/colors.xml

@@ -306,4 +306,5 @@
     <color name="me_menu_item_press">#DFDEDE</color>
     <color name="bg_underlying">#ebe9e9</color>
     <color name="orange_text">#f17e21</color>
+    <color name="oa_bg">#EBE9E9</color>
 </resources>