Browse Source

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

RaoMeng 8 years ago
parent
commit
62b9341c9e
24 changed files with 567 additions and 169 deletions
  1. 5 5
      WeiChat/src/main/res/layout/activity_visit_report_add.xml
  2. 2 1
      WeiChat/src/main/res/layout/item_business.xml
  3. 1 0
      WeiChat/src/main/res/layout/item_business_detail.xml
  4. 1 1
      WeiChat/src/main/res/layout/sign_senior_setting.xml
  5. 11 3
      app_core/common/src/main/java/com/core/app/MyApplication.java
  6. 3 2
      app_core/common/src/main/java/com/core/utils/time/wheel/ConfirmPopup.java
  7. 26 8
      app_core/common/src/main/java/com/core/widget/view/HorizontalStepsView.java
  8. 1 1
      app_core/common/src/main/res/layout/item_business.xml
  9. 1 0
      app_modular/applocation/build.gradle
  10. 11 3
      app_modular/applocation/src/main/AndroidManifest.xml
  11. 12 0
      app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java
  12. 3 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java
  13. 16 0
      app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java
  14. 148 0
      app_modular/applocation/src/main/java/com/uas/applocation/test/LocationTestSetActivity.java
  15. 88 0
      app_modular/applocation/src/main/java/com/uas/applocation/test/TestLocationOpinion.java
  16. 77 1
      app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java
  17. 117 0
      app_modular/applocation/src/main/res/layout/activity_location_test_set.xml
  18. 10 20
      app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java
  19. 1 0
      app_modular/apputils/src/main/java/com/modular/apputils/utils/SignUtils.java
  20. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java
  21. 0 76
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java
  22. 1 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/AutoErpSigninUitl.java
  23. 2 18
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/adapter/BusinessTravelAdapter.java
  24. 29 29
      app_modular/appworks/src/main/res/layout/item_bus_travel_air.xml

+ 5 - 5
WeiChat/src/main/res/layout/activity_visit_report_add.xml

@@ -103,7 +103,7 @@
 
             <TextView
                 style="@style/form_relative_left_text"
-                android:layout_marginLeft="20dp"
+                android:layout_marginLeft="@dimen/padding"
                 android:layout_toRightOf="@+id/tv_id3"
                 android:text="*"
                 android:textColor="@color/red" />
@@ -138,7 +138,7 @@
 
             <TextView
                 style="@style/form_relative_left_text"
-                android:layout_marginLeft="35dp"
+                android:layout_marginLeft="20dp"
                 android:layout_toRightOf="@+id/tv_id4"
                 android:text="*"
                 android:textColor="@color/red" />
@@ -170,7 +170,7 @@
 
             <TextView
                 style="@style/form_relative_left_text"
-                android:layout_marginLeft="50dp"
+                android:layout_marginLeft="35dp"
                 android:layout_toRightOf="@+id/phone_tag"
                 android:text="*"
                 android:textColor="@color/red" />
@@ -204,7 +204,7 @@
 
             <TextView
                 style="@style/form_relative_left_text"
-                android:layout_marginLeft="20dp"
+                android:layout_marginLeft="8dp"
                 android:layout_toRightOf="@+id/tv_id5"
                 android:text="*"
                 android:textColor="@color/red" />
@@ -237,7 +237,7 @@
             <TextView
                 android:id="@+id/textView"
                 style="@style/form_relative_left_text"
-                android:layout_marginLeft="20dp"
+                android:layout_marginLeft="8dp"
                 android:layout_toRightOf="@+id/tv_id6"
                 android:text="*"
                 android:textColor="@color/red" />

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

@@ -74,7 +74,8 @@
         <com.core.widget.view.HorizontalStepsView
             android:id="@+id/stepsView"
             android:layout_width="match_parent"
-            android:layout_height="80dp" />
+            android:layout_height="wrap_content"
+            android:minHeight="80sp"/>
 
     </LinearLayout>
 

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

@@ -90,6 +90,7 @@
 
         <RelativeLayout
             style="@style/crm_ll_sale_item"
+            android:layout_marginRight="110dp"
             android:layout_gravity="right"
             >
 

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

@@ -117,7 +117,7 @@
                 android:background="@color/black_gray" />
             <TextView
                 android:layout_width="match_parent"
-                android:layout_height="40dp"
+                android:layout_height="wrap_content"
                 android:layout_marginLeft="10dp"
                 android:layout_marginRight="10dp"
                 android:gravity="center_vertical"

+ 11 - 3
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -39,6 +39,8 @@ import com.nostra13.universalimageloader.core.display.RoundedBitmapDisplayer;
 import com.tencent.mm.opensdk.openapi.IWXAPI;
 import com.tencent.mm.opensdk.openapi.WXAPIFactory;
 import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.test.TestLocationOpinion;
+import com.uas.applocation.utils.AreaUtils;
 import com.umeng.analytics.MobclickAgent;
 import com.umeng.socialize.Config;
 import com.umeng.socialize.PlatformConfig;
