Bladeren bron

提交类型 修改bug
提交内容 修改字体大小bug

Bitliker 7 jaren geleden
bovenliggende
commit
9bf32857ff
18 gewijzigde bestanden met toevoegingen van 310 en 134 verwijderingen
  1. 2 3
      WeiChat/src/main/res/layout/activity_save_meet.xml
  2. 3 3
      WeiChat/version.properties
  3. 1 1
      app_core/common/src/main/res/values/styles.xml
  4. 1 11
      app_modular/applocation/src/main/java/com/uas/applocation/UasLocationHelper.java
  5. 0 3
      app_modular/applocation/src/main/java/com/uas/applocation/base/BDLocationManager.java
  6. 186 57
      app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java
  7. 8 2
      app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java
  8. 0 5
      app_modular/applocation/src/main/java/com/uas/applocation/test/LocationTestSetActivity.java
  9. 6 10
      app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java
  10. 3 3
      app_modular/applocation/src/main/java/com/uas/applocation/utils/LocationNeerUtils.java
  11. 37 6
      app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java
  12. 1 1
      app_modular/apputils/src/main/res/layout/common_input_dialog.xml
  13. 4 0
      app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceDataFormAddActivity.java
  14. 3 0
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/CommonDocDetailsActivity.java
  15. 43 21
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ExpenseReimbursementActivity.java
  16. 3 4
      app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/SaveMeetActivity.java
  17. 6 1
      app_modular/appworks/src/main/java/com/uas/appworks/activity/DeviceQueryActivity.java
  18. 3 3
      app_modular/appworks/src/main/res/layout/item_expense_details_table.xml

+ 2 - 3
WeiChat/src/main/res/layout/activity_save_meet.xml

@@ -2,8 +2,7 @@
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    tools:context="com.xzjmyk.pm.activity.ui.erp.activity.oa.SaveMeetActivity">
+    android:layout_height="match_parent">
 
     <LinearLayout
         android:layout_width="match_parent"
@@ -34,7 +33,7 @@
                 android:hint="请填写备注"
                 android:inputType="text"
                 android:minHeight="100dp"
-                android:minLines="5"
+                android:lines="5"
                 android:paddingTop="5dp"
                 android:textColor="@color/text_hine"
                 android:textColorHint="@color/grey"

+ 3 - 3
WeiChat/version.properties

@@ -1,5 +1,5 @@
-#Wed Jul 25 09:05:14 CST 2018
-debugName=519
+#Thu Jul 26 17:43:34 CST 2018
+debugName=524
 versionName=639
-debugCode=519
+debugCode=524
 versionCode=180

+ 1 - 1
app_core/common/src/main/res/values/styles.xml

@@ -985,7 +985,7 @@
     <!--竖线-->
     <style name="expense_table_v_1dp">
         <item name="android:layout_width">1dp</item>
-        <item name="android:layout_height">30dp</item>
+        <item name="android:layout_height">30sp</item>
         <item name="android:background">@color/black</item>
     </style>
 

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

@@ -55,13 +55,8 @@ public class UasLocationHelper implements BaseLocationManager {
         }
     }
 
-    //TODO 正式版本需要去除,必须去除
-    private UASLocation mTestUASLocation;
 
