Procházet zdrojové kódy

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

Arison před 7 roky
rodič
revize
fcc6f9f872
16 změnil soubory, kde provedl 613 přidání a 212 odebrání
  1. 2 2
      WeiChat/src/main/java/com/xzjmyk/pm/activity/ui/erp/activity/oa/LocationMapActivity.java
  2. 0 2
      app_core/common/src/main/java/com/core/app/MyApplication.java
  3. 4 4
      app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java
  4. 11 18
      app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java
  5. 4 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/BDLocationManager.java
  6. 1 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java
  7. 262 0
      app_modular/applocation/src/main/java/com/uas/applocation/base/UASLocationManager.java
  8. 2 6
      app_modular/applocation/src/main/java/com/uas/applocation/test/LocationTestSetActivity.java
  9. 309 0
      app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerHelper.java
  10. 0 166
      app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerUtils.java
  11. 6 1
      app_modular/apptasks/src/main/java/com/modular/apptasks/presenter/AutoPresenter.java
  12. 4 4
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/presenter/SelectAimPresenter.java
  13. 2 2
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/presenter/WorkPresenter.java
  14. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/adapter/BusinessTravelAdapter.java
  15. 1 1
      app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/CharitableListFragment.java
  16. 4 5
      app_modular/appworks/src/main/res/layout/handler_charit_list.xml

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

@@ -30,7 +30,7 @@ import com.uas.applocation.Interface.OnSearchLocationListener;
 import com.uas.applocation.UasLocationHelper;
 import com.uas.applocation.model.UASLocation;
 import com.uas.applocation.utils.LocationDistanceUtils;
-import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.LocationNeerHelper;
 import com.uas.applocation.utils.ModelChangeUtils;
 import com.xzjmyk.pm.activity.R;
 
@@ -74,7 +74,7 @@ public class LocationMapActivity extends BaseActivity implements OnGetPoiSearchR
         }
         init();
         initView();