@@ -96,8 +98,6 @@ public class MyApplication extends BaseApplication {
     private NetWorkObservable mNetWorkObservable;
 
 
-
-
     @Override
     public void initConfig() throws Exception {
         //后台服务初始化application
@@ -171,9 +171,17 @@ public class MyApplication extends BaseApplication {
         UasLocationHelper.getInstance().release();
     }
 
-    private void initLocation(){
+    private void initLocation() {
+        if (BaseConfig.isDebug()) {
+            //开启模拟定位服务
+            TestLocationOpinion mTestLocationOpinion = new TestLocationOpinion(this);
+            mTestLocationOpinion.initLocation();
+            mTestLocationOpinion.asynTaskUpdateCallBack();
+        }
+        AreaUtils.initArea(this);
         UasLocationHelper.getInstance().initConfig(this);
     }
+
     public void initShareAPI() {
 //        PlatformConfig.setWeixin("wx2539cc96bf158e00", "b057aa3e807ba7c505a2f03cc541bbf6");
         PlatformConfig.setWeixin(Constants.WXPAY_APPID, Constants.WEIXIN_SECRET);

+ 3 - 2
app_core/common/src/main/java/com/core/utils/time/wheel/ConfirmPopup.java

@@ -7,6 +7,7 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.annotation.StringRes;
 import android.text.TextUtils;
+import android.util.TypedValue;
 import android.view.Gravity;
 import android.view.View;
 import android.widget.Button;
@@ -215,7 +216,7 @@ public abstract class ConfirmPopup<V extends View> extends BottomPopup<View> {
         cancelButton.setLayoutParams(cancelButtonLayoutParams);
         cancelButton.setBackgroundColor(Color.TRANSPARENT);
         cancelButton.setGravity(Gravity.CENTER);
-        cancelButton.setTextSize(18f);
+        cancelButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18f);
         if (!TextUtils.isEmpty(cancelText)) {
             cancelButton.setText(cancelText);
         }
@@ -251,7 +252,7 @@ public abstract class ConfirmPopup<V extends View> extends BottomPopup<View> {
         submitButtonLayoutParams.rightMargin = ConvertUtils.toPx(activity, 10);
         submitButton.setLayoutParams(submitButtonLayoutParams);
         submitButton.setBackgroundColor(Color.TRANSPARENT);
-        submitButton.setTextSize(18f);
+        submitButton.setTextSize(TypedValue.COMPLEX_UNIT_DIP,18f);
         submitButton.setGravity(Gravity.CENTER);
         if (!TextUtils.isEmpty(submitText)) {
             submitButton.setText(submitText);

+ 26 - 8
app_core/common/src/main/java/com/core/widget/view/HorizontalStepsView.java

@@ -163,16 +163,34 @@ public class HorizontalStepsView extends View {
 
     private void drawMessage(Canvas canvas, int i) {
         String title = titles[i];
-        float textX = surface.textPaint.measureText(title);
+//        float textX = surface.textPaint.measureText(title);
         float textY = surface.lineY + surface.stopRadius + surface.textPaint.getTextSize();
-        if (textX > surface.itemWidth) {
-            String mag1 = title.substring(0, title.length() / 2);
-            String mag2 = title.substring(title.length() / 2, title.length());
-            canvas.drawText(mag1, surface.startX + (i * surface.itemWidth), textY, surface.textPaint);
-            canvas.drawText(mag2, surface.startX + (i * surface.itemWidth), textY + surface.textPaint.getTextSize(), surface.textPaint);
-        } else {
-            canvas.drawText(title, surface.startX + (i * surface.itemWidth), textY, surface.textPaint);
+
+        int length = title.length();//剩余字符数
+        int currentPosition = 0;
+        int line = 0;
+        while (length > currentPosition) {
+            if (line > 2) {
+                String mag = "...";
+                canvas.drawText(mag, surface.startX + (i * surface.itemWidth), textY + surface.textPaint.getTextSize() * line, surface.textPaint);
+                currentPosition = length;
+            } else {
+                String mag = title.substring(currentPosition, Math.min(length, currentPosition + 2));
+                canvas.drawText(mag, surface.startX + (i * surface.itemWidth), textY + surface.textPaint.getTextSize() * line, surface.textPaint);
+
+            }
+            line++;
+            currentPosition += 2;
         }
+
+//        if (textX > surface.itemWidth) {
+//            String mag1 = title.substring(0, title.length() / 2);
+//            String mag2 = title.substring(title.length() / 2, title.length());
+//            canvas.drawText(mag1, surface.startX + (i * surface.itemWidth), textY, surface.textPaint);
+//            canvas.drawText(mag2, surface.startX + (i * surface.itemWidth), textY + surface.textPaint.getTextSize(), surface.textPaint);
+//        } else {
+//            canvas.drawText(title, surface.startX + (i * surface.itemWidth), textY, surface.textPaint);
+//        }
     }
 
     private void drawPoints(Canvas canvas, int i, float x) {

+ 1 - 1
app_core/common/src/main/res/layout/item_business.xml

@@ -74,7 +74,7 @@
         <com.core.widget.view.HorizontalStepsView
             android:id="@+id/stepsView"
             android:layout_width="match_parent"
-            android:layout_height="80dp" />
+            android:layout_height="80sp" />
 
     </LinearLayout>
 

+ 1 - 0
app_modular/applocation/build.gradle

@@ -16,6 +16,7 @@ android {
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
     }
+
 }
 
 dependencies {

+ 11 - 3
app_modular/applocation/src/main/AndroidManifest.xml

@@ -1,8 +1,16 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
-    package="com.uas.applocation" >
-
+    package="com.uas.applocation">
+    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
+    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"
+        tools:ignore="MockLocation,ProtectedPermissions" />
     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
-    <uses-permission android:name="android.permission.WRITE_SETTINGS"
+    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
+    <uses-permission
+        android:name="android.permission.WRITE_SETTINGS"
         tools:ignore="ProtectedPermissions" />
+
+    <application>
+        <activity android:name=".test.LocationTestSetActivity" />
+    </application>
 </manifest>

+ 12 - 0
app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java

@@ -50,8 +50,17 @@ public class UasLocationHelper implements BaseLocationManager {
                 mLocationHelper = new NativeLocationManager(this.ct);
                 break;
         }
+        if (mLocationHelper!=null){
+            mLocationHelper.requestLocation(mOnLocationListener);
+        }
     }
 
+    //TODO 正式版本需要去除,必须去除
+    private UASLocation mTestUASLocation;
+    public void testStopLocation(UASLocation mUASLocation){
+        this.mTestUASLocation=mUASLocation;
+        release();
+    }
 
     @Override
     public void release() {
@@ -81,6 +90,9 @@ public class UasLocationHelper implements BaseLocationManager {
 
     @Override
     public UASLocation getUASLocation() {
+        if (this.mTestUASLocation!=null){
+            return this.mTestUASLocation;
+        }
         return mLocationHelper == null ? new UASLocation(UASLocation.TYPE_BAIDU) : mLocationHelper.getUASLocation();
     }
 

+ 3 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java

@@ -99,8 +99,11 @@ public class NativeLocationManager implements BaseLocationManager {
         mUASLocation.setAddress(address.getAddressLine(0));
         LatLng latlng = CoordinateUtils.common2Baidu(new LatLng(address.getLatitude(), address.getLongitude()));
 //         latlng = CoordinateUtils.common2Baidu(new LatLng(33.144513, 103.910688));
+        mUASLocation.setGpsLatitude(address.getLatitude());
+        mUASLocation.setGpsLongitude(address.getLongitude());
         mUASLocation.setLatitude(latlng.latitude);
         mUASLocation.setLongitude(latlng.longitude);
+        Log.i(TAG,"国外定位:"+mUASLocation.toString());
         if (mOnLocationListener != null) {
             mOnLocationListener.onReceiveLocation(mUASLocation);
         }

+ 16 - 0
app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java

@@ -102,6 +102,22 @@ public class UASLocation implements Parcelable {
         this.latitude = latitude;
     }
 
+    public double getGpsLatitude() {
+        return gpsLatitude;
+    }
+
+    public void setGpsLatitude(double gpsLatitude) {
+        this.gpsLatitude = gpsLatitude;
+    }
+
+    public double getGpsLongitude() {
+        return gpsLongitude;
+    }
+
+    public void setGpsLongitude(double gpsLongitude) {
+        this.gpsLongitude = gpsLongitude;
+    }
+
     public double getLongitude() {
         return longitude;
     }

+ 148 - 0
app_modular/applocation/src/main/java/com/uas/applocation/test/LocationTestSetActivity.java

@@ -0,0 +1,148 @@
+package com.uas.applocation.test;
+
+import android.content.DialogInterface;
+import android.location.Address;
+import android.location.Geocoder;
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.support.v7.app.AlertDialog;
+import android.support.v7.app.AppCompatActivity;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.EditText;
+import android.widget.LinearLayout;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.baidu.mapapi.model.LatLng;
+import com.uas.applocation.R;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.AreaUtils;
+import com.uas.applocation.utils.CoordinateUtils;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+
+public class LocationTestSetActivity extends AppCompatActivity {
+    private TextView currentInfoTv;
+    private CheckBox userNativeCb;
+    private CheckBox inventedCb;
+    private EditText longitudeEd;
+    private EditText latitudeEd;
+    private Button saveBtn;
+    private RelativeLayout inventedRl;
+    private LinearLayout inventedLL;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_location_test_set);
+        initView();
+    }
+
+    private void initView() {
+        currentInfoTv = (TextView) findViewById(R.id.currentInfoTv);
+        userNativeCb = (CheckBox) findViewById(R.id.userNativeCb);
+        inventedCb = (CheckBox) findViewById(R.id.inventedCb);
+        longitudeEd = (EditText) findViewById(R.id.longitudeEd);
+        latitudeEd = (EditText) findViewById(R.id.latitudeEd);
+        saveBtn = (Button) findViewById(R.id.saveBtn);
+        inventedRl = findViewById(R.id.inventedRl);
+        inventedLL = findViewById(R.id.inventedLL);
+
+        saveBtn.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                new AlertDialog.Builder(LocationTestSetActivity.this)
+                        .setTitle("UU提示")
+                        .setMessage("保存模拟定位以后,将不会再自动定位,直到退出应用或关闭虚拟定位。是否确定保存")
+                        .setPositiveButton("确定", new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialogInterface, int i) {
+                                UASLocation mUASLocation=getInventedUASLocation();
+                                UasLocationHelper.getInstance().testStopLocation(mUASLocation);
+                                currentInfoTv.setText(mUASLocation.toString());
+                            }
+                        })
+                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {
+                            @Override
+                            public void onClick(DialogInterface dialogInterface, int i) {
+
+                            }
+                        }).show();
+            }
+        });
+
+        UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+        if (mUASLocation != null) {
+            currentInfoTv.setText(mUASLocation.toString());
+            int type = AreaUtils.getLocationServiceType();
+            boolean userNative = type == UASLocation.TYPE_NATIVE;
+            userNativeCb.setChecked(userNative);
+            inventedRl.setVisibility(userNative ? View.VISIBLE : View.GONE);
+            showInventedLL(inventedCb.isChecked());
+            longitudeEd.setText(mUASLocation.getLongitude() + "");
+            latitudeEd.setText(mUASLocation.getLatitude() + "");
+        }
+        userNativeCb.setOnCheckedChangeListener(mOnCheckedChangeListener);
+        inventedCb.setOnCheckedChangeListener(mOnCheckedChangeListener);
+    }
+
+    private CompoundButton.OnCheckedChangeListener mOnCheckedChangeListener = new CompoundButton.OnCheckedChangeListener() {
+        @Override
+        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
+            if (compoundButton == userNativeCb) {
+                AreaUtils.type = b ? UASLocation.TYPE_NATIVE : UASLocation.TYPE_BAIDU;
+                UasLocationHelper.getInstance().initConfig(LocationTestSetActivity.this);
+                inventedRl.setVisibility(b ? View.VISIBLE : View.GONE);
+            } else if (inventedCb == compoundButton) {
+                showInventedLL(b);
+            }
+        }
+    };
+
+    private void showInventedLL(boolean clicked) {
+        int show = clicked ? View.VISIBLE : View.GONE;
+        inventedLL.setVisibility(show);
+        saveBtn.setVisibility(show);
+        if (!clicked) {
+            UasLocationHelper.getInstance().testStopLocation(null);
+        }
+
+    }
+
+    private UASLocation getInventedUASLocation() {
+        UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
+        float latitude = Float.valueOf(latitudeEd.getText().toString());
+        float longitude = Float.valueOf(longitudeEd.getText().toString());
+        Geocoder gc = new Geocoder(this, Locale.getDefault());
+        List<Address> locationList = null;
+        try {
+            locationList = gc.getFromLocation(latitude, longitude, 1);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        if (locationList != null && locationList.size() > 0) {
+            Address address = locationList.get(0);//得到Address实例
+            mUASLocation.setLocationOk(true);
+            mUASLocation.setProvince(address.getLocality());
+            mUASLocation.setCityName(address.getSubAdminArea());
+            mUASLocation.setCountry(address.getCountryName());
+            mUASLocation.setName(address.getFeatureName());
+            mUASLocation.setDistrict(address.getThoroughfare());
+            mUASLocation.setAddress(address.getAddressLine(0));
+            LatLng latlng = CoordinateUtils.common2Baidu(new LatLng(address.getLatitude(), address.getLongitude()));
+            mUASLocation.setGpsLatitude(address.getLatitude());
+            mUASLocation.setGpsLongitude(address.getLongitude());
+            mUASLocation.setLatitude(latlng.latitude);
+            mUASLocation.setLongitude(latlng.longitude);
+        }
+        return mUASLocation;
+    }
+}

+ 88 - 0
app_modular/applocation/src/main/java/com/uas/applocation/test/TestLocationOpinion.java

@@ -0,0 +1,88 @@
+package com.uas.applocation.test;
+
+import android.content.Context;
+import android.location.Location;
+import android.location.LocationManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.SystemClock;
+import android.util.Log;
+
+public class TestLocationOpinion {
+
+    private LocationManager mLocationManager;
+    private Context mContext;
+    private Location mlocation;
+
+    private boolean mbUpdate;
+
+    public TestLocationOpinion(Context mContext) {
+        this.mContext = mContext;
+        this.mlocation = new Location(LocationManager.GPS_PROVIDER);
+    }
+
+    //启动模拟位置服务
+    public boolean initLocation() {
+        mLocationManager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
+        if (!mLocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
+            return false;
+        }
+        try {
+            //如果未开启模拟位置服务,则添加模拟位置服务
+            mLocationManager.addTestProvider(LocationManager.GPS_PROVIDER, false, false, false, false, true, true, true, 0, 5);
+            mLocationManager.setTestProviderEnabled(LocationManager.GPS_PROVIDER, true);
+        } catch (Exception e) {
+            return false;
+        }
+        return true;
+    }
+
+    //停止模拟位置服务
+    public void stopMockLocation() {
+        mbUpdate = false;
+        if (mLocationManager != null) {
+            try {
+                mLocationManager.clearTestProviderEnabled(LocationManager.GPS_PROVIDER);
+                mLocationManager.removeTestProvider(LocationManager.GPS_PROVIDER);
+            } catch (Exception e) {
+                Log.e("GPS", e.toString());
+            }
+        }
+    }
+
+    private Bundle bundle = new Bundle();
+    double testData = 0.0;
+
+    public void asynTaskUpdateCallBack() {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                while (mbUpdate) {
+                    //测试的location数据
+                    mlocation.setLongitude(testData++);
+                    mlocation.setLatitude(testData++);
+                    mlocation.setAltitude(testData++);
+                    mlocation.setTime(System.currentTimeMillis());
+                    mlocation.setBearing((float) 1.2);
+                    mlocation.setSpeed((float) 1.2);
+                    mlocation.setAccuracy((float) 1.2);
+                    //额外的自定义数据,使用bundle来传递
+                    bundle.putString("test1", "666");
+                    bundle.putString("test2", "66666");
+                    mlocation.setExtras(bundle);
+                    try {
+                        if (Build.VERSION.SDK_INT >= 17) {
+                            mlocation.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
+                        }
+                        mLocationManager.setTestProviderStatus(LocationManager.GPS_PROVIDER, 100, bundle, System.currentTimeMillis());
+                        mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, mlocation);
+                        Thread.sleep(1000);
+                    } catch (Exception e) {
+                        return;
+                    }
+                }
+
+            }
+        }).start();
+    }
+}