-    public void testStopLocation(UASLocation mUASLocation) {
-        this.mTestUASLocation = mUASLocation;
-        release();
-    }
+
 
     @Override
     public void release() {
@@ -85,17 +80,12 @@ public class UasLocationHelper implements BaseLocationManager {
     @Override
     public void requestLocation(OnLocationListener mOnLocationListener) {
         if (mLocationHelper != null) {
-            if (this.mTestUASLocation != null) {
                 mLocationHelper.requestLocation(mOnLocationListener == null ? this.mOnLocationListener : mOnLocationListener);
-            }
         }
     }
 
     @Override
     public UASLocation getUASLocation() {
-        if (this.mTestUASLocation != null) {
-            return this.mTestUASLocation;
-        }
         return mLocationHelper == null ? new UASLocation(UASLocation.TYPE_BAIDU) : mLocationHelper.getUASLocation();
     }
 

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

@@ -1,7 +1,6 @@
 package com.uas.applocation.base;
 
 import android.content.Context;
-import android.util.Log;
 
 import com.baidu.location.BDLocation;
 import com.baidu.location.BDLocationListener;
@@ -58,14 +57,12 @@ public class BDLocationManager implements BaseLocationManager {
             try {
                 int locationWhere = location.getLocationWhere();
                 if (locationWhere == BDLocation.LOCATION_WHERE_OUT_CN) {
-                    Log.i("gong","海外定位");
                     //判断到是海外的情况下关闭百度地图manager
                     //当再次进行初始化的时候,ct必然是有值的
                     release();
                     AreaUtils.type=UASLocation.TYPE_NATIVE;
                     UasLocationHelper.getInstance().initConfig(null);
                 } else {
-                    Log.i("gong","国内定位");
                     setLocation(location);
                 }
             } catch (Exception e) {

+ 186 - 57
app_modular/applocation/src/main/java/com/uas/applocation/base/NativeLocationManager.java

@@ -11,6 +11,8 @@ import android.location.LocationListener;
 import android.location.LocationManager;
 import android.location.LocationProvider;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Looper;
 import android.support.v4.app.ActivityCompat;
 import android.text.TextUtils;
 import android.util.Log;
@@ -18,6 +20,10 @@ import android.util.Log;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+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.me.network.app.http.HttpClient;
 import com.me.network.app.http.Method;
@@ -40,6 +46,7 @@ import java.util.logging.Logger;
  * 本地定位,只负责定位
  */
 public class NativeLocationManager implements BaseLocationManager {
+    private final String DEF_OUT_CHS_COOE_TYPE = "WGS84";//bd09ll  //WGS84
     private final Logger MLOGGER = Logger.getLogger("NativeLocationManager");
 
     private static final String TAG = "NativeLocationManager";
@@ -49,14 +56,48 @@ public class NativeLocationManager implements BaseLocationManager {
     private LocationManager mLocationManager;
     private Context ct;
     private HttpClient mHttpClient;
+    private LocationClient mLocationClient;
+    private Handler mMainHandler = null;
 
     public NativeLocationManager(Context ct) {
         if (ct != null) {
+            mMainHandler = new Handler(Looper.getMainLooper());
             this.ct = ct.getApplicationContext();
             mLocationManager = (LocationManager) ct.getApplicationContext().getSystemService(Context.LOCATION_SERVICE);
+            initBaiduManager();
         }
     }
 
+    /**
+     * 配置
+     * 百度地图SDK在国内(包括港澳台)使用的是BD09坐标(定位SDK默认使用GCJ02坐标);
+     * 在海外地区,统一使用WGS84坐标。开发者在使用百度地图相关服务时,请注意选择
+     *
+     * @return
+     */
+    private LocationClientOption getOptionByGPS() {
+        LocationClientOption option = new LocationClientOption();
+        option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
+        option.setCoorType(DEF_OUT_CHS_COOE_TYPE);//可选,默认gcj02,设置返回的定位结果坐标系 bd09ll
+        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 initBaiduManager() {
+        mLocationClient = new LocationClient(ct);
+        mLocationClient.registerLocationListener(mLocationListener); // 注册监听函数
+        mLocationClient.setLocOption(getOptionByGPS());
+    }
+
 
     /**
      * 获取定位条件
@@ -82,30 +123,25 @@ public class NativeLocationManager implements BaseLocationManager {
         return provider;
     }
 
-    public void setLocation(Address address) {
+    public void setLocation(int type, String coord, Address address) {
         if (mUASLocation == null) {
-            mUASLocation = new UASLocation(UASLocation.TYPE_NATIVE);
-        } else {
+            mUASLocation = new UASLocation(type);
+        } else if (type == mUASLocation.getType() || mUASLocation.getType() == UASLocation.TYPE_NATIVE || !mUASLocation.isLegalAble()) {
             clearLocation();
+            mUASLocation.setType(type);
+            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));
+            changeCoord(coord, new LatLng(address.getLatitude(), address.getLongitude()));
+            if (mOnLocationListener != null) {
+                mOnLocationListener.onReceiveLocation(mUASLocation);
+            }
+            release();
         }
-        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()));
-//         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);
-        }
-        release();
     }
 
     private void clearLocation() {
@@ -116,20 +152,46 @@ public class NativeLocationManager implements BaseLocationManager {
 
     @Override
     public void release() {
-        mLocationManager.removeUpdates(locationListener);
+        if (mLocationManager != null) {
+            mLocationManager.removeUpdates(locationListener);
+        }
+        if (mLocationClient != null && mLocationClient.isStarted()) {
+            mLocationClient.stop();
+        }
     }
 
 
     @Override
-    public void requestLocation(OnLocationListener mOnLocationListener) {
-        if (mLocationManager == null || ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+    public void requestLocation(final OnLocationListener mOnLocationListener) {
+        if (mLocationManager == null) {
             return;
         }
+        if (Looper.getMainLooper() == Looper.myLooper()) {
+            requestLocationUI(mOnLocationListener);
+        } else {
+            mMainHandler.post(new Runnable() {
+                @Override
+                public void run() {
+                    requestLocationUI(mOnLocationListener);
+                }
+            });
+        }
+
+        if (mLocationClient != null) {
+            if (!mLocationClient.isStarted()) {
+                mLocationClient.start();
+            } else {
+                mLocationClient.requestLocation();
+            }
+        }
+    }
+
+    private void requestLocationUI(OnLocationListener mOnLocationListener) {
+        if (ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(ct, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)
+            return;
         this.mOnLocationListener = mOnLocationListener;
         isUpdateLocation = false;
         String provider = getWellProvider(mLocationManager);
-        //获取最后一次定位
-//        Location location = locationManager.getLastKnownLocation(provider);
         //刷新定位
         mLocationManager.requestLocationUpdates(provider, 10000, 0, locationListener);
     }
@@ -145,6 +207,36 @@ public class NativeLocationManager implements BaseLocationManager {
     }
 
 
+    private BDLocationListener mLocationListener = new BDLocationListener() {
+        @Override
+        public void onReceiveLocation(BDLocation location) {
+            try {
+                String CoorType = location.getCoorType();
+                Log.i(TAG, "CoorType=" + CoorType);
+                String name = location.getLocationDescribe();
+                String address = location.getAddrStr();
+                double latitude = location.getLatitude();
+                double longitude = location.getLongitude();
+                if (!TextUtils.isEmpty(name) && !TextUtils.isEmpty(address) && latitude * longitude != 0) {
+                    setLocation(CoorType, location);
+                } else if (latitude * longitude != 0) {
+                    Geocoder gc = new Geocoder(ct, Locale.getDefault());
+                    List<Address> locationList = null;
+                    try {
+                        locationList = gc.getFromLocation(latitude, longitude, 1000);
+                    } catch (IOException e) {
+                        e.printStackTrace();
+                    }
+                    if (locationList != null && locationList.size() > 0) {
+                        isUpdateLocation = true;
+                        setLocation(UASLocation.TYPE_BAIDU, CoorType, locationList.get(0));
+                    }
+                }
+            } catch (Exception e) {
+                clearLocation();
+            }
+        }
+    };
     private LocationListener locationListener = new LocationListener() {
         //当位置改变的时候调用
         @Override
@@ -165,7 +257,7 @@ public class NativeLocationManager implements BaseLocationManager {
             if (locationList != null && locationList.size() > 0) {
                 isUpdateLocation = true;
                 Address address = locationList.get(0);//得到Address实例
-                setLocation(address);
+                setLocation(UASLocation.TYPE_NATIVE, "gps", address);
             }
         }
 
@@ -201,6 +293,73 @@ public class NativeLocationManager implements BaseLocationManager {
     };
 
 
+    private void setLocation(String type, BDLocation location) throws Exception {
+        if (location.getLocType() == BDLocation.TypeGpsLocation// GPS定位结果
+                || location.getLocType() == BDLocation.TypeNetWorkLocation//网络定位
+                || location.getLocType() == BDLocation.TypeOffLineLocation//离线定位(未验证离线定位的有效性)
+                ) {
+            //定位成功
+            mLocationClient.stop();
+            if (mUASLocation == null) {
+                mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+            } else {
+                clearLocation();
+            }
+            mUASLocation.setLocationOk(true);
+            changeCoord(type, new LatLng(location.getLatitude(), location.getLongitude()));
+            mUASLocation.setProvince(location.getProvince());
+            mUASLocation.setCityName(location.getCity());
+            mUASLocation.setAddress(location.getAddrStr());
+            mUASLocation.setName(location.getLocationDescribe());
+            isUpdateLocation = true;
+        } else {
+            if (mUASLocation == null) {
+                mUASLocation = new UASLocation(UASLocation.TYPE_BAIDU);
+            } else {
+                clearLocation();
+            }
+            //统一为定位失败
+            mUASLocation.setLocationOk(false);
+            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 = "未知错误";
+            }
+            mUASLocation.setRemarks(errorMessage);
+        }
+    }
+
+
+    private void changeCoord(String type, LatLng mLatLng) {
+        if (mLatLng == null) return;
+        LatLng latlng = null;
+        if (type != null && !"BD09LL".equals(type.toUpperCase())) {
+            if (type.toUpperCase().equals("GCJ02")) {
+                latlng = CoordinateUtils.common2Baidu(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);
+        }
+    }
+
+
     private HttpClient getHttpClient() {
         if (mHttpClient == null) {
             mHttpClient = new HttpClient.Builder("https://maps.googleapis.com/maps/api/place/").isDebug(false)
@@ -254,28 +413,6 @@ public class NativeLocationManager implements BaseLocationManager {
     }
 
 
-//    /**
-//     * 由于google收费,必须限制每天使用量
-//     * 流程:
-//     * 1.第一次进入直接进行搜索
-//     */
-//    private String lastKey;
-//    private boolean isWhating, isResulting = false;
-//    private Handler mWhatHandler = new Handler(Looper.getMainLooper());
-//
-//    private void startWhat(final Context ct, final OnSearchLocationListener mOnSearchLocationListener) {
-//        if (!isWhating) {
-//            isWhating = true;
-//            mWhatHandler.postAtTime(new Runnable() {
-//                @Override
-//                public void run() {
-//                    isWhating = false;
-//                    loadByInput(ct, null, lastKey, mOnSearchLocationListener);
-//                }
-//            }, 1000);
-//        }
-//    }
-
     /**
      * 通过输入进行搜索
      *
@@ -287,17 +424,10 @@ public class NativeLocationManager implements BaseLocationManager {
     public void loadByInput(Context ct, String city, String keyWord, final OnSearchLocationListener mOnSearchLocationListener) {
         if (ct == null || mOnSearchLocationListener == null)
             return;
-//        this.lastKey = keyWord;
-//        if (isWhating || isResulting) {
-//            startWhat(ct, mOnSearchLocationListener);
-//            return;
-//        }
-//        isResulting = true;
         HttpClient.Builder requestBuilder = new HttpClient.Builder()
                 .isDebug(true)
                 .url("textsearch/json")
                 .add("query", keyWord)
-//                .add("region", city)//城市
                 .method(Method.GET)
                 .add("key", ct.getString(R.string.app_google_key));
         HttpClient request = requestBuilder.build();
@@ -316,7 +446,6 @@ public class NativeLocationManager implements BaseLocationManager {
                 } catch (Exception e) {
 
                 } finally {
-//                    isResulting = false;
                 }
             }
 

+ 8 - 2
app_modular/applocation/src/main/java/com/uas/applocation/model/UASLocation.java

@@ -2,6 +2,7 @@ package com.uas.applocation.model;
 
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.text.TextUtils;
 
 import com.baidu.mapapi.model.LatLng;
 
@@ -103,7 +104,7 @@ public class UASLocation implements Parcelable {
     }
 
     public double getGpsLatitude() {
-        return gpsLatitude;
+        return gpsLatitude==0?latitude:gpsLatitude;
     }
 
     public void setGpsLatitude(double gpsLatitude) {
@@ -111,7 +112,7 @@ public class UASLocation implements Parcelable {
     }
 
     public double getGpsLongitude() {
-        return gpsLongitude;
+        return gpsLongitude==0?longitude:gpsLongitude;
     }
 
     public void setGpsLongitude(double gpsLongitude) {
@@ -213,6 +214,11 @@ public class UASLocation implements Parcelable {
     public LatLng getLocation() {
         return new LatLng(latitude, longitude);
     }
+
+
+    public boolean isLegalAble() {
+        return latitude * longitude != 0 && !TextUtils.isEmpty(name) && !TextUtils.isEmpty(address);
+    }
 }
 
 

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

@@ -66,7 +66,6 @@ public class LocationTestSetActivity extends AppCompatActivity {
                             @Override
                             public void onClick(DialogInterface dialogInterface, int i) {
                                 UASLocation mUASLocation = getInventedUASLocation();
-                                UasLocationHelper.getInstance().testStopLocation(mUASLocation);
                                 currentInfoTv.setText(mUASLocation.toString());
                             }
                         })
@@ -112,10 +111,6 @@ public class LocationTestSetActivity extends AppCompatActivity {
         int show = clicked ? View.VISIBLE : View.GONE;
         inventedLL.setVisibility(show);
         saveBtn.setVisibility(show);
-        if (!clicked) {
-            UasLocationHelper.getInstance().testStopLocation(null);
-        }
-
     }
 
     private UASLocation getInventedUASLocation() {

+ 6 - 10
app_modular/applocation/src/main/java/com/uas/applocation/utils/AreaUtils.java

@@ -26,16 +26,12 @@ public class AreaUtils {
      * @param context
      */
     public static void initArea(Context context) {
-        type = isChinaSimCard(context) ? UASLocation.TYPE_BAIDU : UASLocation.TYPE_NATIVE;
-//        int ty = getType(context);
-//        if (ty == 0) {
-//            type = isChinaSimCard(context) ? UASLocation.TYPE_BAIDU : UASLocation.TYPE_NATIVE;
-//        } else {
-//            type = ty;
-//        }
-//        if (type == UASLocation.TYPE_NATIVE&&!isOPen(context)) {
-//            openGPS(context);
-//        }
+        int ty = getType(context);
+        if (ty == 0) {
+            type = isCN(context) || isChinaSimCard(context) ? UASLocation.TYPE_BAIDU : UASLocation.TYPE_NATIVE;
+        } else {
+            type = ty;
+        }
     }
 
     public static int getType(Context ct) {

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

@@ -44,9 +44,9 @@ public class LocationNeerUtils {
      * @param mOnSearchLocationListener
      */
     public static void loadDataByNeer(Context ct, int radius, int pagerNum, LatLng latLng, OnSearchLocationListener mOnSearchLocationListener) {
-        UASLocation local = UasLocationHelper.getInstance().getUASLocation();
         if (latLng == null) {
-            latLng = local.getLocation();
+            UASLocation local = UasLocationHelper.getInstance().getUASLocation();
+            latLng = new LatLng(local.getGpsLatitude(), local.getGpsLongitude());
         }
         if (AreaUtils.getLocationServiceType() == UASLocation.TYPE_NATIVE) {
             BaseLocationManager mManager = UasLocationHelper.getInstance().getLocationManager();
@@ -64,7 +64,7 @@ public class LocationNeerUtils {
     private static void loadBaiduByNeer(int radius, int pagerNum, LatLng latLng, final OnSearchLocationListener mOnSearchLocationListener) {
         Log.i("gong", "radius=" + radius);
         Log.i("gong", "pagerNum=" + pagerNum);
-        Log.i("gong", "latLng=" + latLng.latitude+"|||  longitude="+latLng.longitude);
+        Log.i("gong", "latLng=" + latLng.latitude + "|||  longitude=" + latLng.longitude);
         PoiNearbySearchOption option = new PoiNearbySearchOption();
         PoiSearch mPoiSearch = PoiSearch.newInstance();
         option.keyword("公司")

+ 37 - 6
app_modular/appmessages/src/main/java/com/modular/appmessages/presenter/ApprovaPresenter.java

@@ -891,6 +891,24 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 } catch (Exception e) {
                 }
             }
+
+            if (approval.isDftypeEQ("PF")) {
+                Approval enclosure = new Approval(Approval.ENCLOSURE);
+                String path = TextUtils.isEmpty(newValues) ? values : newValues;
+                enclosure.setIdKey(getImageUrl(path));
+                LogUtil.i("gong","path="+path+"||\ngetIdKey="+enclosure.getIdKey());
+                String[] splits = path.split("\\.");
+                String suffix = "jpg";
+                if (splits != null && splits.length > 1) {
+                    suffix = splits[splits.length - 1];
+                }
+                enclosure.setCaption(caption+"."+suffix);
+                List<Approval> enclosureList = new ArrayList<>();
+                enclosureList.add(enclosure);
+                addEnclosure(enclosureList);
+                setData2ListThread();
+                continue;
+            }
             if (approval.isDftypeEQ("FF") || (record.title.contains("公章用印申请流程") && "附件".equals(caption))) {
                 if (isMain) {
                     final String fb_attach = newValues;
@@ -1146,7 +1164,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
                  */
                 for (int i = 0; i < approvals.size(); i++) {
                     Approval a = approvals.get(i);
-                    LogUtil.i("a.getIdKey()=" + a.getIdKey());
                     if (!a.getIdKey().startsWith("已审批")
                             && !a.getIdKey().startsWith("未通过")
                             && !a.getIdKey().startsWith("不同意")
@@ -1260,7 +1277,6 @@ public class ApprovaPresenter implements OnHttpResultListener {
      * 待审批
      */
     private String setNodeStatus(String status) {
-        LogUtil.d("status=" + status);
         if (equalsOne(status, "同意")) {
             status = "已审批";
         } else if (equalsOne(status, "不同意", "不通过")) {
@@ -1272,7 +1288,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
     }
 
     private void mergeNode(JSONArray array, List<Approval> approvals, boolean isLog) {
-
+        String myCode=CommonUtil.getEmcode();
         for (int i = 0; i < array.size(); i++) {
             JSONObject o = array.getJSONObject(i);
             String name = JSONUtil.getText(o, "jp_nodeName", "jn_name");//节点名称
@@ -1295,11 +1311,19 @@ public class ApprovaPresenter implements OnHttpResultListener {
                 LogUtil.i("gong", "name=" + name);
                 LogUtil.i("gong", "a.getValuesKey()=" + a.getValuesKey());
                 if (name.equals(a.getValuesKey())) {//为当前结点
-                    LogUtil.i("gong", "为当前结点=" + nodeDealName);
                     if (!isLog) {
                         a.setDfType(nodeDealCode);
                         a.setCaption(nodeDealName);
-                        a.setIdKey(status);
+                        if (status.equals("待审批")){
+                            LogUtil.i("gong","status="+status);
+                            if (myCode.equals(nodeDealCode)){
+                                a.setIdKey(status);
+                            }else{
+                                a.setIdKey("");
+                            }
+                        }else{
+                            a.setIdKey(status);
+                        }
                     } else {
                         if (launchTime > 0) {
                             a.setValues(DateFormatUtil.long2Str(launchTime, "MM-dd"));
@@ -1487,6 +1511,13 @@ public class ApprovaPresenter implements OnHttpResultListener {
         return employeesEntity.getEm_IMID();
     }
 
+    private String getImageUrl(String path) {
+        return CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "common/download.action?path=" + path+ "&sessionId=" +
+                CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId") +
+                "&sessionUser=" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_username") +
+                "&master=" + CommonUtil.getSharedPreferences(MyApplication.getInstance(), "erp_master");
+    }
+
     private String getImageUrl(int id) {
         return CommonUtil.getAppBaseUrl(MyApplication.getInstance()) + "common/downloadbyId.action?id=" + id + "&sessionId=" +
                 CommonUtil.getSharedPreferences(MyApplication.getInstance(), "sessionId") +
@@ -1562,7 +1593,7 @@ public class ApprovaPresenter implements OnHttpResultListener {
 //                    iApproval.showToast("明细行有必填字段未填写");
                     //将明细表必填项添加出来
                     return false;
-                } else if (!param.isEmpty()&&param.size()>1) {
+                } else if (!param.isEmpty() && param.size() > 1) {
                     params.add(param);
                 }
             }

+ 1 - 1
app_modular/apputils/src/main/res/layout/common_input_dialog.xml

@@ -12,7 +12,7 @@
     <TextView
         android:id="@+id/title_tv"
         android:layout_width="match_parent"
-        android:layout_height="20dp"
+        android:layout_height="wrap_content"
         android:gravity="center"
         android:text="@string/common_dialog_title"
         android:textColor="@color/text_main"

+ 4 - 0
app_modular/appworks/src/main/java/com/uas/appworks/CRM/erp/activity/DeviceDataFormAddActivity.java

@@ -39,6 +39,7 @@ import com.common.data.RegexUtil;
 import com.common.data.StringUtil;
 import com.core.app.Constants;
 import com.core.base.SupportToolBarActivity;
+import com.core.base.view.AndroidBug5497Workaround;
 import com.core.model.SelectBean;
 import com.core.net.http.ViewUtil;
 import com.core.net.utils.NetUtils;
@@ -650,6 +651,7 @@ public class DeviceDataFormAddActivity extends SupportToolBarActivity implements
                 if (formid == 0) {
                     startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
                             .putExtra("caller", caller)
+                            .putExtra("title", getToolBarTitle())
                             .putExtra("keyValue", va_id)
                             .putExtra("device", true)
                             .putExtra("status", "已提交"));
@@ -657,6 +659,7 @@ public class DeviceDataFormAddActivity extends SupportToolBarActivity implements
                     startActivity(new Intent(mContext, CommonDocDetailsActivity.class)
                             .putExtra("caller", caller)
                             .putExtra("keyValue", formid)
+                            .putExtra("title", getToolBarTitle())
                             .putExtra("device", true)
                             .putExtra("update", "1")
                             .putExtra("status", "已提交"));
@@ -672,6 +675,7 @@ public class DeviceDataFormAddActivity extends SupportToolBarActivity implements
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        AndroidBug5497Workaround.assistActivity(this);
         setContentView(R.layout.activity_data_form_detail);
         initView();
         initListener();

+ 3 - 0
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/CommonDocDetailsActivity.java

@@ -275,6 +275,9 @@ public class CommonDocDetailsActivity extends BaseActivity {
             if ("FeePlease!FYBX".equals(mCaller)) {
                 mTitle = getString(R.string.Expense_reimbursement);
             }
+            if (StringUtil.isEmpty(mTitle)){
+                mTitle = intent.getStringExtra("title");
+            }
             setTitle(mTitle + getString(R.string.doc_detail));
             //请求获取单据提交内容数据
             progressDialog.show();

+ 43 - 21
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/ExpenseReimbursementActivity.java

@@ -90,6 +90,7 @@ import com.uas.appworks.OA.erp.model.UpdateCostDetailsGridStoreBean;
 import com.uas.appworks.R;
 
 import java.io.File;
+import java.io.Serializable;
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -1506,7 +1507,7 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
     /**
      * 消费明细表格适配器
      */
-    private class DetailsTableAdapter extends BaseAdapter {
+    private class DetailsTableAdapter extends BaseAdapter implements Serializable {
 
         private List<CostFormModel> models;
 
@@ -1625,7 +1626,6 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
             return convertView;
         }
 
-        private InputDialog mInputDialogChece = null;
         private View.OnClickListener mOnClickListener = new View.OnClickListener() {
             @Override
             public void onClick(View view) {
@@ -1633,26 +1633,9 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
                     if (view.getTag() != null && view.getTag() instanceof Integer) {
                         final int postion = (int) view.getTag();
                         if (postion < ListUtils.getSize(models)) {
+                            CostFormModel model = models.get(postion);
+                            showRemarks(postion, model);
 
-                            mInputDialogChece = new InputDialog.Builder(ct)
-                                    .setContent(models.get(postion).getRemark())
-                                    .setCancelText("清空")
-                                    .setTitle("备注")
-                                    .setSureText("保存")
-                                    .build(new InputDialog.OnDialogClickListener() {
-                                        @Override
-                                        public boolean result(boolean clickSure, CharSequence content) {
-                                            if (postion < ListUtils.getSize(models)) {
-                                                models.get(postion).setRemark(TextUtils.isEmpty(content) ? "" : content.toString());
-                                                notifyDataSetInvalidated();
-                                                if (!clickSure) {
-                                                    mInputDialogChece.setContent("");
-                                                }
-                                            }
-
-                                            return clickSure;
-                                        }
-                                    });
                         }
                     }
                 }
@@ -1666,8 +1649,47 @@ public class ExpenseReimbursementActivity extends BaseActivity implements View.O
             ImageView details_delete;
 
         }
+
+
+    }
+
+    private InputDialog mInputDialogChece;
+
+    private void showRemarks(final int postion, CostFormModel model) {
+        mInputDialogChece = new InputDialog.Builder(ct)
+                .setContent(model.getRemark())
+                .setCancelText("清空")
+                .setTitle("备注")
+                .setSureText("保存")
+                .build(new InputDialog.OnDialogClickListener() {
+                    @Override
+                    public boolean result(boolean clickSure, CharSequence content) {
+                        if (postion < ListUtils.getSize(dtAdapter.getModels())) {
+                            dtAdapter.getModels().get(postion).setRemark(TextUtils.isEmpty(content) ? "" : content.toString());
+                            dtAdapter.notifyDataSetInvalidated();
+                            if (!clickSure) {
+                                mInputDialogChece.setContent("");
+                            }
+                        }
+
+                        return clickSure;
+                    }
+                });
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        try {
+            if (mInputDialogChece != null) {
+                mInputDialogChece.dismiss();
+            }
+        } catch (Exception e) {
+
+        }
     }
 
+
     private void doDeleteCostDetailshttp(int position) {
         //TODO 删除details 请求
         String url = CommonUtil.getAppBaseUrl(ct) + "common/deleteDetail.action";

+ 3 - 4
app_modular/appworks/src/main/java/com/uas/appworks/OA/erp/activity/SaveMeetActivity.java

@@ -21,7 +21,6 @@ import com.core.utils.CommonInterface;
 import com.core.utils.CommonUtil;
 import com.core.utils.TimeUtils;
 import com.core.utils.ToastUtil;
-import com.core.widget.crouton.Crouton;
 import com.core.widget.view.Activity.SelectActivity;
 import com.lidroid.xutils.ViewUtils;
 import com.uas.appworks.OA.erp.model.MeetingDocBean;
@@ -101,15 +100,15 @@ public class SaveMeetActivity extends BaseActivity {
                     break;
                 default:
                     if (System.currentTimeMillis() - oldTime > 20000) {//请求大于20秒
-                        Crouton.makeText(ct, R.string.networks_out);
+                        ToastUtil.showToast(ct, R.string.networks_out);
                     }
                     if (!StringUtil.isEmpty(message) && JSONUtil.validate(message)) {
                         JSONObject errMessage = JSON.parseObject(message);
                         if (errMessage.containsKey("exceptionInfo")) {
-                            Crouton.makeText(ct, StringUtil.isEmpty(errMessage.getString("exceptionInfo")) ? "" : errMessage.getString("exceptionInfo"));
+                            ToastUtil.showToast(ct, StringUtil.isEmpty(errMessage.getString("exceptionInfo")) ? "" : errMessage.getString("exceptionInfo"));
                         }
                     } else {
-                        Crouton.makeText(ct, StringUtil.getChinese(message));
+                        ToastUtil.showToast(ct, StringUtil.getChinese(message));
                     }
                     break;
             }

+ 6 - 1
app_modular/appworks/src/main/java/com/uas/appworks/activity/DeviceQueryActivity.java

@@ -23,6 +23,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.common.LogUtil;
 import com.common.data.JSONUtil;
 import com.common.data.ListUtils;
+import com.common.data.StringUtil;
 import com.core.app.Constants;
 import com.core.base.activity.BaseMVPActivity;
 import com.core.dao.historical.HistoricalRecordBean;
@@ -211,7 +212,7 @@ public class DeviceQueryActivity extends BaseMVPActivity<WorkPlatPresenter> impl
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                 int reallyPosition = (int) parent.getItemIdAtPosition(position);
                 if (Constants.FLAG.DEVICE_FROM_COMMON.equals(mWhichPage)) {
-                    String keyValue = null, status = null;
+                    String keyValue = null, status = null, title=null;
                     if (ListUtils.getSize(mDeviceQueryFlexAdapter.getRowChildBeans()) <= reallyPosition)
                         return;
                     List<DataInquiryFlexBean.RowBean.RowChildBean> childBeans = mDeviceQueryFlexAdapter.getRowChildBeans().get(reallyPosition);
@@ -219,6 +220,9 @@ public class DeviceQueryActivity extends BaseMVPActivity<WorkPlatPresenter> impl
                         if ("dc_id".equals(rowChildBean.getField())) {
                             keyValue = rowChildBean.getValue();
                         }
+                        if ("dc_class".equals(rowChildBean.getField())) {
+                            title = rowChildBean.getValue();
+                        }
                         if ("dc_status".equals(rowChildBean.getField())) {
                             status = rowChildBean.getValue();
                         }
@@ -229,6 +233,7 @@ public class DeviceQueryActivity extends BaseMVPActivity<WorkPlatPresenter> impl
                     startActivityForResult(new Intent(mContext, CommonDocDetailsActivity.class)
                             .putExtra("caller", mCaller)
                             .putExtra("keyValue", keyValue)
+                            .putExtra("title", StringUtil.isEmpty(title)?"单据":title)
                             .putExtra("device", true)
                             .putExtra("status", status), 0x981);
 

+ 3 - 3
app_modular/appworks/src/main/res/layout/item_expense_details_table.xml

@@ -15,7 +15,7 @@
 
         <View
             android:layout_width="1dp"
-            android:layout_height="61dp"
+            android:layout_height="61sp"
             android:background="@color/black" />
 
 
@@ -98,7 +98,7 @@
 
         <View
             android:layout_width="1dp"
-            android:layout_height="61dp"
+            android:layout_height="61sp"
             android:background="@color/black" />
 
         <ImageView
@@ -112,7 +112,7 @@
 
         <View
             android:layout_width="1dp"
-            android:layout_height="61dp"
+            android:layout_height="61sp"
             android:background="@color/black" />
 
     </LinearLayout>