-        LocationNeerUtils.loadDataByNeer(ct, location, 0, point, new OnSearchLocationListener() {
+        LocationNeerHelper.getInstance().loadDataByNeer(ct, location, 0, point, new OnSearchLocationListener() {
             @Override
             public void onCallBack(boolean isSuccess, List<UASLocation> locations) {
                 if (isSuccess){

+ 0 - 2
app_core/common/src/main/java/com/core/app/MyApplication.java

@@ -40,7 +40,6 @@ 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;
@@ -178,7 +177,6 @@ public class MyApplication extends BaseApplication {
             mTestLocationOpinion.initLocation();
             mTestLocationOpinion.asynTaskUpdateCallBack();
         }
-        AreaUtils.initArea(this);
         UasLocationHelper.getInstance().initConfig(this);
     }
 

+ 4 - 4
app_core/common/src/main/java/com/core/widget/view/imp/SearchPresenter.java

@@ -15,7 +15,7 @@ import com.uas.applocation.Interface.OnSearchLocationListener;
 import com.uas.applocation.UasLocationHelper;
 import com.uas.applocation.model.UASLocation;
 import com.uas.applocation.utils.LocationDistanceUtils;
-import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.LocationNeerHelper;
 import com.uas.applocation.utils.ModelChangeUtils;
 
 import java.util.ArrayList;
@@ -67,7 +67,7 @@ public class SearchPresenter {
             if (!isSuccess) {
                 if (isLoadChina) {
                     isLoadChina = false;
-                    LocationNeerUtils.searchByInput(MyApplication.getInstance(),null, param.getKeyWork(), pageNum, mOnSearchLocationListener);
+                    LocationNeerHelper.getInstance().searchByInput(MyApplication.getInstance(),null, param.getKeyWork(), pageNum, mOnSearchLocationListener);
                 }
             } else {
                 if (!ListUtils.isEmpty(locations)) {
@@ -167,7 +167,7 @@ public class SearchPresenter {
 
     private void loadDataByChina() {
         isLoadChina = true;
-        LocationNeerUtils.searchByInput(MyApplication.getInstance(),"中国", param.getKeyWork(), pageNum, mOnSearchLocationListener);
+        LocationNeerHelper.getInstance().searchByInput(MyApplication.getInstance(),"中国", param.getKeyWork(), pageNum, mOnSearchLocationListener);
     }
 
     /**
@@ -183,7 +183,7 @@ public class SearchPresenter {
         thisInfo.city = mUASLocation.getCityName();
         thisInfo.address = mUASLocation.getAddress();
         neerList.add(new SearchLocationModel(thisInfo));
-        LocationNeerUtils.loadDataByNeer(MyApplication.getInstance(), radius, pageNum, mOnSearchLocationListener);
+        LocationNeerHelper.getInstance().loadDataByNeer(MyApplication.getInstance(), radius, pageNum, mOnSearchLocationListener);
 
     }
 

+ 11 - 18
app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java

@@ -5,14 +5,9 @@ import android.content.Intent;
 import android.support.v4.content.LocalBroadcastManager;
 
 import com.uas.applocation.Interface.OnLocationListener;
-import com.uas.applocation.base.BDLocationManager;
 import com.uas.applocation.base.BaseLocationManager;
-import com.uas.applocation.base.NativeLocationManager;
+import com.uas.applocation.base.UASLocationManager;
 import com.uas.applocation.model.UASLocation;
-import com.uas.applocation.utils.AreaUtils;
-
-import static com.uas.applocation.model.UASLocation.TYPE_BAIDU;
-import static com.uas.applocation.model.UASLocation.TYPE_NATIVE;
 
 public class UasLocationHelper implements BaseLocationManager {
 
@@ -20,7 +15,7 @@ public class UasLocationHelper implements BaseLocationManager {
     private static UasLocationHelper instance;
     private final Intent broadcast = new Intent(ACTION_LOCATION_CHANGE);//更新后广播
     private Context ct;
-    private BaseLocationManager mLocationHelper = null;
+    private UASLocationManager mLocationHelper = null;
 
     public static UasLocationHelper getInstance() {
         if (instance == null) {
@@ -34,7 +29,7 @@ public class UasLocationHelper implements BaseLocationManager {
     }
 
 
-    public BaseLocationManager getLocationManager() {
+    public UASLocationManager getLocationManager() {
         return mLocationHelper;
     }
 
@@ -42,21 +37,19 @@ public class UasLocationHelper implements BaseLocationManager {
         if (ct != null) {
             this.ct = ct.getApplicationContext();
         }
-        switch (AreaUtils.getLocationServiceType()) {
-            case TYPE_BAIDU:
-                mLocationHelper = new BDLocationManager(this.ct);
-                break;
-            case TYPE_NATIVE:
-                mLocationHelper = new NativeLocationManager(this.ct);
-                break;
-        }
+        mLocationHelper = new UASLocationManager(ct);
         if (mLocationHelper != null) {
             mLocationHelper.requestLocation(mOnLocationListener);
         }
     }
 
+    public void setTest(boolean mOutChina) {
+        mLocationHelper.setOutChina(mOutChina);
+    }
 
-
+    public boolean isOutChina() {
+        return mLocationHelper != null && mLocationHelper.isOutChina();
+    }
 
     @Override
     public void release() {
@@ -80,7 +73,7 @@ public class UasLocationHelper implements BaseLocationManager {
     @Override
     public void requestLocation(OnLocationListener mOnLocationListener) {
         if (mLocationHelper != null) {
-                mLocationHelper.requestLocation(mOnLocationListener == null ? this.mOnLocationListener : mOnLocationListener);
+            mLocationHelper.requestLocation(mOnLocationListener == null ? this.mOnLocationListener : mOnLocationListener);
         }
     }
 

+ 4 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/BDLocationManager.java

@@ -11,6 +11,7 @@ import com.uas.applocation.UasLocationHelper;
 import com.uas.applocation.model.UASLocation;
 import com.uas.applocation.utils.AreaUtils;
 
+@Deprecated
 public class BDLocationManager implements BaseLocationManager {
     private final LocationClient mLocationClient;
     private int mFaildCount;//错误次数
@@ -98,6 +99,9 @@ public class BDLocationManager implements BaseLocationManager {
             mUASLocation.setAddress(location.getAddrStr());
             mUASLocation.setName(location.getLocationDescribe());
             isUpdateLocation = true;
+            if (mOnLocationListener!=null){
+                mOnLocationListener.onReceiveLocation(mUASLocation);
+            }
         } else {
             if (mUASLocation == null) {
                 mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);

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

@@ -45,6 +45,7 @@ import java.util.logging.Logger;
 /**
  * 本地定位,只负责定位
  */
+@Deprecated
 public class NativeLocationManager implements BaseLocationManager {
     private final String DEF_OUT_CHS_COOE_TYPE = "bd09ll";//bd09ll  //WGS84
     private final Logger MLOGGER = Logger.getLogger("NativeLocationManager");

+ 262 - 0
app_modular/applocation/src/main/java/com/uas/applocation/base/UASLocationManager.java

@@ -0,0 +1,262 @@
+package com.uas.applocation.base;
+
+import android.content.Context;
+import android.location.Address;
+import android.location.Geocoder;
+import android.text.TextUtils;
+
+import com.baidu.location.BDLocation;
+import com.baidu.location.BDLocationListener;
+import com.baidu.location.LocationClient;
+import com.baidu.location.LocationClientOption;
+import com.baidu.mapapi.model.LatLng;
+import com.uas.applocation.Interface.OnLocationListener;
+import com.uas.applocation.model.UASLocation;
+import com.uas.applocation.utils.CoordinateUtils;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * 定位管理器,负责定位相关
+ */
+public class UASLocationManager {
+    private final String COOR_TYPE_BD = "bd09ll";
+    private final String COOR_TYPE_WGS = "WGS84";
+    private final String COOR_TYPE_GCJ = "gcj02";
+
+    private boolean isOutChina = false;
+    private final LocationClient mLocationClient;
+    private int mFaildCount;//错误次数
+    private UASLocation mUASLocation;
+    private OnLocationListener mOnLocationListener;//临时回调器
+    private boolean isUpdateLocation;
+    private Context ct;
+
+    public UASLocationManager(Context ct) {
+        // 声明LocationClient类
+        this.ct = ct.getApplicationContext();
+        mLocationClient = new LocationClient(ct);
+        mLocationClient.registerLocationListener(mLocationListener); // 注册监听函数
+        updateOption();
+    }
+
+    private void updateOption() {
+        LocationClientOption option = null;
+        if (isOutChina) {
+            option = getOptionByGPS();
+            option.setCoorType(COOR_TYPE_WGS);
+        } else {
+            option = getOptionByGPS();
+            option.setOpenGps(false);
+            option.setCoorType(COOR_TYPE_BD);
+        }
+        mLocationClient.setLocOption(option);
+
+    }
+
+    //设置配置,使用gps
+    private LocationClientOption getOptionByGPS() {
+        LocationClientOption option = new LocationClientOption();
+        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
+        option.setScanSpan(1);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
+        option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
+        option.setOpenGps(true);//可选,默认false,设置是否使用gps
+        option.setLocationNotify(false);//可选,默认false,设置是否当GPS有效时按照1S/1次频率输出GPS结果
+        option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
+        option.setIsNeedLocationPoiList(false);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
+        option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
+        option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
+        option.setEnableSimulateGps(true);//可选,默认false,设置是否需要过滤GPS仿真结果,默认需要
+        option.setNeedDeviceDirect(false);
+        return option;
+    }
+
+    private void clearLocation() {
+        if (mUASLocation != null) {
+            mUASLocation.clear();
+        }
+    }
+
+    private BDLocationListener mLocationListener = new BDLocationListener() {
+        @Override
+        public void onReceiveLocation(BDLocation location) {
+            try {
+                if (isLocationOk(location)) {
+                    mFaildCount = 0;
+                    mLocationClient.stop();
+                    isUpdateLocation = true;
+                    int locationWhere = location.getLocationWhere();
+                    if (locationWhere == BDLocation.LOCATION_WHERE_OUT_CN) {
+                        //国外
+                        if (isOutChina) {
+                            setLocation(location);
+                        } else {
+                            isOutChina = true;
+                            updateOption();
+                            requestLocation(mOnLocationListener);
+                        }
+                    } else {
+                        //国内
+                        setLocation(location);
+                    }
+                } else {
+                    if (mUASLocation == null) {
+                        mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+                    } else {
+                        clearLocation();
+                    }
+                    //统一为定位失败
+                    mUASLocation.setLocationOk(false);
+                    String errorMessage = getLocationError(location);
+                    mUASLocation.setRemarks(errorMessage);
+                    if (mFaildCount < 3) {
+                        mFaildCount++;
+                        requestLocation(mOnLocationListener);
+                    }
+                }
+
+            } catch (Exception e) {
+                clearLocation();
+            }
+        }
+    };
+
+    public void setOutChina(boolean outChina) {
+        isOutChina = outChina;
+    }
+
+    public boolean isOutChina() {
+        return isOutChina;
+    }
+
+    //关闭定位
+    public void release() {
+        if (mLocationClient.isStarted()) {
+            mLocationClient.stop();
+        }
+    }
+
+    //刷新定位
+    public void requestLocation(OnLocationListener mOnLocationListener) {
+        if (mOnLocationListener != null) {
+            this.mOnLocationListener = mOnLocationListener;
+        }
+        if (mLocationClient == null) return;
+        isUpdateLocation = false;
+        if (!mLocationClient.isStarted()) {
+            mFaildCount = 0;
+            mLocationClient.start();
+        } else {
+            mLocationClient.requestLocation();
+        }
+    }
+
+    //是否更新定位
+    public boolean isLocationUpdate() {
+        return isUpdateLocation;
+    }
+
+    public UASLocation getUASLocation() {
+        return mUASLocation == null ? mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU) : mUASLocation;
+    }
+
+
+    private boolean isLocationOk(BDLocation location) {
+        return location.getLocType() == BDLocation.TypeGpsLocation// GPS定位结果
+                || location.getLocType() == BDLocation.TypeNetWorkLocation//网络定位
+                || location.getLocType() == BDLocation.TypeOffLineLocation//离线定位(未验证离线定位的有效性)
+                ;
+    }
+
+    private String getLocationError(BDLocation location) {
+        String errorMessage = null;
+        if (location.getLocType() == BDLocation.TypeServerError) {
+            //服务端网络定位失败,可以反馈IMEI号和大体定位时间到loc-bugs@baidu.com,会有人追查原因
+            errorMessage = "服务端网络定位失败";
+        } else if (location.getLocType() == BDLocation.TypeNetWorkException) {
+            //网络不同导致定位失败,请检查网络是否通畅
+            errorMessage = "网络不同导致定位失败,请检查网络是否通畅";
+        } else if (location.getLocType() == BDLocation.TypeCriteriaException) {
+            //无法获取有效定位依据导致定位失败,一般是由于手机的原因,处于飞行模式下一般会造成这种结果,可以试着重启手机
+            errorMessage = "无法获取有效定位依据导致定位失败";
+        } else {
+            errorMessage = "未知错误";
+        }
+        return errorMessage;
+    }
+
+    private void setLocation(BDLocation location) throws Exception {
+        //定位成功
+        if (mUASLocation == null) {
+            mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+        } else {
+            clearLocation();
+        }
+        String CoorType = location.getCoorType();
+        LatLng mLatlng = new LatLng(location.getLatitude(), location.getLongitude());
+        changeCoord(CoorType, mLatlng);
+        mUASLocation.setLocationOk(true);
+        mUASLocation.setProvince(location.getProvince());
+        mUASLocation.setCityName(location.getCity());
+        mUASLocation.setAddress(location.getAddrStr());
+        mUASLocation.setName(location.getLocationDescribe());
+        if (!mUASLocation.isLegalAble() && (TextUtils.isEmpty(CoorType) || !COOR_TYPE_BD.toUpperCase().equals(CoorType.toUpperCase()))) {
+            analysisGps(mUASLocation.getGpsLatitude(), mUASLocation.getGpsLongitude());
+        }
+        if (mOnLocationListener!=null){
+            mOnLocationListener.onReceiveLocation(mUASLocation);
+        }
+    }
+
+    private void analysisGps(double latitude, double longitude) {
+        Geocoder gc = new Geocoder(ct, Locale.getDefault());
+        List<Address> locationList = null;
+        try {
+            locationList = gc.getFromLocation(latitude, longitude, 1);
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+        if (locationList != null && locationList.size() > 0) {
+            isUpdateLocation = true;
+            Address mAddress = locationList.get(0);
+            if (mAddress != null) {
+                mUASLocation.setProvince(mAddress.getLocality());
+                mUASLocation.setCityName(mAddress.getSubAdminArea());
+                mUASLocation.setCountry(mAddress.getCountryName());
+                mUASLocation.setName(mAddress.getFeatureName());
+                mUASLocation.setDistrict(mAddress.getThoroughfare());
+                mUASLocation.setAddress(mAddress.getAddressLine(0));
+            }
+        }
+    }
+
+
+    private void changeCoord(String type, LatLng mLatLng) {
+        if (mLatLng == null) return;
+        LatLng latlng = null;
+
+        if (!TextUtils.isEmpty(type)) {
+            if (COOR_TYPE_BD.toUpperCase().equals(type.toUpperCase())) {//百度坐标
+                latlng = mLatLng;
+            } else if (COOR_TYPE_GCJ.toUpperCase().equals(type.toUpperCase())) {//国测局坐标
+                latlng = CoordinateUtils.common2Baidu(mLatLng);
+            } else {
+                latlng = CoordinateUtils.gps2Baidu(mLatLng);
+            }
+        } else {
+            latlng = CoordinateUtils.gps2Baidu(mLatLng);
+        }
+
+        mUASLocation.setGpsLatitude(mLatLng.latitude);
+        mUASLocation.setGpsLongitude(mLatLng.longitude);
+        if (latlng == null) {
+            mUASLocation.setLatitude(mLatLng.latitude);
+            mUASLocation.setLongitude(mLatLng.longitude);
+        } else {
+            mUASLocation.setLatitude(latlng.latitude);
+            mUASLocation.setLongitude(latlng.longitude);
+        }
+    }
+}

+ 2 - 6
app_modular/applocation/src/main/java/com/uas/applocation/test/LocationTestSetActivity.java

@@ -81,8 +81,7 @@ public class LocationTestSetActivity extends AppCompatActivity {
         UASLocation mUASLocation = UasLocationHelper.getInstance().getUASLocation();
         if (mUASLocation != null) {
             currentInfoTv.setText(mUASLocation.toString());
-            int type = AreaUtils.getLocationServiceType();
-            boolean userNative = type == UASLocation.TYPE_NATIVE;
+            boolean userNative = UasLocationHelper.getInstance().isOutChina();
             userNativeCb.setChecked(userNative);
             inventedRl.setVisibility(userNative ? View.VISIBLE : View.GONE);
             showInventedLL(inventedCb.isChecked());
@@ -97,10 +96,7 @@ public class LocationTestSetActivity extends AppCompatActivity {
         @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);
-                AreaUtils.setType(LocationTestSetActivity.this, AreaUtils.type);
+                UasLocationHelper.getInstance().setTest(b);
             } else if (inventedCb == compoundButton) {
                 showInventedLL(b);
             }

+ 309 - 0
app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerHelper.java

@@ -0,0 +1,309 @@
+package com.uas.applocation.utils;
+
+import android.content.Context;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.baidu.mapapi.model.LatLng;
+import com.baidu.mapapi.search.core.PoiInfo;
+import com.baidu.mapapi.search.poi.PoiCitySearchOption;
+import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
+import com.baidu.mapapi.search.poi.PoiResult;
+import com.baidu.mapapi.search.poi.PoiSearch;
+import com.me.network.app.http.HttpClient;
+import com.me.network.app.http.Method;
+import com.me.network.app.http.rx.Result2Listener;
+import com.me.network.app.http.rx.ResultSubscriber;
+import com.uas.applocation.Interface.OnBaiduPoiListener;
+import com.uas.applocation.Interface.OnSearchLocationListener;
+import com.uas.applocation.R;
+import com.uas.applocation.UasLocationHelper;
+import com.uas.applocation.model.UASLocation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class LocationNeerHelper {
+
+    private static LocationNeerHelper INSTANCE;
+
+    public static LocationNeerHelper getInstance() {
+        if (INSTANCE == null) {
+            synchronized (LocationNeerHelper.class) {
+                if (INSTANCE == null) {
+                    INSTANCE = new LocationNeerHelper();
+                }
+            }
+        }
+        return INSTANCE;
+    }
+
+    /**
+     * 获取当前位置周边位置信息
+     *
+     * @param ct
+     * @param radius                    范围
+     * @param pagerNum                  页数
+     * @param mOnSearchLocationListener
+     */
+    public void loadDataByNeer(Context ct, int radius, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
+        loadDataByNeer(ct, radius, pagerNum, null, mOnSearchLocationListener);
+    }
+
+    /**
+     * 获取指定位置周边位置信息
+     *
+     * @param ct
+     * @param radius                    范围
+     * @param pagerNum                  页数
+     * @param latLng                    指定位置点
+     * @param mOnSearchLocationListener
+     */
+    public void loadDataByNeer(Context ct, int radius, int pagerNum, LatLng latLng, OnSearchLocationListener mOnSearchLocationListener) {
+        if (latLng == null) {
+            UASLocation local = UasLocationHelper.getInstance().getUASLocation();
+            latLng = new LatLng(local.getLatitude(), local.getLongitude());
+        }
+        if (UasLocationHelper.getInstance().getLocationManager().isOutChina()) {
+            loadNativeByNeer(ct, latLng.latitude, latLng.longitude, radius, mOnSearchLocationListener);
+        } else {
+            loadBaiduByNeer(radius, pagerNum, latLng, mOnSearchLocationListener);
+        }
+    }
+
+    /**
+     * 根据数据的关键字搜索为位置点
+     *
+     * @param ct
+     * @param city                      城市
+     * @param keyWord
+     * @param pagerNum
+     * @param mOnSearchLocationListener
+     */
+    public void searchByInput(Context ct, String city, String keyWord, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
+        UASLocation local = UasLocationHelper.getInstance().getUASLocation();
+        if (local == null) {
+            local = new UASLocation(UASLocation.TYPE_BAIDU);
+        }
+        if (TextUtils.isEmpty(city)) {
+            city = local.getCityName();
+        }
+
+        if (UasLocationHelper.getInstance().getLocationManager().isOutChina()) {
+            loadByInput(ct, keyWord, mOnSearchLocationListener);
+        } else {
+            searchBaiduByInput(city, keyWord, pagerNum, mOnSearchLocationListener);
+        }
+    }
+
+
+    //获取百度定位周边为位置点
+    private static void loadBaiduByNeer(int radius, int pagerNum, LatLng latLng, final OnSearchLocationListener mOnSearchLocationListener) {
+        PoiNearbySearchOption option = new PoiNearbySearchOption();
+        PoiSearch mPoiSearch = PoiSearch.newInstance();
+        option.keyword("公司")
+                .radius(radius)
+                .pageNum(pagerNum)
+                .pageCapacity(40)
+                .location(latLng);
+        mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
+            @Override
+            public void onGetPoiResult(PoiResult poiResult) {
+                if (mOnSearchLocationListener != null) {
+                    if (poiResult != null) {
+                        List<PoiInfo> mPoiInfos = poiResult.getAllPoi();
+                        if (mPoiInfos != null && mPoiInfos.size() > 0) {
+                            List<UASLocation> locations = new ArrayList<>();
+                            UASLocation location = null;
+                            for (PoiInfo e : mPoiInfos) {
+                                location = new UASLocation(UASLocation.TYPE_BAIDU);
+                                location.setLongitude(e.location.longitude);
+                                location.setLatitude(e.location.latitude);
+                                location.setName(e.name);
+                                location.setAddress(e.address);
+                                locations.add(location);
+                            }
+                            mOnSearchLocationListener.onCallBack(true, locations);
+                        } else {
+                            mOnSearchLocationListener.onCallBack(false, null);
+                        }
+                    } else {
+                        mOnSearchLocationListener.onCallBack(false, null);
+                    }
+                }
+            }
+        });
+        mPoiSearch.searchNearby(option);
+    }
+
+
+    private static void searchBaiduByInput(String city, String location, int pagerNum, final OnSearchLocationListener mOnSearchLocationListener) {
+        try {
+            PoiSearch mPoiSearch = PoiSearch.newInstance();
+            mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
+                @Override
+                public void onGetPoiResult(PoiResult poiResult) {
+                    if (mOnSearchLocationListener != null) {
+                        if (poiResult != null && poiResult.getAllPoi() != null) {
+                            List<PoiInfo> poiLists = poiResult.getAllPoi();
+                            List<UASLocation> mUASLocations = new ArrayList<>();
+                            for (PoiInfo e : poiLists) {
+                                mUASLocations.add(ModelChangeUtils.poiInfo2Location(e));
+                            }
+                            mOnSearchLocationListener.onCallBack(true, mUASLocations);
+                        } else {
+                            mOnSearchLocationListener.onCallBack(false, null);
+                        }
+                    }
+                }
+            });
+            mPoiSearch.searchInCity((new PoiCitySearchOption())
+                    .city(city)
+                    .keyword(location)
+                    .pageNum(pagerNum)
+                    .pageCapacity(1000)
+            );
+        } catch (Exception e) {
+            if (e != null)
+                Log.i("gongpengming", "e =" + e.getMessage());
+        }
+    }
+
+
+    //获取google地图信息
+    private HttpClient mHttpClient;
+
+    private HttpClient getHttpClient() {
+        if (mHttpClient == null) {
+            mHttpClient = new HttpClient.Builder("https://maps.googleapis.com/maps/api/place/").isDebug(false)
+                    .connectTimeout(5000)
+                    .readTimeout(5000).build();
+        }
+        return mHttpClient;
+    }
+
+    /**
+     * 获取当前位置附近位置
+     *
+     * @param ct
+     * @param latitude
+     * @param longitude
+     * @param mOnSearchLocationListener
+     */
+    public void loadNativeByNeer(final Context ct, double latitude, double longitude, float radius, final OnSearchLocationListener mOnSearchLocationListener) {
+        HttpClient request = new HttpClient.Builder()
+                .url("nearbysearch/json")
+                .isDebug(true)
+                .add("location", latitude + "," + longitude)
+                .add("radius", radius)
+                .add("keyword", "公司")
+                .add("output", "json")
+                .method(Method.GET)
+                .add("key", ct.getString(R.string.app_google_key))
+                .build();
+        getHttpClient().Api().send(request, new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object s) {
+                try {
+                    JSONObject object = JSON.parseObject(s.toString());
+                    if (object != null
+                            && object.containsKey("status") && "OK".equals(object.getString("status").toUpperCase())
+                            && object.containsKey("results") && mOnSearchLocationListener != null) {
+                        handlerNeer(object.getJSONArray("results"), mOnSearchLocationListener);
+                    }
+                } catch (Exception e) {
+
+                }
+            }
+
+            @Override
+            public void onFailure(Object t) {
+                if (mOnSearchLocationListener != null) {
+                    mOnSearchLocationListener.onCallBack(false, null);
+                }
+            }
+        }));
+    }
+
+    private void handlerNeer(JSONArray array, OnSearchLocationListener mOnSearchLocationListener) throws Exception {
+        JSONObject object;
+        UASLocation mUASLocation;
+        List<UASLocation> mUASLocations = new ArrayList<>();
+        for (int i = 0; i < array.size(); i++) {
+            object = array.getJSONObject(i);
+            mUASLocation = new UASLocation(UASLocation.TYPE_NATIVE);
+            String name = object.getString("name");
+            String address = null;
+            if (object.containsKey("vicinity")) {
+                address = object.getString("vicinity");
+            }
+            if (TextUtils.isEmpty(address) && object.containsKey("formatted_address")) {
+                address = object.getString("formatted_address");
+            }
+//            String province = object.getString("province");
+            String city = object.getString("city");//TODO 城市
+//            String area = object.getString("area");
+            mUASLocation.setName(name);
+            mUASLocation.setAddress(address);
+            mUASLocation.setCityName(city);
+            JSONObject geometry = object.getJSONObject("geometry");
+            if (geometry != null) {
+                JSONObject location = geometry.getJSONObject("location");
+                if (location != null) {
+                    float lat = location.getFloat("lat");
+                    float lng = location.getFloat("lng");
+                    if (lat > 0 && lng > 0) {
+                        mUASLocation.setLatitude(lat);
+                        mUASLocation.setLongitude(lng);
+                    }
+                }
+            }
+            mUASLocations.add(mUASLocation);
+        }
+        mOnSearchLocationListener.onCallBack(true, mUASLocations);
+    }
+
+    /**
+     * 通过输入进行搜索
+     *
+     * @param ct
+     * @param keyWord
+     * @param mOnSearchLocationListener
+     */
+    public void loadByInput(Context ct, String keyWord, final OnSearchLocationListener mOnSearchLocationListener) {
+        if (ct == null || mOnSearchLocationListener == null)
+            return;
+        HttpClient.Builder requestBuilder = new HttpClient.Builder()
+                .isDebug(true)
+                .url("textsearch/json")
+                .add("query", keyWord)
+                .method(Method.GET)
+                .add("key", ct.getString(R.string.app_google_key));
+        HttpClient request = requestBuilder.build();
+        getHttpClient().Api().send(request, new ResultSubscriber<>(new Result2Listener<Object>() {
+            @Override
+            public void onResponse(Object s) {
+                try {
+                    JSONObject object = JSON.parseObject(s.toString());
+                    if (object != null
+                            && object.containsKey("status") && "OK".equals(object.getString("status").toUpperCase())
+                            && object.containsKey("results") && mOnSearchLocationListener != null) {
+                        handlerNeer(object.getJSONArray("results"), mOnSearchLocationListener);
+                    }
+                } catch (Exception e) {
+
+                }
+            }
+            @Override
+            public void onFailure(Object t) {
+                if (mOnSearchLocationListener != null) {
+                    mOnSearchLocationListener.onCallBack(false, null);
+                }
+            }
+        }));
+    }
+
+}

+ 0 - 166
app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerUtils.java

@@ -1,166 +0,0 @@
-package com.uas.applocation.utils;
-
-import android.content.Context;
-import android.text.TextUtils;
-import android.util.Log;
-
-import com.baidu.mapapi.model.LatLng;
-import com.baidu.mapapi.search.core.PoiInfo;
-import com.baidu.mapapi.search.poi.PoiCitySearchOption;
-import com.baidu.mapapi.search.poi.PoiNearbySearchOption;
-import com.baidu.mapapi.search.poi.PoiResult;
-import com.baidu.mapapi.search.poi.PoiSearch;
-import com.uas.applocation.Interface.OnBaiduPoiListener;
-import com.uas.applocation.Interface.OnSearchLocationListener;
-import com.uas.applocation.UasLocationHelper;
-import com.uas.applocation.base.BaseLocationManager;
-import com.uas.applocation.base.NativeLocationManager;
-import com.uas.applocation.model.UASLocation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class LocationNeerUtils {
-
-    /**
-     * 获取当前位置周边位置信息
-     *
-     * @param ct
-     * @param radius                    范围
-     * @param pagerNum                  页数
-     * @param mOnSearchLocationListener
-     */
-    public static void loadDataByNeer(Context ct, int radius, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
-        loadDataByNeer(ct, radius, pagerNum, null, mOnSearchLocationListener);
-    }
-
-    /**
-     * 获取指定位置周边位置信息
-     *
-     * @param ct
-     * @param radius                    范围
-     * @param pagerNum                  页数
-     * @param latLng                    指定位置点
-     * @param mOnSearchLocationListener
-     */
-    public static void loadDataByNeer(Context ct, int radius, int pagerNum, LatLng latLng, OnSearchLocationListener mOnSearchLocationListener) {
-        if (latLng == null) {
-            UASLocation local = UasLocationHelper.getInstance().getUASLocation();
-            latLng = new LatLng(local.getLatitude(), local.getLongitude());
-        }
-        if (AreaUtils.getLocationServiceType() == UASLocation.TYPE_NATIVE) {
-            BaseLocationManager mManager = UasLocationHelper.getInstance().getLocationManager();
-            if (mManager == null && !(mManager instanceof NativeLocationManager)) {
-                mManager = new NativeLocationManager(ct);
-            }
-            ((NativeLocationManager) mManager).loadNativeByNeer(ct, latLng.latitude, latLng.longitude, radius, mOnSearchLocationListener);
-        } else {
-            loadBaiduByNeer(radius, pagerNum, latLng, mOnSearchLocationListener);
-        }
-    }
-
-
-    //获取百度定位周边为位置点
-    private static void loadBaiduByNeer(int radius, int pagerNum, LatLng latLng, final OnSearchLocationListener mOnSearchLocationListener) {
-        PoiNearbySearchOption option = new PoiNearbySearchOption();
-        PoiSearch mPoiSearch = PoiSearch.newInstance();
-        option.keyword("公司")
-                .radius(radius)
-                .pageNum(pagerNum)
-                .pageCapacity(40)
-                .location(latLng);
-        mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
-            @Override
-            public void onGetPoiResult(PoiResult poiResult) {
-                if (mOnSearchLocationListener != null) {
-                    if (poiResult != null) {
-                        List<PoiInfo> mPoiInfos = poiResult.getAllPoi();
-                        if (mPoiInfos != null && mPoiInfos.size() > 0) {
-                            List<UASLocation> locations = new ArrayList<>();
-                            UASLocation location = null;
-                            for (PoiInfo e : mPoiInfos) {
-                                location = new UASLocation(UASLocation.TYPE_BAIDU);
-                                location.setLongitude(e.location.longitude);
-                                location.setLatitude(e.location.latitude);
-                                location.setName(e.name);
-                                location.setAddress(e.address);
-                                locations.add(location);
-                            }
-                            mOnSearchLocationListener.onCallBack(true, locations);
-                        } else {
-                            mOnSearchLocationListener.onCallBack(false, null);
-                        }
-                    } else {
-                        mOnSearchLocationListener.onCallBack(false, null);
-                    }
-                }
-            }
-        });
-        mPoiSearch.searchNearby(option);
-    }
-
-
-    /**
-     * 根据数据的关键字搜索为位置点
-     *
-     * @param ct
-     * @param city                      城市
-     * @param keyWord
-     * @param pagerNum
-     * @param mOnSearchLocationListener
-     */
-    public static void searchByInput(Context ct, String city, String keyWord, int pagerNum, OnSearchLocationListener mOnSearchLocationListener) {
-        UASLocation local = UasLocationHelper.getInstance().getUASLocation();
-        if (local == null) {
-            local = new UASLocation(UASLocation.TYPE_BAIDU);
-        }
-        if (TextUtils.isEmpty(city)) {
-            city = local.getCityName();
-        }
-
-        if (AreaUtils.getLocationServiceType() == UASLocation.TYPE_NATIVE) {
-            BaseLocationManager mManager = UasLocationHelper.getInstance().getLocationManager();
-            if (mManager == null && !(mManager instanceof NativeLocationManager)) {
-                mManager = new NativeLocationManager(ct);
-            }
-            ((NativeLocationManager) mManager).loadByInput(ct, city, keyWord, mOnSearchLocationListener);
-
-        } else {
-            searchBaiduByInput(city, keyWord, pagerNum, mOnSearchLocationListener);
-        }
-    }
-
-    private static void searchBaiduByInput(String city, String location, int pagerNum, final OnSearchLocationListener mOnSearchLocationListener) {
-        try {
-            PoiSearch mPoiSearch = PoiSearch.newInstance();
-            mPoiSearch.setOnGetPoiSearchResultListener(new OnBaiduPoiListener() {
-                @Override
-                public void onGetPoiResult(PoiResult poiResult) {
-                    if (mOnSearchLocationListener != null) {
-                        if (poiResult != null && poiResult.getAllPoi() != null) {
-                            List<PoiInfo> poiLists = poiResult.getAllPoi();
-                            List<UASLocation> mUASLocations = new ArrayList<>();
-                            for (PoiInfo e : poiLists) {
-                                mUASLocations.add(ModelChangeUtils.poiInfo2Location(e));
-                            }
-                            mOnSearchLocationListener.onCallBack(true, mUASLocations);
-                        } else {
-                            mOnSearchLocationListener.onCallBack(false, null);
-                        }
-                    }
-                }
-            });
-            mPoiSearch.searchInCity((new PoiCitySearchOption())
-                    .city(city)
-                    .keyword(location)
-                    .pageNum(pagerNum)
-                    .pageCapacity(1000)
-            );
-        } catch (Exception e) {
-            if (e != null)
-                Log.i("gongpengming", "e =" + e.getMessage());
-        }
-    }
-
-
-}

+ 6 - 1
app_modular/apptasks/src/main/java/com/modular/apptasks/presenter/AutoPresenter.java

@@ -5,6 +5,7 @@ import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.support.v4.content.LocalBroadcastManager;
+import android.util.Log;
 
 import com.alibaba.fastjson.JSON;
 import com.common.LogUtil;
@@ -135,6 +136,7 @@ public class AutoPresenter {
 	 * @param loadAble 是否允许请求
 	 */
 	private void reckonWorkThread(boolean loadAble) {
+		LogUtil.i("gong","reckonWorkThread");
 		List<WorkModel> models = WorkModelDao.getInstance().queryAuto();
 		if (!ListUtils.isEmpty(models)) {
 			String newHHMM = DateFormatUtil.long2Str(DateFormatUtil.HM);
@@ -179,6 +181,7 @@ public class AutoPresenter {
 			if (newHHMM.compareTo(model.getOffend()) <= 0) {
 				//1.3 判断当前时间在下班时间之后,符合打卡==》前往打卡
 				if (newHHMM.compareTo(model.getOffTime()) >= 0) {
+					LogUtil.i("gong","符合打卡");
 					saveWorkLogThread(false, model);
 					return true;
 				} else {
@@ -192,9 +195,11 @@ public class AutoPresenter {
 
 	/*符合条件,进行判断距离和打卡操作*/
 	private void saveWorkLogThread(final boolean isWork, final WorkModel model) {
+		LogUtil.i("gong","请求位置");
 		UasLocationHelper.getInstance().requestLocation(new OnLocationListener() {
 			@Override
 			public void onReceiveLocation(UASLocation mUASLocation) {
+				Log.i("gong","				break;onReceiveLocation");
 				//判断是否符合打卡
 				boolean isInWorkPlce=false;
 				List<WorkLocationModel> beanList = WorkLocationDao.getInstance().queryByEnCode();
@@ -238,7 +243,7 @@ public class AutoPresenter {
 		while (startTime <= endTime) {
 			if (startTime > System.currentTimeMillis()) {
 				nextTime = startTime;
-				break;
+
 			}
 			startTime += 5 * 60 * 1000;
 		}

+ 4 - 4
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/presenter/SelectAimPresenter.java

@@ -23,7 +23,7 @@ import com.core.utils.TimeUtils;
 import com.core.widget.view.model.SelectAimModel;
 import com.uas.applocation.Interface.OnSearchLocationListener;
 import com.uas.applocation.model.UASLocation;
-import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.LocationNeerHelper;
 import com.uas.applocation.utils.ModelChangeUtils;
 import com.uas.appworks.CRM.erp.imp.ISelectAim;
 import com.uas.appworks.R;
@@ -170,19 +170,19 @@ public class SelectAimPresenter implements OnHttpResultListener {
     //下载附近数据
     private void loadNeer() {
         seachMapType = 1;
-        LocationNeerUtils.loadDataByNeer(MyApplication.getInstance(), 200, 0, mOnSearchLocationListener);
+        LocationNeerHelper.getInstance().loadDataByNeer(MyApplication.getInstance(), 200, 0, mOnSearchLocationListener);
     }
 
     //下载全国数据
     private void loadDataByChina() {
         seachMapType = 2;
-        LocationNeerUtils.searchByInput(MyApplication.getInstance(),"中国",keyWork,0,mOnSearchLocationListener);
+        LocationNeerHelper.getInstance().searchByInput(MyApplication.getInstance(),"中国",keyWork,0,mOnSearchLocationListener);
     }
 
     //下载本城市数据
     private void loadDataByCity() {
         seachMapType = 3;
-        LocationNeerUtils.searchByInput(MyApplication.getInstance(),null,keyWork,0,mOnSearchLocationListener);
+        LocationNeerHelper.getInstance().searchByInput(MyApplication.getInstance(),null,keyWork,0,mOnSearchLocationListener);
     }
     private OnSearchLocationListener mOnSearchLocationListener = new OnSearchLocationListener() {
         @Override

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

@@ -34,7 +34,7 @@ import com.uas.applocation.Interface.OnSearchLocationListener;
 import com.uas.applocation.UasLocationHelper;
 import com.uas.applocation.model.UASLocation;
 import com.uas.applocation.utils.LocationDistanceUtils;
-import com.uas.applocation.utils.LocationNeerUtils;
+import com.uas.applocation.utils.LocationNeerHelper;
 import com.uas.applocation.utils.ModelChangeUtils;
 import com.uas.appworks.OA.erp.view.IWorkView;
 import com.uas.appworks.R;
@@ -246,7 +246,7 @@ public class WorkPresenter implements OnHttpResultListener {
         //公司地址必须反过来
         final LatLng compayLng = new LatLng(companyLocation.getLongitude(), companyLocation.getLatitude());
         LatLng latLng = new LatLng(latitude, longitude);
-        LocationNeerUtils.loadDataByNeer(MyApplication.getInstance(), 500, 0, latLng, new OnSearchLocationListener() {
+        LocationNeerHelper.getInstance().loadDataByNeer(MyApplication.getInstance(), 500, 0, latLng, new OnSearchLocationListener() {
             @Override
             public void onCallBack(boolean isSuccess, List<UASLocation> locations) {
                 LogUtil.i("gongTest","isSuccess="+isSuccess+"||\n"+JSON.toJSONString(locations));

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

@@ -300,7 +300,7 @@ public class BusinessTravelAdapter extends RecyclerView.Adapter<RecyclerView.Vie
                 dateTv;//入住时间|返程时间
         RelativeLayout subRl;
         RelativeLayout userInfoRl;
-        LinearLayout orderInfoRl;
+        View orderInfoRl;
         View line;
 
         public BaseViewHlder(View itemView) {

+ 1 - 1
app_modular/appworks/src/main/java/com/uas/appworks/OA/platform/fragment/CharitableListFragment.java

@@ -212,7 +212,7 @@ public class CharitableListFragment extends EasyFragment implements OnPlayListen
             } else {
                 showTop = totality.substring(0, totality.length());
             }
-            int textSize = DisplayUtil.sp2px(ct, 7);
+            int textSize = DisplayUtil.sp2px(ct, 6);
             moneyAmountLL.removeAllViews();//清空布局
             for (int i = 0; i < showTop.length(); i++) {
                 char c = showTop.charAt(i);

+ 4 - 5
app_modular/appworks/src/main/res/layout/handler_charit_list.xml

@@ -25,14 +25,13 @@
         <LinearLayout
             android:id="@+id/moneyAmountLL"
             android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_gravity="center_vertical"
+            android:layout_height="match_parent"
             android:divider="@drawable/spacer_medium"
-            android:gravity="center_vertical"
             android:orientation="horizontal"
-            android:paddingBottom="3dp"
-            android:paddingTop="3dp"
             android:showDividers="middle"
+            android:layout_marginTop="2dp"
+            android:layout_marginBottom="2dp"
+            android:gravity="center_vertical"
             android:visibility="visible" />
 
     </LinearLayout>