+ 77 - 1
app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java

@@ -1,16 +1,92 @@
 package com.uas.applocation.utils;
 
+import android.content.Context;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
+import android.util.Log;
+
 import com.uas.applocation.model.UASLocation;
 
+import java.util.Locale;
+
 /**
  * 判读当前所在的地区
  */
 public class AreaUtils {
-    public static int type=UASLocation.TYPE_BAIDU;
+    public static int type = UASLocation.TYPE_BAIDU;
+
+    /**
+     * 判断当前的卡是否是国内的卡,如果是国内的开,是不能使用google服务的
+     *
+     * @param context
+     */
+    public static void initArea(Context context) {
+        type = isChinaSimCard(context) ? UASLocation.TYPE_BAIDU : UASLocation.TYPE_NATIVE;
+        Log.i("gong","type="+type);
+    }
 
     public static int getLocationServiceType() {
         return type;
     }
 
+    /**
+     * 判断国家是否是国内用户
+     * <p>
+     * 方法一
+     *
+     * @return
+     */
+    public static boolean isCN(Context context) {
+        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+        String countryIso = tm.getSimCountryIso();
+        boolean isCN = false;//判断是不是大陆
+        if (!TextUtils.isEmpty(countryIso)) {
+            countryIso = countryIso.toUpperCase(Locale.US);
+            if (countryIso.contains("CN")) {
+                isCN = true;
+            }
+        }
+        return isCN;
+
+    }
+
+    /**
+     * 查询手机的 MCC+MNC
+     */
+    private static String getSimOperator(Context c) {
+        TelephonyManager tm = (TelephonyManager) c.getSystemService(Context.TELEPHONY_SERVICE);
+        try {
+            return tm.getSimOperator();
+        } catch (Exception e) {
 
+        }
+        return null;
+    }
+
+
+    /**
+     * 因为发现像华为Y300,联想双卡的手机,会返回 "null" "null,null" 的字符串
+     */
+    private static boolean isOperatorEmpty(String operator) {
+        if (operator == null) {
+            return true;
+        }
+        if (operator.equals("") || operator.toLowerCase(Locale.US).contains("null")) {
+            return true;
+        }
+        return false;
+    }
+
+
+    /**
+     * 判断是否是国内的 SIM 卡,优先判断注册时的mcc
+     */
+    public static boolean isChinaSimCard(Context c) {
+        String mcc = getSimOperator(c);
+        if (isOperatorEmpty(mcc)) {
+            return true;//默认是国内
+        } else {
+            return mcc.startsWith("460");
+        }
+    }
 }

