Browse Source

增加香港入库扫描

guilin 1 year ago
parent
commit
a3a8a8a9db
72 changed files with 1983 additions and 225 deletions
  1. 2 0
      app/build.gradle
  2. 7 0
      app/src/main/AndroidManifest.xml
  3. 26 0
      app/src/main/java/com/fxy/base/RealmMigrations.java
  4. 14 3
      app/src/main/java/com/fxy/base/StorageApplication.java
  5. 100 0
      app/src/main/java/com/fxy/bean/UploadResultBean.java
  6. 31 3
      app/src/main/java/com/fxy/common/FiledUpload.java
  7. 8 0
      app/src/main/java/com/fxy/constant/SPCache.java
  8. 250 0
      app/src/main/java/com/fxy/helper/HkDataHelper.java
  9. 709 0
      app/src/main/java/com/fxy/hk/HkPutinMainActivity.java
  10. 1 1
      app/src/main/java/com/fxy/login/LoginActivity.java
  11. 30 1
      app/src/main/java/com/fxy/login/bean/UserBean.java
  12. 42 2
      app/src/main/java/com/fxy/main/fragment/HomePagerFragment.java
  13. 7 49
      app/src/main/java/com/fxy/net/Urls.java
  14. 13 0
      app/src/main/java/com/fxy/putIn/PutinPhotosMainActivity.java
  15. 122 0
      app/src/main/java/com/fxy/realm/CutRuleRealm.java
  16. 146 0
      app/src/main/java/com/fxy/realm/HkTransDetailRealm.java
  17. 91 0
      app/src/main/java/com/fxy/realm/HkTransRealm.java
  18. 161 0
      app/src/main/res/layout/activity_fxy_hk_putin.xml
  19. 207 164
      app/src/main/res/layout/fragment_homepager.xml
  20. 13 0
      app/src/main/res/values/styles.xml
  21. BIN
      baselibrary/src/main/res/raw/hk0.mp3
  22. BIN
      baselibrary/src/main/res/raw/hk1.mp3
  23. BIN
      baselibrary/src/main/res/raw/hk10.mp3
  24. BIN
      baselibrary/src/main/res/raw/hk11.mp3
  25. BIN
      baselibrary/src/main/res/raw/hk12.mp3
  26. BIN
      baselibrary/src/main/res/raw/hk13.mp3
  27. BIN
      baselibrary/src/main/res/raw/hk14.mp3
  28. BIN
      baselibrary/src/main/res/raw/hk15.mp3
  29. BIN
      baselibrary/src/main/res/raw/hk16.mp3
  30. BIN
      baselibrary/src/main/res/raw/hk17.mp3
  31. BIN
      baselibrary/src/main/res/raw/hk18.mp3
  32. BIN
      baselibrary/src/main/res/raw/hk19.mp3
  33. BIN
      baselibrary/src/main/res/raw/hk2.mp3
  34. BIN
      baselibrary/src/main/res/raw/hk20.mp3
  35. BIN
      baselibrary/src/main/res/raw/hk21.mp3
  36. BIN
      baselibrary/src/main/res/raw/hk22.mp3
  37. BIN
      baselibrary/src/main/res/raw/hk23.mp3
  38. BIN
      baselibrary/src/main/res/raw/hk24.mp3
  39. BIN
      baselibrary/src/main/res/raw/hk25.mp3
  40. BIN
      baselibrary/src/main/res/raw/hk26.mp3
  41. BIN
      baselibrary/src/main/res/raw/hk27.mp3
  42. BIN
      baselibrary/src/main/res/raw/hk28.mp3
  43. BIN
      baselibrary/src/main/res/raw/hk29.mp3
  44. BIN
      baselibrary/src/main/res/raw/hk3.mp3
  45. BIN
      baselibrary/src/main/res/raw/hk30.mp3
  46. BIN
      baselibrary/src/main/res/raw/hk31.mp3
  47. BIN
      baselibrary/src/main/res/raw/hk32.mp3
  48. BIN
      baselibrary/src/main/res/raw/hk33.mp3
  49. BIN
      baselibrary/src/main/res/raw/hk34.mp3
  50. BIN
      baselibrary/src/main/res/raw/hk35.mp3
  51. BIN
      baselibrary/src/main/res/raw/hk36.mp3
  52. BIN
      baselibrary/src/main/res/raw/hk37.mp3
  53. BIN
      baselibrary/src/main/res/raw/hk38.mp3
  54. BIN
      baselibrary/src/main/res/raw/hk39.mp3
  55. BIN
      baselibrary/src/main/res/raw/hk4.mp3
  56. BIN
      baselibrary/src/main/res/raw/hk40.mp3
  57. BIN
      baselibrary/src/main/res/raw/hk41.mp3
  58. BIN
      baselibrary/src/main/res/raw/hk42.mp3
  59. BIN
      baselibrary/src/main/res/raw/hk43.mp3
  60. BIN
      baselibrary/src/main/res/raw/hk44.mp3
  61. BIN
      baselibrary/src/main/res/raw/hk45.mp3
  62. BIN
      baselibrary/src/main/res/raw/hk46.mp3
  63. BIN
      baselibrary/src/main/res/raw/hk47.mp3
  64. BIN
      baselibrary/src/main/res/raw/hk48.mp3
  65. BIN
      baselibrary/src/main/res/raw/hk49.mp3
  66. BIN
      baselibrary/src/main/res/raw/hk5.mp3
  67. BIN
      baselibrary/src/main/res/raw/hk50.mp3
  68. BIN
      baselibrary/src/main/res/raw/hk6.mp3
  69. BIN
      baselibrary/src/main/res/raw/hk7.mp3
  70. BIN
      baselibrary/src/main/res/raw/hk8.mp3
  71. BIN
      baselibrary/src/main/res/raw/hk9.mp3
  72. 3 2
      config.gradle

+ 2 - 0
app/build.gradle