+ 117 - 0
app_modular/applocation/src/main/res/layout/activity_location_test_set.xml

@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:paddingLeft="8dp"
+    android:paddingRight="8dp">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical">
+
+        <TextView
+            android:id="@+id/currentInfoTv"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginBottom="8dp"
+            android:layout_marginTop="8dp"
+            android:text="当前" />
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:background="#000000" />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="50dp">
+
+            <android.support.v7.widget.AppCompatTextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="使用原生地图" />
+
+            <CheckBox
+                android:id="@+id/userNativeCb"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_alignParentRight="true"
+                android:layout_centerVertical="true" />
+        </RelativeLayout>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1px"
+            android:background="#000000" />
+
+
+        <RelativeLayout
+            android:id="@+id/inventedRl"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content">
+
+            <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="50dp">
+
+                <android.support.v7.widget.AppCompatTextView
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:text="当前定位为国内,是否开启模拟定位" />
+
+                <CheckBox
+                    android:id="@+id/inventedCb"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentRight="true"
+                    android:layout_centerVertical="true" />
+            </RelativeLayout>
+
+
+            <LinearLayout
+                android:id="@+id/inventedLL"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="51dp"
+                android:orientation="horizontal">
+
+                <EditText
+                    android:id="@+id/longitudeEd"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:hint="经度"
+                    android:inputType="numberDecimal" />
+
+                <EditText
+                    android:id="@+id/latitudeEd"
+                    android:layout_width="0dp"
+                    android:layout_height="wrap_content"
+                    android:layout_weight="1"
+                    android:hint="纬度"
+                    android:inputType="numberDecimal" />
+            </LinearLayout>
+
+
+            <View
+                android:layout_width="match_parent"
+                android:layout_height="1px"
+                android:layout_alignParentBottom="true"
+                android:background="#000000" />
+
+
+        </RelativeLayout>
+
+        <Button
+            android:id="@+id/saveBtn"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="center_horizontal"
+            android:layout_marginTop="20dp"
+            android:text="保存模拟定位" />
+
+    </LinearLayout>
+</ScrollView>

+ 10 - 20
app_modular/appme/src/main/java/com/uas/appme/settings/activity/SettingActivity.java

@@ -64,9 +64,7 @@ import com.me.network.app.http.rx.ResultListener;
 import com.me.network.app.http.rx.ResultSubscriber;
 import com.modular.apputils.utils.PopupWindowHelper;
 import com.scwang.smartrefresh.layout.util.DensityUtil;
-import com.uas.applocation.UasLocationHelper;
-import com.uas.applocation.model.UASLocation;
-import com.uas.applocation.utils.AreaUtils;
+import com.uas.applocation.test.LocationTestSetActivity;
 import com.uas.appme.R;
 import com.uas.appme.pedometer.view.NewStepActivity;
 import com.uas.appme.pedometer.view.StepSplashActivity;
@@ -128,7 +126,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
 
 
     private void initView() {
-        font_us_rl=findViewById(R.id.font_us_rl);
+        font_us_rl = findViewById(R.id.font_us_rl);
         uas_website_tv = (TextView) findViewById(R.id.uas_website_tv);
         tv_menu_setting = (TextView) findViewById(R.id.tv_menu_setting);
         cb_task_reply = (SwitchView) findViewById(R.id.cb_task_reply);
@@ -255,7 +253,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
                 }
             }
         });