@@ -67,6 +67,7 @@ android {
             buildConfigField("String", "WELCOME_TITLE", "\"FXY\"")
             buildConfigField("String", "VERSION_API", "\"" + rootProject.ext.android.versionApi +  "\"")
             buildConfigField("String", "VERSION_NUM", "\""+rootProject.ext.android.versionName+"\"")
+            buildConfigField("String", "VERSION_REALM", "\""+rootProject.ext.android.versionRealm+"\"")
             manifestPlaceholders = [
                     app_name:"返修易",
                     icon:"@mipmap/ic_launcher",
@@ -94,6 +95,7 @@ android {
             buildConfigField("String", "WELCOME_TITLE", "\"UAT-返修易\"")
             buildConfigField("String", "VERSION_API", "\"" + rootProject.ext.android.versionApi +  "\"")
             buildConfigField("String", "VERSION_NUM", "\""+rootProject.ext.android.versionName+"\"")
+            buildConfigField("String", "VERSION_REALM", "\""+rootProject.ext.android.versionRealm+"\"")
             proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
         }
 

+ 7 - 0
app/src/main/AndroidManifest.xml

@@ -207,6 +207,13 @@
             android:windowSoftInputMode="stateHidden|adjustPan"
             android:screenOrientation="portrait"
             tools:ignore="LockedOrientationActivity"/>
+
+
+        <activity
+            android:name=".hk.HkPutinMainActivity"
+            android:windowSoftInputMode="stateHidden|adjustPan"
+            android:screenOrientation="portrait"
+            tools:ignore="LockedOrientationActivity"/>
     </application>
 
 

+ 26 - 0
app/src/main/java/com/fxy/base/RealmMigrations.java

@@ -0,0 +1,26 @@
+package com.fxy.base;
+
+import io.realm.DynamicRealm;
+import io.realm.RealmMigration;
+import io.realm.RealmSchema;
+
+public class RealmMigrations implements RealmMigration {
+    @Override
+    public void migrate(DynamicRealm realm, long oldVersion, long newVersion) {
+        final RealmSchema schema = realm.getSchema();
+        if(oldVersion == 1) {
+            schema.create("CutRuleRealm")
+                    .addField("id", int.class)
+                    .addField("company_id", int.class)
+                    .addField("number_start", String.class)
+                    .addField("number_length", int.class)
+                    .addField("cut_type", int.class)
+                    .addField("start_index", int.class)
+                    .addField("cut_length", int.class)
+                    .addField("is_delete", String.class)
+                    .addField("create_user", int.class)
+                    .addField("create_date", String.class);
+            oldVersion++;
+        }
+    }
+}

+ 14 - 3
app/src/main/java/com/fxy/base/StorageApplication.java

@@ -39,6 +39,8 @@ import com.fxy.net.Urls;
 import org.lzh.framework.updatepluginlib.UpdateConfig;
 import org.lzh.framework.updatepluginlib.base.UpdateParser;
 import org.lzh.framework.updatepluginlib.model.Update;
+
+import java.io.FileNotFoundException;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 import java.util.logging.Level;
@@ -124,8 +126,17 @@ public class StorageApplication extends Application {
         Realm.init(context);
         RealmConfiguration config = new RealmConfiguration.Builder()
                 .name("storageRealm.realm") //文件名
-                .schemaVersion(0) //版本号
+                .deleteRealmIfMigrationNeeded()
+                .schemaVersion(Integer.parseInt(BuildConfig.VERSION_REALM)) //版本号
        .build();
+
+        // 进行迁移操作,从0到1
+        try {
+            Realm.migrateRealm(config, new RealmMigrations());
+        } catch (FileNotFoundException e) {
+            e.printStackTrace();
+        }
+
         Realm.setDefaultConfiguration(config);
     }
 
@@ -240,7 +251,7 @@ public class StorageApplication extends Application {
         LogConfiguration config = new LogConfiguration.Builder()
                 .logLevel(BuildConfig.DEBUG ? LogLevel.ALL             // 指定日志级别,低于该级别的日志将不会被打印,默认为 LogLevel.ALL
                         : LogLevel.DEBUG)
-                .tag("STO-LOG")                                         // 指定 TAG,默认为 "X-LOG"
+                .tag("FXY-LOG")                                         // 指定 TAG,默认为 "X-LOG"
                 .t()                                                   // 允许打印线程信息,默认禁止
                 .st(5)                                                 // 允许打印深度为2的调用栈信息,默认禁止
                 .b()                                                   // 允许打印日志边框,默认禁止
@@ -260,7 +271,7 @@ public class StorageApplication extends Application {
         Printer androidPrinter = new AndroidPrinter();             // 通过 android.util.Log 打印日志的打印器
         Printer consolePrinter = new ConsolePrinter();             // 通过 System.out 打印日志到控制台的打印器
         Printer filePrinter = new FilePrinter                      // 打印日志到文件的打印器
-                .Builder("/sdcard/cargo-pda/pda-log/"+BuildConfig.BUILD_TYPE+"/") // 指定保存日志文件的路径
+                .Builder("/sdcard/fxy-pda/pda-log/"+BuildConfig.BUILD_TYPE+"/") // 指定保存日志文件的路径
                 .fileNameGenerator(new DateFileNameGenerator())        // 指定日志文件名生成器,默认为 ChangelessFileNameGenerator("log")
                 .backupStrategy(new NeverBackupStrategy() )             // 指定日志文件备份策略,默认为 FileSizeBackupStrategy(1024 * 1024)
                         .logFlattener(new DefaultFlattener())                       // 指定日志平铺器,默认为 DefaultFlattener

+ 100 - 0
app/src/main/java/com/fxy/bean/UploadResultBean.java

@@ -0,0 +1,100 @@
+package com.fxy.bean;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+public class UploadResultBean implements Parcelable {
+    public int status;
+    public String path;
+    public String msg;
+    public String error;
+
+
+    @Override
+    public String toString() {
+        return "UploadResultBean{" +
+                "status=" + status +
+                ", path='" + path + '\'' +
+                ", msg='" + msg + '\'' +
+                ", error='" + error + '\'' +
+                '}';
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
+    public UploadResultBean setStatus(int status) {
+        this.status = status;
+        return this;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public UploadResultBean setPath(String path) {
+        this.path = path;
+        return this;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public UploadResultBean setMsg(String msg) {
+        this.msg = msg;
+        return this;
+    }
+
+    public String getError() {
+        return error;
+    }
+
+    public UploadResultBean setError(String error) {
+        this.error = error;
+        return this;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(this.status);
+        dest.writeString(this.path);
+        dest.writeString(this.msg);
+        dest.writeString(this.error);
+    }
+
+    public void readFromParcel(Parcel source) {
+        this.status = source.readInt();
+        this.path = source.readString();
+        this.msg = source.readString();
+        this.error = source.readString();
+    }
+
+    public UploadResultBean() {
+    }
+
+    protected UploadResultBean(Parcel in) {
+        this.status = in.readInt();
+        this.path = in.readString();
+        this.msg = in.readString();
+        this.error = in.readString();
+    }
+
+    public static final Creator<UploadResultBean> CREATOR = new Creator<UploadResultBean>() {
+        @Override
+        public UploadResultBean createFromParcel(Parcel source) {
+            return new UploadResultBean(source);
+        }
+
+        @Override
+        public UploadResultBean[] newArray(int size) {
+            return new UploadResultBean[size];
+        }
+    };
+}

+ 31 - 3
app/src/main/java/com/fxy/common/FiledUpload.java

@@ -13,6 +13,7 @@ import android.widget.Toast;
 import com.elvishew.xlog.XLog;
 import com.fxy.baselibrary.util.RxTimeTool;
 import com.fxy.R;
+import com.fxy.bean.UploadResultBean;
 import com.fxy.constant.SPCache;
 
 import org.json.JSONObject;
@@ -53,7 +54,7 @@ public class FiledUpload {
         }
     }
     @SuppressLint("HandlerLeak")
-    private android.os.Handler uploadHandler = new android.os.Handler() {
+    private final Handler uploadHandler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
             try {
@@ -69,12 +70,26 @@ public class FiledUpload {
                         if (!message.isEmpty()){
                             Toast.makeText(mActivity, message, Toast.LENGTH_SHORT).show();
                         }
+                        if (uploadChangeListener!=null){
+                            UploadResultBean uploadResultBean = new UploadResultBean();
+                            uploadResultBean.setMsg("上传失败");
+                            uploadResultBean.setError(message);
+                            uploadResultBean.setStatus(0);
+                            uploadChangeListener.uploadResult(uploadResultBean);
+                        }
                         break;
                     case 2://成功
                         String file_path = (String) msg.obj;
                         //表示数据存在
                         Toast.makeText(mActivity, "上传成功", Toast.LENGTH_SHORT).show();
-
+                        // 通过接口对象传上传状态
+                        if (uploadChangeListener!=null){
+                            UploadResultBean uploadResultBean = new UploadResultBean();
+                            uploadResultBean.setMsg("上传成功");
+                            uploadResultBean.setPath(file_path);
+                            uploadResultBean.setStatus(1);
+                            uploadChangeListener.uploadResult(uploadResultBean);
+                        }
                         break;
                     case 3:
                         //设置进度条
@@ -119,10 +134,23 @@ public class FiledUpload {
             }
         }).show();
 
+        //task.waitUntilFinished(); // 等待任务完成。
+    }
 
 
-        //task.waitUntilFinished(); // 等待任务完成。
+    // 持有一个接口对象
+    UploadChangeListener uploadChangeListener;
+
+    // 状态变化监听
+    public interface UploadChangeListener {
+        // 回调方法 可以多个
+        void uploadResult(UploadResultBean uploadResultBean);
     }
+    // 提供注册事件监听的方法
+    public void setOnChangeListener(UploadChangeListener uploadChangeListener) {
+        this.uploadChangeListener = uploadChangeListener;
+    }
+
     private String getFileName(String localPath){
         String fileSuffix = "";
         if (localPath.lastIndexOf(".")>-1) {

+ 8 - 0
app/src/main/java/com/fxy/constant/SPCache.java

@@ -245,6 +245,14 @@ public class SPCache {
         editor.putString("resource_bucket", version_info).commit();
     }
 
+    //业务类型
+    public int getBusinessType() {
+        return sp.getInt("business_type", 0);
+    }
+    public void setBusinessType(int business_type){
+        editor.putInt("business_type", business_type).commit();
+    }
+
 
 
 

+ 250 - 0
app/src/main/java/com/fxy/helper/HkDataHelper.java

@@ -0,0 +1,250 @@
+package com.fxy.helper;
+
+import android.content.Context;
+import android.os.Handler;
+
+import com.elvishew.xlog.XLog;
+import com.fxy.baselibrary.language.other.CommSharedUtil;
+import com.fxy.baselibrary.util.JsonUtil;
+import com.fxy.baselibrary.util.StringUtils;
+import com.fxy.bean.ActionBean;
+import com.fxy.common.OssService;
+import com.fxy.constant.BaseConfig;
+import com.fxy.constant.SPCache;
+import com.fxy.net.MyDialogCallback;
+import com.fxy.net.Urls;
+import com.fxy.realm.CutRuleRealm;
+import com.fxy.realm.HkTransDetailRealm;
+import com.fxy.realm.HkTransRealm;
+import com.lzy.okgo.OkGo;
+
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.UUID;
+import java.util.concurrent.ThreadLocalRandom;
+
+import io.realm.Realm;
+import io.realm.RealmResults;
+
+public class HkDataHelper {
+    protected Context mContext;
+    public HkDataHelper(Context context) {
+       this.mContext = context;
+    }
+
+    /**
+     * 获取用户详细信息
+     */
+    public  void getBaseInfo(){
+
+
+        String serviceAddress = CommSharedUtil.getInstance(mContext).getString(BaseConfig.SERVICE_ADDRESS);
+        OkGo.<String>post(serviceAddress + Urls.GET_USER_BASE_INFO)
+                .execute(new MyDialogCallback(mContext, true, false) {
+                    @Override
+                    public void onSuccess(com.lzy.okgo.model.Response<String> response) {
+                        super.onSuccess(response);
+                        try {
+                            ActionBean bean = JsonUtil.getObject(response.body(), ActionBean.class);
+                            if (bean.code == 1 && StringUtils.isNotEmpty(bean.data)) {
+                                JSONObject jsonObject = new JSONObject(bean.data);
+                                String cutRule  = jsonObject.getString("cut_rule");
+                                JSONObject transFile = jsonObject.getJSONObject("trans_file");
+
+
+                                List<HkTransRealm> hkTransRealmList = new ArrayList<>();
+
+                                Iterator<String> keys = transFile.keys();
+                                while (keys.hasNext()) {
+                                    String key = keys.next();
+                                    HkTransRealm hkTransRealm = JsonUtil.getObject(transFile.getString(key),HkTransRealm.class);
+                                    hkTransRealm.setBatch(key);
+                                    hkTransRealmList.add(hkTransRealm);
+                                }
+                                List<CutRuleRealm> cutRuleRealmList = JsonUtil.jsonString2Beans(cutRule,CutRuleRealm.class);
+
+
+                                DataThread thread = new DataThread(mContext,cutRuleRealmList,hkTransRealmList);
+                                thread.setUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
+                                    public void uncaughtException(Thread t, Throwable e) {
+                                        // 在这里处理线程抛出的异常,并使用传递的参数进行操作
+                                        XLog.e("处理数据异常",e.getMessage());
+                                    }
+                                });
+                                thread.start();
+
+
+
+
+                            }else{
+                                XLog.e("获取基础数据信息:" + bean.msg);
+                            }
+                        } catch (Exception e) {
+                            XLog.e("获取基础数据信息失败:" + e.getMessage());
+                        }
+                    }
+                });
+    }
+
+    class DataThread extends Thread {
+        protected Context mContext;
+        protected  List<CutRuleRealm> cutRuleRealmList;
+        protected  List<HkTransRealm> hkTransRealmList;
+        public DataThread(Context context,List<CutRuleRealm> cutRuleRealmList,List<HkTransRealm> hkTransRealmList) {
+            this.mContext = context;
+            this.cutRuleRealmList = cutRuleRealmList;
+            this.hkTransRealmList = hkTransRealmList;
+        }
+        @Override
+        public void run() {
+            if (cutRuleRealmList!=null || hkTransRealmList!=null){
+                // 线程逻辑
+                addCutRule(cutRuleRealmList,hkTransRealmList);
+            }
+
+        }
+    }
+
+    private  void addCutRule(List<CutRuleRealm> cutRuleRealmList,List<HkTransRealm> hkTransRealmList){
+        Realm mRealm = Realm.getDefaultInstance();
+
+        //同步操作写法一:
+        mRealm.beginTransaction();
+        if (cutRuleRealmList!=null && cutRuleRealmList.size()>0){
+            mRealm.insertOrUpdate(cutRuleRealmList); // 将列表中的对象批量插入到数据库中
+        }
+
+        if (hkTransRealmList!=null && hkTransRealmList.size()>0){
+            mRealm.insertOrUpdate(hkTransRealmList); // 将列表中的对象批量插入到数据库中
+        }
+
+
+
+        //提交事务,操作就被执行
+        mRealm.commitTransaction();
+
+
+
+        if (hkTransRealmList!=null && hkTransRealmList.size()>0){
+            SPCache spCache = SPCache.getInstance(mContext);
+            String ossHost = spCache.getResourceHost();
+
+            RealmResults<HkTransRealm> allList   =  mRealm.where(HkTransRealm.class).distinct("batch").findAll();
+            //查询所有批次
+            ArrayList<String> delBatchList = new ArrayList<>();
+            for (int i = 0; i <allList.size() ; i++) {
+                delBatchList.add(allList.get(i).getBatch());
+            }
+
+            for (int i=0;i<hkTransRealmList.size();i++){
+
+                long count  = mRealm.where(HkTransDetailRealm.class)
+                        .equalTo("version",hkTransRealmList.get(i).getVersion())
+                        .equalTo("batch_number",hkTransRealmList.get(i).getBatch())
+                        .count();
+
+                if (count==0){
+                    addHkTransDetail(ossHost,hkTransRealmList.get(i) );
+                }
+
+                delBatchList.remove(hkTransRealmList.get(i).getBatch());
+
+            }
+
+
+
+
+            String[] needDelList =   new String[delBatchList.size()];
+            for (int i = 0; i < delBatchList.size(); i++) {
+                needDelList[i] = delBatchList.get(i);
+            }
+            delBatchList(needDelList);
+        }
+
+
+        mRealm.close();
+    }
+
+    private void delBatchList(String[] delBatchList){
+
+
+        Realm mRealm = Realm.getDefaultInstance();
+        mRealm.beginTransaction();
+
+
+        RealmResults<HkTransRealm>  oldList =  mRealm.where(HkTransRealm.class)
+                .in("batch",  delBatchList)
+                .findAll();
+        if (oldList != null && oldList.size()>0) {
+            oldList.deleteAllFromRealm();
+        }
+
+
+        RealmResults<HkTransDetailRealm>  oldDetailList =  mRealm.where(HkTransDetailRealm.class)
+                .in("batch_number",  delBatchList)
+                .findAll();
+        if (oldDetailList != null && oldDetailList.size()>0) {
+            oldDetailList.deleteAllFromRealm();
+        }
+
+        mRealm.commitTransaction();
+        mRealm.close();
+    }
+
+
+    private void addHkTransDetail(String ossHost , final HkTransRealm hkTransRealm){
+
+        OkGo.<String>get(ossHost + hkTransRealm.getPath() + "?v=" + UUID.randomUUID().toString())
+                .execute(new MyDialogCallback(mContext, false, false) {
+                    @Override
+                    public void onSuccess(com.lzy.okgo.model.Response<String> response) {
+
+                        try {
+                            long timestampMillis = System.currentTimeMillis();
+
+                            String dataStr = response.body().toString();
+                            List<HkTransDetailRealm> hkTransDetailRealmList = JsonUtil.jsonString2Beans(dataStr,HkTransDetailRealm.class);
+                            Random random = new Random();
+                            int randomNumber = random.nextInt(100);  // 生成0-99之间的随机数
+
+                            Realm mRealm = Realm.getDefaultInstance();
+
+                            for (int i = 0; i <hkTransDetailRealmList.size() ; i++) {
+                                String id = timestampMillis+"-"+randomNumber+i;
+                                hkTransDetailRealmList.get(i).setId(id);
+                                hkTransDetailRealmList.get(i).setBatchNumber(hkTransRealm.getBatch());
+                                hkTransDetailRealmList.get(i).setVersion(hkTransRealm.getVersion());
+                            }
+
+                            mRealm.beginTransaction();
+                            mRealm.insertOrUpdate(hkTransDetailRealmList);
+                            RealmResults<HkTransDetailRealm>  oldList =  mRealm.where(HkTransDetailRealm.class)
+                                    .lessThan("version",hkTransRealm.getVersion())
+                                    .equalTo("batch_number",hkTransRealm.getBatch())
+                                    .findAll();
+                            if (oldList != null && oldList.size()>0) {
+                                oldList.deleteAllFromRealm();
+                            }
+
+                            mRealm.commitTransaction();
+                            mRealm.close();
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            XLog.e("获取json错误");
+                        }
+
+
+                    }
+                });
+
+    }
+
+
+
+}

+ 709 - 0
app/src/main/java/com/fxy/hk/HkPutinMainActivity.java

@@ -0,0 +1,709 @@
+package com.fxy.hk;
+
+import android.annotation.SuppressLint;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.EditText;
+import android.widget.ImageButton;
+import android.widget.TextView;
+
+import com.elvishew.xlog.XLog;
+import com.fxy.R;
+import com.fxy.baselibrary.base.BaseActivity;
+import com.fxy.baselibrary.bean.BaseEventBusBean;
+import com.fxy.baselibrary.interfaces.OnRxScanerListener;
+import com.fxy.baselibrary.qrcode.ActivityScanerCode;
+import com.fxy.baselibrary.util.JsonUtil;
+import com.fxy.baselibrary.util.StringUtils;
+import com.fxy.baselibrary.views.MarqueeTextView;
+import com.fxy.bean.ActionBean;
+import com.fxy.bean.ScanBean;
+import com.fxy.bean.UploadResultBean;
+import com.fxy.common.FiledUpload;
+import com.fxy.constant.BaseConfig;
+import com.fxy.constant.EventCode;
+import com.fxy.helper.HkDataHelper;
+import com.fxy.net.MyDialogCallback;
+import com.fxy.net.Urls;
+import com.fxy.realm.CutRuleRealm;
+import com.fxy.realm.HkTransDetailRealm;
+import com.fxy.realm.HkTransRealm;
+import com.fxy.view.FloatingImageView;
+import com.google.gson.Gson;
+import com.google.zxing.Result;
+import com.jaredrummler.materialspinner.MaterialSpinner;
+import com.luck.picture.lib.PictureSelector;
+import com.luck.picture.lib.config.PictureConfig;
+import com.luck.picture.lib.config.PictureMimeType;
+import com.luck.picture.lib.entity.LocalMedia;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.model.Response;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import butterknife.Unbinder;
+import io.realm.RealmResults;
+import sto.android.app.StoJNI;
+import sto.android.app.StoPdaKeyEvent;
+import sto.android.app.StoTongJNI;
+
+public class HkPutinMainActivity extends  BaseActivity implements StoJNI.ScanCallBack{
+
+    /**
+     * 列表适配器
+     */
+    Context mContext = this;
+
+    //单号清除
+    @BindView(R.id.ib_order_no_clear)
+    ImageButton ibOrderNoClear;
+
+    //单号
+    @BindView(R.id.et_order_no)
+    EditText etOrderNo;
+
+
+    @BindView(R.id.ms_batch_list)
+    MaterialSpinner batchListSpinner;
+
+    @BindView(R.id.mt_order_code)
+    MarqueeTextView mtOrderCode;
+
+
+    @BindView(R.id.tv_sort)
+    TextView tvSort;
+
+    private String batchNumber = "";
+
+
+
+
+    private FiledUpload filedUpload;
+    //
+    //扫码扫码动作
+    private ScanBean scanBean;
+
+    private List<CutRuleRealm> cutRuleRealmList;
+
+    //浮动按钮
+    @BindView(R.id.iv_drag)
+    FloatingImageView iv_drag;
+
+
+    private List<String> spinnerBatchList = new ArrayList<String>();
+
+
+
+    protected String action;
+
+
+    private Unbinder unbinder;
+
+
+    @Override
+    public int getContentViewResId() {
+        return R.layout.activity_fxy_hk_putin;
+    }
+
+    @Override
+    public boolean showToolBar() {
+        return true;
+    }
+
+    @Override
+    public boolean openEventBus() {
+        return true;
+    }
+
+    @Override
+    protected void getBundleExtras(Bundle bundle) {
+
+    }
+
+
+
+    //finish的返回监听
+    //这里的requestCode参数,就是上面设置的 1 ,当跳转的页面返回的时候,通过这个加以判断
+    //resultCode ,这个参数是在跳转的页面里面规定的,它也是一个int类型的标志
+    //第三个参数包含了返回的值
+    //如果不需要所跳转的页面返回值,也就不需要这个方法了
+    @Override
+    public void onActivityResult(int requestCode, int resultCode, Intent data) {
+        super.onActivityResult(requestCode, resultCode, data);
+
+        if (resultCode == RESULT_OK) {
+            if (requestCode == PictureConfig.CHOOSE_REQUEST) {// 图片选择结果回调
+                List<LocalMedia>  images = PictureSelector.obtainMultipleResult(data);
+                LocalMedia localMedia = images.get(0);
+                String localPath = localMedia.isCompressed() ? localMedia.getCompressPath():localMedia.getPath();
+                filedUpload.filedUpload(localPath);
+                filedUpload.setOnChangeListener(new FiledUpload.UploadChangeListener() {
+                    @Override
+                    public void uploadResult(UploadResultBean uploadResultBean) {
+                        if (uploadResultBean.getStatus()==1){
+                            ArrayList<String> photoList =  new ArrayList<String>();
+                            photoList.add(uploadResultBean.getPath());
+                            pictureInbound(photoList);
+                        }else{
+                            showErrorToast("上传图片失败");
+                            XLog.e("上传结果失败"+uploadResultBean.getError());
+                        }
+                    }
+                });
+            }
+        }
+    }
+
+    /**
+     * EventBus接收信息的方法,开启后才会调用(非粘性事件)
+     *
+     * @param event
+     */
+    @Override
+    protected void EventBean(BaseEventBusBean event) {
+//        XLog.e("----------接收返回--------------");
+//        XLog.e("接收返回:"+event.getEventCode());
+        if (event != null && event.getEventCode() == EventCode.displacement_refresh){
+
+        }
+    }
+
+    @Override
+    public boolean isPlayMusic() {
+        return true;
+    }
+
+
+    @Override
+    protected void initView() {
+        unbinder = ButterKnife.bind(this);
+        setTitleName("托盘入库");
+
+        //拉取数据
+        (new HkDataHelper(HkPutinMainActivity.this)).getBaseInfo();
+
+        initEdit();
+        iniData();
+
+        initSpinner();
+
+        filedUpload = new FiledUpload(HkPutinMainActivity.this,"photo");
+
+
+        //监听浮动按钮
+        iv_drag.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                if(!iv_drag.isDrag()){
+                    ActivityScanerCode.setScanerListener(mScanerListener);
+                    ActivityScanerCode.intent2Activity(mContext, BaseConfig.COMMON_SCANNER_ONLY);
+                }
+            }
+        });
+    }
+
+
+
+    private void iniData(){
+
+        RealmResults<HkTransRealm> realmResultsAll  = mRealm.where(HkTransRealm.class).findAll();
+        realmResultsAll.load();
+        spinnerBatchList = new ArrayList<String>();
+        if (realmResultsAll.size()>0){
+            for (int i=0;i<realmResultsAll.size();i++){
+                spinnerBatchList.add(realmResultsAll.get(i).getBatch());
+            }
+        }
+
+        if (spinnerBatchList.size()>0){
+            batchNumber = spinnerBatchList.get(0);
+        }
+        batchListSpinner.setItems(spinnerBatchList);
+
+        batchListSpinner.setSelected(false);
+
+        cutRuleRealmList =  mRealm.where(CutRuleRealm.class).findAll();
+
+
+        initSpinner();
+    }
+
+
+    /**
+     *  初始化下拉框控件值
+     */
+    private void initSpinner() {
+
+
+        batchListSpinner.setOnItemSelectedListener(new MaterialSpinner.OnItemSelectedListener<String>() {
+            @Override public void onItemSelected(MaterialSpinner view, int position, long id, String item) {
+                batchNumber = item;
+                etOrderNo.setEnabled(true);
+
+            }
+        });
+    }
+
+
+
+    //拍照上传
+    private void pictureInbound(ArrayList<String> photoList){
+        try {
+            JSONObject jsonObject = new JSONObject();
+
+            Gson gson = new Gson();
+            jsonObject.put("photo",gson.toJson(photoList));
+            OkGo.<String>post(Urls.getServiceAddress(this) + Urls.FXY_GK_INBOUND_PICTURE).upJson(jsonObject)
+                    .execute(new MyDialogCallback(this, true, false) {
+                        @Override
+                        public void onSuccess(Response<String> response) {
+                            super.onSuccess(response);
+                            try {
+                                ActionBean bean = JsonUtil.getObject(response.body(), ActionBean.class);
+                                if(bean.code == 1){
+                                    showSuccessToast("上传成功");
+                                }else{
+                                    showErrorToast("上传失败");
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                XLog.e("香港图片结果返回错误",e.getMessage());
+                            }
+                        }
+                    });
+        } catch (Exception e) {
+            e.printStackTrace();
+
+        }
+    }
+
+    @Override
+    public boolean dispatchKeyEvent(KeyEvent event) {
+        //XLog.e("event:"+event.getKeyCode());
+        if ((event.getKeyCode()==KeyEvent.KEYCODE_DPAD_CENTER || event.getKeyCode()==KeyEvent.KEYCODE_ENTER )  && event.getAction() == KeyEvent.ACTION_DOWN){
+            //按确定键
+        }
+        return super.dispatchKeyEvent(event);
+    }
+
+    //监听按键
+    public boolean onKeyDown(int keyCode, KeyEvent event) {
+        XLog.e("监听按键:"+keyCode);XLog.e(event);
+        if (scanBean.getIsBroadcast()==0 && StoTongJNI.getIns(mContext).getEventFuction(keyCode)  == StoPdaKeyEvent.KEYCODE_SCAN
+                && event.getRepeatCount() == 0) {
+
+            if (StoTongJNI.getIns(mContext).GetScannerIsScanning()) {
+//
+            } else {
+                StoTongJNI.getIns(mContext).SetScannerStart();
+            }
+        }
+        return super.onKeyDown(keyCode, event);
+    }
+
+    @SuppressLint("HandlerLeak")
+    Handler scanHandler = new Handler() {
+
+        @Override
+        public void handleMessage(Message msg) {
+            // TODO Auto-generated method stub
+            if (msg.obj != null) {
+
+                String scanResult = msg.obj.toString().trim();
+                if (!scanResult.isEmpty()){
+                    setScanResult(scanResult);
+                }
+            }
+
+        }
+
+    };
+    @Override
+    public void onScanResults(String str) {
+        Message msg = new Message();
+        msg.obj = str;
+        scanHandler.sendMessage(msg);
+
+
+    }
+
+
+    @Override
+    public void onScanResults(String str, int type) {
+
+    }
+    /**
+     * 定义广播接受
+     */
+    BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            String scanResult = intent.getStringExtra(scanBean.getDataName());
+            if (scanResult==null){return; }
+            String scanStatus = "";
+            if (!scanBean.getStatusName().isEmpty()){
+                scanStatus = intent.getStringExtra(scanBean.getStatusName());
+            }else{
+                scanStatus = scanResult.isEmpty()? "" : "ok"; //有值 默认是扫码成功;
+            }
+
+            //新大陆(MT65,MT90) 需要手动关闭
+            if (!scanBean.getActionStop().isEmpty()){
+                Intent stopIntent = new Intent(scanBean.getActionStop());
+                mContext.sendBroadcast(stopIntent);
+            }
+
+            if ("ok".equals(scanStatus)){
+                setScanResult(scanResult);
+            }else{
+                showErrorToast(getString(R.string.scan_failed));
+            }
+        }
+    };
+
+    /**
+     * 注册广播
+     */
+    private void initReceiver(){
+
+        try {
+
+            String scanStr = getScanSetting();
+            scanBean = JsonUtil.getObject(scanStr, ScanBean.class);
+            Integer is_broadcast = scanBean.getIsBroadcast();//是否广播
+
+            if (is_broadcast ==1){
+                IntentFilter mFilter = new IntentFilter(scanBean.getAction());
+                this.registerReceiver(mReceiver, mFilter);
+            }else{
+                //不广播进行处理 jni模式
+                String pdaBrand = StoTongJNI.getmPdaBrand();
+                if (!pdaBrand.isEmpty()){
+                    StoTongJNI.getIns(this).setmScanCB(this);
+                    StoTongJNI.getIns(this).SetScannerOn();
+                }
+            }
+
+
+        }catch (Exception e) {
+            showErrorToast("获取扫码配置失败"+e.getMessage());
+            XLog.e("获取扫码配置失败:" + e.getMessage());
+        }
+    }
+
+    private void initEdit() {
+        //
+        etOrderNo.setOnEditorActionListener(new TextView.OnEditorActionListener() {
+            @Override
+            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+                if (actionId == EditorInfo.IME_ACTION_DONE) {
+                    String orderNo = etOrderNo.getText().toString().trim();
+                    if (StringUtils.isEmpty(orderNo)) {
+                        setEditTextFocused(v,true);
+                        showWarningToast(v.getHint().toString());
+                        return false;
+                    }
+                    inboundPutin();
+                    return false;
+                }
+                return false;
+            }
+        });
+        etOrderNo.addTextChangedListener(new TextWatcher() {
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+                if (s.length() > 0 ) {
+                    if (etOrderNo.isEnabled()){
+                        ibOrderNoClear.setVisibility(View.VISIBLE);
+                    }
+                    setEditTextNormal(etOrderNo,true);
+                } else {
+                    ibOrderNoClear.setVisibility(View.INVISIBLE);
+                    setEditTextFocused(etOrderNo,true);
+                }
+            }
+
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+            }
+
+            public void afterTextChanged(Editable s) {
+
+            }
+        });
+        ibOrderNoClear.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View view) {
+                etOrderNo.requestFocus();
+                etOrderNo.getText().clear();
+            }
+        });
+    }
+
+
+
+
+    private OnRxScanerListener mScanerListener = new OnRxScanerListener() {
+        @Override
+        public void onSuccess(String type, Result result) {
+            String scanResult = result.getText();
+            switch (type){
+                case BaseConfig.COMMON_SCANNER_ONLY:
+                    setScanResult(scanResult);
+
+                    break;
+            }
+        }
+        @Override
+        public void onFail(String type, String message) {
+
+        }
+    };
+
+    //把扫描结果赋值
+    private void setScanResult(String scanResult){
+        //获取焦点的view对象
+        View view=getWindow().getDecorView().findFocus();
+        //如果是EditText
+        if(view instanceof EditText)
+        {
+            ((EditText) view).setText(scanResult);
+
+            switch (view.getId()) {
+                case R.id.et_order_no:
+                    inboundPutin();
+                    break;
+                default:
+            }
+
+
+        }
+    }
+
+    public String strByCutRule(String str,List<CutRuleRealm> cutRuleRealmList){
+
+        str = str.replaceAll("\u001D", "");
+        str = str.trim();
+        if (cutRuleRealmList.size()==0){
+            return  str;
+        }
+        int len = str.length();
+
+
+        for (int i=0;i<cutRuleRealmList.size();i++){
+            CutRuleRealm cutRuleRealm = cutRuleRealmList.get(i);
+            if (len!=cutRuleRealm.getNumberLength()){
+                continue;
+            }
+            String number_start = cutRuleRealm.getNumberStart();
+            int cut_type = cutRuleRealm.getCutType();
+            int number_length = cutRuleRealm.getNumberLength();
+            int start_index = cutRuleRealm.getStartIndex()-1;
+            int cut_length = cutRuleRealm.getCutLength();
+
+            if (len!=number_length){
+                continue;
+            }
+
+            if (!number_start.equals("%") && !str.startsWith(number_start)){
+                continue;
+            }
+
+            if (cut_type==1){
+                str = str.substring(start_index,cut_length+start_index);
+            }
+            //从后往前截取待完善
+        }
+
+        return  str;
+
+    }
+
+
+    /**
+     * 查询订单
+     * @param trackingNumber
+     * @return
+     */
+    private HkTransDetailRealm getDetailRealm(String trackingNumber){
+
+
+
+        HkTransDetailRealm detailRealm = mRealm.where(HkTransDetailRealm.class)
+                .equalTo("tracking_number",trackingNumber)
+                .equalTo("batch_number",batchNumber)
+                .findFirst();
+        if (detailRealm==null){
+            trackingNumber = strByCutRule(trackingNumber,cutRuleRealmList);
+            detailRealm = mRealm.where(HkTransDetailRealm.class)
+                    .equalTo("tracking_number",trackingNumber)
+                    .equalTo("batch_number",batchNumber)
+                    .findFirst();
+        }
+        return detailRealm;
+
+    }
+
+    private void inboundPutin(){
+        if (!validate()){
+            return;
+        }
+
+        String trackingNumber = etOrderNo.getText().toString().trim();
+
+        HkTransDetailRealm  detailRealm = getDetailRealm(trackingNumber);
+        if (detailRealm==null){
+            authCamera();
+            mtOrderCode.setText("");
+            tvSort.setText("");
+            etOrderNo.setText("");
+            return;
+        }
+        showSuccessToast("Success","hk"+detailRealm.getSort());
+        mtOrderCode.setText(detailRealm.getTrackingNumber());
+        tvSort.setText(detailRealm.getSort());
+        etOrderNo.setText("");
+
+        try {
+            JSONObject postParam = new JSONObject();
+            postParam.put("transport_order_number",batchNumber);
+            postParam.put("tracking_number",detailRealm.getTrackingNumber());
+            postParam.put("realm_id",detailRealm.getId());
+
+
+            OkGo.<String>post(Urls.getServiceAddress(this) + Urls.FXY_GK_INBOUND_PUTIN).upJson(postParam)
+                    .execute(new MyDialogCallback(this, true, true) {
+                        @Override
+                        public void onSuccess(Response<String> response) {
+                            super.onSuccess(response);
+
+                            try {
+                                ActionBean bean = JsonUtil.getObject(response.body(), ActionBean.class);
+                                if(bean.code == 1){
+
+                                    JSONObject data = new JSONObject(bean.data);
+                                    if (data.has("realm_id")){
+                                        setIsFinish(data.getString("realm_id"),1);
+                                    }
+                                }else{
+//                                    showWarningToast(bean.msg);
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                                XLog.e("添加理货数据结果返回错误",e.getMessage());
+                            }
+                        }
+                    });
+
+
+        } catch (JSONException e) {
+            e.printStackTrace();
+
+        }
+
+
+    }
+
+
+    private void setIsFinish(String realmId,int isFinish){
+        //更新值
+        mRealm.beginTransaction();
+        HkTransDetailRealm myObject = mRealm.where(HkTransDetailRealm.class).equalTo("id",realmId).findFirst();
+        myObject.setPushStatus(isFinish);
+        mRealm.commitTransaction();
+    }
+
+    /*
+     * 校验必录
+     */
+    private boolean validate(){
+
+        if (batchNumber.isEmpty()){
+            showErrorToast(batchListSpinner.getHint().toString());
+            setEditTextFocused(batchListSpinner,true);
+            return false;
+        }
+        setEditTextNormal(batchListSpinner,true);
+
+        //数据检查不通过
+        String orderNo = etOrderNo.getText().toString().trim();
+        if (orderNo.isEmpty()){
+            showWarningToast(etOrderNo.getHint().toString());
+            return false;
+        }
+
+        return true;
+    }
+
+
+    private void authCamera(){
+        //拍照
+        com.luck.picture.lib.PictureSelector.create(this)
+                .openCamera(PictureMimeType.ofImage())
+                //只需要拍照
+                //.selectionMode(PictureConfig.SINGLE)
+//                .isCamera(true)
+                //.compressMaxKB()//压缩最大值kb compressGrade()为Luban.CUSTOM_GEAR有效
+                .compress(true) // 压缩
+                .cropCompressQuality(100)// 裁剪压缩质量 默认100
+                .minimumCompressSize(100) //最新压缩图片 默认100
+                .forResult(PictureConfig.CHOOSE_REQUEST);
+    }
+
+    //
+    @OnClick({R.id.btn_photos})
+    public void onViewClicked(View view) {
+        Bundle bundle = new Bundle();
+        switch (view.getId()) {
+            case R.id.btn_photos:
+                authCamera();
+                break;
+            default:
+                break;
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        unbinder.unbind();
+        super.onDestroy();
+    }
+    @Override
+    protected void onResume() {
+        super.onResume();
+        initReceiver();
+    }
+    @Override
+    protected void onPause() {
+        super.onPause();
+        //销毁在onResume()方法中的广播
+        try {
+            //停止扫描
+            Integer is_broadcast = scanBean.getIsBroadcast();//是否广播
+            if (is_broadcast==0){
+                StoTongJNI.getIns(mContext).SetScannerStop();
+                StoTongJNI.getIns(mContext).SetScannerOff();
+            }else{
+                unregisterReceiver(mReceiver);
+            }
+        }catch (Exception e){
+            XLog.e("销毁广播失败:",e.getMessage());
+        }
+    }
+
+}

+ 1 - 1
app/src/main/java/com/fxy/login/LoginActivity.java

@@ -246,7 +246,7 @@ public class LoginActivity extends BaseActivity {
                                     spCache.setWeightUnit(mUserBean.weight_unit);
                                     //spCache.setAvatarUrl(Urls.HEAD_IMAGE);
 
-
+                                    spCache.setBusinessType(mUserBean.business_type);
 
                                 }
                                 if (getIntent().getIntExtra("type", 0) == 1) {

+ 30 - 1
app/src/main/java/com/fxy/login/bean/UserBean.java

@@ -29,6 +29,8 @@ public class UserBean implements Parcelable {
     public String resource_prefix= "dahuo";
     public String resource_region= "http://oss-cn-hongkong.aliyuncs.com";
     public String resource_bucket= "hcjfiles";
+    public int business_type = 0;
+
 
     @Override
     public String toString() {
@@ -43,12 +45,14 @@ public class UserBean implements Parcelable {
                 ", phone='" + phone + '\'' +
                 ", user_token='" + user_token + '\'' +
                 ", eMail='" + eMail + '\'' +
+                ", weight_unit='" + weight_unit + '\'' +
                 ", url='" + url + '\'' +
                 ", resource_type='" + resource_type + '\'' +
                 ", resource_domain='" + resource_domain + '\'' +
                 ", resource_prefix='" + resource_prefix + '\'' +
                 ", resource_region='" + resource_region + '\'' +
                 ", resource_bucket='" + resource_bucket + '\'' +
+                ", business_type=" + business_type +
                 '}';
     }
 
@@ -76,6 +80,28 @@ public class UserBean implements Parcelable {
         dest.writeString(this.resource_prefix);
         dest.writeString(this.resource_region);
         dest.writeString(this.resource_bucket);
+        dest.writeInt(this.business_type);
+    }
+
+    public void readFromParcel(Parcel source) {
+        this.name = source.readString();
+        this.dapartment = source.readString();
+        this.position = source.readString();
+        this.realName = source.readString();
+        this.enterpriseName = source.readString();
+        this.userId = source.readString();
+        this.avatarUrl = source.readString();
+        this.phone = source.readString();
+        this.user_token = source.readString();
+        this.eMail = source.readString();
+        this.weight_unit = source.readString();
+        this.url = source.readString();
+        this.resource_type = source.readString();
+        this.resource_domain = source.readString();
+        this.resource_prefix = source.readString();
+        this.resource_region = source.readString();
+        this.resource_bucket = source.readString();
+        this.business_type = source.readInt();
     }
 
     public UserBean() {
@@ -99,9 +125,10 @@ public class UserBean implements Parcelable {
         this.resource_prefix = in.readString();
         this.resource_region = in.readString();
         this.resource_bucket = in.readString();
+        this.business_type = in.readInt();
     }
 
-    public static final Parcelable.Creator<UserBean> CREATOR = new Parcelable.Creator<UserBean>() {
+    public static final Creator<UserBean> CREATOR = new Creator<UserBean>() {
         @Override
         public UserBean createFromParcel(Parcel source) {
             return new UserBean(source);
@@ -112,4 +139,6 @@ public class UserBean implements Parcelable {
             return new UserBean[size];
         }
     };
+
+
 }

+ 42 - 2
app/src/main/java/com/fxy/main/fragment/HomePagerFragment.java

@@ -14,16 +14,28 @@ import android.view.ViewGroup;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
 
+import com.fxy.baselibrary.util.JsonUtil;
+import com.fxy.baselibrary.util.StringUtils;
+import com.fxy.bean.ActionBean;
 import com.fxy.common.VersionUpgrades;
 import com.elvishew.xlog.XLog;
+import com.fxy.constant.SPCache;
+import com.fxy.helper.HkDataHelper;
+import com.fxy.hk.HkPutinMainActivity;
+import com.fxy.login.LoginActivity;
+import com.fxy.net.MyDialogCallback;
+import com.fxy.net.Urls;
 import com.fxy.putIn.CheckGoodsMainActivity;
 import com.fxy.putIn.PutinPalletMainActivity;
 import com.fxy.putIn.PutinPhotosMainActivity;
 import com.fxy.putIn.SortationMainActivity;
 import com.fxy.putIn.TallyMainActivity;
 import com.fxy.putIn.TrayMainActivity;
+import com.fxy.putIn.bean.realm.TakePhotosRealm;
 import com.fxy.putOut.DeliveryGoodsMainActivity;
 import com.fxy.putOut.QualityInspectionMainActivity;
+import com.fxy.realm.CutRuleRealm;
+import com.fxy.realm.HkTransRealm;
 import com.fxy.tool.OrderToolMainActivity;
 import com.fxy.workOrder.StartWorkOrderMainActivity;
 import com.fxy.workOrder.WorkOrderOptMainActivity;
@@ -39,14 +51,22 @@ import com.fxy.baselibrary.tddialog.list.TListDialog;
 import com.fxy.R;
 import com.fxy.constant.BaseConfig;
 import com.fxy.helper.ScanHelper;
+import com.lzy.okgo.OkGo;
 
 
+import org.json.JSONObject;
+
 import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
 
 import butterknife.BindView;
 import butterknife.ButterKnife;
 import butterknife.OnClick;
 import butterknife.Unbinder;
+import io.realm.Realm;
+import io.realm.RealmResults;
 
 
 /**
@@ -63,6 +83,12 @@ public class HomePagerFragment extends BaseFragment implements View.OnClickListe
     LinearLayout searchView;
 
 
+    @BindView(R.id.ll_menu_type)
+    LinearLayout llMenuType;
+
+    @BindView(R.id.ll_menu_type_hk)
+    LinearLayout llMenuTypeHk;
+
 
     Unbinder bind;
     public static final String TYPE = "type";
@@ -89,6 +115,13 @@ public class HomePagerFragment extends BaseFragment implements View.OnClickListe
             parent.removeView(rootView);
         }
 
+
+        SPCache spCache = SPCache.getInstance(getActivity());
+
+        int business_type = spCache.getBusinessType();
+        llMenuType.setVisibility((business_type==0 || business_type==1)?View.VISIBLE:View.GONE);
+        llMenuTypeHk.setVisibility((business_type==0 || business_type==2)?View.VISIBLE:View.GONE);
+
         //从缓存读取客户端
 
         try {
@@ -112,6 +145,11 @@ public class HomePagerFragment extends BaseFragment implements View.OnClickListe
             }
         }.start();
 
+        //拉取数据
+        (new HkDataHelper(getApplicationContext())).getBaseInfo();
+
+
+
     }
 
     @Override
@@ -130,7 +168,7 @@ public class HomePagerFragment extends BaseFragment implements View.OnClickListe
      * @param v
      */
     @OnClick({R.id.search_view, R.id.ivt_tally,R.id.ivt_cargo_storage,R.id.ivt_putin_photos,
-            R.id.ivt_order_tool,R.id.ivt_check,R.id.ivt_putin_pallet,
+            R.id.ivt_order_tool,R.id.ivt_check,R.id.ivt_putin_pallet,R.id.ivt_hk_putin,
             R.id.ivt_handle_work_order,R.id.ivt_add_work_order})
     public void onClick(View v) {
         Bundle bundle = new Bundle();
@@ -162,7 +200,9 @@ public class HomePagerFragment extends BaseFragment implements View.OnClickListe
             case R.id.ivt_putin_pallet:
                 intent2Page(getActivity(), PutinPalletMainActivity.class, false,bundle);
                 break;
-
+            case R.id.ivt_hk_putin:
+                intent2Page(getActivity(), HkPutinMainActivity.class, false,bundle);
+                break;
 
             default:
                 showToast("还没有配置点击事件");

+ 7 - 49
app/src/main/java/com/fxy/net/Urls.java

@@ -75,6 +75,8 @@ public class Urls {
 
     //获取用户信息
     public static final String GET_USER_INFO = "/pda/User/getUserInfo";
+    //获取用户信息
+    public static final String GET_USER_BASE_INFO = "/pda/user/baseInfo";
 
 
     //检测服务是否可用
@@ -146,62 +148,18 @@ public class Urls {
     //入库分拣
     public static final String FXY_GROUP_PCS = "/pda/inbound/groupPcs";
 
+    //香港入库操作
+    public static final  String FXY_GK_INBOUND_PUTIN = "/pda/HongkongInbound/putin";
+    //香港入库
+    public static final String FXY_GK_INBOUND_PICTURE = "/pda/HongkongInbound/picture";
 
 
-    /*返修易 -- end*/
-
-
-
-    /*
-    以下是头程
-     */
-    //获取搬运小组
-    public static final String FMS_GET_HOST = "/pda/basics/getHost";
-    //获取仓库
-    public static final String FMS_GET_WAREHOUSE = "/pda/basics/getWarehouse";
-    //获取搬运小组
-    public static final String FMS_DOCKER_LIST = "/pda/Inbound/getDocker";
-    //获取搬运小组
-    public static final String FMS_CHECK_ORDER = "/pda/Inbound/checkOrder";
-    //添加理货
-    public static final String FMS_ADD_RECEIVE = "/pda/Inbound/receive";
-    //上架
-    public static final String FMS_PUT_AWAY = "/pda/Inbound/PutAway";
-
-    //获取待检查列表
-    public static final String FMS_GET_WAIT_CHECK_LIST = "/pda/Inbound/getWaitCheckList";
 
-    //获取产品列表
-    public static final String FMS_GET_PRODUCTS = "/pda/Inbound/getProducts";
 
-    //获取商品列表
-    public static final String FMS_GET_PACKAGE_GOODS = "/pda/Inbound/getPackageGoods";
 
-    public static final String FMS_CHECK_OUTBOUND = "/pda/Outbound/checkOutbound";
-
-    //查验货物
-    public static final String FMS_FINISH_CHECK = "/pda/Inbound/finishCheck";
-    //
-    public static final String FMS_GET_ISSUE_LIST = "/pda/Inbound/getIssueList";
-
-    //获取完成
-    public static final String FMS_ADD_STORAGE = "/pda/Outbound/storage";
-
-    //获取完成
-    public static final String FMS_FINISH_STORAGE = "/pda/Outbound/finishStorage";
-
-    //撤销装柜
-    public static final String FMS_CANCEL_STORAGE = "/pda/Outbound/cancelStorage";
-
-    //检查单号信息
-    public static final String FMS_OUTBOUND_CHECK_ORDER = "/pda/Outbound/checkOrder";
-    //
-    public static final String FMS_GET_OUTBOUND_INFO = "/pda/Outbound/getOutboundCount";
+    /*返修易 -- end*/
 
-    public static final String FMS_OUTBOUND_DETAIL = "/pda/Outbound/getOutboundDetail";
 
     public static final String FMS_UPLOAD_SIGN = "/pda/User/uploadSign";
 
-    //获取搬运小组
-    public static final String FMS_LOCATION_LIST = "/pda/Inbound/getPutAwayLocation";
 }

+ 13 - 0
app/src/main/java/com/fxy/putIn/PutinPhotosMainActivity.java

@@ -352,6 +352,19 @@ public class PutinPhotosMainActivity extends  BaseActivity implements StoJNI.Sca
 
     private void iniData(){
 
+        //@todo 测试需要删除
+
+        RealmResults<TakePhotosRealm> realmResultsAll  = mRealm.where(TakePhotosRealm.class)
+                .sort("pushStatus").findAll();
+        realmResultsAll.load();
+        if (realmResultsAll.size()>0){
+            for (int i=0;i<realmResultsAll.size();i++){
+                TakePhotosRealm a = realmResultsAll.get(i);
+                XLog.e(a.toString());
+            }
+        }
+
+
         //检查已上传未推送成功数据
         RealmResults<TakePhotosRealm> realmResults  = mRealm.where(TakePhotosRealm.class)
                 .equalTo("isDelete",0)

+ 122 - 0
app/src/main/java/com/fxy/realm/CutRuleRealm.java

@@ -0,0 +1,122 @@
+package com.fxy.realm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import io.realm.RealmObject;
+import io.realm.annotations.PrimaryKey;
+
+public class CutRuleRealm extends RealmObject implements Parcelable {
+    @PrimaryKey // 必须要有一个主键
+    public int id ;
+    public int  company_id ;
+    public String  number_start;
+    public int  number_length;
+    public int  cut_type;
+    public int  start_index;
+    public int cut_length;
+    public String  is_delete;
+    public int create_user;
+    public String  create_date;
+
+
+    public CutRuleRealm() {
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public int getCompanyId() {
+        return company_id;
+    }
+
+    public String getNumberStart() {
+        return number_start;
+    }
+
+    public int getNumberLength() {
+        return number_length;
+    }
+
+    public int getCutType() {
+        return cut_type;
+    }
+
+    public int getStartIndex() {
+        return start_index;
+    }
+
+    public int getCutLength() {
+        return cut_length;
+    }
+
+    public String getIsDelete() {
+        return is_delete;
+    }
+
+    public int getCreateUser() {
+        return create_user;
+    }
+
+    public String getCreateDate() {
+        return create_date;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeInt(this.id);
+        dest.writeInt(this.company_id);
+        dest.writeString(this.number_start);
+        dest.writeInt(this.number_length);
+        dest.writeInt(this.cut_type);
+        dest.writeInt(this.start_index);
+        dest.writeInt(this.cut_length);
+        dest.writeString(this.is_delete);
+        dest.writeInt(this.create_user);
+        dest.writeString(this.create_date);
+    }
+
+    public void readFromParcel(Parcel source) {
+        this.id = source.readInt();
+        this.company_id = source.readInt();
+        this.number_start = source.readString();
+        this.number_length = source.readInt();
+        this.cut_type = source.readInt();
+        this.start_index = source.readInt();
+        this.cut_length = source.readInt();
+        this.is_delete = source.readString();
+        this.create_user = source.readInt();
+        this.create_date = source.readString();
+    }
+
+    protected CutRuleRealm(Parcel in) {
+        this.id = in.readInt();
+        this.company_id = in.readInt();
+        this.number_start = in.readString();
+        this.number_length = in.readInt();
+        this.cut_type = in.readInt();
+        this.start_index = in.readInt();
+        this.cut_length = in.readInt();
+        this.is_delete = in.readString();
+        this.create_user = in.readInt();
+        this.create_date = in.readString();
+    }
+
+    public static final Creator<CutRuleRealm> CREATOR = new Creator<CutRuleRealm>() {
+        @Override
+        public CutRuleRealm createFromParcel(Parcel source) {
+            return new CutRuleRealm(source);
+        }
+
+        @Override
+        public CutRuleRealm[] newArray(int size) {
+            return new CutRuleRealm[size];
+        }
+    };
+}

+ 146 - 0
app/src/main/java/com/fxy/realm/HkTransDetailRealm.java

@@ -0,0 +1,146 @@
+package com.fxy.realm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import io.realm.RealmObject;
+import io.realm.annotations.PrimaryKey;
+
+public class HkTransDetailRealm  extends RealmObject implements Parcelable {
+    @PrimaryKey // 必须要有一个主键
+    private String id;
+    public String tracking_number= ""  ;
+    public String batch_number="" ;
+    public String sort = "" ;
+    public int scans_number = 0;
+    public String scans_time = "";
+    public int push_status = 0;
+    public int  version = 0 ;
+
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeString(this.id);
+        dest.writeString(this.tracking_number);
+        dest.writeString(this.batch_number);
+        dest.writeString(this.sort);
+        dest.writeInt(this.scans_number);
+        dest.writeString(this.scans_time);
+        dest.writeInt(this.push_status);
+        dest.writeInt(this.version);
+    }
+
+    public void readFromParcel(Parcel source) {
+        this.id = source.readString();
+        this.tracking_number = source.readString();
+        this.batch_number = source.readString();
+        this.sort = source.readString();
+        this.scans_number = source.readInt();
+        this.scans_time = source.readString();
+        this.push_status = source.readInt();
+        this.version = source.readInt();
+    }
+
+    public HkTransDetailRealm() {
+    }
+
+    protected HkTransDetailRealm(Parcel in) {
+        this.id = in.readString();
+        this.tracking_number = in.readString();
+        this.batch_number = in.readString();
+        this.sort = in.readString();
+        this.scans_number = in.readInt();
+        this.scans_time = in.readString();
+        this.push_status = in.readInt();
+        this.version = in.readInt();
+    }
+
+    public static final Creator<HkTransDetailRealm> CREATOR = new Creator<HkTransDetailRealm>() {
+        @Override
+        public HkTransDetailRealm createFromParcel(Parcel source) {
+            return new HkTransDetailRealm(source);
+        }
+
+        @Override
+        public HkTransDetailRealm[] newArray(int size) {
+            return new HkTransDetailRealm[size];
+        }
+    };
+
+    public String getId() {
+        return id;
+    }
+
+    public HkTransDetailRealm setId(String id) {
+        this.id = id;
+        return this;
+    }
+
+    public String getTrackingNumber() {
+        return tracking_number;
+    }
+
+    public HkTransDetailRealm setTrackingNumber(String tracking_number) {
+        this.tracking_number = tracking_number;
+        return this;
+    }
+
+    public String getBatchNumber() {
+        return batch_number;
+    }
+
+    public HkTransDetailRealm setBatchNumber(String batch_number) {
+        this.batch_number = batch_number;
+        return this;
+    }
+
+    public String getSort() {
+        return sort;
+    }
+
+    public HkTransDetailRealm setSort(String sort) {
+        this.sort = sort;
+        return this;
+    }
+
+    public int getScansNumber() {
+        return scans_number;
+    }
+
+    public HkTransDetailRealm setScansNumber(int scans_number) {
+        this.scans_number = scans_number;
+        return this;
+    }
+
+    public String getScansTime() {
+        return scans_time;
+    }
+
+    public HkTransDetailRealm setScansTime(String scans_time) {
+        this.scans_time = scans_time;
+        return this;
+    }
+
+    public int getPush_status() {
+        return push_status;
+    }
+
+    public HkTransDetailRealm setPushStatus(int push_status) {
+        this.push_status = push_status;
+        return this;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public HkTransDetailRealm setVersion(int version) {
+        this.version = version;
+        return this;
+    }
+}

+ 91 - 0
app/src/main/java/com/fxy/realm/HkTransRealm.java

@@ -0,0 +1,91 @@
+package com.fxy.realm;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import io.realm.RealmObject;
+import io.realm.annotations.PrimaryKey;
+
+public class HkTransRealm extends RealmObject implements Parcelable {
+    @PrimaryKey // 必须要有一个主键
+    public String batch ;
+    public String path ;
+    public int  version ;
+    public String  filename;
+
+    public HkTransRealm(){
+
+    }
+    protected HkTransRealm(Parcel in) {
+        batch = in.readString();
+        path = in.readString();
+        version = in.readInt();
+        filename = in.readString();
+    }
+
+
+
+    public static Creator<HkTransRealm> getCREATOR() {
+        return CREATOR;
+    }
+
+    public static final Creator<HkTransRealm> CREATOR = new Creator<HkTransRealm>() {
+        @Override
+        public HkTransRealm createFromParcel(Parcel in) {
+            return new HkTransRealm(in);
+        }
+
+        @Override
+        public HkTransRealm[] newArray(int size) {
+            return new HkTransRealm[size];
+        }
+    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel parcel, int i) {
+        parcel.writeString(batch);
+        parcel.writeString(path);
+        parcel.writeInt(version);
+        parcel.writeString(filename);
+    }
+
+    public String getBatch() {
+        return batch;
+    }
+
+    public void setBatch(String batch) {
+        this.batch = batch;
+    }
+
+    public String getPath() {
+        return path;
+    }
+
+    public HkTransRealm setPath(String path) {
+        this.path = path;
+        return this;
+    }
+
+    public int getVersion() {
+        return version;
+    }
+
+    public HkTransRealm setVersion(int version) {
+        this.version = version;
+        return this;
+    }
+
+    public String getFilename() {
+        return filename;
+    }
+
+    public HkTransRealm setFilename(String filename) {
+        this.filename = filename;
+        return this;
+    }
+}

+ 161 - 0
app/src/main/res/layout/activity_fxy_hk_putin.xml

@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout 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"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:background="@color/md_grey_100"
+    android:orientation="vertical">
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent">
+
+        <ScrollView
+            android:id="@+id/ll_scroll_view"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:fitsSystemWindows="true"
+            android:orientation="vertical"
+            android:scrollbars="none">
+
+
+            <LinearLayout
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:paddingBottom="100dp"
+                android:orientation="vertical">
+
+
+                <LinearLayout
+                    style="@style/FromLinearLayoutItem"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+
+                    android:gravity="center_vertical"
+                    android:orientation="horizontal"
+                    >
+                    <com.jaredrummler.materialspinner.MaterialSpinner
+                        style="@style/mSpinnerStyle2"
+                        android:id="@+id/ms_batch_list"
+                        android:hint="请选择批次"
+                        />
+                </LinearLayout>
+
+                <LinearLayout
+                    style="@style/FromLinearLayoutItem"
+                    android:orientation="horizontal">
+                    <EditText
+                        style="@style/EditTextStyle"
+                        android:id="@+id/et_order_no"
+                        android:hint="@string/hint_please_scan_no"
+                        android:text=""/>
+                    <ImageButton
+                        style="@style/ClearImg"
+                        android:id="@+id/ib_order_no_clear"/>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:layout_marginLeft="@dimen/dp_10"
+                    android:layout_marginRight="@dimen/dp_10"
+                    android:layout_marginTop="@dimen/dp_10"
+                    android:background="@drawable/bg_white_et"
+                    android:gravity="center_vertical"
+                    android:orientation="vertical"
+                    android:paddingLeft="10dp"
+                    android:paddingRight="10dp">
+
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:paddingBottom="5dp"
+                        android:paddingTop="5dp"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            android:id="@+id/tv_sort"
+                            android:layout_width="match_parent"
+                            android:layout_height="wrap_content"
+                            android:textSize="100sp"
+                            android:gravity="center"
+                            android:textStyle="bold"
+                            android:textColor="@color/md_orange_STO"
+                            android:hint=""
+                            android:text="" />
+
+
+
+                    </LinearLayout>
+
+
+                    <LinearLayout
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:paddingBottom="5dp"
+                        android:paddingTop="5dp"
+                        android:orientation="horizontal">
+
+                        <TextView
+                            style="@style/tvLeftStyle"
+                            android:text="订单号" />
+                        <TextView
+                            style="@style/tvLeftStyle"
+                            android:text=":" />
+
+                        <com.fxy.baselibrary.views.MarqueeTextView
+                            style="@style/mtRightStyle"
+                            android:id="@+id/mt_order_code"
+                            />
+                    </LinearLayout>
+
+                </LinearLayout>
+
+
+                <include layout="@layout/item_float_image" />
+            </LinearLayout>
+
+
+
+        </ScrollView>
+
+        <!-- 底部按钮 -->
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/dp_10"
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_marginRight="@dimen/dp_10"
+            android:layout_marginBottom="@dimen/dp_40"
+            android:background="@drawable/bg_white_et"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:layout_gravity="bottom"
+            android:layout_alignParentBottom="true"
+            android:layout_centerHorizontal="true"
+
+            android:padding="10dp">
+            <TextView
+                style="@style/fontSize"
+                android:id="@+id/btn_photos"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/dp_10"
+                android:layout_marginRight="@dimen/dp_10"
+                android:background="@drawable/bg_orange_item"
+                android:gravity="center"
+                android:text="拍照"
+                android:padding="10dp"
+                android:textColor="@color/white"
+                android:visibility="visible" />
+        </LinearLayout>
+    </RelativeLayout>
+
+
+
+
+</LinearLayout>

+ 207 - 164
app/src/main/res/layout/fragment_homepager.xml

@@ -65,181 +65,224 @@
         <LinearLayout
             style="@style/LinearLayoutCornerStyle"
             android:orientation="vertical">
-
             <LinearLayout
-                android:id="@+id/ll_put_in_menu_tc"
-                style="@style/LinearLayoutCornerStyle"
-                android:layout_marginTop="10dp"
-                android:orientation="vertical"
-                android:padding="@dimen/dp_10"
-                android:visibility="visible">
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:text="@string/index_put_in"
-                    android:textColor="@color/black_3d3d3d"
-                    android:textSize="@dimen/t14"
-                    android:textStyle="bold" />
-
-                <TableRow
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/t12"
-                    android:weightSum="2">
-
+                android:id="@+id/ll_menu_type"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+                <LinearLayout
+                    android:id="@+id/ll_put_in_menu_tc"
+                    style="@style/LinearLayoutCornerStyle"
+                    android:layout_marginTop="10dp"
+                    android:orientation="vertical"
+                    android:padding="@dimen/dp_10"
+                    android:visibility="visible">
                     <TextView
-                        android:id="@+id/ivt_putin_photos"
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:drawableTop="@drawable/ic_putin_photos"
-                        android:drawablePadding="5dp"
-                        android:text="快递入库" />
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="@string/index_put_in"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:textStyle="bold" />
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            android:id="@+id/ivt_putin_photos"
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:drawableTop="@drawable/ic_putin_photos"
+                            android:drawablePadding="5dp"
+                            android:text="快递入库" />
+
+                        <TextView
+                            android:id="@+id/ivt_putin_pallet"
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:drawableTop="@drawable/ic_tray"
+                            android:drawablePadding="5dp"
+                            android:text="托盘入库" />
+
+                    </TableRow>
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            android:id="@+id/ivt_tally"
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:drawableTop="@drawable/ic_mapan"
+                            android:drawablePadding="5dp"
+                            android:text="打板操作" />
+
+                        <TextView
+                            android:id="@+id/ivt_check"
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:drawableTop="@drawable/ic_kccx"
+                            android:drawablePadding="5dp"
+                            android:text="开箱查验" />
+
+
+                    </TableRow>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_put_out_menu_tc"
+                    style="@style/LinearLayoutCornerStyle"
+                    android:layout_marginTop="10dp"
+                    android:orientation="vertical"
+                    android:padding="@dimen/dp_10"
+                    android:visibility="visible">
                     <TextView
-                        android:id="@+id/ivt_putin_pallet"
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:drawableTop="@drawable/ic_tray"
-                        android:drawablePadding="5dp"
-                        android:text="托盘入库" />
-
-                </TableRow>
-
-                <TableRow
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/t12"
-                    android:weightSum="2">
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="出库"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:textStyle="bold" />
                     <TextView
-                        android:id="@+id/ivt_tally"
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:drawableTop="@drawable/ic_mapan"
-                        android:drawablePadding="5dp"
-                        android:text="打板操作" />
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="@string/index_put_out"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:visibility="gone"
+                        android:textStyle="bold" />
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:id="@+id/ivt_cargo_storage"
+                            android:drawableTop="@drawable/ic_shift"
+                            android:drawablePadding="5dp"
+                            android:text="@string/str_cargo_storage" />
+                    </TableRow>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_tool"
+                    style="@style/LinearLayoutCornerStyle"
+                    android:layout_marginTop="10dp"
+                    android:orientation="vertical"
+                    android:padding="@dimen/dp_10"
+                    android:visibility="visible">
                     <TextView
-                        android:id="@+id/ivt_check"
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:drawableTop="@drawable/ic_kccx"
-                        android:drawablePadding="5dp"
-                        android:text="开箱查验" />
-
-
-                </TableRow>
-
-
-
-            </LinearLayout>
-
-
-
-            <LinearLayout
-                android:id="@+id/ll_put_out_menu_tc"
-                style="@style/LinearLayoutCornerStyle"
-                android:layout_marginTop="10dp"
-                android:orientation="vertical"
-                android:padding="@dimen/dp_10"
-                android:visibility="visible">
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:text="出库"
-                    android:textColor="@color/black_3d3d3d"
-                    android:textSize="@dimen/t14"
-                    android:textStyle="bold" />
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:text="@string/index_put_out"
-                    android:textColor="@color/black_3d3d3d"
-                    android:textSize="@dimen/t14"
-                    android:visibility="gone"
-                    android:textStyle="bold" />
-
-                <TableRow
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/t12"
-                    android:weightSum="2">
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="工具"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:textStyle="bold" />
                     <TextView
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:id="@+id/ivt_cargo_storage"
-                        android:drawableTop="@drawable/ic_shift"
-                        android:drawablePadding="5dp"
-                        android:text="@string/str_cargo_storage" />
-                </TableRow>
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="@string/index_put_out"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:visibility="gone"
+                        android:textStyle="bold" />
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:id="@+id/ivt_add_work_order"
+                            android:drawableTop="@drawable/ic_mapan"
+                            android:drawablePadding="5dp"
+                            android:text="添加工单" />
+                        <TextView
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:id="@+id/ivt_handle_work_order"
+                            android:drawableTop="@drawable/ic_mapan"
+                            android:drawablePadding="5dp"
+                            android:text="处理工单" />
+
+                    </TableRow>
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:id="@+id/ivt_order_tool"
+                            android:drawableTop="@drawable/ic_mapan"
+                            android:drawablePadding="5dp"
+                            android:text="工具" />
+
+
+                    </TableRow>
+
+
+                </LinearLayout>
             </LinearLayout>
 
-
-
-
-
             <LinearLayout
-                android:id="@+id/ll_tool"
-                style="@style/LinearLayoutCornerStyle"
-                android:layout_marginTop="10dp"
-                android:orientation="vertical"
-                android:padding="@dimen/dp_10"
-                android:visibility="visible">
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:text="工具"
-                    android:textColor="@color/black_3d3d3d"
-                    android:textSize="@dimen/t14"
-                    android:textStyle="bold" />
-                <TextView
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:layout_gravity="center"
-                    android:text="@string/index_put_out"
-                    android:textColor="@color/black_3d3d3d"
-                    android:textSize="@dimen/t14"
-                    android:visibility="gone"
-                    android:textStyle="bold" />
-
-                <TableRow
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/t12"
-                    android:weightSum="2">
-
-                    <TextView
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:id="@+id/ivt_add_work_order"
-                        android:drawableTop="@drawable/ic_mapan"
-                        android:drawablePadding="5dp"
-                        android:text="添加工单" />
+                android:id="@+id/ll_menu_type_hk"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:orientation="vertical">
+                <LinearLayout
+                    android:id="@+id/ll_hong_kong"
+                    style="@style/LinearLayoutCornerStyle"
+                    android:layout_marginTop="10dp"
+                    android:orientation="vertical"
+                    android:padding="@dimen/dp_10"
+                    android:visibility="visible">
                     <TextView
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:id="@+id/ivt_handle_work_order"
-                        android:drawableTop="@drawable/ic_mapan"
-                        android:drawablePadding="5dp"
-                        android:text="处理工单" />
-
-                </TableRow>
-
-                <TableRow
-                    android:layout_width="match_parent"
-                    android:layout_height="wrap_content"
-                    android:layout_marginTop="@dimen/t12"
-                    android:weightSum="2">
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="香港入库操作"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:textStyle="bold" />
                     <TextView
-                        style="@style/ImageViewWithTextStyle.FontSize"
-                        android:id="@+id/ivt_order_tool"
-                        android:drawableTop="@drawable/ic_mapan"
-                        android:drawablePadding="5dp"
-                        android:text="工具" />
-
-
-                </TableRow>
-
-
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_gravity="center"
+                        android:text="@string/index_put_out"
+                        android:textColor="@color/black_3d3d3d"
+                        android:textSize="@dimen/t14"
+                        android:visibility="gone"
+                        android:textStyle="bold" />
+
+                    <TableRow
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:layout_marginTop="@dimen/t12"
+                        android:weightSum="2">
+
+                        <TextView
+                            style="@style/ImageViewWithTextStyle.FontSize"
+                            android:id="@+id/ivt_hk_putin"
+                            android:drawableTop="@drawable/ic_shift"
+                            android:drawablePadding="5dp"
+                            android:text="入库扫描" />
+                    </TableRow>
+                </LinearLayout>
             </LinearLayout>
         </LinearLayout>
     </ScrollView>

+ 13 - 0
app/src/main/res/values/styles.xml

@@ -168,6 +168,19 @@
         <item name="android:textSize">@dimen/t24</item>
     </style>
 
+    <style name="mSpinnerStyle2">
+        <item name="android:layout_width">match_parent</item>
+        <item name="android:layout_height">match_parent</item>
+        <item name="android:ellipsize">marquee</item>
+        <item name="android:focusable">true</item>
+        <item name="ms_padding_top">0dp</item>
+        <item name="ms_padding_bottom">0dp</item>
+        <item name="ms_padding_left">0dp</item>
+        <item name="ms_popup_padding_left">10dp</item>
+        <item name="android:gravity">center</item>
+        <item name="android:textSize">@dimen/t24</item>
+    </style>
+
     <style name="IvCover">
         <item name="android:layout_width">100dp</item>
         <item name="android:layout_height">80dp</item>

BIN
baselibrary/src/main/res/raw/hk0.mp3


BIN
baselibrary/src/main/res/raw/hk1.mp3


BIN
baselibrary/src/main/res/raw/hk10.mp3


BIN
baselibrary/src/main/res/raw/hk11.mp3


BIN
baselibrary/src/main/res/raw/hk12.mp3


BIN
baselibrary/src/main/res/raw/hk13.mp3


BIN
baselibrary/src/main/res/raw/hk14.mp3


BIN
baselibrary/src/main/res/raw/hk15.mp3


BIN
baselibrary/src/main/res/raw/hk16.mp3


BIN
baselibrary/src/main/res/raw/hk17.mp3


BIN
baselibrary/src/main/res/raw/hk18.mp3


BIN
baselibrary/src/main/res/raw/hk19.mp3


BIN
baselibrary/src/main/res/raw/hk2.mp3


BIN
baselibrary/src/main/res/raw/hk20.mp3


BIN
baselibrary/src/main/res/raw/hk21.mp3


BIN
baselibrary/src/main/res/raw/hk22.mp3


BIN
baselibrary/src/main/res/raw/hk23.mp3


BIN
baselibrary/src/main/res/raw/hk24.mp3


BIN
baselibrary/src/main/res/raw/hk25.mp3


BIN
baselibrary/src/main/res/raw/hk26.mp3


BIN
baselibrary/src/main/res/raw/hk27.mp3


BIN
baselibrary/src/main/res/raw/hk28.mp3


BIN
baselibrary/src/main/res/raw/hk29.mp3


BIN
baselibrary/src/main/res/raw/hk3.mp3


BIN
baselibrary/src/main/res/raw/hk30.mp3


BIN
baselibrary/src/main/res/raw/hk31.mp3


BIN
baselibrary/src/main/res/raw/hk32.mp3


BIN
baselibrary/src/main/res/raw/hk33.mp3


BIN
baselibrary/src/main/res/raw/hk34.mp3


BIN
baselibrary/src/main/res/raw/hk35.mp3


BIN
baselibrary/src/main/res/raw/hk36.mp3


BIN
baselibrary/src/main/res/raw/hk37.mp3


BIN
baselibrary/src/main/res/raw/hk38.mp3


BIN
baselibrary/src/main/res/raw/hk39.mp3


BIN
baselibrary/src/main/res/raw/hk4.mp3


BIN
baselibrary/src/main/res/raw/hk40.mp3


BIN
baselibrary/src/main/res/raw/hk41.mp3


BIN
baselibrary/src/main/res/raw/hk42.mp3


BIN
baselibrary/src/main/res/raw/hk43.mp3


BIN
baselibrary/src/main/res/raw/hk44.mp3


BIN
baselibrary/src/main/res/raw/hk45.mp3


BIN
baselibrary/src/main/res/raw/hk46.mp3


BIN
baselibrary/src/main/res/raw/hk47.mp3


BIN
baselibrary/src/main/res/raw/hk48.mp3


BIN
baselibrary/src/main/res/raw/hk49.mp3


BIN
baselibrary/src/main/res/raw/hk5.mp3


BIN
baselibrary/src/main/res/raw/hk50.mp3


BIN
baselibrary/src/main/res/raw/hk6.mp3


BIN
baselibrary/src/main/res/raw/hk7.mp3


BIN
baselibrary/src/main/res/raw/hk8.mp3


BIN
baselibrary/src/main/res/raw/hk9.mp3


+ 3 - 2
config.gradle

@@ -8,8 +8,9 @@ ext {
             minSdkVersion    : 17,
             targetSdkVersion : 23,
             versionCode      : 1,
-            versionName      : "2.5.4",
-            versionApi       : "2.5",
+            versionName      : "2.6.0",
+            versionApi       : "2.6",
+            versionRealm     : 1,
     ]
 
     dependencies = [