-        
+
         new_step_rl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View v) {
@@ -276,7 +274,7 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
 
         speech_recognition_rl.setOnClickListener(this);
         sign_in_rl.setOnClickListener(this);
-        if (BaseConfig.isDebug()){
+        if (BaseConfig.isDebug()) {
             sign_in_rl.setOnLongClickListener(mTestOnLongClickListener);
         }
         sign_out_rl.setOnClickListener(this);
@@ -295,30 +293,23 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         font_us_rl.setOnClickListener(new View.OnClickListener() {
             @Override
             public void onClick(View view) {
-                startActivity(new Intent(SettingActivity.this,FontSizeActivity.class));
+                startActivity(new Intent(SettingActivity.this, FontSizeActivity.class));
             }
         });
     }
 
-    private View.OnLongClickListener mTestOnLongClickListener=new View.OnLongClickListener() {
+    private View.OnLongClickListener mTestOnLongClickListener = new View.OnLongClickListener() {
         @Override
         public boolean onLongClick(View view) {
 
-            if (BaseConfig.isDebug()){
-                if (view==sign_in_rl){
-                    if (AreaUtils.type== UASLocation.TYPE_NATIVE){
-                        AreaUtils.type=UASLocation.TYPE_BAIDU;
-                        ToastUtil.showToast(ct,"转成百度地图");
-                    }else{
-                        AreaUtils.type=  UASLocation.TYPE_NATIVE;
-                        ToastUtil.showToast(ct,"转成原生地图");
-                    }
-                   UasLocationHelper. getInstance().initConfig(ct.getApplicationContext());
-                }
+            if (BaseConfig.isDebug()) {
+                startActivity(new Intent(ct, LocationTestSetActivity.class));
+                return true;
             }
             return false;
         }
     };
+
     private void doShowBSettingJudge() {
         HttpClient httpClient = new HttpClient.Builder(Constants.IM_BASE_URL()).isDebug(true).build(true);
         httpClient.Api().send(new HttpClient.Builder()
@@ -387,7 +378,6 @@ public class SettingActivity extends SupportToolBarActivity implements View.OnCl
         startActivity(new Intent("com.modular.main.MainActivity"));
         super.onBackPressed();
     }
-    
 
 
     @Override

+ 1 - 0
app_modular/apputils/src/main/java/com/modular/apputils/utils/SignUtils.java

@@ -257,6 +257,7 @@ public class SignUtils implements OnHttpResultListener {
             }
         }
         form.put("cl_phone", phone);
+        form.put("facecard", 1);//添加一个参数
         form.put("cl_emcode", getSharedPreferences(ct, "erp_username"));
         form.put("cl_emname", CommonUtil.getName());
         form.put("cl_distance", dis);

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/form/DataFormDetailActivity.java

@@ -824,7 +824,7 @@ public class DataFormDetailActivity extends BaseActivity implements View.OnClick
     }
 
     private void toDataFormList() {
-        startActivity(new Intent(mContext, FormListSelectActivity.class)
+        startActivity(new Intent(this, FormListSelectActivity.class)
                 .putExtra("caller", caller)
                 .putExtra("statusKey", statusKey)//传状态key
                 .putExtra("title", getToolBarTitle().toString()));

+ 0 - 76
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java

@@ -13,21 +13,17 @@ import com.common.data.DateFormatUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
-import com.common.preferences.PreferenceUtils;
 import com.core.api.wxapi.ApiConfig;
 import com.core.api.wxapi.ApiPlatform;
 import com.core.api.wxapi.ApiUtils;
 import com.core.app.MyApplication;
-import com.core.dao.UserDao;
 import com.core.dao.WorkLocationDao;
 import com.core.dao.work.WorkModelDao;
-import com.core.model.User;
 import com.core.model.WorkLocationModel;
 import com.core.model.WorkModel;
 import com.core.net.http.http.OAHttpHelper;
 import com.core.net.http.http.OnHttpResultListener;
 import com.core.net.http.http.Request;
-import com.core.utils.CommonInterface;
 import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.WorkHandlerUtil;
@@ -126,55 +122,6 @@ public class WorkPresenter implements OnHttpResultListener {
     }
 
 
-    //签到
-    private void signinWork(Bundle bundle, String code) {
-        if (iWorkView != null) iWorkView.showLoading();
-        Map<String, Object> param = new HashMap<>();
-        Map<String, Object> form = new HashMap<>();
-
-        //如果是erp就上传code
-        if (!isB2b)
-            form.put("cl_code", code);
-        if (StringUtil.isEmpty(address))
-            address = PreferenceUtils.getString("bdaddress");
-        String phone = MyApplication.getInstance().mLoginUser.getTelephone();
-        if (StringUtil.isEmpty(phone)) {
-            String userId = MyApplication.getInstance().mLoginUser.getUserId();
-            if (!StringUtil.isEmpty(userId)) {
-                User user = UserDao.getInstance().getUserByUserId(userId);
-                phone = user.getTelephone();
-            } else
-                phone = CommonUtil.getSharedPreferences(MyApplication.getInstance(), "user_phone");
-        }
-        String emCode = CommonUtil.getEmcode();
-        String emname = CommonUtil.getName();
-        if (StringUtil.isEmpty(loaction))
-            loaction = PreferenceUtils.getString("bdlocation");
-        form.put("cl_address", address);//地址
-        form.put("cl_phone", phone);    //电话号码
-        form.put("cl_distance", distance);//距离
-        form.put("cl_emname", emname);  //名字
-        form.put("cl_location", loaction); //位置
-        form.put("cl_emcode", emCode);//编号 erp员工编号  b2b  enuu
-        if (isB2b) {
-            form.put("enuu", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "companyEnUu"));
-            form.put("emcode", CommonUtil.getSharedPreferences(MyApplication.getInstance().getApplicationContext(), "b2b_uu"));
-        }
-        String formStore = JSONUtil.map2JSON(form);
-        param.put("formStore", formStore);
-        if (!isB2b)
-            param.put("caller", "CardLog");
-
-        String url = isB2b ? ApiConfig.getInstance(ApiUtils.getApiModel()).getmApiBase().punch_worksignin_url : "mobile/saveCardLog.action";
-        Request request = new Request.Bulider()
-                .setUrl(url)
-                .setWhat(SIGNING)
-                .setMode(Request.Mode.POST)
-                .setParam(param)
-                .setBundle(bundle)
-                .bulid();
-        OAHttpHelper.getInstance().requestHttp(request, this);
-    }
 
 
     /*获取高级设置*/
@@ -566,29 +513,6 @@ public class WorkPresenter implements OnHttpResultListener {
         }
     }
 
-    /**
-     * 提交打卡
-     *
-     * @param models     班次以及打卡记录数据
-     * @param macAddress mac地址
-     */
-    private void submitWork(final ArrayList<WorkModel> models, String macAddress) {
-        subMitTime = System.currentTimeMillis();
-        final Bundle bundle = new Bundle();
-        bundle.putParcelableArrayList("models", models);
-        if (isB2b) {
-            signinWork(bundle, "");
-        } else {
-            CommonInterface.getInstance().getCodeByNet("CardLog", new CommonInterface.OnResultListener() {
-                @Override
-                public void result(boolean isOk, int result, String message) {
-                    signinWork(bundle, message);
-                }
-            });
-
-            //validatorMac(models, macAddress);//TODO 去除mac地址验证
-        }
-    }
 
 
     /**

+ 1 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/utils/AutoErpSigninUitl.java

@@ -216,6 +216,7 @@ public class AutoErpSigninUitl implements OnHttpResultListener {
                 phone = getSharedPreferences(MyApplication.getInstance(), "user_phone");
         }
         form.put("cl_phone", phone);
+        form.put("facecard", 1);//添加一个参数
         form.put("cl_emcode", getSharedPreferences(ct, "erp_username"));
         String emname = getSharedPreferences(ct, "erp_emname");
         if (StringUtil.isEmpty(emname)) {

+ 2 - 18
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/adapter/BusinessTravelAdapter.java

@@ -11,32 +11,16 @@ import android.widget.LinearLayout;
 import android.widget.RelativeLayout;
 import android.widget.TextView;
 
-
-import com.afollestad.materialdialogs.MaterialDialog;
-import com.alibaba.fastjson.JSON;
-import com.common.LogUtil;
-import com.common.config.BaseConfig;
 import com.common.data.DateFormatUtil;
-import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
 import com.common.data.StringUtil;
-import com.common.hmac.Md5Util;
-import com.core.app.MyApplication;
-import com.core.net.utils.NetUtils;
 import com.core.utils.CommonUtil;
-import com.core.utils.IntentUtils;
-import com.core.utils.ToastUtil;
 import com.modular.apputils.widget.TravelDirectionView;
 import com.uas.appworks.OA.platform.model.BusinessTravel;
 import com.uas.appworks.R;
 import com.uas.appworks.utils.TravelUtils;
 
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Created by Bitlike on 2017/12/12.
@@ -316,13 +300,13 @@ public class BusinessTravelAdapter extends RecyclerView.Adapter<RecyclerView.Vie
                 dateTv;//入住时间|返程时间
         RelativeLayout subRl;
         RelativeLayout userInfoRl;
-        RelativeLayout orderInfoRl;
+        LinearLayout orderInfoRl;
         View line;
 
         public BaseViewHlder(View itemView) {
             super(itemView);
             subRl = (RelativeLayout) itemView.findViewById(R.id.subRl);
-            orderInfoRl = (RelativeLayout) itemView.findViewById(R.id.orderInfoRl);
+            orderInfoRl = itemView.findViewById(R.id.orderInfoRl);
             line = itemView.findViewById(R.id.line);
             userInfoRl = (RelativeLayout) itemView.findViewById(R.id.userInfoRl);
             codeTv = (TextView) itemView.findViewById(R.id.codeTv);

+ 29 - 29
app_modular/appworks/src/main/res/layout/item_bus_travel_air.xml

@@ -37,27 +37,27 @@
             android:textSize="@dimen/text_hine" />
 
         <View
+            android:id="@+id/line"
             android:layout_width="match_parent"
             android:layout_height="@dimen/line"
-            android:id="@+id/line"
             android:layout_below="@id/codeTv"
             android:background="@color/item_line" />
 
-        <RelativeLayout
+        <LinearLayout
             android:id="@+id/orderInfoRl"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:layout_below="@id/codeTv"
-            android:layout_marginTop="@dimen/padding">
+            android:layout_marginTop="@dimen/padding"
+            android:orientation="horizontal">
 
             <LinearLayout
                 android:id="@+id/fromLL"
-                android:layout_width="wrap_content"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_below="@id/codeTv"
                 android:layout_marginLeft="20dp"
                 android:layout_marginRight="@dimen/padding"
-                android:layout_marginTop="@dimen/padding"
+                android:layout_weight="1"
                 android:gravity="center_horizontal"
                 android:orientation="vertical">
 
@@ -65,7 +65,10 @@
                     android:id="@+id/fromCityTv"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:text="上海"
+                    android:ellipsize="end"
+                    android:gravity="center"
+                    android:maxLines="2"
+                    android:text=""
                     android:textColor="@color/white"
                     android:textSize="@dimen/textXXL" />
 
@@ -89,14 +92,23 @@
 
             </LinearLayout>
 
+            <com.modular.apputils.widget.TravelDirectionView
+                android:id="@+id/mTravelDirectionView"
+                android:layout_width="80dp"
+                android:layout_height="60dp"
+                app:time="2小时20分"
+                app:timeSize="14dp"
+                app:title="D7890"
+                app:titleSize="16dp" />
+
             <LinearLayout
                 android:id="@+id/toLL"
-                android:layout_width="wrap_content"
+                android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_alignParentRight="true"
-                android:layout_alignTop="@id/fromLL"
                 android:layout_marginLeft="@dimen/padding"
                 android:layout_marginRight="20dp"
+                android:layout_weight="1"
                 android:gravity="center_horizontal"
                 android:orientation="vertical">
 
@@ -106,7 +118,8 @@
                     android:layout_height="wrap_content"
                     android:layout_alignParentRight="true"
                     android:layout_below="@id/codeTv"
-                    android:text="深圳"
+                    android:gravity="center"
+                    android:text=""
                     android:textColor="@color/white"
                     android:textSize="@dimen/textXXL" />
 
@@ -133,20 +146,7 @@
             </LinearLayout>
 
 
-            <com.modular.apputils.widget.TravelDirectionView
-                android:id="@+id/mTravelDirectionView"
-                android:layout_width="match_parent"
-                android:layout_height="60dp"
-                android:layout_alignTop="@id/fromLL"
-                android:layout_toLeftOf="@id/toLL"
-                android:layout_toRightOf="@id/fromLL"
-                app:time="2小时20分"
-                app:timeSize="@dimen/text_hine"
-                app:title="D7890"
-                app:titleSize="@dimen/text_main" />
-
-
-        </RelativeLayout>
+        </LinearLayout>
 
 
     </RelativeLayout>
@@ -185,7 +185,7 @@
             android:layout_marginLeft="@dimen/padding"
             android:layout_toLeftOf="@id/idTypeTv"
             android:layout_toRightOf="@id/nameTv"
-            android:text="4501221994312319827"
+            android:text=""
             android:textColor="@color/text_hine"
             android:textSize="@dimen/text_hine" />
 
@@ -193,7 +193,7 @@
             android:id="@+id/orderTypeTv"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:layout_below="@id/nameTv"
+            android:layout_below="@id/idCardTv"
             android:layout_marginBottom="@dimen/padding"
             android:layout_marginTop="@dimen/padding"
             android:text="1间"
@@ -217,12 +217,12 @@
             android:layout_height="wrap_content"
             android:layout_alignTop="@id/orderTypeTv"
             android:layout_marginLeft="30dp"
+            android:layout_toLeftOf="@+id/payTypeTv"
             android:layout_toRightOf="@id/seatTv"
-            android:text="54元"
+            android:ellipsize="end"
             android:lines="1"
             android:paddingRight="3dp"
-            android:ellipsize="end"
-            android:layout_toLeftOf="@+id/payTypeTv"
+            android:text="54元"
             android:textColor="@color/indianred"
             android:textSize="@dimen/text_main" />