Browse Source

添加语言翻译、ICT纸币器

ccc 1 năm trước cách đây
mục cha
commit
48cc4da2da
61 tập tin đã thay đổi với 2292 bổ sung411 xóa
  1. 14 4
      .idea/misc.xml
  2. 1 1
      BaseLibrary/build.gradle
  3. 2 1
      BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseApplication.java
  4. 12 0
      BaseLibrary/src/main/java/com/hboxs/base_library/beans/ProductsBean.java
  5. 8 2
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java
  6. 2 2
      BaseLibrary/src/main/res/layout/dialog_normal.xml
  7. 13 2
      app/src/main/AndroidManifest.xml
  8. 19 19
      app/src/main/java/com/bgy/autosale/App.java
  9. 2 0
      app/src/main/java/com/bgy/autosale/Constant.java
  10. 42 3
      app/src/main/java/com/bgy/autosale/RemoteSupportService.java
  11. 15 0
      app/src/main/java/com/bgy/autosale/entitys/DishesBean.java
  12. 16 0
      app/src/main/java/com/bgy/autosale/entitys/SpecBean.java
  13. 6 1
      app/src/main/java/com/bgy/autosale/helpers/OrderHelper.java
  14. 17 0
      app/src/main/java/com/bgy/autosale/payutil/CustomDecimalFormat.java
  15. 1 0
      app/src/main/java/com/bgy/autosale/payutil/DownPresenter.java
  16. 189 19
      app/src/main/java/com/bgy/autosale/payutil/MQService.java
  17. 34 8
      app/src/main/java/com/bgy/autosale/payutil/MdbCreditCardDialog.java
  18. 12 0
      app/src/main/java/com/bgy/autosale/payutil/OrderPriceBean.java
  19. 5 5
      app/src/main/java/com/bgy/autosale/payutil/PayMixDialog.java
  20. 53 0
      app/src/main/java/com/bgy/autosale/payutil/ProductBean.java
  21. 2 2
      app/src/main/java/com/bgy/autosale/payutil/ScanDialog.java
  22. 22 1
      app/src/main/java/com/bgy/autosale/payutil/dialog/ShoppingTrolleyDialogChoosePay.java
  23. 16 10
      app/src/main/java/com/bgy/autosale/ui/MainActivity.java
  24. 10 3
      app/src/main/java/com/bgy/autosale/ui/adapters/ShopCartAdapter.java
  25. 279 72
      app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java
  26. 10 44
      app/src/main/java/com/bgy/autosale/ui/consumer/MainFragment.java
  27. 75 11
      app/src/main/java/com/bgy/autosale/ui/operator/DeviceManagerActivity.java
  28. 7 0
      app/src/main/java/com/bgy/autosale/ui/operator/MyFragmentActivity.java
  29. 392 34
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/PriceFragment.java
  30. 266 18
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/SwitchFragment.java
  31. 192 22
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/TechnologySupportFragment.java
  32. 16 12
      app/src/main/java/com/bgy/autosale/utils/PlcLog.java
  33. 3 1
      app/src/main/java/com/bgy/autosale/utils/SPUtils.java
  34. 0 1
      app/src/main/res/layout/dialog_mdbcredit_card.xml
  35. 10 8
      app/src/main/res/layout/dialog_mix_pay_now.xml
  36. 33 3
      app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml
  37. 37 7
      app/src/main/res/layout/fragment_ice_cream.xml
  38. 33 5
      app/src/main/res/layout/fragment_price.xml
  39. 303 65
      app/src/main/res/layout/fragment_switch.xml
  40. 33 0
      app/src/main/res/layout/fragment_technology_support.xml
  41. 3 3
      app/src/main/res/layout/item_price.xml
  42. 7 1
      app/src/main/res/values-cs/strings.xml
  43. 7 1
      app/src/main/res/values-de/strings.xml
  44. 6 0
      app/src/main/res/values-en/strings.xml
  45. 6 1
      app/src/main/res/values-es/strings.xml
  46. 7 1
      app/src/main/res/values-et/strings.xml
  47. 6 0
      app/src/main/res/values-ko/strings.xml
  48. 7 1
      app/src/main/res/values-lt/strings.xml
  49. 7 1
      app/src/main/res/values-lv/strings.xml
  50. 7 1
      app/src/main/res/values-ru/strings.xml
  51. 5 1
      app/src/main/res/values-zh/strings.xml
  52. 6 1
      app/src/main/res/values/strings.xml
  53. 6 0
      app/src/main/res/xml/filepaths.xml
  54. 2 2
      config.gradle
  55. BIN
      jniLibs/arm64-v8a/libSerialPortJni.so
  56. BIN
      jniLibs/armeabi-v7a/libSerialPortJni.so
  57. BIN
      jniLibs/x86/libSerialPortJni.so
  58. BIN
      jniLibs/x86_64/libSerialPortJni.so
  59. 2 4
      module_offpay/src/main/java/com/example/offpay/ictrs232/SerialPortUtil.java
  60. 2 0
      module_offpay/src/main/java/com/example/offpay/service/ModuleOffPayInitializer.java
  61. 4 7
      module_offpay/src/main/java/com/example/offpay/service/OfflinePayService.java

+ 14 - 4
.idea/misc.xml

@@ -12,21 +12,31 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout/dialog_normal.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout/item_user_home.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout/layout_empty_data.xml" value="0.24947916666666667" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_authnumer.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_authnumer.xml" value="0.1" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_device_manager.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_fragment.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_main.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_sn_setting.xml" value="0.12132725430597771" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_credit_card.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_mdbcredit_card.xml" value="0.24947916666666667" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_mix_pay_now.xml" value="0.4" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_mix_pay_now.xml" value="0.10400000000000001" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_pay.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_update.xml" value="0.24947916666666667" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_ice_cream.xml" value="0.2" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_ice_cream.xml" value="0.152" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_main.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_pay_select.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_price.xml" value="0.2" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_switch.xml" value="0.264" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_technology_support.xml" value="0.24947916666666667" />
-        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_shop_cart.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_price.xml" value="0.2" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_shop_cart_dishes.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_switch.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_technology.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_batching.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/view_shop_cart.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/xml/file_paths.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/xml/filepaths.xml" value="0.1" />
       </map>
     </option>
   </component>

+ 1 - 1
BaseLibrary/build.gradle

@@ -118,6 +118,6 @@ dependencies {
 //    api project(':keboardLibrary')
     api files('libs/ZtlApi.jar')
     api 'com.sdwfqin.cbt:cbt:1.1.1'
-    api 'com.tencent:mmkv:1.2.12' //api配置 可以让下面模块的都可以使用 ,implementation就不行 why
+    api 'com.tencent:mmkv:1.3.3' //api配置 可以让下面模块的都可以使用 ,implementation就不行 why
 }
 

+ 2 - 1
BaseLibrary/src/main/java/com/hboxs/base_library/base/BaseApplication.java

@@ -9,6 +9,7 @@ import android.util.Log;
 import com.example.spunsugar.db.DaoMaster;
 import com.example.spunsugar.db.DaoSession;
 import com.hboxs.base_library.beans.db.GreenDaoOpenHelper;
+import com.hboxs.base_library.constant.Global;
 import com.hboxs.base_library.util.GlideUtil;
 import com.hboxs.base_library.util.LogUtil;
 import com.hboxs.base_library.util.MMKVUtil;
@@ -50,7 +51,7 @@ public class BaseApplication extends Application {
         setDatabase();//初始化数据库
 
         // configX5Wv();
-
+        Global.isTrue=true;
     }
 
 

+ 12 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/beans/ProductsBean.java

@@ -60,4 +60,16 @@ public class ProductsBean implements Serializable {
     public void setCodePrice(double codePrice) {
         this.codePrice = codePrice;
     }
+
+    @Override
+    public String toString() {
+        return "ProductsBean{" +
+                "equipmentId=" + equipmentId +
+                ", id=" + id +
+                ", productName='" + productName + '\'' +
+                ", rmbPrice=" + rmbPrice +
+                ", name='" + name + '\'' +
+                ", codePrice=" + codePrice +
+                '}';
+    }
 }

+ 8 - 2
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java

@@ -15,6 +15,11 @@ import java.util.Map;
 public abstract class Global {
 
     /**
+     * 用来初始化这个Global的类,不然会很卡。
+     */
+    public static boolean isTrue=false;
+    
+    /**
      * 控制当前是否为离线版本m
      * false 线上版本
      * true 线下版本
@@ -27,7 +32,7 @@ public abstract class Global {
      * 1:
      * 2:国外线上
      */
-    public static final int isVersions = 2;
+    public static final int isVersions = 1;
 
     /**
      * 信用卡支付方式user
@@ -226,7 +231,7 @@ public abstract class Global {
 
     //d2的状态,表示做糖列表没有了,可以根据d2的状态进行判断。
     public static boolean d2Status = false;//false表示还在制作,true表示可以制作了。
-    public static int creditCardMultiplier = Hawk.get(Name.MDB_RATE, 1);
+    public static int creditCardMultiplier = Hawk.get(Name.MDB_RATE, 100);
 
     //表示
     public static int isUserHome = 0; // 0 不在 1在
@@ -234,5 +239,6 @@ public abstract class Global {
     public static boolean MDBCreditCardSuccess=false;
     public static int MDBCreditCardSuccessNumber=0;
 
+    public static int UpDateNamePriceSuccess=0;
 }
 

+ 2 - 2
BaseLibrary/src/main/res/layout/dialog_normal.xml

@@ -55,9 +55,9 @@
                     android:layout_width="@dimen/dp_70"
                     android:layout_height="@dimen/dp_22"
                     android:layout_marginRight="@dimen/dp_10"
-                    android:background="?attr/shape_btn_login"
+                    android:background="@drawable/shape_et_login"
                     android:text="@string/confirm"
-                    android:textColor="@color/c_white"
+                    android:textColor="@color/colorBg"
                     android:textSize="@dimen/dp_10" />
 
                 <Button

+ 13 - 2
app/src/main/AndroidManifest.xml

@@ -8,6 +8,7 @@
     <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> <!-- 在sdcard中创建/删除文件的权限 -->
 
     <uses-permission android:name="android.permission.WRITE_SETTINGS" />
 
@@ -131,8 +132,7 @@
         <service
             android:name=".RemoteSupportService"
             android:enabled="true"
-            android:exported="true"
-            android:process=":remote">
+            android:exported="true">
             <intent-filter>
                 <action android:name="com.bgy.action.RemoteSupportService" />
             </intent-filter>
@@ -198,5 +198,16 @@
             android:process=":pushservice"
             android:taskAffinity="com.igexin.sdk.PushActivityTask"
             android:theme="@android:style/Theme.Translucent.NoTitleBar" />
+
+        <!-- android 7.0临时赋予访问权限 -->
+        <provider
+            android:name="android.support.v4.content.FileProvider"
+            android:authorities=".fileProvider"
+            android:exported="false"
+            android:grantUriPermissions="true">
+            <meta-data
+                android:name="android.support.FILE_PROVIDER_PATHS"
+                android:resource="@xml/filepaths" />
+        </provider>
     </application>
 </manifest>

+ 19 - 19
app/src/main/java/com/bgy/autosale/App.java

@@ -26,12 +26,15 @@ import com.example.spunsugar.system.model.bean.PriceBean;
 import com.example.spunsugar.user.model.bean.GoodsBean;
 import com.hboxs.base_library.base.BaseApplication;
 import com.hboxs.base_library.base.ModuleInitializer;
+import com.hboxs.base_library.constant.Global;
 import com.hboxs.base_library.constant.Heartbeat;
 import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.constant.ProductAbout;
 import com.hboxs.base_library.util.FileUtil;
 import com.orhanobut.hawk.Hawk;
 
+import org.greenrobot.eventbus.EventBus;
+
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -78,7 +81,7 @@ public class App extends BaseApplication {
     public void onCreate() {
         super.onCreate();
         app = this;
-
+        Hawk.init(this).build();
         //初始化工具库
         boolean isMainProcess = getApplicationContext().getPackageName().equals
                 (getCurrentProcessName());
@@ -95,7 +98,6 @@ public class App extends BaseApplication {
                 throw new RuntimeException(e);
             }
         }
-        Hawk.init(this).build();
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -231,22 +233,20 @@ public class App extends BaseApplication {
     //初始化商品数据
     private void initGoodsBean() {
         boolean contains = Hawk.contains("PRICEBEAN");
-        //如果不存在 创建默认的
-        if (!contains) {
-            ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>();
-            for (int i = 0; i < PriceFragment.ProductAbout.chineseName.length; i++) {
-                PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
-                priceBean.setChineseName(PriceFragment.ProductAbout.chineseName[i]);
-                priceBean.setPriceKey(PriceFragment.ProductAbout.priceKey[i]);
-                priceBean.setPriceHint(PriceFragment.ProductAbout.priceHint[i]);
-                priceBeans.add(priceBean);
-                Log.d(TAG, "PRICEBEANinitGoodsBean: "
-                        + "chinesename:" + PriceFragment.ProductAbout.chineseName[i]
-                        + "priceKey:" + PriceFragment.ProductAbout.priceKey[i]
-                        + "priceHint:" + PriceFragment.ProductAbout.priceHint[i]);
-            }
-            Hawk.put("PRICEBEAN", priceBeans);
-            Log.d(TAG, "initGoodsBean: " + priceBeans);
-        }
+//        //如果不存在 创建默认的
+//        if (!contains) {
+//            ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>();
+//            for (int i = 0; i < PriceFragment.ProductAbout.chineseName.length; i++) {
+//                PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
+//                priceBean.setChineseName(PriceFragment.ProductAbout.chineseName[i]);
+//                priceBean.setNameKey(PriceFragment.ProductAbout.nameKey[i]);
+//                priceBean.setPriceKey(PriceFragment.ProductAbout.priceKey[i]);
+//                priceBean.setDefaultName(getString(PriceFragment.ProductAbout.defaultName[i]));
+//                priceBean.setPriceDefault(PriceFragment.ProductAbout.priceDefault[i]);
+//                priceBeans.add(priceBean);
+//                Log.d(TAG, "initGoodsBean: " + priceBeans.get(i).toString());
+//            }
+//            Hawk.put("PRICEBEAN", priceBeans);
+//        }
     }
 }

+ 2 - 0
app/src/main/java/com/bgy/autosale/Constant.java

@@ -31,6 +31,8 @@ public class Constant {
     public static final int PAY_NAYAX_MODEL_IDLE = 5;
     public static final int PAY_NAYAX_PAY = 6;
     public static final int PAY_NAYAX_PAY_MIX = 7;
+    public static final int PAY_POS_DEVICE_PAY_MIX = 8;
+    public static final int PAY_ONLINE_AND_PRICE_MODEL = 9;
 
     public static String versionName = "V1.0.0";
 

+ 42 - 3
app/src/main/java/com/bgy/autosale/RemoteSupportService.java

@@ -24,6 +24,7 @@ import com.bgy.autosale.payutil.MQService;
 import com.bgy.autosale.payutil.PaymentMessage;
 import com.bgy.autosale.utils.ShellUtils;
 import com.example.FaPiaoUtils;
+import com.example.offpay.event.OfflineMessageEvent;
 import com.example.offpay.wmdb.WeaverUtil;
 import com.example.spunsugar.http.bean.GetAdBean;
 import com.google.gson.Gson;
@@ -92,6 +93,7 @@ public class RemoteSupportService extends Service {
     @Override
     public void onCreate() {
         super.onCreate();
+        getDefault().register(this);
         new Thread(new Runnable() {
             @Override
             public void run() {
@@ -160,9 +162,11 @@ public class RemoteSupportService extends Service {
                 break;
         }
     }
-    @Subscribe(threadMode = ThreadMode.MAIN)
 
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
     public void event(ApiMessageEvent messageEvent) {
+        Log.d(TAG, "Service event: ApiMessageEvent"+messageEvent.getName());
         switch (messageEvent.getName()) {
             case "statusType1":
                 //同步数据
@@ -396,15 +400,16 @@ public class RemoteSupportService extends Service {
                 }, 3000);
                 break;
             case "vendsuccess":
+                Log.d(TAG, "event: CreditCardMessage4");
                 new Handler().postDelayed(new Runnable() {
                     @Override
                     public void run() {
+                        Log.d(TAG, "event: CreditCardMessage5");
                         WeaverUtil.creditCardVendSuccess((String) messageEvent.getData());
-                        Log.d(TAG, "run: vendsuccess");
+                        Log.d(TAG, "event: CreditCardMessage6");
                     }
                 }, 3000);
                 break;
-
             case "humidification":
 //                startHumidification();
 //                if (Integer.parseInt(Heartbeat.cabinetTm) > 110) {
@@ -996,4 +1001,38 @@ public class RemoteSupportService extends Service {
                     }
                 });
     }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(OfflineMessageEvent messageEvent) {
+        switch (messageEvent.getName()) {
+            case Name.REMOTEVEND://mdb远程做糖
+                break;
+            case "sessioncomplete":
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        WeaverUtil.creditCardSessionComplete();
+                    }
+                }, Hawk.get(Name.SESSION_SUBMISSION_TIME, 5000));
+                break;
+            case "sessioncomplete500ms":
+                Log.d(TAG, "event: sessioncomplete500ms");
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        WeaverUtil.creditCardSessionComplete();
+                        getDefault().post(new OfflineMessageEvent(Name.ENDSESSION, null));
+
+                    }
+                }, 200);
+                break;
+        }
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        getDefault().unregister(this);
+        Log.d(TAG, "RemoteSupportServiceonDestroy: ");
+    }
 }

+ 15 - 0
app/src/main/java/com/bgy/autosale/entitys/DishesBean.java

@@ -80,4 +80,19 @@ public class DishesBean implements Serializable {
         this.specCategoryBeans = specCategoryBeans;
     }
 
+    @Override
+    public String toString() {
+        return "DishesBean{" +
+                "flavorStock=" + flavorStock +
+                ", id='" + id + '\'' +
+                ", name='" + name + '\'' +
+                ", price='" + price + '\'' +
+                ", cupStock=" + cupStock +
+                ", buyCount=" + buyCount +
+                ", extra=" + extra +
+                ", specCategoryBeans=" + specCategoryBeans +
+                ", selectTag='" + selectTag + '\'' +
+                ", selectSpecBeans=" + selectSpecBeans +
+                '}';
+    }
 }

+ 16 - 0
app/src/main/java/com/bgy/autosale/entitys/SpecBean.java

@@ -1,6 +1,7 @@
 package com.bgy.autosale.entitys;
 
 import java.io.Serializable;
+import java.util.Arrays;
 
 /**
  * 做法
@@ -62,4 +63,19 @@ public class SpecBean implements Serializable {
         this.name = name;
         this.price = price;
     }
+
+    @Override
+    public String toString() {
+        return "SpecBean{" +
+                "id='" + id + '\'' +
+                ", categoryCode='" + categoryCode + '\'' +
+                ", code=" + code +
+                ", image=" + image +
+                ", effectImage=" + Arrays.toString(effectImage) +
+                ", name='" + name + '\'' +
+                ", price='" + price + '\'' +
+                ", stock=" + stock +
+                ", extra=" + extra +
+                '}';
+    }
 }

+ 6 - 1
app/src/main/java/com/bgy/autosale/helpers/OrderHelper.java

@@ -10,6 +10,9 @@ import com.bgy.autosale.entitys.MakeIceCreamBean;
 import com.bgy.autosale.entitys.ResponseBean;
 import com.bgy.autosale.entitys.SpecBean;
 import com.bgy.autosale.entitys.SpecCategoryBean;
+import com.bgy.autosale.ui.operator.fragments.PriceFragment;
+import com.bgy.autosale.utils.SPUtils;
+import com.orhanobut.hawk.Hawk;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -290,7 +293,9 @@ public class OrderHelper {
         if (stringBuilder.length() == 0) {
             return dishesBean.name;
         }
-        return stringBuilder.toString() + App.app.getString(R.string.ice_cream);
+        ArrayList<PriceFragment.PriceBean> list= Hawk.get("PRICEBEAN");
+//        return stringBuilder.toString()/* + App.app.getString(R.string.ice_cream)*/;
+        return stringBuilder.toString()+ SPUtils.getInstance(App.app).getString(list.get(0).getNameKey(), App.app.getString(PriceFragment.ProductAbout.defaultName[0]));
     }
 
     /////////////////////////////////////////

+ 17 - 0
app/src/main/java/com/bgy/autosale/payutil/CustomDecimalFormat.java

@@ -0,0 +1,17 @@
+package com.bgy.autosale.payutil;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+
+public class CustomDecimalFormat {
+    private static DecimalFormat decimalFormat;
+
+    public static DecimalFormat getDecimalFormat() {
+        if (decimalFormat == null) {
+            DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+            symbols.setDecimalSeparator('.');
+            decimalFormat = new DecimalFormat("###################.###########", symbols);
+        }
+        return decimalFormat;
+    }
+}

+ 1 - 0
app/src/main/java/com/bgy/autosale/payutil/DownPresenter.java

@@ -251,6 +251,7 @@ public class DownPresenter {
                     break;
                 //下载失败
                 case DownloadManager.STATUS_FAILED:
+                    stopQuery();
                     Log.d(TAG, "queryState: 下载失败");
                     break;
             }

+ 189 - 19
app/src/main/java/com/bgy/autosale/payutil/MQService.java

@@ -7,6 +7,7 @@ import android.content.Intent;
 import android.content.IntentFilter;
 import android.media.AudioManager;
 import android.net.ConnectivityManager;
+import android.net.Network;
 import android.net.NetworkInfo;
 import android.net.wifi.WifiManager;
 import android.os.Bundle;
@@ -18,11 +19,14 @@ import android.util.Log;
 
 
 import com.alibaba.android.arouter.facade.annotation.Route;
+import com.bgy.autosale.App;
 import com.bgy.autosale.R;
 import com.bgy.autosale.RemoteSupportService;
 import com.bgy.autosale.ui.MainActivity;
 import com.bgy.autosale.ui.consumer.MainFragment;
 import com.bgy.autosale.ui.operator.fragments.PriceFragment;
+import com.bgy.autosale.utils.SPUtils;
+import com.example.offpay.ictrs232.ByteUtils;
 import com.example.offpay.ictrs232.SerialPortUtil;
 import com.example.offpay.wmdb.WeaverUtil;
 import com.example.spunsugar.http.bean.GetAdBean;
@@ -108,13 +112,13 @@ public class MQService extends Service {
     final Handler handler = new Handler() {
         @Override
         public void handleMessage(Message msg) {
-            Log.d(TAG, "handleMessage: "+msg);
+            Log.d(TAG, "handleMessage: " + msg);
             getMessage(msg);
         }
     };
     public int pushNumber = 0;
 
-    private List<PriceBean> priceBeans; //保存价格
+    private List<PriceFragment.PriceBean> priceBeans; //保存价格
     private File file = new File(FileUtil.FILEPATH + FileUtil.getFileName());
     private File fileMkdirs = new File(FileUtil.FILEPATH);
     private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -134,7 +138,7 @@ public class MQService extends Service {
         Log.d(TAG, baseBean.getKind() + ":BJQXUserlogin getMessage: " + message + baseBean);
         String kind = baseBean.getKind();
 //        if (TextUtils.isEmpty(Heartbeat.managerId)) return;
-        Log.d(TAG, "MQ getMessage: "+kind);
+        Log.d(TAG, "MQ getMessage: " + kind);
         switch (kind) {
             //显示花型
             case "updateProductsShow":
@@ -142,7 +146,7 @@ public class MQService extends Service {
                 break;
             case "products":
                 //保存价格到本地
-//                savePriceData(gson, baseBean, kind);
+                savePriceData(gson, baseBean, kind);
                 break;
             case "guestPwd":
 //                savePas(gson, baseBean, Name.GUEST);
@@ -208,7 +212,7 @@ public class MQService extends Service {
             case "log":
 //                LogUtil.d(TAG, "logdata" + baseBean.getKind_data());
 //                远程上传日志文件
-//                uploadLogApi(baseBean.getKind_data());
+                uploadLogApi(baseBean.getKind_data());
                 break;
             case "onoffstatus":
 //                Log.d(TAG, "onReceiveMessageData: onoffstatusonoffstatus");
@@ -278,7 +282,7 @@ public class MQService extends Service {
 //                updateLogo(gson, baseBean, kind);
                 break;
             case "updateProductsPrice"://更新价格
-                getProductPrice();
+//                getProductPrice();
                 break;
             case "humidityParameters"://区间参数
 //                humidityParameters(baseBean.getKind_data());
@@ -349,28 +353,33 @@ public class MQService extends Service {
                                 } else {
                                     productName = productsBean.getProductName();
                                 }
-                                    Log.d(TAG, ":1getproducts onNext: " + productName + ":" + productsBean.getRmbPrice());
-                                for (PriceFragment.PriceBean priceBean:priceBeans){
-                                    if (priceBean.getChineseName().equals(productName)){
+                                Log.d(TAG, ":1getproducts onNext: " + productName + ":" + productsBean.getRmbPrice());
+                                for (PriceFragment.PriceBean priceBean : priceBeans) {
+                                    Log.d(TAG, "getproducts1 onNext: " + priceBean.getChineseName());
+                                    if (priceBean.getChineseName().equals(productName)) {
                                         priceBean.setPriceKey(String.valueOf(productsBean.getRmbPrice()));
-                                        Log.d(TAG, "PriceFragment.PriceBean onNext: "+priceBean.getChineseName()+":"+String.valueOf(productsBean.getRmbPrice()));
+                                        Log.d(TAG, "PriceFragment.PriceBean onNext: " + priceBean.getNameKey() + ":" + String.valueOf(productsBean.getRmbPrice()));
                                     }
                                 }
                             }
                             Hawk.put("PRICEBEAN", priceBeans);
-                            Log.d(TAG, "onNextPRICEBEAN: "+priceBeans);
-                            EventBus.getDefault().post(new ApiMessageEvent("updateUI",1));
+                            Log.d(TAG, "onNextPRICEBEAN111: " + priceBeans);
+                            for (int i = 0; i < priceBeans.size(); i++) {
+                                SPUtils.getInstance(App.app).putString((PriceFragment.ProductAbout.priceKey[i]), priceBeans.get(i).getPriceKey());
+                            }
+                            EventBus.getDefault().post(new ApiMessageEvent("updateUI", 1));
                         }
                     }
 
                     @Override
                     public void onError(Throwable t) {
                         super.onError(t);
-                        Log.d(TAG, "getProductPrice onError: "+t.getMessage());
+                        Log.d(TAG, "getProductPrice onError: " + t.getMessage());
                         BaseException exception = ExceptionFactory.create(t);
                     }
                 });
     }
+
     private void pay(Gson gson, BaseBean baseBean, String kind) {
         //支付成功
         String json = baseBean.getKind_data();
@@ -711,6 +720,7 @@ public class MQService extends Service {
     public void onDestroy() {
         super.onDestroy();
         unregisterReceiver(mNetWorkBroadCastReciver);
+        Log.d(TAG, "MQ onDestroy: ");
     }
 
     /**
@@ -815,7 +825,7 @@ public class MQService extends Service {
                 if (addTime > 0) {
                     return;
                 } else {
-                    Log.d(TAG, "mq,没有创建过队列,没有开启过线程,现在开始创建和开启"+Heartbeat.deviceId);
+                    Log.d(TAG, "mq,没有创建过队列,没有开启过线程,现在开始创建和开启" + Heartbeat.deviceId);
                     getAddQueue();  //创建mq
                     getChannel();   //修改通道
                 }
@@ -839,14 +849,16 @@ public class MQService extends Service {
             isNetConnected(context);
             Log.d(TAG, "NetWorkBroadCastReciver: ");
         }
-
     }
 
     public boolean isNetConnected(Context context) {
         ConnectivityManager connectivity = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        Log.d(TAG, "isNetConnected0: ");
         if (connectivity != null) {
+            Log.d(TAG, "isNetConnected1: ");
             NetworkInfo info = connectivity.getActiveNetworkInfo();
             if (info != null) {
+                Log.d(TAG, "isNetConnected2: ");
                 if (info.getType() == networkState) {
                     return false;
                 }
@@ -865,6 +877,14 @@ public class MQService extends Service {
                     }
                     LogUtil.d("type1RemoteSupportService", "TYPE_MOBILE: ");
                     return true;
+                } else if (info.getType() == (ConnectivityManager.TYPE_ETHERNET)) {
+                    Log.d(TAG, "isNetConnected3: ");
+                    if (!connect) {
+                        Log.d(TAG, "isNetConnected4: ");
+                        LogUtil.d("type1RemoteSupportService", "TYPE_ETHERNET: ");
+                        basicConsume(7);
+                    }
+                    return true;
                 }
             }
         }
@@ -886,15 +906,17 @@ public class MQService extends Service {
                             int connectState = (int) SharedPreferencesUtils.getParam(Name.CONNECT_STATE, 999);
                             if (connectState == 999) {
                                 queueName = Heartbeat.deviceId;
+                                LogUtils.logWrite("测试MQ1是不是为空" + Heartbeat.deviceId);
                             } else {
                                 queueName = FileUtil.getDeviceId1();
+                                LogUtils.logWrite("测试MQ2是不是为空" + FileUtil.getDeviceId1());
                             }
                             try {
                                 //连接
                                 Connection connection = factory.newConnection();
                                 //通道
                                 final Channel channel = connection.createChannel();
-                                Log.d(TAG, "mqrun: 4"+queueName);
+                                Log.d(TAG, "mqrun: 4" + queueName);
                                 //实现Consumer的最简单方法是将便捷类DefaultConsumer子类化。可以在basicConsume 调用上传递此子类的对象以设置订阅:
                                 channel.basicConsume(queueName, false, new DefaultConsumer(channel) {
                                     @Override
@@ -904,6 +926,8 @@ public class MQService extends Service {
                                         String msg = new String(body, "utf-8");
                                         Log.d(TAG, "msg->" + msg);
                                         long deliveryTag = envelope.getDeliveryTag();
+
+
                                         Log.d(TAG, "deliveryTag->" + deliveryTag);
                                         channel.basicAck(deliveryTag, false);
 //                    从message池中获取msg对象更高效
@@ -920,7 +944,23 @@ public class MQService extends Service {
                             } catch (Exception e) {
                                 networkState = 100;
                                 e.printStackTrace();
-                                LogUtils.logWrite("mq连接失败");
+                                LogUtils.logWrite("mq连接失败" + netConnectedNumber + "次");
+                                new Thread(new Runnable() {
+                                    @Override
+                                    public void run() {
+                                        while (netConnectedNumber < 10) { // 当重连次数小于10时执行循环
+                                            try {
+                                                Log.d(TAG, "isNetConnected7: "+netConnectedNumber);
+                                                Thread.sleep(10000); // 等待10秒后再次执行
+                                                isNetConnected(getApplicationContext());
+                                                netConnectedNumber++; // 增加重连次数
+                                                Log.d(TAG, "isNetConnected8: ");
+                                            } catch (InterruptedException e) {
+                                                e.printStackTrace();
+                                            }
+                                        }
+                                    }
+                                }).start();
                                 Log.d(TAG, "mqrun basicConsume: IOException");
                                 Log.d(TAG, "mqrun basicConsume: IOException" + e.getMessage());
                             }
@@ -931,6 +971,8 @@ public class MQService extends Service {
         }).start();
     }
 
+    private  int netConnectedNumber = 0;
+
     //获取mq中的相关信息
     private void getAddQueue() {
         addTime = 1;
@@ -941,7 +983,7 @@ public class MQService extends Service {
         params.put("queue", Heartbeat.deviceId);  //队列的名称,机器的设备编码
         params.put("routingKey", Heartbeat.deviceId);  //队列的key,机器的设备编码
         params.put("durable", true);  //队列的key,机器的设备编码
-        Log.d(TAG,  Heartbeat.deviceId+": mq getAddQueue: " + machineType);
+        Log.d(TAG, Heartbeat.deviceId + ": mq getAddQueue: " + machineType);
         addSubscriptionNew(NoPayOrderStringApi.api.addQueue(params), String.class,
                 new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
                     @Override
@@ -953,7 +995,7 @@ public class MQService extends Service {
                     @Override
                     public void onError(Throwable t) {
                         super.onError(t);
-                        Log.d(TAG, "getAddQueue发送失败onError: "+t.getMessage());
+                        Log.d(TAG, "getAddQueue发送失败onError: " + t.getMessage());
                     }
                 });
     }
@@ -981,6 +1023,134 @@ public class MQService extends Service {
                 });
     }
 
+    /**
+     * 远程上传日志文件
+     *
+     * @param kindData
+     */
+    public void uploadLogApi(String kindData) {
+        new Thread(new Runnable() {
+            @Override
+            public void run() {
+                File file = new File("/storage/emulated/0/logdata/" + kindData + ".txt");
+                LogUtil.d(TAG, "uploadLogApi: " + kindData);
+                if (file.exists()) {
+                    if (file.isFile()) {
+                        DataInputStream in = null;
+                        OutputStream out = null;
+                        HttpURLConnection conn = null;
+                        InputStream ins = null;
+                        ByteArrayOutputStream outStream = null;
+                        try {
+                            URL url = new URL(BaseConstant.ONLINE_BASE_URL + "/api/app_equipment/index/sendLog.htm?fileName=" + kindData);
+
+                            conn = (HttpURLConnection) url.openConnection();
+                            // 发送POST请求必须设置如下两行
+                            conn.setDoOutput(true);
+                            conn.setUseCaches(false);
+                            conn.setRequestMethod("POST");
+                            conn.setRequestProperty("Content-Type", "text/html");
+                            conn.setRequestProperty("Cache-Control", "no-cache");
+                            conn.setRequestProperty("Charsert", "UTF-8");
+                            conn.connect();
+                            conn.setConnectTimeout(10000);
+                            out = conn.getOutputStream();
+//            sb.append("Content-Disposition: form-data;  fileName=\""
+//                    + file.getName() + "\"" + LINE_END);
+//            sb.append("Content-Type: text/plain;");
+//            sb.append(LINE_END);
+//            out.write(sb.toString().getBytes());
+                            in = new DataInputStream(new FileInputStream(file));
+
+                            int bytes = 0;
+                            byte[] buffer = new byte[1024];
+                            while ((bytes = in.read(buffer)) != -1) {
+                                out.write(buffer, 0, bytes);
+                            }
+
+                            out.flush();
+
+                            // 返回流
+                            if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
+                                ins = conn.getInputStream();
+                                outStream = new ByteArrayOutputStream();
+                                byte[] data = new byte[1024];
+                                int count = -1;
+                                while ((count = ins.read(data, 0, 1024)) != -1) {
+                                    outStream.write(data, 0, count);
+                                    LogUtil.d(TAG, "uploadLogApi: " + new String(data));
+                                }
+
+                            } else {
+                                LogUtil.d(TAG, "uploadLogApi: " + conn.getResponseCode());
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
+                            Log.d(TAG, "uploadLogApi: " + e.toString());
+                            Log.d(TAG, "uploadLogApi: " + e.getLocalizedMessage());
+                        } finally {
+                            if (in != null) {
+                                try {
+                                    in.close();
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                            if (out != null) {
+                                try {
+                                    out.close();
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                            if (ins != null) {
+                                try {
+                                    ins.close();
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                            if (outStream != null) {
+                                try {
+                                    outStream.close();
+                                } catch (IOException e) {
+                                    e.printStackTrace();
+                                }
+                            }
+                            if (conn != null) {
+                                conn.disconnect();
+                            }
+                        }
+                    }
+                }
+            }
+        }).start();
+    }
+
+    private void savePriceData(Gson gson, BaseBean baseBean, String kind) {
+        if (kind.equals("products")) {
+            priceBeans = new ArrayList<>();
+            String kind_data = baseBean.getKind_data();
+            Log.d(TAG, "savePriceData: " + kind_data);
+            ArrayList<ProductBean> list = gson.fromJson(kind_data, new TypeToken<List<ProductBean>>() {
+            }.getType());
+            for (int i = 0; i < list.size(); i++) {
+                ProductBean productBean = list.get(i);
+                PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
+                priceBean.setPriceDefault(String.valueOf(productBean.getRmbPrice()));
+                priceBean.setChineseName(PriceFragment.ProductAbout.chineseName[i]);
+                priceBean.setDefaultName(getString(PriceFragment.ProductAbout.defaultName[i]));
+                priceBeans.add(priceBean);
+                Log.d(TAG, "savePriceData: " + priceBean);
+
+            }
+            //保存价格到本地
+            Hawk.put("PRICEBEAN", priceBeans);
+            //通知刷新界面
+            EventBus.getDefault().post(new ApiMessageEvent(kind, null));
+        }
+    }
+
     private CompositeDisposable mDisposables;
     private IView view;
 

+ 34 - 8
app/src/main/java/com/bgy/autosale/payutil/MdbCreditCardDialog.java

@@ -23,12 +23,21 @@ import com.bgy.autosale.helpers.OrderHelper;
 import com.bgy.autosale.ui.consumer.PaySuccessFragment;
 import com.bgy.autosale.ui.widget.InfoView;
 import com.example.offpay.event.WmdbIctMessageEvent;
+import com.example.offpay.nayax.CreditCardMessage;
 import com.example.offpay.wmdb.WeaverUtil;
+import com.hboxs.base_library.callback.DialogClickListener;
 import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.ToastUtil;
+import com.hboxs.base_library.util.UiUtil;
 
 import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
 import java.util.LinkedList;
+import java.util.Timer;
+import java.util.TimerTask;
 
 public class MdbCreditCardDialog extends FrameLayout implements View.OnClickListener {
     private static final String TAG = "MdbCreditCardDialog";
@@ -37,6 +46,13 @@ public class MdbCreditCardDialog extends FrameLayout implements View.OnClickList
     private static int time = 90;
     private View view;
     private boolean canTouchOutsideDismiss = true;
+    private DialogClickListener listener;
+    public DialogClickListener getListener() {
+        return listener;
+    }
+    public void setListener(DialogClickListener listener) {
+        this.listener = listener;
+    }
 
     public MdbCreditCardDialog(Context context) {
         super(context);
@@ -78,15 +94,10 @@ public class MdbCreditCardDialog extends FrameLayout implements View.OnClickList
     @Override
     public void onClick(View v) {
         int id = v.getId();
+
         if (id == R.id.btn_cancel) {
-            WeaverUtil.creditCardVendCancel();
-            dismiss();
-        }
-//        if (id==R.id.iv_qr_code){
-//            EventBus.getDefault().post(new WmdbIctMessageEvent(Name.WMDB, "10 05".trim()));
-//            dismiss();
-//        }
-        else if (canTouchOutsideDismiss) {
+            listener.onClickListener(R.id.btn_cancel);
+        }else if (canTouchOutsideDismiss) {
             dismiss();
         }
     }
@@ -104,5 +115,20 @@ public class MdbCreditCardDialog extends FrameLayout implements View.OnClickList
         return this;
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(CreditCardMessage messageEvent) {
+        switch (messageEvent.getType()) {
+            case success:
+                listener.onClickListener(130);
+                break;
+            case failure:
+                listener.onClickListener(131);
+                break;
+            case invalid:
+                ToastUtil.showToast(UiUtil.getStringRes(R.string.credit_card_again));
+                dismiss();
+                break;
+        }
 
+    }
 }

+ 12 - 0
app/src/main/java/com/bgy/autosale/payutil/OrderPriceBean.java

@@ -36,4 +36,16 @@ public class OrderPriceBean implements Serializable {
         this.sellStatus = sellStatus;
         this.showType = showType;
     }
+
+    @Override
+    public String toString() {
+        return "OrderPriceBean{" +
+                "clientId='" + clientId + '\'' +
+                ", codePrice='" + codePrice + '\'' +
+                ", productName='" + productName + '\'' +
+                ", rmbPrice='" + rmbPrice + '\'' +
+                ", sellStatus=" + sellStatus +
+                ", showType='" + showType + '\'' +
+                '}';
+    }
 }

+ 5 - 5
app/src/main/java/com/bgy/autosale/payutil/PayMixDialog.java

@@ -43,6 +43,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.lang.ref.WeakReference;
 import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Timer;
@@ -350,10 +351,9 @@ public class PayMixDialog extends BaseDialogNoDatabinding implements View.OnClic
         return false;
     }
     private DecimalFormat showFloatFormat = new DecimalFormat("0.00");
-
     public void setNameAndPrice(String name, String price) {
         this.price=price;
-        tvNum.setText(showFloatFormat.format(Double.valueOf(price)));
+        tvNum.setText(CustomDecimalFormat.getDecimalFormat().format(Double.valueOf(price)));
     }
         /**
          * 设置价格和名字
@@ -375,13 +375,13 @@ public class PayMixDialog extends BaseDialogNoDatabinding implements View.OnClic
                 tvName.setText(UiUtil.getResId(goodsBeans.get(position).getNameId(), R.string.class));
             }
         }
-        tvPrice.setText(showFloatFormat.format(Double.valueOf(totalPrice)));
-        tvNum.setText(showFloatFormat.format(Double.valueOf(noPay)));
+        tvPrice.setText(CustomDecimalFormat.getDecimalFormat().format(Double.valueOf(totalPrice)));
+        tvNum.setText(CustomDecimalFormat.getDecimalFormat().format(Double.valueOf(noPay)));
 //        setPicture(goodsBeans.get(position));
 
         String coinType = Hawk.get(Name.UNIT_OF_CURRENCY_TIME, "");
         if (!"".equals(coinType)) {
-            tvPrice.setText(coinType + showFloatFormat.format(Double.valueOf(totalPrice)));
+            tvPrice.setText(coinType + CustomDecimalFormat.getDecimalFormat().format(Double.valueOf(totalPrice)));
             tvFuhao.setVisibility(View.GONE);
             tvMei.setText(coinType);
         }

+ 53 - 0
app/src/main/java/com/bgy/autosale/payutil/ProductBean.java

@@ -0,0 +1,53 @@
+package com.bgy.autosale.payutil;
+
+/**
+ * @author whw
+ * @time 2019/4/11
+ * @Description 推送过来的商品价格
+ */
+public class ProductBean {
+
+
+    /**
+     * codePrice : 1
+     * id : 1
+     * rmbPrice : 0.05
+     */
+
+    private int codePrice;
+    private int id;
+    private double rmbPrice;
+
+    public int getCodePrice() {
+        return codePrice;
+    }
+
+    public void setCodePrice(int codePrice) {
+        this.codePrice = codePrice;
+    }
+
+    public int getId() {
+        return id;
+    }
+
+    public void setId(int id) {
+        this.id = id;
+    }
+
+    public double getRmbPrice() {
+        return rmbPrice;
+    }
+
+    public void setRmbPrice(double rmbPrice) {
+        this.rmbPrice = rmbPrice;
+    }
+
+    @Override
+    public String toString() {
+        return "ProductBean{" +
+                "codePrice=" + codePrice +
+                ", id=" + id +
+                ", rmbPrice=" + rmbPrice +
+                '}';
+    }
+}

+ 2 - 2
app/src/main/java/com/bgy/autosale/payutil/ScanDialog.java

@@ -183,7 +183,7 @@ public class ScanDialog extends BaseDialogNoDatabinding implements View.OnClickL
     @Override
     public void dismiss() {
         super.dismiss();
-        LogUtils.logWrite("支付取消了");
+        LogUtils.logWrite("二维码弹窗关闭");
         stopTimeDown();
         EventBus.getDefault().unregister(this);
         // stopTimeDown();
@@ -428,7 +428,7 @@ public class ScanDialog extends BaseDialogNoDatabinding implements View.OnClickL
     public void stopTimeDown() {
         mHandler.removeCallbacksAndMessages(null);
         TimerUtil.stopTimerAndTimerTask(countDownTimer, timerTask);
-        time = 60;
+        time = 90;
     }
 
     @Override

+ 22 - 1
app/src/main/java/com/bgy/autosale/payutil/dialog/ShoppingTrolleyDialogChoosePay.java

@@ -10,6 +10,8 @@ import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.widget.FrameLayout;
 
+import com.bgy.autosale.App;
+import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
 import com.hboxs.base_library.callback.DialogClickListener;
 
@@ -35,7 +37,16 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
         setOnClickListener(this);
         view.setOnClickListener(this);
         view.findViewById(R.id.iv_qianbi).setOnClickListener(this);
-        view.findViewById(R.id.iv_nayax).setOnClickListener(this);
+        if (App.app.payChannel == Constant.PAY_POS_DEVICE_PAY_MIX){
+            view.findViewById(R.id.iv_w_mdb_xinyongka).setOnClickListener(this);
+            view.findViewById(R.id.iv_w_mdb_xinyongka).setVisibility(VISIBLE);
+        }else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX){
+            view.findViewById(R.id.iv_nayax).setOnClickListener(this);
+            view.findViewById(R.id.iv_nayax).setVisibility(VISIBLE);
+        } else if (App.app.payChannel == Constant.PAY_ONLINE_AND_PRICE_MODEL) {
+            view.findViewById(R.id.iv_qr_code).setOnClickListener(this);
+            view.findViewById(R.id.iv_qr_code).setVisibility(VISIBLE);
+        }
         view.findViewById(R.id.iv_close).setOnClickListener(this);
         LayoutParams layoutParams = new LayoutParams(getResources().getDimensionPixelOffset(R.dimen.dp_269), ViewGroup.LayoutParams.WRAP_CONTENT);
         layoutParams.gravity = Gravity.CENTER;
@@ -66,6 +77,16 @@ public class ShoppingTrolleyDialogChoosePay extends FrameLayout implements View.
                     listener.onClickListener(R.id.iv_nayax);
                 }
                 break;
+            case R.id.iv_w_mdb_xinyongka:
+                if (listener != null) {
+                    listener.onClickListener(R.id.iv_w_mdb_xinyongka);
+                }
+                break;
+            case R.id.iv_qr_code:
+                if (listener != null) {
+                    listener.onClickListener(R.id.iv_qr_code);
+                }
+                break;
             case R.id.iv_close:
                 if (listener != null) {
                     listener.onClickListener(125);

+ 16 - 10
app/src/main/java/com/bgy/autosale/ui/MainActivity.java

@@ -36,6 +36,7 @@ import com.bgy.autosale.utils.ReadCacheInfoUtils;
 import com.bgy.autosale.utils.SPUtils;
 import com.example.FaPiaoUtils;
 import com.example.offpay.nayax.CreditCardPresenter;
+import com.hboxs.base_library.constant.Global;
 import com.hboxs.base_library.constant.Heartbeat;
 import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.event.ApiMessageEvent;
@@ -82,7 +83,7 @@ public class MainActivity extends BaseScanGunActivity {
 
         App.app.language = SPUtils.getInstance(App.app).getString(Constant.APP_LANGUAGE, Constant.LANGUAGE_ZH);
         Heartbeat.deviceId = FileUtil.getDeviceId().trim();
-        Log.d("openService", "run: "+Heartbeat.deviceId+":"+FileUtil.getDeviceId());
+        Log.d("openService", "run: " + Heartbeat.deviceId + ":" + FileUtil.getDeviceId());
 
         String[] language = App.app.language.split("-");
         Locale locale = new Locale(language[0], language.length > 1 ? language[1] : "");
@@ -90,10 +91,15 @@ public class MainActivity extends BaseScanGunActivity {
         GeTuiUtil geTuiUtil = new GeTuiUtil(this);
         geTuiUtil.geTui();
         App.app.forceLocale(locale, this);
-
-        App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_FREE);
-        App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_OFFLINE);
-        App.app.currencySymbol = getString(R.string.price_unit);
+        if (Global.isVersions == 1) {
+            App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_ONLINE);
+            App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_ONLINE);
+            App.app.currencySymbol = getString(R.string.price_unit);
+        } else {
+            App.app.payChannel = SPUtils.getInstance(App.app).getInt(Constant.PAY_CHANNEL, Constant.PAY_FREE);
+            App.app.runMode = SPUtils.getInstance(App.app).getInt(Constant.RUN_MODE, Constant.RUN_OFFLINE);
+            App.app.currencySymbol = "";
+        }
 
         super.onCreate(savedInstanceState);
         EventBus.getDefault().register(this);
@@ -149,7 +155,7 @@ public class MainActivity extends BaseScanGunActivity {
 
         NetTimeClock.getInstance();
 
-        if (Hawk.get("nayax", true)){
+        if (Hawk.get("nayax", true)) {
             Log.d(TAG, "onCreate: ALWAYS_IDLEaaaa");
             initCreditCardDriver();
             Log.d(TAG, "onCreate: ALWAYS_IDLEbbb");
@@ -160,7 +166,7 @@ public class MainActivity extends BaseScanGunActivity {
     }
 
     public static SerialPortHelper openSerialPortA() {
-        return   FaPiaoUtils.getInstance().getSerialPortHelper();
+        return FaPiaoUtils.getInstance().getSerialPortHelper();
     }
 
     @Override
@@ -211,6 +217,7 @@ public class MainActivity extends BaseScanGunActivity {
         super.onPause();
         isVisible = false;
     }
+
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void event(ApiMessageEvent messageEvent) {
         // 进行刷新操作
@@ -223,6 +230,7 @@ public class MainActivity extends BaseScanGunActivity {
         }
 
     }
+
     @Override
     protected void onDestroy() {
         super.onDestroy();
@@ -252,7 +260,6 @@ public class MainActivity extends BaseScanGunActivity {
 
         String path = CacheFileUtil.getInstance().getFilePath();
         PlcLog.getInstance().initLogFile(this, "", new File(path).getParent());
-
         String sn = ReadCacheInfoUtils.getInstance().getSN();
         if (sn == null || TextUtils.isEmpty(sn)) {
             SnSettingActivity.startActivity(this, false);
@@ -305,7 +312,6 @@ public class MainActivity extends BaseScanGunActivity {
     }
 
 
-
     // 下载广告、资源文件
     private void downloadResources() {
         new ResourceDownloadHelper(new ResourceDownloadHelper.ResourceDownloadCallback() {
@@ -349,7 +355,7 @@ public class MainActivity extends BaseScanGunActivity {
         findViewById(R.id.main_fragment).setVisibility(View.VISIBLE);
 
         if (!SPUtils.getInstance(App.app).getBoolean(Constant.LOCK_IN_ERROR, false)) {
-//            App.app.initDeviceStateListener();
+//            App.app.initDeviceStateListener();//是否开机
         }
 
         if (initView != null) {

+ 10 - 3
app/src/main/java/com/bgy/autosale/ui/adapters/ShopCartAdapter.java

@@ -3,6 +3,7 @@ package com.bgy.autosale.ui.adapters;
 import android.content.Context;
 import android.support.annotation.NonNull;
 import android.support.v7.widget.RecyclerView;
+import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
@@ -13,6 +14,7 @@ import android.widget.TextView;
 import com.bgy.autosale.App;
 import com.bgy.autosale.R;
 import com.bgy.autosale.entitys.DishesBean;
+import com.bgy.autosale.payutil.CustomDecimalFormat;
 import com.bgy.autosale.utils.PriceUtil;
 
 import java.text.DecimalFormat;
@@ -25,7 +27,7 @@ import java.util.ArrayList;
 public class ShopCartAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
 
     // 去除末尾的0
-    private DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
+//    private DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
 
     private LayoutInflater inflater;
     private ArrayList<DishesBean> list;
@@ -112,14 +114,19 @@ public class ShopCartAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolde
         }
 
         void bind(DishesBean dishesBean, boolean showAnim,int position) {
-            nameView.setText(dishesBean.selectTag);
+            if (dishesBean.selectTag.length()>4){
+                nameView.setText(dishesBean.selectTag.replace("原味",""));
+            }else {
+                nameView.setText(dishesBean.selectTag);
+            }
+            Log.d("DishesBean", "bind: "+dishesBean.selectTag+dishesBean.selectTag.length());
             String price = App.app.currencySymbol;
             if (manualOrder) {
                 price = price + "0.00";
                 priceView.setText(price);
             } else {
                 double temppric= PriceUtil.getDishPriceWidthBuyCount(dishesBean);
-                price = price + decimalFormat.format(temppric);
+                price = price + CustomDecimalFormat.getDecimalFormat().format(temppric);
                 priceView.setText(price);
 
             }

+ 279 - 72
app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java

@@ -1,9 +1,11 @@
 package com.bgy.autosale.ui.consumer;
 
+import static com.bgy.autosale.ui.operator.fragments.PriceFragment.ProductAbout.defaultName;
 import static org.greenrobot.eventbus.EventBus.getDefault;
 
 import android.animation.AnimatorSet;
 import android.animation.ObjectAnimator;
+import android.app.Dialog;
 import android.os.Bundle;
 import android.os.Handler;
 import android.support.annotation.NonNull;
@@ -23,6 +25,7 @@ import android.util.Log;
 import android.view.View;
 import android.view.ViewGroup;
 import android.view.ViewStub;
+import android.view.WindowManager;
 import android.view.animation.Animation;
 import android.view.animation.AnimationUtils;
 import android.view.animation.OvershootInterpolator;
@@ -44,6 +47,7 @@ import com.bgy.autosale.helpers.StockHelper;
 import com.bgy.autosale.helpers.UISoundHelper;
 import com.bgy.autosale.payutil.CoinPaySuccessDialog;
 import com.bgy.autosale.payutil.CreditCardDialog;
+import com.bgy.autosale.payutil.CustomDecimalFormat;
 import com.bgy.autosale.payutil.ImgOrderBean;
 import com.bgy.autosale.payutil.MdbCreditCardDialog;
 import com.bgy.autosale.payutil.PayMixDialog;
@@ -69,6 +73,7 @@ import com.bumptech.glide.Glide;
 import com.example.offpay.event.OfflineMessageEvent;
 import com.example.offpay.event.WmdbIctMessageEvent;
 import com.example.offpay.ictrs232.ByteUtils;
+import com.example.offpay.ictrs232.DataUtils;
 import com.example.offpay.nayax.CreditCardPresenter;
 import com.example.offpay.wmdb.WeaverUtil;
 import com.google.gson.Gson;
@@ -86,10 +91,14 @@ import com.hboxs.base_library.http.exception.ExceptionFactory;
 import com.hboxs.base_library.http.observer.HttpResultObserver;
 import com.hboxs.base_library.http.response.HttpResultHandler;
 import com.hboxs.base_library.util.DialogUtil;
+import com.hboxs.base_library.util.DrawableSelectorUtils;
+import com.hboxs.base_library.util.FileUtil;
 import com.hboxs.base_library.util.LogUtil;
 import com.hboxs.base_library.util.LogUtils;
 import com.hboxs.base_library.util.UiUtil;
 import com.orhanobut.hawk.Hawk;
+import com.zyao89.view.zloading.ZLoadingDialog;
+import com.zyao89.view.zloading.Z_TYPE;
 
 import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
@@ -98,11 +107,15 @@ import org.greenrobot.eventbus.ThreadMode;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.Timer;
+import java.util.TimerTask;
 import java.util.concurrent.TimeUnit;
 
 import io.reactivex.Observable;
@@ -124,7 +137,7 @@ import top.keepempty.sph.library.SphResultCallback;
 public class IceCreamFragment extends BaseAutoExitFragment implements View.OnClickListener, Animation.AnimationListener {
 
     // 去除末尾的0
-    private DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
+//    private DecimalFormat decimalFormat = new DecimalFormat("###################.###########");
 
     //辅助点击太快的判断
     private ClickHelper mClickHelper = new ClickHelper(300);
@@ -145,7 +158,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private TextView priceView;
     private RecyclerView recyclerView;
     private InfoView dialog;
-
+    private TextView tvDeviceId1;
     //海外新加
 //    private LinearLayout contain_1, contain_2, contain_3, contain_4, contain_5;
     private ImageView logo_hw_iv;
@@ -174,6 +187,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private String freeWithPhone = null;
     private TextView tvMoney;
     private Disposable showDelayDisposable;
+//    private PriceFragment.PriceBean priceBean= Hawk.get("PRICEBEAN");
 
     public static IceCreamFragment getFragment(String manualReason) {
         Bundle bundle = new Bundle();
@@ -200,7 +214,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         if (bundle != null) {
             manualReason = bundle.getString("manualReason");
         }
-        Log.d(TAG, "onViewCreated: 2");
+        Log.d(TAG, "onViewCreated: 2" + StockHelper.getInstance().getDishesBean(manualReason != null));
 
         currentDish = BeanCloneUtil.cloneTo(StockHelper.getInstance().getDishesBean(manualReason != null));
         if (currentDish == null) {
@@ -221,6 +235,10 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         tvMoney = findViewById(R.id.tv_money);
         Log.d(TAG, "onViewCreated: 4");
         tvMoney.setText(haveMoney/* + (Global.hasmoney.doubleValue() + Global.hasmoney.doubleValue())*/);
+        tvDeviceId1 = findViewById(R.id.tv_device_id1);
+        if (Heartbeat.deviceId != null && Heartbeat.deviceId.length() > 6) {
+            tvDeviceId1.setText(Heartbeat.deviceId.substring(Heartbeat.deviceId.length() - 6));
+        }
         Log.d(TAG, "onViewCreated: 5");
 
         stockView = view.findViewById(R.id.dishes_stock);
@@ -323,7 +341,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 });
             }
         }, 1, TimeUnit.SECONDS);
-        if (App.app.payChannel == Constant.PAY_PRICE_MODEL||App.app.payChannel==Constant.PAY_NAYAX_PAY_MIX) {
+        if (App.app.payChannel == Constant.PAY_PRICE_MODEL || App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX||App.app.payChannel==Constant.PAY_ONLINE_AND_PRICE_MODEL) {
             findViewById(R.id.rl_money_show).setVisibility(View.VISIBLE);
         }
     }
@@ -331,6 +349,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     @Override
     public void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        Heartbeat.deviceId = FileUtil.getDeviceId().trim();
         EventBus.getDefault().register(this);
         Log.d(TAG, "MDB_COIN: 0");
         if (Hawk.get("MDB_COIN", false)) {
@@ -339,9 +358,9 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             Log.d(TAG, "MDB_COIN: 2");
             mHandler.postDelayed(mRunnable, 500);
         }
-        if (Hawk.get("nayax", false)){
+        if (Hawk.get("nayax", false)) {
             Log.d(TAG, "onCreate: ALWAYS_IDLE1");
-            if (mCreditCardPresenter==null){
+            if (mCreditCardPresenter == null) {
                 initCreditCardDriver();
             }
         }
@@ -363,7 +382,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
             showToast(UiUtil.getStringRes(R.string.nany_noconnect));
         }
-
     }
 
     private CreditCardPresenter mCreditCardPresenter;
@@ -476,28 +494,45 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         if (id == R.id.dishes_shop_cart_clear) {
             showClearDialog();
         } else if (id == R.id.dishes_shop_cart_pay) {
+            showLoading();
             if (App.app.payChannel == Constant.PAY_FREE || manualReason != null) {
                 manualMake();
+                LogUtils.logWrite("免费制作了");
             } else if (App.app.payChannel == Constant.PAY_ONLINE || manualReason != null) {
+                if (Hawk.get("PRICEBEAN") != null) {
+                    priceBeans = Hawk.get("PRICEBEAN");
+                } else {
+                    dismissLoading();
+                    showToast("请重新设置价格");
+                    return;
+                }
                 carsPay(str());//国内二码合一支付
                 Log.d(TAG, "onClick: 二码合一");
+            }else if (App.app.payChannel == Constant.PAY_ONLINE_AND_PRICE_MODEL || manualReason != null) {
+                dismissLoading();
+                showDialogChoosePay();
+                Log.d(TAG, "onClick: 二码合一");
             } else if (App.app.payChannel == Constant.PAY_POS_DEVICE || manualReason != null) {
                 Log.d(TAG, "onClick: MDB板信用卡支付");
                 pay();//MDB板信用卡支付
             } else if (App.app.payChannel == Constant.PAY_PRICE_MODEL || manualReason != null) {
                 showPayMixDialog();
-            } else if (App.app.payChannel == Constant.PAY_NAYAX_MODEL ||App.app.payChannel == Constant.PAY_NAYAX_MODEL_IDLE || manualReason != null) {
+            } else if (App.app.payChannel == Constant.PAY_NAYAX_MODEL || App.app.payChannel == Constant.PAY_NAYAX_MODEL_IDLE || manualReason != null) {
                 showNayaxCreditCard();
-            }else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX || manualReason != null){
+            } else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX || manualReason != null) {
+                dismissLoading();
+                showDialogChoosePay();
+            } else if (App.app.payChannel == Constant.PAY_POS_DEVICE_PAY_MIX || manualReason != null) {
+                dismissLoading();
                 showDialogChoosePay();
             }
         } else if (id == R.id.dishes_ice_cream) {
             notifyAddShopCart();
         } else if (id == R.id.dishes_add_shop_cart) {
-            if (App.app.payChannel == Constant.PAY_POS_DEVICE && !Global.MDBCreditCardSuccess && Global.MDBCreditCardSuccessNumber != 1) {
-                showToast(getString(R.string.credit_failed));
-                return;
-            }
+//            if (App.app.payChannel == Constant.PAY_POS_DEVICE && !Global.MDBCreditCardSuccess && Global.MDBCreditCardSuccessNumber != 1) {
+//                showToast(getString(R.string.credit_failed));
+//                return;
+//            }
             addShopCart();
 
         } else if (id == R.id.dishes_sauce_1) {
@@ -514,15 +549,17 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private ShoppingTrolleyDialogChoosePay shoppingTrolleyDialogChoosePay;
-    private void showDialogChoosePay(){
+
+    private void showDialogChoosePay() {
         if (shoppingTrolleyDialogChoosePay == null) {
             shoppingTrolleyDialogChoosePay = new ShoppingTrolleyDialogChoosePay(getContext());
             shoppingTrolleyDialogChoosePay.setCanTouchOutsideDismiss(false);
         }
+        ispaySuccess = true;
         shoppingTrolleyDialogChoosePay.setListener(new DialogClickListener() {
             @Override
             public void onClickListener(int type) {
-                switch (type){
+                switch (type) {
                     case 125:
                         shoppingTrolleyDialogChoosePay.dismiss();
                         break;
@@ -532,6 +569,19 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                     case R.id.iv_nayax:
                         showNayaxCreditCard();
                         break;
+                    case R.id.iv_w_mdb_xinyongka:
+                        showDialogWMDBCreditCard();
+                        break;
+                    case R.id.iv_qr_code:
+                        if (Hawk.get("PRICEBEAN") != null) {
+                            priceBeans = Hawk.get("PRICEBEAN");
+                        } else {
+                            dismissLoading();
+                            showToast("请重新设置价格");
+                            return;
+                        }
+                        carsPay(str());//国内二码合一支付
+                        break;
                 }
             }
         });
@@ -540,6 +590,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     private CreditCardDialog mCreditCardDialog;
     private boolean isCreditCards = false;
+
+
     private void showDialogCreditCard() {
         Log.d(TAG, "showDialogCreditCard: ");
         LogUtils.logWrite("弹出刷卡对话框");
@@ -583,6 +635,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         }
         mCreditCardDialog.show();
         //停止时间
+        dismissLoading();
+
     }
 
 
@@ -726,6 +780,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private void initSpecView() {
+
         for (SpecCategoryBean specCategoryBean : currentDish.specCategoryBeans) {
             if (DishesBean.SPEC_CATEGORY_SAUCE.equals(specCategoryBean.code)) {
                 initSpecItems(sauceViews, specCategoryBean, true);
@@ -785,9 +840,15 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private void initPrice() {
-        Log.d(TAG, "debug initPrice1: ");
         Log.d(TAG, "debug initPrice: " + PriceUtil.getDishPriceOne(currentDish));
-        String p = decimalFormat.format(manualReason == null ? PriceUtil.getDishPriceOne(currentDish) : 0d);
+        Log.d(TAG, "debug initPrice: " + currentDish);
+
+//        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+//        symbols.setDecimalSeparator('.');
+//        DecimalFormat decimalFormat = new DecimalFormat("###################.###########", symbols);
+        String p = CustomDecimalFormat.getDecimalFormat().format(manualReason == null ? PriceUtil.getDishPriceOne(currentDish) : 0);
+//        String p=priceBean.getPriceDefault();
+        Log.d(TAG, "initPrice1111: " + p);
         int endPosition = p.indexOf(".");
         if (endPosition == -1) {
             endPosition = p.length();
@@ -882,11 +943,17 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         double yPrice;
         yPrice = PriceUtil.getAllDishPriceDouble(orderList);
         pri = yPrice;
+        DecimalFormatSymbols symbols = new DecimalFormatSymbols();
+        symbols.setDecimalSeparator('.');
+        DecimalFormat decimalFormat = new DecimalFormat("###################.###########", symbols);
         realPay = decimalFormat.format(yPrice);
         dishes_shop_cart_price.setText("");
         int endPosition = realPay.indexOf(".");
         if (endPosition == -1) {
-            realPay += ".0";
+            if (App.app.payChannel == Constant.PAY_ONLINE)
+                realPay += ".0";
+        } else {
+            realPay += "";
         }
 
         int priceLength = realPay.length() + App.app.currencySymbol.length();
@@ -1150,7 +1217,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     public void event(WmdbIctMessageEvent messageEvent) {
         String asciiData = (String) messageEvent.getData();
         Log.d(TAG, "event: " + asciiData);
-        LogUtils.logWrite("RD:" + asciiData);
+//        LogUtils.logWrite("RD:" + asciiData);
         switch (messageEvent.getName()) {
             case Name.WMDB:
                 Log.d(TAG, "wmdbDataevent1005: " + asciiData);
@@ -1191,9 +1258,11 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                     scanDialog.dismiss();
                     scanDialog.stopTimeDown();
                 }
-                showDialogPaySuccess(R.string.pay_success, R.drawable.icon_zhifu_pay);
-                LogUtil.d(TAG, "测试event: showDialogPaySuccess" + messageEvent.getData());
-//                }
+                if (ispaySuccess) {
+                    ispaySuccess = false;
+                    showDialogPaySuccess(R.string.pay_success, R.drawable.icon_zhifu_pay);
+                    LogUtil.d(TAG, "测试event: showDialogPaySuccess" + messageEvent.getData());
+                }
                 break;
             case "phone":
                 //实时更新电话联系人和电话号码
@@ -1278,6 +1347,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     private double remainMoney = 0;
     private double coin = 0;
+    private boolean ispaySuccess = true;
 
     @Subscribe(threadMode = ThreadMode.MAIN)
     public void event(OfflineMessageEvent messageEvent) {
@@ -1293,9 +1363,13 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                         tvMoney.setText(haveMoney + (Global.hasmoney.doubleValue() + Global.hascoin.doubleValue() - pri));
                         remainMoney = Global.hasmoney.doubleValue() + Global.hascoin.doubleValue() - pri;
                         payPaperSuccess(); // 收钞完成
-                        EventBus.getDefault().post(new ApiMessageEvent("cashsale", ByteUtils.decimal2fitHex((long) (coin * 100), 4) + ";" + ByteUtils.decimal2fitHex((long) 1, 4)));
+                        EventBus.getDefault().post(new ApiMessageEvent("cashsale",
+                                ByteUtils.decimal2fitHex((long) (coin * 100), 4)
+                                        + ";" + ByteUtils.decimal2fitHex((long) 1, 4)));
                     } else {
-                        payMixDialog.setNameAndPrice("冰淇淋", String.valueOf(new BigDecimal(pri + "").subtract(Global.hasmoney).subtract(Global.hascoin)));
+                        payMixDialog.setNameAndPrice("冰淇淋",
+                                String.valueOf(new BigDecimal(pri + "")
+                                        .subtract(Global.hasmoney).subtract(Global.hascoin)));
                     }
                 }
                 break;
@@ -1304,6 +1378,15 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             case Name.BEGINSESSION://插卡了
                 break;
             case Name.VENDAPPROVED://支付成功
+                Log.d(TAG, "event: VENDAPPROVED" + ispaySuccess);
+                synchronized (WeaverUtil.class) {
+                    if (ispaySuccess) {
+                        ispaySuccess = false;
+                        if (mMdbCreditCardDialog != null) {
+                            mMdbCreditCardDialog.getListener().onClickListener(130);
+                        }
+                    }
+                }
                 break;
             case Name.ENDSESSION:
                 if (Hawk.get(Name.END_CREDIT_CARD, false)) {
@@ -1368,6 +1451,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
         });
         payMixDialog.show();
+        dismissLoading();
         if (Global.hasmoney.doubleValue() + Global.hascoin.doubleValue() >= pri) {
             tvMoney.setText(haveMoney + (Global.hasmoney.doubleValue() + Global.hascoin.doubleValue() - pri));
             payPaperSuccess(); // 收钞完成
@@ -1392,6 +1476,27 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private MdbCreditCardDialog mMdbCreditCardDialog;
+    private Timer tradingTimer;
+    private TimerTask tradingTimerTask;
+    //用于结束监听是否支付成功。
+    private boolean tradingTime = false;
+
+    private void startTradingTimerDown() {
+        tradingTime = false;
+        stopTradingTimerDown(tradingTimer, tradingTimerTask);
+        tradingTimer = new Timer();
+        tradingTimerTask = new TimerTask() {
+            @Override
+            public void run() {
+                //todo 退出交易的时候结束监听
+                if (tradingTime) {
+                    stopTradingTimerDown(tradingTimer, tradingTimerTask);
+                }
+            }
+        };
+
+        tradingTimer.schedule(tradingTimerTask, 6000, 1000);
+    }
 
     private void showDialogWMDBCreditCard() {
         double coin = pri;
@@ -1404,12 +1509,81 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             mMdbCreditCardDialog.setCanTouchOutsideDismiss(false);
         }
         if (Hawk.get(Name.WMDB, false)) {
-            Log.d(TAG, "showDialogWMDBCreditCard: ");
             WeaverUtil.creditCardrequestVend(ByteUtils.decimal2fitHex((long) (coin * Global.creditCardMultiplier), 4), "0001");
+            Log.d(TAG, "showDialogWMDBCreditCard: " + coin + ":" + coin * Global.creditCardMultiplier);
             Global.beginSession = false;
             Global.beginSessionNew = 2;
+            Log.d(TAG, "pay: isPaySuccess4");
         }
+        startTradingTimerDown();
+        mMdbCreditCardDialog.setListener(new DialogClickListener() {
+            @Override
+            public void onClickListener(int type) {
+                switch (type) {
+                    case 125:
+                        break;
+                    case 130:
+                        //通用
+                        synchronized (DataUtils.class) {
+                            EventBus.getDefault().post(new ApiMessageEvent("vendsuccess", ByteUtils.decimal2fitHex((long) 1, 4)));
+                            Log.d(TAG, "event: CreditCardMessage2");
+                            try {
+                                Thread.sleep(500);
+                            } catch (InterruptedException e) {
+                                e.printStackTrace();
+                            }
+                            try {
+                                Thread.sleep(500);
+                            } catch (InterruptedException e) {
+                                e.printStackTrace();
+                            }
+                            EventBus.getDefault().post(new ApiMessageEvent("sessioncomplete", ByteUtils.decimal2fitHex((long) 1, 4)));//end
+                            stopTradingTimerDown(tradingTimer, tradingTimerTask);
+                            //支付成功
+                            if (mMdbCreditCardDialog != null) {
+                                mMdbCreditCardDialog.dismiss();
+                            }
+                            isCreditCards = true;
+                            //显示投币成功弹窗
+                            showDialogPaySuccess(R.string.coin_success, R.drawable.img_toubi_pay);
+                            new Handler().postDelayed(new Runnable() {
+                                @Override
+                                public void run() {
+                                    Log.d(TAG, "event: CreditCardMessage3");
+                                    manualMake();
+                                }
+                            }, 2000);
+                        }
+                        break;
+                    case R.id.btn_cancel:
+                        WeaverUtil.creditCardVendCancel();
+                        Log.d(TAG, "onClickListener: 取消支付");
+                        stopTradingTimerDown(tradingTimer, tradingTimerTask);
+                        //关闭 重新支付弹窗倒计
+//                        if (dialogChoosePay != null) {
+//                            dialogChoosePay.startTimeDown(60);
+//                        }
+                        new Handler().postDelayed(new Runnable() {
+                            @Override
+                            public void run() {
+                                if (mMdbCreditCardDialog != null) {
+                                    mMdbCreditCardDialog.dismiss();
+                                }
+                            }
+                        }, 3000);
+                        break;
+                }
+            }
+        });
         mMdbCreditCardDialog.show((ViewGroup) iceCreamView.getParent());
+        dismissLoading();
+    }
+
+    private void stopTradingTimerDown(Timer timer, TimerTask task) {
+        if (timer != null) {
+            task.cancel();
+            timer.cancel();
+        }
     }
 
     private Animation notifyAnim;
@@ -1424,17 +1598,20 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     // 进入手动制作的界面
     private void manualMake() {
+        if (App.app.payChannel != Constant.PAY_FREE) {
+            LogUtils.logWrite("制作冰激凌了");
+        }
+        if (loadingDialog != null) {
+            loadingDialog.dismiss();
+        }
         if (paySuccessDialog != null) {
             paySuccessDialog.dismiss();
         }
         if (getFragmentManager() != null) {
 
             removeFinish();
-
             LinkedList<MakeIceCreamBean> iceCreamOrders = OrderHelper.getInstance().generateMakingIceCream();
-
             CommunicationHelper.getInstance().setMakingIceCreams(iceCreamOrders);
-
             Fragment fragment = PaySuccessFragment.getFragment(CommunicationHelper.getInstance().getMakingIceCreams().size(), isManualMode());
             FragmentTransaction transaction = getFragmentManager().beginTransaction();
             transaction.add(getContainerId(), fragment);
@@ -1481,8 +1658,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     public void carsPay(String productNameMap) {
+        showLoading();
         resetFinishDelay();
-
         Log.d(TAG, "carsPay: " + productNameMap);
         RequestBody body = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), productNameMap);
         String url = "tOrder/iceCreamCarsPay?clientId=" + Heartbeat.deviceId;
@@ -1516,20 +1693,14 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                                 LogUtil.d("优惠码过期了哦!", type + "");
                                 break;
                             default:
-                                LogUtil.d("SettingPresenter", "测试1");
                                 Gson gson = new Gson();
-                                LogUtil.d("SettingPresenter", "测试2");
                                 ImgOrderBean imgOrderBean = gson.fromJson(type, ImgOrderBean.class);
-                                LogUtil.d("SettingPresenter", "测试3" + imgOrderBean);
                                 PaySuccessConstant.sn = imgOrderBean.getSn();
                                 LogUtil.d("SettingPresenter", imgOrderBean.getSn() + "测试3.1:" + PaySuccessConstant.sn);
                                 if (type != null && !TextUtils.isEmpty(imgOrderBean.getRd_Pic()) && !TextUtils.isEmpty(imgOrderBean.getSn())) {
-                                    LogUtil.d("SettingPresenter", "测试4");
                                     getCodeSuccess(imgOrderBean.getRd_Pic(), imgOrderBean.getSn());
                                     //存儲訂單編號。
-                                    LogUtil.d("SettingPresenter", "测试5");
 //                                    Global.mapOrderReference.put(imgOrderBean.getSn(), imgOrderBean.getSn());
-                                    LogUtil.d("SettingPresenter", "测试6");
                                 }
                                 break;
                         }
@@ -1545,24 +1716,19 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                             getCodeFailed(t.getMessage());
                         }
                         Log.d(TAG, "carsPay onError: " + t.getMessage());
+                        dismissLoading();
                     }
                 });
     }
 
     private void getCodeSuccess(String rd_Pic, String sn) {
-        Log.d(TAG, "测试11: ");
         LogUtil.d(TAG, "getCodeSuccess: " + rd_Pic);
-        Log.d(TAG, "测试13: ");
-        Log.d(TAG, "测试12: ");
         resetFinishDelay();
-
         showDialogScan(rd_Pic, sn);
     }
 
     private void showDialogScan(String rd_Pic, String sn) {
-        Log.d(TAG, "测试14: ");
 //        Global.makeStatus = Name.IN_PRODUCTION;
-        Log.d(TAG, "测试15");
         if (scanDialog == null) {
             scanDialog = new ScanDialog(getContext(), getActivity());
         }
@@ -1599,6 +1765,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 //        scanDialog.setGifType(frpCode);
         scanDialog.setCodeData(rd_Pic, sn);
         scanDialog.show();
+        dismissLoading();
         Log.d(TAG, "showDialogScan end  : ");
 
         /**
@@ -1614,16 +1781,16 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         Log.d(TAG, "onClick: 总共需要制作的组合:" + orderHelper.getOrderList().size());
         Log.d(TAG, "onClick: 总共需要制作冰淇淋的杯数:" + orderHelper.generateMakingIceCream().size());
         Log.d(TAG, "onClick: 总价格:" + pri);
-
+        Log.d(TAG, "str112: " + orderHelper.getOrderList());
         for (int i = 0; i < orderHelper.getOrderList().size(); i++) {
             ShoppingCartBean shoppingCart = new ShoppingCartBean();
             Log.d(TAG, "onClick: 冰淇淋组合:" + orderHelper.getOrderList().get(i).selectTag +
 //                            "冰淇淋的金额:"+orderHelper.getOrderList().get(i).price+
                     "单个商品需要制作的杯数:" + orderHelper.getOrderList().get(i).buyCount);
             String str = "";
-            String[] parts = orderHelper.getOrderList().get(i).selectTag.split("雪糕");
+            String[] parts = orderHelper.getOrderList().get(i).selectTag.split(",");
             str = getStr(str, parts);
-            Log.d(TAG, "str: " + str);
+            Log.d(TAG, "str111: " + str);
             shoppingCart.setShoppingName(str);//商品名字
             shoppingCart.setCount(orderHelper.getOrderList().get(i).buyCount);
             shoppingCart.setPrice(Double.parseDouble(currentDish.price));
@@ -1659,7 +1826,10 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         return str;
     }
 
+    ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>();
+
     private String getStr(String str, String[] parts) {
+        Log.d(TAG, "getStrtestPriceBean: " + priceBeans);
         for (String part : parts) {
             Log.d(TAG, "onClick0: " + part);
             if (part.contains("_")) {
@@ -1668,45 +1838,53 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 if (index != -1) {
                     // 获取下划线前面的部分
                     String part1 = part.substring(0, index);
+                    Log.d(TAG, "onClick0getStr: " + part1);
                     String a = "";
-                    if (part1.trim().equals("芒果")) {
-                        a = "果酱(1)";
-                    } else if (part1.trim().equals("菠萝")) {
-                        a = "果酱(2)";
-                    } else if (part1.trim().equals("草莓")) {
-                        a = "果酱(3)";
+                    if (part1.trim().equals(priceBeans.get(3).getChineseName())) {
+                        a = priceBeans.get(3).getDefaultName();
+                    } else if (part1.trim().equals(priceBeans.get(4).getChineseName())) {
+                        a = priceBeans.get(4).getDefaultName();
+                    } else if (part1.trim().equals(priceBeans.get(5).getChineseName())) {
+                        a = priceBeans.get(5).getDefaultName();
                     }
-                    // 获取下划线后面的部分
-                    String part2 = part.substring(index + 1);
+//                    // 获取下划线后面的部分
+//                    Log.d(TAG, "onClick0getStrgetStr1: "+part.substring(index + 1));
+                    String part2 = part.substring(index + 1).replace(priceBeans.get(0).getChineseName(), "");
+                    Log.d(TAG, "onClick0getStrpart2: " + part2);
                     String b = "";
-                    if (part2.trim().equals("花生")) {
-                        b = "果碎(1)";
-                    } else if (part2.trim().equals("榛子")) {
-                        b = "果碎(2)";
+                    if (part2.trim().equals(priceBeans.get(1).getChineseName())) {
+                        b = priceBeans.get(1).getDefaultName();
+                    } else if (part2.trim().equals(priceBeans.get(2).getChineseName())) {
+                        b = priceBeans.get(2).getDefaultName();
                     }
-                    Log.d(TAG, "onClick1: " + "雪糕" + "-" + a + "," + b);
-                    str = "雪糕" + "-" + a + "," + b;
+                    str = priceBeans.get(0).getDefaultName() + "-" + a + "," + b;
+                    Log.d(TAG, "onClick0getStrgetStr3: " + str);
                 }
             } else {
                 // 字符串中没有下划线的情况处理...
                 Log.d(TAG, "onClick2: " + part);
-                if (part.trim().equals("原味")) {
-                    str = "雪糕";
+                if (part.trim().equals(priceBeans.get(0).getChineseName())) {
+                    str = priceBeans.get(0).getDefaultName();
+                    Log.d(TAG, "getStr:priceBeans " + str);
                 } else {
                     String s = "";
-                    if (part.trim().equals("花生")) {
-                        s = "果碎(1)";
-                    } else if (part.trim().equals("榛子")) {
-                        s = "果碎(2)";
-                    } else if (part.trim().equals("芒果")) {
-                        s = "果酱(1)";
-                    } else if (part.trim().equals("菠萝")) {
-                        s = "果酱(2)";
-                    } else if (part.trim().equals("草莓")) {
-                        s = "果酱(3)";
+                    if (part.equals(priceBeans.get(1).getChineseName() + priceBeans.get(0).getChineseName())) {
+                        s = priceBeans.get(1).getDefaultName();
+                        Log.d(TAG, "getStr1:priceBeans " + s);
+                    } else if (part.equals(priceBeans.get(2).getChineseName() + priceBeans.get(0).getChineseName())) {
+                        s = priceBeans.get(2).getDefaultName();
+                        Log.d(TAG, "getStr2:priceBeans " + s);
+                    } else if (part.equals(priceBeans.get(3).getChineseName() + priceBeans.get(0).getChineseName())) {
+                        s = priceBeans.get(3).getDefaultName();
+                        Log.d(TAG, "getStr3:priceBeans " + s);
+                    } else if (part.equals(priceBeans.get(4).getChineseName() + priceBeans.get(0).getChineseName())) {
+                        s = priceBeans.get(4).getDefaultName();
+                        Log.d(TAG, "getStr4:priceBeans " + s);
+                    } else if (part.equals(priceBeans.get(5).getChineseName() + priceBeans.get(0).getChineseName())) {
+                        s = priceBeans.get(5).getDefaultName();
+                        Log.d(TAG, "getStr5:priceBeans " + s);
                     }
-                    Log.d(TAG, "onClick3: " + "雪糕" + "-" + s);//这里是只加了一种料的名字
-                    str = "雪糕" + "-" + s;
+                    str = priceBeans.get(0).getDefaultName() + "-" + s;
                 }
             }
         }
@@ -1747,4 +1925,33 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 .subscribe(observer);
         mDisposables.add(observer);
     }
+
+    private ZLoadingDialog loadingDialog;
+
+    private void showLoading() {
+        if (loadingDialog == null) {
+            loadingDialog = new ZLoadingDialog(getContext());
+        }
+
+        loadingDialog.setLoadingBuilder(Z_TYPE.DOUBLE_CIRCLE)//设置类型
+                .setLoadingColor(DrawableSelectorUtils.getColorByAttrId(getContext(), R.attr.text_color))//颜色
+                .setHintText("Loading...");
+        Dialog dialog = this.loadingDialog.create();
+        dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
+        dialog.show();
+        dialog.setCanceledOnTouchOutside(false);
+        dialog.setCancelable(false);
+    }
+
+    private void dismissLoading() {
+        // 延迟1秒后关闭弹窗
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                if (loadingDialog != null && loadingDialog.isShowing()) {
+                    loadingDialog.dismiss();
+                }
+            }
+        }, 1000);
+    }
 }

+ 10 - 44
app/src/main/java/com/bgy/autosale/ui/consumer/MainFragment.java

@@ -32,7 +32,6 @@ import com.bgy.autosale.ui.base.BaseScanGunActivity;
 import com.bgy.autosale.ui.operator.AuthNumberActivity;
 import com.bgy.autosale.ui.operator.DeviceManagerActivity;
 import com.bgy.autosale.ui.operator.fragments.PriceFragment;
-import com.bgy.autosale.utils.PlcLog;
 import com.bgy.autosale.utils.SPUtils;
 import com.bgy.autosale.utils.ToastUtil;
 import com.orhanobut.hawk.Hawk;
@@ -195,11 +194,9 @@ public class MainFragment extends BaseFragment implements RadarCallback {
             ToastUtil.getInstance().showText(getString(R.string.is_click_too_fast));
             return;
         }
-        Log.d(TAG, "onClick: ");
+        Log.d(TAG, "价格 onClick: ");
         // 刷新本地的菜单
-        if (App.app.runMode == Constant.RUN_OFFLINE) {
-            loadLocalDishes();
-        }
+        checkData();
         selectDishes();
 
     }
@@ -245,7 +242,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
             loadLocalDishes();
         } else {
             Log.d(TAG, "getDishData2: ");
-            updateDate();
+//            updateDatePrice();
             loadRemoteDishes();
         }
 
@@ -353,14 +350,11 @@ public class MainFragment extends BaseFragment implements RadarCallback {
     // TODO 加载网络菜品
     private void loadRemoteDishes() {
 
-//        progress_main.setVisibility(View.VISIBLE);
-        Log.d(TAG, "loadRemoteDishes: ");
-
         SPUtils instance = SPUtils.getInstance(App.app);
         DishesBean dishesBean = new DishesBean();
         dishesBean.name = instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_FLAVOR, getString(R.string.setting_icecream_name));
-//        dishesBean.price = instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_FLAVOR, "0.01");
-        dishesBean.price = instance.getString(ice, ice);
+        dishesBean.price = instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_FLAVOR, "0.01");
+//        dishesBean.price = instance.getString(ice, ice);
         dishesBean.specCategoryBeans = new ArrayList<>(2);
         SpecCategoryBean sauceCategory = new SpecCategoryBean();
         sauceCategory.code = DishesBean.SPEC_CATEGORY_SAUCE;
@@ -369,7 +363,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
         SpecBean mango = new SpecBean();
         mango.init("1", 1,
                 instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_SAUCE_1, getString(R.string.mango)),
-                instance.getString(jiang1, jiang1));
+                instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_SAUCE_1, "0.01"));
         mango.image = instance.getString(PriceFragment.SHARED_PREFERENCE_ICON_SAUCE_1, null);
         mango.categoryCode = DishesBean.SPEC_CATEGORY_SAUCE;
         if (mango.image == null) {
@@ -379,7 +373,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
         SpecBean pineapple = new SpecBean();
         pineapple.init("2", 2,
                 instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_SAUCE_2, getString(R.string.pineapple)),
-                instance.getString(jiang2, jiang2));
+                instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_SAUCE_2, "0.01"));
         pineapple.categoryCode = DishesBean.SPEC_CATEGORY_SAUCE;
         pineapple.image = instance.getString(PriceFragment.SHARED_PREFERENCE_ICON_SAUCE_2, null);
         if (pineapple.image == null) {
@@ -390,7 +384,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
         SpecBean strawberry = new SpecBean();
         strawberry.init("3", 3,
                 instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_SAUCE_3, getString(R.string.strawberry)),
-                instance.getString(jiang3, jiang3));
+                instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_SAUCE_3, "0.01"));
         strawberry.categoryCode = DishesBean.SPEC_CATEGORY_SAUCE;
         strawberry.image = instance.getString(PriceFragment.SHARED_PREFERENCE_ICON_SAUCE_3, null);
         if (strawberry.image == null) {
@@ -406,7 +400,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
         SpecBean peanut = new SpecBean();
         peanut.init("4", 1,
                 instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_KERNEL_1, getString(R.string.peanut)),
-                instance.getString(guo1, guo1));
+                instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_KERNEL_1, "0.01"));
         peanut.categoryCode = DishesBean.SPEC_CATEGORY_KERNEL;
         peanut.image = instance.getString(PriceFragment.SHARED_PREFERENCE_ICON_KERNEL_1, null);
         if(peanut.image == null){
@@ -416,7 +410,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
         SpecBean filbert = new SpecBean();
         filbert.init("5", 2,
                 instance.getString(PriceFragment.SHARED_PREFERENCE_NAME_KERNEL_2, getString(R.string.filbert)),
-                instance.getString(guo2, guo2));
+                instance.getString(PriceFragment.SHARED_PREFERENCE_PRICE_KERNEL_2, "0.01"));
         filbert.categoryCode = DishesBean.SPEC_CATEGORY_KERNEL;
         filbert.image = instance.getString(PriceFragment.SHARED_PREFERENCE_ICON_KERNEL_2, null);
         if (filbert.image == null) {
@@ -427,32 +421,4 @@ public class MainFragment extends BaseFragment implements RadarCallback {
 
         StockHelper.getInstance().bindDish(dishesBean);
     }
-    private String ice,guo1,guo2,jiang1,jiang2,jiang3;
-    public void updateDate() {
-        ArrayList<PriceFragment.PriceBean> priceBeans = Hawk.get("PRICEBEAN",null);
-        Log.d(TAG, "onNextPRICEBEAN:fragment "+ Hawk.get("PRICEBEAN",null));
-        for (int i = 0; i < priceBeans.size(); i++) {
-            String name=priceBeans.get(i).getChineseName();
-            Log.d(TAG, "updateDate: "+name+":"+String.valueOf(priceBeans.get(i).getPriceKey()));
-            if (name.trim().equals("雪糕")){
-//                if (name.trim().equals("冰淇淋")){
-                ice= String.valueOf(priceBeans.get(i).getPriceKey());
-            }else if (name.trim().equals("果碎(1)")){
-//                }else if (name.trim().equals("花生碎")){
-                guo1= String.valueOf(priceBeans.get(i).getPriceKey());
-            }if (name.trim().equals("果碎(2)")){
-//                }if (name.trim().equals("榛子碎")){
-                guo2= String.valueOf(priceBeans.get(i).getPriceKey());
-            }if (name.trim().equals("果酱(1)")){
-//            }if (name.trim().equals("蓝莓酱")){
-                jiang1= String.valueOf(priceBeans.get(i).getPriceKey());
-            }if (name.trim().equals("果酱(2)")){
-//            }if (name.trim().equals("菠萝酱")){
-                jiang2= String.valueOf(priceBeans.get(i).getPriceKey());
-            }if (name.trim().equals("果酱(3)")){
-//            }if (name.trim().equals("草莓酱")){
-                jiang3= String.valueOf(priceBeans.get(i).getPriceKey());
-            }
-        }
-    }
 }

+ 75 - 11
app/src/main/java/com/bgy/autosale/ui/operator/DeviceManagerActivity.java

@@ -1,17 +1,24 @@
 package com.bgy.autosale.ui.operator;
 
+import static com.hboxs.base_library.base.BaseApplication.getContext;
+
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
 import android.os.Bundle;
+import android.os.IBinder;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.TextView;
 
 import com.bgy.autosale.App;
@@ -31,6 +38,9 @@ import com.bgy.autosale.ui.operator.fragments.SwitchFragment;
 import com.bgy.autosale.ui.operator.fragments.TechnologySupportFragment;
 import com.bgy.autosale.ui.widget.InfoView;
 import com.bgy.autosale.ui.widget.RecyclerViewLinearDivider;
+import com.hboxs.base_library.constant.Global;
+import com.hboxs.base_library.constant.Heartbeat;
+import com.hboxs.base_library.util.UiUtil;
 
 import java.util.ArrayList;
 import java.util.concurrent.TimeUnit;
@@ -100,6 +110,7 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
         list.add(new NavBean(R.string.setting_warnings, ACTION_ERRRECORD));
         list.add(new NavBean(R.string.setting_common, ACTION_COMMON));
         list.add(new NavBean(R.string.setting_machine, ACTION_MACHINE));
+        list.add(new NavBean(R.string.setting_price, ACTION_PRICE));
         list.add(new NavBean(R.string.setting_switch, ACTION_SWITCH));
         list.add(new NavBean(R.string.setting_technology_upload_log, ACTION_LOG));
         list.add(new NavBean(R.string.setting_technology_clean_config, ACTION_CLEAN));
@@ -163,7 +174,8 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
             case ACTION_SWITCH: // 功能开关
                 if (switchFragment == null) {
                     switchFragment = SwitchFragment.getFragment(() -> {
-                        adapter.runModeChange();
+//                        adapter.runModeChange();
+                        adapter.notifyDataSetChanged();
                     });
                 }
                 fragment = switchFragment;
@@ -196,10 +208,25 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
                 fragment = controlFragment;
                 break;
             case ACTION_PRICE: // 离线价格
-                if (priceFragment == null) {
-                    priceFragment = PriceFragment.getFragment();
+                if (Global.isVersions == 1) {
+                    if (Heartbeat.deviceId == null || TextUtils.isEmpty(Heartbeat.deviceId)) {
+                        showToast(UiUtil.getStringRes(R.string.no_cid));
+                        if (technologySupportFragment == null) {
+                            technologySupportFragment = TechnologySupportFragment.getFragment();
+                        }
+                        fragment = technologySupportFragment;
+                    }else {
+                        if (priceFragment == null) {
+                            priceFragment = PriceFragment.getFragment();
+                        }
+                        fragment = priceFragment;
+                    }
+                } else {
+                    if (priceFragment == null) {
+                        priceFragment = PriceFragment.getFragment();
+                    }
+                    fragment = priceFragment;
                 }
-                fragment = priceFragment;
                 break;
             case ACTION_LOG:
                 if (logFragment == null) {
@@ -245,10 +272,10 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
             this.inflater = LayoutInflater.from(context);
             this.list = list;
             this.listener = listener;
-            this.saleBean = new NavBean(R.string.setting_price, ACTION_PRICE);
-            if(App.app.runMode == Constant.RUN_OFFLINE){
-                list.add(3, saleBean);
-            }
+//            this.saleBean = new NavBean(R.string.setting_price, ACTION_PRICE);
+//            if(App.app.runMode == Constant.RUN_OFFLINE){
+//                list.add(3, saleBean);
+//            }
         }
 
         @NonNull
@@ -282,10 +309,10 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
         }
 
         void runModeChange() {
-            if(App.app.runMode == Constant.RUN_OFFLINE) {
+            if (App.app.runMode == Constant.RUN_OFFLINE) {
+                list.add(3, saleBean);
+            } else {
                 list.add(3, saleBean);
-            }else{
-                list.remove(saleBean);
             }
             notifyDataSetChanged();
         }
@@ -310,4 +337,41 @@ public class DeviceManagerActivity extends BaseActivity implements View.OnClickL
             this.id = id;
         }
     }
+    private boolean isShouldHideKeyboard(View v, MotionEvent event) {
+        if (v != null && (v instanceof EditText)) {
+            int[] l = {0, 0};
+            v.getLocationInWindow(l);
+            int left = l[0],
+                    top = l[1],
+                    bottom = top + v.getHeight(),
+                    right = left + v.getWidth();
+            if (event.getX() > left && event.getX() < right
+                    && event.getY() > top && event.getY() < bottom) {
+                // 点击EditText的事件,忽略它。
+                return false;
+            } else {
+                return true;
+            }
+        }
+        // 如果焦点不是EditText则忽略,这个发生在视图刚绘制完,第一个焦点不在EditText上,和用户用轨迹球选择其他的焦点
+        return false;
+    }
+
+    @Override
+    public boolean dispatchTouchEvent(MotionEvent ev) {
+        if (ev.getAction() == MotionEvent.ACTION_DOWN) {
+            View v = getCurrentFocus();
+            if (isShouldHideKeyboard(v, ev)) {
+                hideKeyboard(v.getWindowToken());
+            }
+
+        }
+        return super.dispatchTouchEvent(ev);
+    }
+    private void hideKeyboard(IBinder token) {
+        if (token != null) {
+            InputMethodManager im = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+            im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
+        }
+    }
 }

+ 7 - 0
app/src/main/java/com/bgy/autosale/ui/operator/MyFragmentActivity.java

@@ -17,6 +17,8 @@ import com.bgy.autosale.ui.operator.fragments.ConfigFragment;
 import com.bgy.autosale.ui.operator.fragments.ControlFragment;
 import com.bgy.autosale.ui.operator.fragments.OperateCheckFragment;
 
+import org.greenrobot.eventbus.EventBus;
+
 
 /**
  * Created by cjx on 2021-01-07
@@ -89,4 +91,9 @@ public class MyFragmentActivity extends BaseActivity {
     public void showLoadDialog(int visible) {
         findViewById(R.id.progress_main).setVisibility(visible);
     }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
 }

+ 392 - 34
app/src/main/java/com/bgy/autosale/ui/operator/fragments/PriceFragment.java

@@ -1,6 +1,7 @@
 package com.bgy.autosale.ui.operator.fragments;
 
 import android.content.Context;
+import android.graphics.Rect;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -10,27 +11,69 @@ import android.support.v7.widget.AppCompatEditText;
 import android.support.v7.widget.AppCompatImageView;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
 import com.bgy.autosale.App;
+import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
+import com.bgy.autosale.entitys.DishesBean;
+import com.bgy.autosale.entitys.SpecBean;
+import com.bgy.autosale.entitys.SpecCategoryBean;
+import com.bgy.autosale.helpers.StockHelper;
+import com.bgy.autosale.payutil.OrderPriceBean;
 import com.bgy.autosale.ui.base.BaseFragment;
 import com.bgy.autosale.utils.SPUtils;
 import com.bumptech.glide.Glide;
+import com.example.spunsugar.system.model.bean.PriceBean;
+import com.example.spunsugar.user.model.bean.GoodsBean;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.beans.ProductsBean;
+import com.hboxs.base_library.constant.Global;
+import com.hboxs.base_library.constant.Heartbeat;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.http.NoPayOrderStringApi;
+import com.hboxs.base_library.http.exception.BaseException;
+import com.hboxs.base_library.http.exception.ExceptionFactory;
+import com.hboxs.base_library.http.observer.HttpResultObserver;
+import com.hboxs.base_library.http.response.HttpResult;
+import com.hboxs.base_library.http.response.HttpResultHandler;
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.LogUtils;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.ToastUtil;
+import com.hboxs.base_library.util.UiUtil;
+import com.orhanobut.hawk.Hawk;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.observers.DisposableObserver;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.RequestBody;
 
 /**
  * Created by cjx on 2023-11-19
  * 说明:配置离线售卖价格
  */
-public class PriceFragment extends BaseFragment {
+public class PriceFragment extends BaseFragment implements View.OnClickListener {
 
+    //价格
     public static final String SHARED_PREFERENCE_PRICE_FLAVOR = "SHARED_PREFERENCE_PRICE_FLAVOR";
     public static final String SHARED_PREFERENCE_PRICE_SAUCE_1 = "SHARED_PREFERENCE_PRICE_SAUCE_1";
     public static final String SHARED_PREFERENCE_PRICE_SAUCE_2 = "SHARED_PREFERENCE_PRICE_SAUCE_2";
@@ -39,6 +82,7 @@ public class PriceFragment extends BaseFragment {
     public static final String SHARED_PREFERENCE_PRICE_KERNEL_2 = "SHARED_PREFERENCE_PRICE_KERNEL_2";
     public static final String SHARED_PREFERENCE_PRICE_KERNEL_3 = "SHARED_PREFERENCE_PRICE_KERNEL_3";
 
+    //名字
     public static final String SHARED_PREFERENCE_NAME_FLAVOR = "SHARED_PREFERENCE_NAME_FLAVOR";
     public static final String SHARED_PREFERENCE_NAME_SAUCE_1 = "SHARED_PREFERENCE_NAME_SAUCE_1";
     public static final String SHARED_PREFERENCE_NAME_SAUCE_2 = "SHARED_PREFERENCE_NAME_SAUCE_2";
@@ -47,6 +91,7 @@ public class PriceFragment extends BaseFragment {
     public static final String SHARED_PREFERENCE_NAME_KERNEL_2 = "SHARED_PREFERENCE_NAME_KERNEL_2";
     public static final String SHARED_PREFERENCE_NAME_KERNEL_3 = "SHARED_PREFERENCE_NAME_KERNEL_3";
 
+    //开启&关闭
     public static final String SHARED_PREFERENCE_SWITCH_SAUCE_1 = "SHARED_PREFERENCE_SWITCH_SAUCE_1";
     public static final String SHARED_PREFERENCE_SWITCH_SAUCE_2 = "SHARED_PREFERENCE_SWITCH_SAUCE_2";
     public static final String SHARED_PREFERENCE_SWITCH_SAUCE_3 = "SHARED_PREFERENCE_SWITCH_SAUCE_3";
@@ -54,6 +99,7 @@ public class PriceFragment extends BaseFragment {
     public static final String SHARED_PREFERENCE_SWITCH_KERNEL_2 = "SHARED_PREFERENCE_SWITCH_KERNEL_2";
     public static final String SHARED_PREFERENCE_SWITCH_KERNEL_3 = "SHARED_PREFERENCE_SWITCH_KERNEL_3";
 
+    //图标
     public static final String SHARED_PREFERENCE_ICON_SAUCE_1 = "SHARED_PREFERENCE_ICON_SAUCE_1";
     public static final String SHARED_PREFERENCE_ICON_SAUCE_2 = "SHARED_PREFERENCE_ICON_SAUCE_2";
     public static final String SHARED_PREFERENCE_ICON_SAUCE_3 = "SHARED_PREFERENCE_ICON_SAUCE_3";
@@ -76,23 +122,101 @@ public class PriceFragment extends BaseFragment {
     }
 
     private PriceAdapter priceAdapter;
+    private RecyclerView recyclerView;
+    private Map<String, Integer> flowerTypeIds;//存储花型对应的id
+    private ArrayList<PriceBean> list;
+    private Button btnConfirmRevision;
 
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-
-        RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
+//        if (Global.isVersions == 1) {
+//            getproducts();
+//        }
+        recyclerView = view.findViewById(R.id.recycler_view);
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
+
+        list = new ArrayList<>();
         priceAdapter = new PriceAdapter(getItems(), getContext());
         recyclerView.setAdapter(priceAdapter);
+        if (Hawk.get("PRICEBEAN") != null) {
+            ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>(Hawk.get("PRICEBEAN"));
+            for (int i = 0; i < priceBeans.size(); i++) {
+                Log.d(TAG, "onViewCreated: getNameKey:" + priceBeans.get(i).getNameKey());
+                Log.d(TAG, "onViewCreated: getChineseName:" + priceBeans.get(i).getChineseName());
+                Log.d(TAG, "onViewCreated: getPriceKey:" + priceBeans.get(i).getPriceKey());
+            }
+        }
+        getRecyclerViewPosition();
+    }
+
+    private int rvPosition = -1;
+
+    private void getRecyclerViewPosition() {
+
+        recyclerView.addOnItemTouchListener(new RecyclerView.OnItemTouchListener() {
+            @Override
+            public boolean onInterceptTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
+                View childView = recyclerView.findChildViewUnder(motionEvent.getX(), motionEvent.getY());
+                if (recyclerView.getChildViewHolder(childView) != null) {
+                    ViewHolder viewHolder = (ViewHolder) recyclerView.getChildViewHolder(childView);
+                    int position = recyclerView.getChildAdapterPosition(childView);
+                    rvPosition = position;
+                    String priceValue = viewHolder.priceView.getText().toString();
+                    String nameValue = viewHolder.nameView.getText().toString();
+                    Log.d(TAG, "onInterceptTouchEvent: " + nameValue + ":" + position + ":" + priceValue);
+                }
+                return false;
+            }
+
+            @Override
+            public void onTouchEvent(@NonNull RecyclerView recyclerView, @NonNull MotionEvent motionEvent) {
+
+            }
+
+            @Override
+            public void onRequestDisallowInterceptTouchEvent(boolean b) {
+
+            }
+        });
+        btnConfirmRevision = findViewById(R.id.btn_confirm_revision);
+        btnConfirmRevision.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "onClick:1 " + priceAdapter.getItemCount());
+                    for (int i = 0; i < priceAdapter.getItemCount(); i++) {
+                        View view = recyclerView.getChildAt(i);
+                        ViewHolder viewHolder = (ViewHolder) recyclerView.getChildViewHolder(view);
+                        Log.d(TAG, "onClick: " + viewHolder.priceView.getText().toString());
+                        Log.d(TAG, "onClick: " + viewHolder.nameView.getText().toString());
+                        Log.d(TAG, "onClick: " + viewHolder.titleView.getText().toString());
+                        SPUtils.getInstance(App.app).putString(getString(ProductAbout.title[i]), viewHolder.titleView.getText().toString());
+                        SPUtils.getInstance(App.app).putString(ProductAbout.nameKey[i], viewHolder.nameView.getText().toString());
+                        SPUtils.getInstance(App.app).putString(ProductAbout.priceKey[i], viewHolder.priceView.getText().toString());
+                        PriceBean priceBean = new PriceBean();
+                        priceBean.setDefaultName(viewHolder.titleView.getText().toString());
+                        priceBean.setChineseName(viewHolder.nameView.getText().toString());
+                        priceBean.setPriceDefault(viewHolder.priceView.getText().toString());
+                        priceList.add(priceBean);
+                        Hawk.put("PRICEBEAN", priceList);
+                        if (Global.isVersions==1){
+//                            getproducts();
+                            updateDate(priceList);
+                        }
+                        showToast("更新成功");
+                    }
+            }
+        });
     }
 
+    private List<PriceBean> priceBeans;
+    private ArrayList<PriceBean> priceList=new ArrayList<>();
+
     @Override
     public void onResume() {
         super.onResume();
     }
 
-    ArrayList<PriceBean> list;
     //        list.add(new PriceBean(R.string.setting_icecream_title, R.string.setting_icecream_name, null, 0, SHARED_PREFERENCE_NAME_FLAVOR,
 //                getString(R.string.setting_icecream_name),
 //                R.string.setting_icecream_price, SHARED_PREFERENCE_PRICE_FLAVOR, null,"雪糕"));
@@ -122,8 +246,8 @@ public class PriceFragment extends BaseFragment {
 //                    ProductAbout.priceKey[i], ProductAbout.openKey[i], ProductAbout.chineseName[i]));
 //        }
 
-    private ArrayList<PriceBean> getItems() {
-        list = new ArrayList<>(6);
+    public ArrayList<PriceBean> getItems() {
+
         for (int i = 0; i < 6; i++) {
             PriceBean item = new PriceBean();
             item.setTitle(ProductAbout.title[i]);
@@ -141,6 +265,12 @@ public class PriceFragment extends BaseFragment {
         return list;
     }
 
+    @Override
+    public void onClick(View v) {
+
+    }
+
+
     public interface ProductAbout {
 
         int[] title = {
@@ -178,8 +308,8 @@ public class PriceFragment extends BaseFragment {
                 SHARED_PREFERENCE_PRICE_SAUCE_1, SHARED_PREFERENCE_PRICE_SAUCE_2, SHARED_PREFERENCE_PRICE_SAUCE_3
         };
         String[] priceDefault = {
-                "0.01",   "0.01",  "0.01",
-                "0.01",  "0.01",  "0.01",
+                "0.01", "0.01", "0.01",
+                "0.01", "0.01", "0.01",
         };
         String[] openKey = {
                 "", SHARED_PREFERENCE_SWITCH_KERNEL_1, SHARED_PREFERENCE_SWITCH_KERNEL_2,
@@ -191,6 +321,11 @@ public class PriceFragment extends BaseFragment {
         };
     }
 
+    private int currentPosition = -1;
+    String oldProductName;
+    List<String> oldProductNames = new ArrayList<>(6);
+
+
     class PriceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
 
         ArrayList<PriceBean> list;
@@ -203,18 +338,43 @@ public class PriceFragment extends BaseFragment {
             this.inflater = LayoutInflater.from(context);
             this.list = list;
 
-            nameListener = (v, hasFocus) -> {
-                if (!hasFocus) {
-                    String nameKey = (String) v.getTag();
-                    SPUtils.getInstance(App.app).putString(nameKey, ((EditText) v).getText().toString());
-                }
-            };
-            priceListener = (v, hasFocus) -> {
-                if (!hasFocus) {
-                    String priceKey = (String) v.getTag();
-                    SPUtils.getInstance(App.app).putString(priceKey, ((EditText) v).getText().toString());
-                }
-            };
+            for (int i = 0; i < list.size(); i++) {
+                Log.d(TAG, "PriceAdapter2: " + SPUtils.getInstance(App.app).getString(list.get(i).getNameKey(), getString(ProductAbout.defaultName[i])));
+                Log.d(TAG, "PriceAdapter4: " + SPUtils.getInstance(App.app).getString(list.get(i).getPriceKey(), ProductAbout.priceDefault[i]));
+                Log.d(TAG, "PriceAdapter刚开始: ");
+                oldProductName = SPUtils.getInstance(App.app).getString(list.get(i).getNameKey(), getString(ProductAbout.defaultName[i]));
+                oldProductNames.add(oldProductName);
+            }
+//            nameListener = (v, hasFocus) -> {
+//                if (!hasFocus) {
+//                    // 获取当前点击的位置
+//                    currentPosition = recyclerView.getChildAdapterPosition((View) v.getParent());
+//                    String nameKey = (String) v.getTag();
+//                    SPUtils.getInstance(App.app).putString(nameKey, ((EditText) v).getText().toString());
+//                    String newProductName = SPUtils.getInstance(App.app).getString(list.get(currentPosition).getNameKey(), "");
+//                    Log.d(TAG, "PriceAdapter: "
+//                            + "\noldName:" + oldProductNames.get(currentPosition)
+//                            + "\nnewName:" + newProductName);
+//                    if (Global.isVersions == 1) {
+//                        updateProductName(oldProductNames.get(currentPosition), newProductName);
+//                    }
+////                    Hawk.put("PRICEBEAN", list);
+//                    Log.d(TAG, "PriceAdapter: 改了" + currentPosition + "位置的名字");
+//                }
+//            };
+//            priceListener = (v, hasFocus) -> {
+//                Log.d(TAG, "PriceAdapter改了价格0: ");
+//                if (!hasFocus) {
+//                    Log.d(TAG, "PriceAdapter改了价格1: ");
+//                    String priceKey = (String) v.getTag();
+//                    SPUtils.getInstance(App.app).putString(priceKey, ((EditText) v).getText().toString());
+//                    Log.d(TAG, "PriceAdapter改了价格2: " + priceKey + ":" + ((EditText) v).getText().toString());
+//                    Log.d(TAG, "PriceAdapter改了价格3: " + priceBeans);
+//                    if (Global.isVersions == 1) {
+//                        updateDate(priceBeans);
+//                    }
+//                }
+//            };
         }
 
         @NonNull
@@ -266,6 +426,7 @@ public class PriceFragment extends BaseFragment {
             return list == null ? 0 : list.size();
         }
 
+        //这里是开启关闭的地方
         @Override
         public void onClick(View v) {
             int id = v.getId();
@@ -356,6 +517,15 @@ public class PriceFragment extends BaseFragment {
         String priceKey;
         String openKey;
         String chineseName;
+        String priceDefault;
+
+        public String getPriceDefault() {
+            return priceDefault;
+        }
+
+        public void setPriceDefault(String priceDefault) {
+            this.priceDefault = priceDefault;
+        }
 
         public int getTitle() {
             return title;
@@ -437,19 +607,207 @@ public class PriceFragment extends BaseFragment {
             this.chineseName = chineseName;
         }
 
-//        private PriceBean(int title, int nameHint, String iconKey, int defaultIcon, String nameKey,
-//                          String defaultName, int priceHint, String priceKey,
-//                          String openKey, String chineseName) {
-//            setTitle(title);
-//            setNameHint(nameHint);
-//            setDefaultIcon(defaultIcon);
-//            setNameKey(nameKey);
-//            setIconKey(iconKey);
-//            setDefaultName(defaultName);
-//            setPriceHint(priceHint);
-//            setPriceKey(priceKey);
-//            setOpenKey(openKey);
-//            setChineseName(chineseName);
-//        }
+        @Override
+        public String toString() {
+            return "PriceBean{" +
+                    "title=" + title +
+                    ", nameHint=" + nameHint +
+                    ", iconKey='" + iconKey + '\'' +
+                    ", defaultIcon=" + defaultIcon +
+                    ", nameKey='" + nameKey + '\'' +
+                    ", defaultName='" + defaultName + '\'' +
+                    ", priceHint=" + priceHint +
+                    ", priceKey='" + priceKey + '\'' +
+                    ", openKey='" + openKey + '\'' +
+                    ", chineseName='" + chineseName + '\'' +
+                    ", priceDefault='" + priceDefault + '\'' +
+                    '}';
+        }
+    }
+
+    private Map<String, String> mameOfNewPatterns;//存储花型对应的新花型名称
+
+    public void getproducts() {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("clientId", Heartbeat.deviceId);
+        addSubscriptionNew(NoPayOrderStringApi.api.getproducts(params), String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String type) {
+                        Log.d(TAG, "getproducts type onNext: " + type);
+                        Gson gson = new Gson();
+                        List<ProductsBean> userList = gson.fromJson(type, new TypeToken<List<ProductsBean>>() {
+                        }.getType());
+                        ArrayList<GoodsBean> goodsBeanArrayList = Hawk.get(Name.ITEM_GOODS, new ArrayList<>());
+                        ArrayList<PriceFragment.PriceBean> priceBeans = Hawk.get("PRICEBEAN", new ArrayList<>());
+                        //2.将后台获取下来的初始花型名字作为map键,id作为value
+                        flowerTypeIds = new HashMap<>();
+                        mameOfNewPatterns = new HashMap<>();
+                        for (ProductsBean productsBean : userList) {
+                            flowerTypeIds.put(productsBean.getProductName(), productsBean.getId());
+                            Log.d(TAG, "flowerTypeIdsonNext: " + productsBean.getProductName());
+                            Log.d(TAG, "flowerTypeIdsonNext: " + productsBean.getId());
+                        }
+                        for (int i = 0; i < goodsBeanArrayList.size(); i++) {
+                            GoodsBean goodsBean = goodsBeanArrayList.get(i);
+                            goodsBean.setCustomName(mameOfNewPatterns.get(goodsBean.getNameChinese()));
+                        }
+                        Hawk.put("PRICEBEAN", priceBeans);
+                        Hawk.put(Name.ITEM_GOODS, goodsBeanArrayList);
+                        getproductsSuccess();
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        t.printStackTrace();
+                        LogUtil.d("无网络链接", "无网络链接");
+                        Log.d(TAG, "getproducts onError: ");
+                        getproductsFail();
+                    }
+                });
+    }
+
+    public void getproductsFail() {
+        showToast("Error");
+    }
+
+    public void getproductsSuccess() {
+        showToast("Success");
+    }
+
+    /**
+     * 修改商品名称
+     */
+    public void updateProductName(String oldProductName, String newProductName) {
+        String systemId = (String) SharedPreferencesUtils.getParam(Name.SYSTEM_ID, "");
+        if (systemId == null && TextUtils.isEmpty(systemId)) {
+            ToastUtil.showToast(UiUtil.getStringRes(R.string.ljsb));
+            return;
+        }
+        if (flowerTypeIds == null) {
+            return;
+        }
+        Log.d(TAG, "updateProductName: did:" + Heartbeat.deviceId + "、pid:" + flowerTypeIds.get(oldProductName) + "、old:" + oldProductName + "、new:" + newProductName);
+        Log.d(TAG, "updateProductName: 2");
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("clientId", Heartbeat.deviceId);
+        params.put("productId", flowerTypeIds.get(oldProductName));
+        params.put("oldProductName", oldProductName);
+        params.put("newProductName", newProductName);
+        Log.d(TAG, "updateProductName: 3");
+
+        addSubscriptionNew(NoPayOrderStringApi.api.updateProductName(params), String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String type) {
+                        Log.d(TAG, "updateProductName onNext: " + type);
+                        //修改成功
+                        showToast(UiUtil.getStringRes(R.string.modified_success));
+//                        updateProductNameSuccess(newProductName);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        //修改失败
+                        updateProductNameFail(t.getMessage());
+                        t.printStackTrace();
+                        LogUtil.d("无网络链接", "无网络链接" + t.getMessage());
+                        Log.d(TAG, "updateProductName onError: " + t.getMessage());
+
+                    }
+                });
+    }
+
+    public void updateProductNameFail(String errorText) {
+        ToastUtil.showToast("网络异常" + errorText);
+    }
+
+    public void updateProductNameSuccess(String newProductName) {
+        ArrayList<GoodsBean> goodsBeans = Hawk.get(Name.ITEM_GOODS, new ArrayList<GoodsBean>());
+        GoodsBean goodsBean = goodsBeans.get(currentPosition);
+        goodsBean.setCustomName(newProductName);
+        Hawk.put(Name.ITEM_GOODS, goodsBeans);
+
+        ArrayList<PriceFragment.PriceBean> priceBeans = Hawk.get("PRICEBEAN");
+        Log.d(TAG, "updateProductNameSuccess: " + priceBeans.size());
+        if (priceBeans.size() == 0) {
+            List<PriceFragment.PriceBean> priceBeans1 = new ArrayList<>();
+            for (int i = 0; i < com.hboxs.base_library.constant.ProductAbout.getNamesS().length; i++) {
+                PriceFragment.PriceBean priceBean = new PriceFragment.PriceBean();
+                priceBean.setChineseName(com.hboxs.base_library.constant.ProductAbout.getChineseNameS()[i]);
+                priceBeans1.add(priceBean);
+            }
+            Hawk.put("PRICEBEAN", priceBeans1);
+        }
+        priceBeans = Hawk.get("PRICEBEAN");
+        PriceFragment.PriceBean priceBean = priceBeans.get(currentPosition);
+//        priceBean.setCustomName(newProductName);
+        Hawk.put("PRICEBEAN", priceBeans);
+        ToastUtil.showToast(UiUtil.getStringRes(R.string.modified_success));
+
+    }
+
+    public void updateDate(ArrayList<PriceFragment.PriceBean> priceBeans) {
+        if (priceBeans == null || priceBeans.size() <= 0) {
+            ToastUtil.showToast(UiUtil.getStringRes(R.string.no_price_local));
+            return;
+        }
+        String name = "";
+        ArrayList<OrderPriceBean> orderPriceBeans = new ArrayList<>();
+        for (int i = 0; i < priceBeans.size(); i++) {
+            PriceFragment.PriceBean priceBean = priceBeans.get(i);
+            LogUtil.d(TAG, "updateDate11: " + priceBean);
+            name = priceBean.getDefaultName();
+            OrderPriceBean bean = new OrderPriceBean(Heartbeat.deviceId,
+                    priceBean.getPriceDefault(),
+                    priceBean.getDefaultName(),
+                    priceBean.getPriceDefault(),
+                    true);
+            orderPriceBeans.add(bean);
+            Log.d(TAG, "updateDate12: " + bean);
+        }
+        Gson gson = new Gson();
+        String json = gson.toJson(orderPriceBeans);
+        Log.d(TAG, "updateDate: " + json);
+        RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
+        LogUtils.logWrite("商品调价了。");
+        addSubscriptionNew(NoPayOrderStringApi.api.updateProduct(body), String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        LogUtil.d(TAG, "onNextupdateSuccess: " + o);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        LogUtil.d(TAG, "onError: ");
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        t.printStackTrace();
+                    }
+                });
+    }
+
+
+    private CompositeDisposable mDisposables;
+    protected IView mView;
+
+    private void addSubscriptionNew(Observable observable, Class clazz, DisposableObserver observer) {
+        if (mDisposables == null) {
+            mDisposables = new CompositeDisposable();
+        }
+        if (clazz == HttpResult.class) {
+            observable = observable.compose(HttpResultHandler.<String>transformer());
+        }
+        observable
+                .unsubscribeOn(Schedulers.io())
+                .subscribeOn(Schedulers.io())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(observer);
+        mDisposables.add(observer);
     }
 }

+ 266 - 18
app/src/main/java/com/bgy/autosale/ui/operator/fragments/SwitchFragment.java

@@ -6,13 +6,19 @@ import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.LinearLayoutManager;
 import android.support.v7.widget.RecyclerView;
+import android.text.TextUtils;
 import android.util.Log;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.ArrayAdapter;
+import android.widget.Button;
+import android.widget.EditText;
 import android.widget.ImageView;
 import android.widget.RadioButton;
 import android.widget.RadioGroup;
+import android.widget.Spinner;
 import android.widget.TextView;
 
 import com.bgy.autosale.App;
@@ -23,17 +29,43 @@ import com.bgy.autosale.ui.base.BaseFragment;
 import com.bgy.autosale.ui.widget.InfoView;
 import com.bgy.autosale.utils.PlcLog;
 import com.bgy.autosale.utils.SPUtils;
+import com.example.offpay.ictrs232.AmountMoney;
+import com.example.spunsugar.user.model.bean.GoodsBean;
+import com.google.gson.Gson;
+import com.google.gson.reflect.TypeToken;
+import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.beans.ProductsBean;
+import com.hboxs.base_library.constant.Global;
+import com.hboxs.base_library.constant.Heartbeat;
 import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.http.NoPayOrderStringApi;
+import com.hboxs.base_library.http.exception.BaseException;
+import com.hboxs.base_library.http.exception.ExceptionFactory;
+import com.hboxs.base_library.http.observer.HttpResultObserver;
+import com.hboxs.base_library.http.response.HttpResult;
+import com.hboxs.base_library.http.response.HttpResultHandler;
+import com.hboxs.base_library.util.LogUtil;
 import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.hboxs.base_library.util.ToastUtil;
+import com.hboxs.base_library.util.UiUtil;
 import com.orhanobut.hawk.Hawk;
 
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.observers.DisposableObserver;
+import io.reactivex.schedulers.Schedulers;
 
 /**
  * Created by cjx on 2020-12-31
  * 说明:
  */
-public class SwitchFragment extends BaseFragment implements RadioGroup.OnCheckedChangeListener{
+public class SwitchFragment extends BaseFragment implements RadioGroup.OnCheckedChangeListener {
 
     private final String TAG = "SwitchFragment";
 
@@ -53,7 +85,12 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
 
     RadioButton rbAlwaysIdleYes;
     RadioButton rbAlwaysIdleNo;
-
+    RadioButton rbWmdb;
+    RadioButton rbIct;
+    RadioButton rbIsaacYes;
+    RadioButton rbIsaacNo;
+    RadioButton rbMdbLevel3;
+    RadioButton rbMdbLevel2;
     @Override
     public int getViewId() {
         return R.layout.fragment_switch;
@@ -80,8 +117,8 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
         switchAdapter2 = new SwitchAdapter2(getItems2(), getContext());
         recyclerView2.setAdapter(switchAdapter2);
 
-        RadioGroup radioGroup=view.findViewById(R.id.rg_always_idle);
-        radioGroup.setOnCheckedChangeListener(this);
+        RadioGroup rgAlwaysIdle = view.findViewById(R.id.rg_always_idle);
+        rgAlwaysIdle.setOnCheckedChangeListener(this);
         rbAlwaysIdleYes = view.findViewById(R.id.rb_always_idle_yes);
         rbAlwaysIdleNo = view.findViewById(R.id.rb_always_idle_no);
         Boolean alwaysIdle = Hawk.get(Name.ALWAYS_IDLE, false);
@@ -90,6 +127,184 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
         } else {
             rbAlwaysIdleNo.setChecked(true);
         }
+
+        RadioGroup rgIsaac = view.findViewById(R.id.rg_isaac);
+        rgIsaac.setOnCheckedChangeListener(this);
+        rbIsaacYes = view.findViewById(R.id.rb_isaac_yes);
+        rbIsaacNo = view.findViewById(R.id.rb_isaac_no);
+        Boolean isaac = Hawk.get(Name.ISAAC, false);
+        if (isaac) {
+            rbIsaacYes.setChecked(true);
+        } else {
+            rbIsaacNo.setChecked(true);
+        }
+
+        RadioGroup rgProtocol = view.findViewById(R.id.rg_protocol);
+        rgProtocol.setOnCheckedChangeListener(this);
+        rbWmdb = view.findViewById(R.id.rb_wmdb);
+        rbIct = view.findViewById(R.id.rb_ict);
+        String protocol = Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB);
+        if (protocol.equals(Name.WMDB)) {
+            rbWmdb.setChecked(true);
+        } else {
+            rbIct.setChecked(true);
+        }
+
+        RadioGroup rgMdbLevel = view.findViewById(R.id.rg_mdb_level);
+        rgMdbLevel.setOnCheckedChangeListener(this);
+        rbMdbLevel3 = view.findViewById(R.id.rb_mdb_level_3);
+        rbMdbLevel2 = view.findViewById(R.id.rb_mdb_level_2);
+        Boolean MDB_LEVEL = Hawk.get(Name.MDB_LEVEL, false);
+        if (MDB_LEVEL) {
+            rbMdbLevel3.setChecked(true);
+        } else {
+            rbMdbLevel2.setChecked(true);
+        }
+
+        Button btnMdbRate = view.findViewById(R.id.btn_mdb_rate);
+        EditText etMdbRate = view.findViewById(R.id.et_mdb_rate);
+        btnMdbRate.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                String mdbRate = etMdbRate.getText().toString().trim();
+                if ("".equals(mdbRate)) {
+                    ToastUtil.showToast(UiUtil.getStringRes(R.string.not_null));
+                    return;
+                }
+                Hawk.put(Name.MDB_RATE, Integer.valueOf(mdbRate));
+                ToastUtil.showToast(UiUtil.getStringRes(R.string.update_success));
+            }
+        });
+        if (Global.isVersions == 1) {
+            view.findViewById(R.id.ll_abroad_pay_setting).setVisibility(View.GONE);
+            view.findViewById(R.id.ll_mdb_level_select).setVisibility(View.GONE);
+        }
+
+        Spinner spCurrency = view.findViewById(R.id.sp_currency);
+        ArrayAdapter<String> languagegArrayAdapter;
+
+        languagegArrayAdapter = new ArrayAdapter<String>(getContext(), R.layout.spinner_text);
+        languagegArrayAdapter.addAll(AmountMoney.language);
+
+        spCurrency.setAdapter(languagegArrayAdapter);
+        spCurrency.setSelection(languagegArrayAdapter.getPosition(AmountMoney.language[Hawk.get(Name.PAPERTYPE, 0)]), true);
+        spCurrency.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                switch (position) {
+                    case 1:
+                        AmountMoney.earth = AmountMoney.russia;
+                        break;
+                    case 2:
+                        AmountMoney.earth = AmountMoney.malaysia;
+                        break;
+                    case 3:
+                        AmountMoney.earth = AmountMoney.america;
+                        break;
+                    case 4:
+                        AmountMoney.earth = AmountMoney.chinayuan;
+                        break;
+                    case 5:
+                        AmountMoney.earth = AmountMoney.singapore;
+                        break;
+                    case 6:
+                        AmountMoney.earth = AmountMoney.tw;
+                        break;
+                    case 7:
+                        AmountMoney.earth = AmountMoney.tg;
+                        break;
+                    case 8:
+                        AmountMoney.earth = AmountMoney.ysl;
+                        break;
+                    case 9:
+                        AmountMoney.earth = AmountMoney.adly;
+                        break;
+                    case 10:
+                        AmountMoney.earth = AmountMoney.lmny;
+                        break;
+                    case 11:
+                        AmountMoney.earth = AmountMoney.ouyuan;
+                        break;
+                    case 12:
+                        AmountMoney.earth = AmountMoney.bjly;
+                        break;
+                    case 13:
+                        AmountMoney.earth = AmountMoney.yg;
+                        break;
+                    case 14:
+                        AmountMoney.earth = AmountMoney.yd;
+                        break;
+                    case 15:
+                        AmountMoney.earth = AmountMoney.teq;
+                        break;
+                    case 16:
+                        AmountMoney.earth = AmountMoney.mxg;
+                        break;
+                    case 17:
+                        AmountMoney.earth = AmountMoney.blwy;
+                        break;
+                    case 18:
+                        AmountMoney.earth = AmountMoney.jnd;
+                        break;
+                    case 19:
+                        AmountMoney.earth = AmountMoney.xg;
+                        break;
+                    case 20:
+                        AmountMoney.earth = AmountMoney.xxl;
+                        break;
+                    case 21:
+                        AmountMoney.earth = AmountMoney.bl;
+                        break;
+                    case 22:
+                        AmountMoney.earth = AmountMoney.wdml;
+                        break;
+                    case 23:
+                        AmountMoney.earth = AmountMoney.alq;
+                        break;
+                    case 24:
+                        AmountMoney.earth = AmountMoney.rs;
+                        break;
+                    case 25:
+                        AmountMoney.earth = AmountMoney.xyl;
+                        break;
+                    case 26:
+                        AmountMoney.earth = AmountMoney.gsdlj;
+                        break;
+                    case 27:
+                        AmountMoney.earth = AmountMoney.yindu;
+                        break;
+                    case 28:
+                        AmountMoney.earth = AmountMoney.glby;
+                        break;
+                    case 29:
+                        AmountMoney.earth = AmountMoney.jk;
+                        break;
+                    case 30:
+                        AmountMoney.earth = AmountMoney.libiya;
+                        break;
+                    case 31:
+                        AmountMoney.earth = AmountMoney.wukelan;
+                        break;
+                    case 32:
+                        AmountMoney.earth = AmountMoney.lbn;
+                        break;
+                    case 33:
+                        AmountMoney.earth = AmountMoney.rb;
+                        break;
+                    case 0:
+                        return;
+                    default:
+                        break;
+                }
+                Hawk.put(Name.PAPERTYPE, position);
+                Log.d(TAG, "onItemSelected1: 操作了。" + position);
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+
+            }
+        });
     }
 
     @Override
@@ -101,20 +316,27 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
     private ArrayList<SwitchBean> getItems1() {
         ArrayList<SwitchBean> list = new ArrayList<>(4);
 
-        list.add(new SwitchBean(R.string.setting_run_online, Constant.RUN_MODE, Constant.RUN_ONLINE));
-        list.add(new SwitchBean(R.string.setting_run_offline, Constant.RUN_MODE, Constant.RUN_OFFLINE));
+        if (Global.isVersions == 1) {
+            list.add(new SwitchBean(R.string.setting_run_online, Constant.RUN_MODE, Constant.RUN_ONLINE));
+        } else {
+            list.add(new SwitchBean(R.string.setting_run_offline, Constant.RUN_MODE, Constant.RUN_OFFLINE));
+        }
         return list;
     }
 
     private ArrayList<SwitchBean> getItems2() {
         ArrayList<SwitchBean> list = new ArrayList<>(6);
         list.add(new SwitchBean(R.string.setting_pay_free, Constant.PAY_CHANNEL, Constant.PAY_FREE));
-        list.add(new SwitchBean(R.string.setting_pay_pos, Constant.PAY_CHANNEL, Constant.PAY_POS_DEVICE));
-        list.add(new SwitchBean(R.string.setting_pay_online, Constant.PAY_CHANNEL, Constant.PAY_ONLINE));
-        list.add(new SwitchBean(R.string.price_model, Constant.PAY_CHANNEL, Constant.PAY_PRICE_MODEL));
-        list.add(new SwitchBean(R.string.nayax_pay, Constant.PAY_CHANNEL, Constant.PAY_NAYAX_PAY));
-        list.add(new SwitchBean(R.string.nayax_pay_mix, Constant.PAY_CHANNEL, Constant.PAY_NAYAX_PAY_MIX));
-
+        if (Global.isVersions == 1) {
+            list.add(new SwitchBean(R.string.setting_pay_online, Constant.PAY_CHANNEL, Constant.PAY_ONLINE));
+            list.add(new SwitchBean(R.string.online_and_price_model, Constant.PAY_CHANNEL, Constant.PAY_ONLINE_AND_PRICE_MODEL));
+        } else {
+            list.add(new SwitchBean(R.string.setting_pay_pos, Constant.PAY_CHANNEL, Constant.PAY_POS_DEVICE));
+            list.add(new SwitchBean(R.string.price_model, Constant.PAY_CHANNEL, Constant.PAY_PRICE_MODEL));
+            list.add(new SwitchBean(R.string.setting_pay_pos_pay_mix, Constant.PAY_CHANNEL, Constant.PAY_POS_DEVICE_PAY_MIX));
+            list.add(new SwitchBean(R.string.nayax_pay, Constant.PAY_CHANNEL, Constant.PAY_NAYAX_PAY));
+            list.add(new SwitchBean(R.string.nayax_pay_mix, Constant.PAY_CHANNEL, Constant.PAY_NAYAX_PAY_MIX));
+        }
         return list;
     }
 
@@ -124,6 +346,18 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
             Hawk.put(Name.ALWAYS_IDLE, true);
         } else if (checkedId == R.id.rb_always_idle_no) {
             Hawk.put(Name.ALWAYS_IDLE, false);
+        } else if (checkedId == R.id.rb_wmdb) {
+            Hawk.put(Name.NOTE_COMMUNICATION, Name.WMDB);
+        } else if (checkedId == R.id.rb_ict) {
+            Hawk.put(Name.NOTE_COMMUNICATION, Name.ICT);
+        } else if (checkedId == R.id.rb_isaac_yes) {
+            Hawk.put(Name.ISAAC, true);
+        } else if (checkedId == R.id.rb_isaac_no) {
+            Hawk.put(Name.ISAAC, false);
+        } else if (checkedId == R.id.rb_mdb_level_3) {
+            Hawk.put(Name.MDB_LEVEL, true);
+        } else if (checkedId == R.id.rb_mdb_level_2) {
+            Hawk.put(Name.MDB_LEVEL, false);
         }
     }
 
@@ -171,7 +405,6 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
 
             if (sb.key.equals(Constant.PAY_CHANNEL)) {
                 Hawk.put(Name.WMDB, false);
-                Hawk.put(Name.MDB_LEVEL, false);
                 if (sb.value == Constant.PAY_FREE) {//免费模式
                     showFreeTip(v);
                     Log.d(TAG, "onClick: 点击了这里");
@@ -194,27 +427,42 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
                 listener.change();
             }
             if (App.app.payChannel == Constant.PAY_POS_DEVICE) {
-                Log.d(TAG, "onClick2: 选择了刷卡器支付");
-                Hawk.put(Name.MDB_LEVEL, true);
+                Log.d(TAG, "onClick2: 选择了MDB刷卡器支付");
                 Hawk.put(Name.WMDB, true);
                 Hawk.put(Name.NOTE_COMMUNICATION, Name.WMDB);
+                Hawk.put("MDB_COIN", false);
+                Hawk.put("nayax", false);
             } else if (App.app.payChannel == Constant.PAY_PRICE_MODEL) {
                 Log.d(TAG, "onClick2: 选择了纸币支付");
+                Hawk.put(Name.WMDB, true);
+                Hawk.put(Name.NOTE_COMMUNICATION, Name.WMDB);
                 Hawk.put("MDB_COIN", true);
+                Hawk.put("nayax",false);
+            } else if (App.app.payChannel == Constant.PAY_POS_DEVICE_PAY_MIX) {
+                Log.d(TAG, "onClick2: 选择了纸币支付");
                 Hawk.put(Name.WMDB, true);
                 Hawk.put(Name.NOTE_COMMUNICATION, Name.WMDB);
+                Hawk.put("MDB_COIN", true);
+                Hawk.put("nayax",false);
             } else if (App.app.payChannel == Constant.PAY_NAYAX_PAY) {
                 Hawk.put("nayax", true);
-            }else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX){
+                Hawk.put("MDB_COIN", false);
+            } else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX) {
                 Hawk.put("nayax", true);
                 Hawk.put("MDB_COIN", true);
                 Hawk.put(Name.WMDB, true);
                 Hawk.put(Name.NOTE_COMMUNICATION, Name.WMDB);
-            } else{
+            } else if (App.app.payChannel == Constant.PAY_ONLINE_AND_PRICE_MODEL) {
+//                Hawk.put("nayax", true);
+//                Hawk.put("MDB_COIN", true);
+                Hawk.put(Name.WMDB, true);
+                Hawk.put(Name.NOTE_COMMUNICATION, Name.ICT);
+                Hawk.put("nayax", false);
+                Hawk.put("MDB_COIN", false);
+            } else {
                 Hawk.put("nayax", false);
                 Hawk.put("MDB_COIN", false);
                 Hawk.put(Name.WMDB, false);
-                Hawk.put(Name.MDB_LEVEL, false);
             }
 //            if (App.app.payChannel != Constant.PAY_PRICE_MODEL) {
 //                Hawk.put("MDB_COIN", false);

+ 192 - 22
app/src/main/java/com/bgy/autosale/ui/operator/fragments/TechnologySupportFragment.java

@@ -13,6 +13,7 @@ import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.content.ContextCompat;
+import android.support.v4.content.FileProvider;
 import android.support.v7.app.AlertDialog;
 import android.support.v7.widget.AppCompatButton;
 import android.support.v7.widget.LinearLayoutManager;
@@ -25,6 +26,7 @@ import android.view.ViewGroup;
 import android.widget.TextView;
 
 import com.bgy.autosale.App;
+import com.bgy.autosale.BuildConfig;
 import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
 import com.bgy.autosale.entitys.LanguageBean;
@@ -34,16 +36,20 @@ import com.bgy.autosale.payutil.DownServer;
 import com.bgy.autosale.payutil.EtlDialog;
 import com.bgy.autosale.payutil.GetApkInfoListBean;
 import com.bgy.autosale.payutil.MQService;
+import com.bgy.autosale.payutil.OrderPriceBean;
 import com.bgy.autosale.payutil.UpdateDialog;
 import com.bgy.autosale.ui.base.BaseFragment;
 import com.bgy.autosale.ui.operator.SnSettingActivity;
 import com.bgy.autosale.ui.operator.UpdatePasswordActivity;
 import com.bgy.autosale.utils.ReadCacheInfoUtils;
 import com.bgy.autosale.utils.SPUtils;
+import com.example.spunsugar.system.model.bean.PriceBean;
+import com.example.spunsugar.user.model.bean.GoodsBean;
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
 import com.hboxs.base_library.base.BaseApplication;
 import com.hboxs.base_library.base.IView;
+import com.hboxs.base_library.beans.ProductsBean;
 import com.hboxs.base_library.callback.DialogClickListener;
 import com.hboxs.base_library.constant.Global;
 import com.hboxs.base_library.constant.Heartbeat;
@@ -62,6 +68,7 @@ import com.hboxs.base_library.http.response.HttpStringResultHandler;
 import com.hboxs.base_library.util.DrawableSelectorUtils;
 import com.hboxs.base_library.util.FileUtil;
 import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.LogUtils;
 import com.hboxs.base_library.util.LongClickUtils;
 import com.hboxs.base_library.util.SharedPreferencesUtils;
 import com.hboxs.base_library.util.ToastUtil;
@@ -74,6 +81,7 @@ import org.greenrobot.eventbus.ThreadMode;
 
 import java.io.File;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -84,6 +92,7 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
+import okhttp3.RequestBody;
 
 /**
  * Created by cjx on 2020-12-31
@@ -102,8 +111,20 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
     private int ignoreIndex = 0;
     private AppCompatButton btnSystemLink, technologyButton, btnSystemDisconnect;
     private TextView verTv;
-    private final ArrayList<LanguageBean> languages = new ArrayList<>(2);
-
+    private TextView tvTsDeviceId1;
+//    private final ArrayList<LanguageBean> languages = new ArrayList<>(2);
+private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
+        new LanguageBean("简体中文", "zh", "中文"),
+        new LanguageBean("English(英语)", "en", "英语"),
+        new LanguageBean("한국인(韩语)", "ko", "韩语"),
+        new LanguageBean("Русский(俄语)", "ru", "俄语"),
+        new LanguageBean("español(西班牙语)", "es", "西班牙语"),
+        new LanguageBean("čeština(捷克语)", "cs", "捷克语"),
+        new LanguageBean("Deutsch(德语)", "de", "德语"),
+        new LanguageBean("eesti keel(爱沙尼亚语)", "et", "爱沙尼亚语"),
+        new LanguageBean("lietuvių(立陶宛语)", "lt", "立陶宛语"),
+        new LanguageBean("latviski(拉脱维亚语)", "lv", "拉脱维亚语")
+));
     public static TechnologySupportFragment getFragment() {
         return new TechnologySupportFragment();
     }
@@ -130,7 +151,10 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
         btnSystemDisconnect = findViewById(R.id.btn_system_disconnect);
         btnSystemDisconnect.setOnClickListener(this);
         verTv.setText(App.app.getString(R.string.version_information) + ":" + getVersionName());
-
+        tvTsDeviceId1=findViewById(R.id.tv_ts_device_id1);
+        if (Heartbeat.deviceId != null && Heartbeat.deviceId.length() > 6) {
+            tvTsDeviceId1.setText(Heartbeat.deviceId.substring(Heartbeat.deviceId.length() - 6));
+        }
         LongClickUtils.setLongClick(new Handler(), verTv, 3000, new View.OnLongClickListener() {
             @Override
             public boolean onLongClick(View v) {
@@ -169,16 +193,16 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
     }
 
     private TechnologyBean initLanguage() {
-        languages.add(new LanguageBean("简体中文", "zh", "中文"));
-        languages.add(new LanguageBean("English(英语)", "en", "英语"));
-        languages.add(new LanguageBean("한국인(韩语)", "ko", "韩语"));
-        languages.add(new LanguageBean("Русский(俄语)", "ru", "俄语"));
-        languages.add(new LanguageBean("español(西班牙语)", "es", "西班牙语"));
-        languages.add(new LanguageBean("čeština(捷克语)", "cs", "捷克语"));
-        languages.add(new LanguageBean("Deutsch(德语)", "de", "德语"));
-        languages.add(new LanguageBean("eesti keel(爱沙尼亚语)", "et", "爱沙尼亚语"));
-        languages.add(new LanguageBean("lietuvių(立陶宛语)", "lt", "立陶宛语"));
-        languages.add(new LanguageBean("latviski(拉脱维亚语)", "lv", "拉脱维亚语"));
+//        languages.add(new LanguageBean("简体中文", "zh", "中文"));
+//        languages.add(new LanguageBean("English(英语)", "en", "英语"));
+//        languages.add(new LanguageBean("한국인(韩语)", "ko", "韩语"));
+//        languages.add(new LanguageBean("Русский(俄语)", "ru", "俄语"));
+//        languages.add(new LanguageBean("español(西班牙语)", "es", "西班牙语"));
+//        languages.add(new LanguageBean("čeština(捷克语)", "cs", "捷克语"));
+//        languages.add(new LanguageBean("Deutsch(德语)", "de", "德语"));
+//        languages.add(new LanguageBean("eesti keel(爱沙尼亚语)", "et", "爱沙尼亚语"));
+//        languages.add(new LanguageBean("lietuvių(立陶宛语)", "lt", "立陶宛语"));
+//        languages.add(new LanguageBean("latviski(拉脱维亚语)", "lv", "拉脱维亚语"));
 
         TechnologyBean itemBean = new TechnologyBean(ACTION_LANGUAGE);
         itemBean.title = getString(R.string.setting_technology_language);
@@ -468,6 +492,7 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
                     UpdatePasswordActivity.startActivity(getContext(), sale);
                     break;
                 case ACTION_LANGUAGE:
+                    Log.d(TAG, "onClick:ACTION_LANGUAGE "+languages);
                     if (isFastDoubleShake()) {
                         showLanguageSelectDialog();
                     } else {
@@ -521,12 +546,9 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
         Map<String, String> map = new HashMap<>();
         if (Global.isVersions == 0) {//线下
             map.put("model", "SI320en");
-            Log.d(TAG, "update: 更新测试2");
         } else if (Global.isVersions == 2) {//国外线上
-            Log.d(TAG, "update: 更新测试4");
             map.put("model", "SI320en");
         } else {
-            Log.d(TAG, "update: 更新测试5");
             map.put("model", "SI320ch");//线上
         }
         addSubscriptionNew(NoPayOrderStringApi.api.apkinfo(map), String.class,
@@ -775,16 +797,17 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
             case downloadApkSuccess:
                 //下载成功安装
                 Intent intent = new Intent(Intent.ACTION_VIEW);
-                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-                File file = new File(Environment.getExternalStorageDirectory().getPath() + "/apk/" + "ice.apk");
-                intent.setDataAndType(Uri.fromFile(new File(file.getAbsolutePath())),
-                        "application/vnd.android.package-archive");
+                // 给目标应用一个临时的读授权,如果要写权限,则是FLAG_GRANT_WRITE_URI_PERMISSION
+                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+                // 第二个参数就是AndroidManifest中配置的authorities,即包名.fileProvider
+                File file = new File(Environment.getExternalStorageDirectory().getPath() + "/apk/ice.apk");
+                Uri contentUri = FileProvider.getUriForFile(getContext(), ".fileProvider", file);
+                intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
                 startActivity(intent);
                 if (updateDialog != null) {
                     updateDialog.dismiss();
                 }
                 break;
-
             case downloadApkProcess:
                 //下载apk进度更新
                 break;
@@ -794,6 +817,29 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
         }
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(ApiMessageEvent messageEvent) {
+        switch (messageEvent.getName()) {
+            case "statusType":
+                //刷新界面
+                if (etlDialog != null && etlDialog.isShowing()) {
+                    etlDialog.dismiss();
+                }
+                cheeckConnectState(false);
+                getManagerId();
+                EventBus.getDefault().post(new ApiMessageEvent("equimentType", null));
+                break;
+            case "payType":
+                //更新支付方式
+                //  showPayType();
+                break;
+
+            default:
+                break;
+
+        }
+    }
+
     private IView view;
 
     private EtlDialog etlDialog;
@@ -823,8 +869,8 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
                         params.put("gtClientId", Heartbeat.clientId);
                         params.put("equimentType", Name.SI320);
                         systemId = text;
-                        Log.d(TAG, "Heartbeat.managerIdonClickListener2: " + Heartbeat.managerId);
                         Heartbeat.managerId = systemId;
+                        Log.d(TAG, "Heartbeat.managerIdonClickListener2: " + Heartbeat.managerId);
                         init(params);
                         SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 1);
                         btnSystemLink.setText(R.string.connecting);
@@ -846,6 +892,11 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
                 btnSystemLink.setText(param);
             }
             Log.e(TAG, isFrist + ":cheeckConnectState:连接成功: " + connectState);
+            if (Global.UpDateNamePriceSuccess==0){
+                if (Global.isVersions==1){
+//                    getproducts();
+                }
+            }
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
             Heartbeat.deviceId = FileUtil.getDeviceId();
         } else if (connectState == 1) {
@@ -1024,4 +1075,123 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
         EventBus.getDefault().unregister(this);
         super.onStop();
     }
+    private Map<String, Integer> flowerTypeIds;//存储花型对应的id
+    private Map<String,String> mameOfNewPatterns;//存储花型对应的新花型名称
+    private List<String> getProductNameBean = new ArrayList<>();
+    public void getproducts() {
+        HashMap<String, String> params = new HashMap<>();
+        params.put("clientId", Heartbeat.deviceId);
+        addSubscriptionNew(NoPayOrderStringApi.api.getproducts(params),String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String type) {
+                        Log.d(TAG, "getproducts type onNext: "+type);
+                        Gson gson = new Gson();
+                        List<ProductsBean> userList = gson.fromJson(type, new TypeToken<List<ProductsBean>>() {}.getType());
+                        ArrayList<GoodsBean> goodsBeanArrayList = Hawk.get(Name.ITEM_GOODS, new ArrayList<>());
+                        ArrayList<PriceFragment.PriceBean> priceBeans = Hawk.get("PRICEBEAN");
+
+                        //2.将后台获取下来的初始花型名字作为map键,id作为value
+                        flowerTypeIds = new HashMap<>();
+                        mameOfNewPatterns = new HashMap<>();
+                        for (ProductsBean productsBean : userList) {
+                            flowerTypeIds.put(productsBean.getProductName(),productsBean.getId());
+                            Log.d(TAG, "flowerTypeIdsonNext: "+productsBean.getProductName());
+                            Log.d(TAG, "flowerTypeIdsonNext: "+productsBean.getId());
+                            getProductNameBean.add(productsBean.getProductName());
+                        }
+                        for (int i = 0; i < priceBeans.size(); i++) {
+                            updateProductName(getProductNameBean.get(i),priceBeans.get(i).defaultName);
+                        }
+                        for (int i = 0; i < goodsBeanArrayList.size(); i++) {
+                            GoodsBean goodsBean = goodsBeanArrayList.get(i);
+                            goodsBean.setCustomName(mameOfNewPatterns.get(goodsBean.getNameChinese()));
+                        }
+                        Hawk.put("PRICEBEAN",priceBeans);
+                        Hawk.put(Name.ITEM_GOODS,goodsBeanArrayList);
+                        updateDate(priceBeans);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        t.printStackTrace();
+                        LogUtil.d("无网络链接", "无网络链接");
+                        Log.d(TAG, "getproducts onError: ");
+                    }
+                });
+    }
+
+    public void updateProductName(String oldProductName, String newProductName) {
+        Log.d(TAG, "1updateProductName: did:"+Heartbeat.deviceId+"、pid:"+flowerTypeIds.get(oldProductName)+"、old:"+oldProductName+"、new:"+newProductName);
+        HashMap<String, Object> params = new HashMap<>();
+        params.put("clientId", Heartbeat.deviceId);
+        params.put("productId",flowerTypeIds.get(oldProductName));
+        params.put("oldProductName", oldProductName);
+        params.put("newProductName", newProductName);
+        Log.d(TAG, "updateProductName: 3");
+
+        addSubscriptionNew(NoPayOrderStringApi.api.updateProductName(params), String.class,
+                new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String type) {
+                        Log.d(TAG, "updateProductName onNext: " + type);
+                        //修改成功
+                        showToast(UiUtil.getStringRes(R.string.modified_success));
+//                        updateProductNameSuccess(newProductName);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        t.printStackTrace();
+                        showToast(t.getMessage());
+                        Log.d(TAG, "updateProductName onError: "+t.getMessage());
+
+                    }
+                });
+    }
+
+    public void updateDate(List<PriceFragment.PriceBean> priceBeans) {
+        if (priceBeans==null||priceBeans.size()<=0){
+            ToastUtil.showToast(UiUtil.getStringRes(R.string.no_price_local));
+            return;
+        }
+        String name="";
+        ArrayList<OrderPriceBean> orderPriceBeans=new ArrayList<>();
+        for (int i=0;i<priceBeans.size();i++){
+            PriceFragment.PriceBean priceBean = priceBeans.get(i);
+            LogUtil.d(TAG, "updateDate: "+priceBean);
+                name =priceBean.getNameKey();
+            OrderPriceBean bean=new OrderPriceBean(Heartbeat.deviceId,
+                    SPUtils.getInstance(App.app).getString(priceBean.getPriceKey(),"0.01"),
+                    SPUtils.getInstance(App.app).getString(name,priceBean.getDefaultName()),
+                    SPUtils.getInstance(App.app).getString(priceBean.getPriceKey(),"0.01"),
+                    true);
+            orderPriceBeans.add(bean);
+        }
+        Gson gson=new Gson();
+        String json = gson.toJson(orderPriceBeans);
+        Log.d(TAG, "updateDate: "+json);
+        RequestBody body=RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"),json);
+        LogUtils.logWrite("商品调价了。");
+        addSubscriptionNew(NoPayOrderStringApi.api.updateProduct(body),String.class,
+                new HttpResultObserver<String>(mView,getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        LogUtil.d(TAG, "onNextupdateSuccess: "+o);
+                        Global.UpDateNamePriceSuccess=1;
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        LogUtil.d(TAG, "onError: ");
+                        super.onError(t);
+                        BaseException exception = ExceptionFactory.create(t);
+                        t.printStackTrace();
+                    }
+                });
+    }
 }

+ 16 - 12
app/src/main/java/com/bgy/autosale/utils/PlcLog.java

@@ -97,10 +97,12 @@ public class PlcLog {
             System.out.println("初始化日志 " + logFilePath);
             File logFileParent = logFile.getParentFile();
             retFilePaths.clear();
-            for (File log : logFileParent.listFiles()) {
-                String name = log.getName();
-                if (name.length() > 2) {
-                    retFilePaths.add(log.getAbsolutePath());
+            if (logFileParent.listFiles()!=null) {
+                for (File log : logFileParent.listFiles()) {
+                    String name = log.getName();
+                    if (name.length() > 2) {
+                        retFilePaths.add(log.getAbsolutePath());
+                    }
                 }
             }
         }
@@ -119,16 +121,18 @@ public class PlcLog {
         long checkTime = getEffectiveTime();
         //这么做是为了确保一下时间是准的网络时间
         if (current > checkTime) {
-            for (File log : logFile.listFiles()) {
-                String name = log.getName();
-                if (name.startsWith("PLC_")) {
-                    try {
-                        if (current - log.lastModified() > 2592000000L) { // 30天前的日志, 要删除
+            if (logFile.listFiles()!=null) {
+                for (File log : logFile.listFiles()) {
+                    String name = log.getName();
+                    if (name.startsWith("PLC_")) {
+                        try {
+                            if (current - log.lastModified() > 2592000000L) { // 30天前的日志, 要删除
 //                    if (current - log.lastModified() > 172800000) { // 2天前的日志, 要删除
-                            e("CJX", "删除 " + name + " = " + log.delete());
+                                e("CJX", "删除 " + name + " = " + log.delete());
+                            }
+                        } catch (Exception e) {
+                            e.printStackTrace();
                         }
-                    } catch (Exception e) {
-                        e.printStackTrace();
                     }
                 }
             }

+ 3 - 1
app/src/main/java/com/bgy/autosale/utils/SPUtils.java

@@ -5,6 +5,7 @@ import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
 import android.preference.PreferenceManager;
 import android.util.Base64;
+import android.util.Log;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -19,7 +20,7 @@ public class SPUtils {
     public SharedPreferences uiState;
     public static SPUtils mInstance;
     static Context mContext;
-
+    private static final String TAG = "SPUtils";
     public SPUtils(Context context) {
         mContext = context;
         setSharedPreferences(PreferenceManager.getDefaultSharedPreferences(context));
@@ -38,6 +39,7 @@ public class SPUtils {
     }
 
     public Editor putString(String tag, String value) {
+        Log.d(TAG, "putString: "+tag+":"+value);
         editor.putString(tag, value).commit();
         return editor;
     }

+ 0 - 1
app/src/main/res/layout/dialog_mdbcredit_card.xml

@@ -33,7 +33,6 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center"
             android:orientation="vertical">
-
             <ImageView
                 android:id="@+id/iv_qr_code"
                 android:layout_width="@dimen/dp_86"

+ 10 - 8
app/src/main/res/layout/dialog_mix_pay_now.xml

@@ -86,14 +86,18 @@
                 android:layout_height="@dimen/dp_50"
                 android:background="@color/colorPrimaryDark"
                 android:visibility="gone" />
+<LinearLayout
+    android:gravity="center"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
 
             <TextView
                 android:id="@+id/tv_toubi"
-                android:layout_marginLeft="@dimen/dp_100"
-                android:layout_width="wrap_content"
+                android:layout_width="@dimen/dp_150"
+                android:gravity="center"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/iv_toubi"
-                android:layout_marginTop="@dimen/dp_30"
                 android:text="@string/mix_now"
                 android:textColor="@color/colorGray"
                 android:textSize="@dimen/sp_9" />
@@ -104,7 +108,6 @@
                 android:layout_height="wrap_content"
                 android:gravity="center"
                 android:layout_below="@+id/tv_toubi"
-                android:layout_marginLeft="@dimen/dp_105"
                 android:layout_marginTop="@dimen/dp_10">
 
                 <TextView
@@ -121,8 +124,6 @@
                     android:id="@+id/tv_num"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
-                    android:layout_marginLeft="@dimen/dp_4"
-                    android:layout_marginRight="@dimen/dp_4"
                     android:text="20"
                     android:textColor="@color/colorBg"
                     android:textSize="@dimen/sp_17"
@@ -144,7 +145,6 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_below="@+id/ll_title"
-                android:layout_marginLeft="@dimen/dp_105"
                 android:gravity="center"
                 android:layout_marginTop="@dimen/dp_10">
 
@@ -180,14 +180,16 @@
 
             <TextView
                 android:id="@+id/tv_please"
-                android:layout_width="wrap_content"
+                android:layout_width="@dimen/dp_200"
                 android:layout_height="wrap_content"
                 android:layout_below="@id/ll_tips"
                 android:layout_centerHorizontal="true"
+                android:gravity="center"
                 android:layout_marginTop="@dimen/dp_10"
                 android:text="@string/please_coin"
                 android:textColor="@color/colorGray"
                 android:textSize="@dimen/sp_8" />
+</LinearLayout>
 
         </RelativeLayout>
     </LinearLayout>

+ 33 - 3
app/src/main/res/layout/dialog_shopping_trolley_choose_pay.xml

@@ -33,11 +33,28 @@
                     android:textSize="@dimen/sp_10" />
 
             </LinearLayout>
-           
+
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_below="@id/ll_pay_choose"
+                android:layout_height="wrap_content">
+
             <ImageView
                 android:id="@+id/iv_nayax"
                 android:layout_width="@dimen/dp_50"
                 android:layout_height="@dimen/dp_50"
+                android:layout_marginTop="@dimen/dp_16"
+                android:layout_marginRight="@dimen/dp_8"
+                android:padding="@dimen/dp_5"
+                android:layout_toEndOf="@id/iv_qianbi"
+                android:background="@drawable/shape_et_price"
+                android:scaleType="centerInside"
+                android:src="@drawable/icon_xinyongka_pay"
+                android:visibility="gone" />
+            <ImageView
+                android:id="@+id/iv_w_mdb_xinyongka"
+                android:layout_width="@dimen/dp_50"
+                android:layout_height="@dimen/dp_50"
                 android:layout_below="@id/ll_pay_choose"
                 android:layout_marginTop="@dimen/dp_16"
                 android:layout_marginRight="@dimen/dp_8"
@@ -46,8 +63,7 @@
                 android:background="@drawable/shape_et_price"
                 android:scaleType="centerInside"
                 android:src="@drawable/icon_xinyongka_pay"
-                android:visibility="visible" />
-
+                android:visibility="gone" />
 
 
             <ImageView
@@ -63,6 +79,20 @@
                 android:src="@drawable/icon_qianbi_pay"
                 android:visibility="visible" />
 
+            <ImageView
+                android:id="@+id/iv_qr_code"
+                android:layout_width="@dimen/dp_50"
+                android:layout_height="@dimen/dp_50"
+                android:layout_below="@id/ll_pay_choose"
+                android:layout_marginLeft="@dimen/dp_8"
+                android:layout_marginTop="@dimen/dp_16"
+                android:background="@drawable/shape_et_price"
+                android:scaleType="centerInside"
+                android:layout_marginRight="@dimen/dp_8"
+                android:src="@drawable/quibinary"
+                android:visibility="gone" />
+
+            </LinearLayout>
 
             <LinearLayout
                 android:id="@+id/ll_close"

+ 37 - 7
app/src/main/res/layout/fragment_ice_cream.xml

@@ -189,7 +189,7 @@
 
     <FrameLayout
         android:id="@+id/frame_sauce"
-        android:layout_width="@dimen/dp_192"
+        android:layout_width="@dimen/dp_210"
         android:layout_height="match_parent"
         android:layout_marginStart="@dimen/dp_44">
 
@@ -217,7 +217,7 @@
 
         <TextView
             android:id="@+id/dishes_sauce_tip"
-            android:layout_width="@dimen/dp_88_5"
+            android:layout_width="@dimen/dp_120"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical|end"
             android:gravity="center"
@@ -254,7 +254,7 @@
 
     <FrameLayout
         android:id="@+id/frame_kernel"
-        android:layout_width="@dimen/dp_192"
+        android:layout_width="@dimen/dp_210"
         android:layout_height="match_parent"
         android:layout_gravity="end"
         android:layout_marginEnd="@dimen/dp_44">
@@ -355,10 +355,9 @@
 
         <TextView
             android:id="@+id/dishes_kernel_tip"
-            android:layout_width="@dimen/dp_88_5"
+            android:layout_width="@dimen/dp_120"
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical"
-            android:gravity="center"
             android:text="@string/flavor_kernel"
             android:textColor="@android:color/white"
             android:textSize="@dimen/sp_14"
@@ -387,7 +386,7 @@
             android:id="@+id/rl_money_show"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
-            android:visibility="visible"
+            android:visibility="gone"
             android:layout_gravity="bottom"
             android:layout_marginBottom="@dimen/dp_25"
             android:layout_marginLeft="@dimen/dp_20">
@@ -396,7 +395,38 @@
                 android:layout_width="@dimen/dp_88_5"
                 android:layout_height="wrap_content"
                 android:text="@string/have_money"
-                android:textSize="@dimen/dp_15"/>
+                android:textSize="@dimen/dp_12"/>
+        </RelativeLayout>
+        <RelativeLayout
+            android:id="@+id/rl_device_id"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_gravity="right"
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_marginRight="@dimen/dp_5">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
+
+            <TextView
+                android:id="@+id/tv_device_id"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/equipment_no"
+                android:textColor="@color/text_shop_cart"
+                android:textSize="@dimen/dp_10"/>
+
+            <TextView
+                android:id="@+id/tv_device_id1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:text=""
+                android:textColor="@color/text_shop_cart"
+                android:layout_marginRight="@dimen/dp_10"
+                android:textSize="@dimen/sp_10" />
+            </LinearLayout>
+
         </RelativeLayout>
 
     </FrameLayout>

+ 33 - 5
app/src/main/res/layout/fragment_price.xml

@@ -3,13 +3,41 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:orientation="horizontal">
+    android:orientation="vertical">
 
-    <android.support.v7.widget.RecyclerView
-        android:id="@+id/recycler_view"
+    <LinearLayout
+        android:id="@+id/ll_test"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
-        android:overScrollMode="never"
-        android:scrollbars="none" />
+        android:orientation="vertical">
+
+
+        <android.support.v7.widget.RecyclerView
+            android:id="@+id/recycler_view"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:overScrollMode="never"
+            android:scrollbars="none" />
+
+        <RelativeLayout
+            android:layout_width="wrap_content"
+            android:layout_height="@dimen/dp_25"
+            android:layout_gravity="right"
+            android:layout_marginTop="@dimen/dp_20"
+            android:visibility="visible">
+
+            <Button
+                android:id="@+id/btn_confirm_revision"
+                android:layout_width="@dimen/dp_76"
+                android:layout_height="match_parent"
+                android:layout_marginLeft="@dimen/dp_5"
+                android:layout_marginRight="@dimen/dp_20"
+                android:background="@drawable/bg_button_orange"
+                android:text="@string/confirm_revision"
+                android:textColor="@color/colorPrimary"
+                android:textSize="@dimen/sp_9" />
+        </RelativeLayout>
+
+    </LinearLayout>
 
 </LinearLayout>

+ 303 - 65
app/src/main/res/layout/fragment_switch.xml

@@ -12,100 +12,338 @@
         android:layout_height="0dp"
         android:layout_marginTop="@dimen/dp_10"
         android:layout_marginBottom="@dimen/dp_10"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
+        android:background="@drawable/bg_make_progress"
         app:layout_constraintBottom_toBottomOf="parent"
-        android:background="@drawable/bg_make_progress" />
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
         android:id="@+id/run_mode"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
+        android:layout_margin="@dimen/dp_8"
+        android:text="@string/setting_run_mode"
         android:textColor="#333"
+        android:textSize="@dimen/sp_14"
         android:textStyle="bold"
-        android:text="@string/setting_run_mode"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_margin="@dimen/dp_8"
-        android:textSize="@dimen/sp_14" />
+        app:layout_constraintTop_toTopOf="parent" />
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/recycler_view_1"
         android:layout_width="0dp"
-        android:layout_height="@dimen/dp_150"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintEnd_toEndOf="@id/sn_line"
-        app:layout_constraintTop_toBottomOf="@id/run_mode"
-        android:overScrollMode="never"
-        android:scrollbars="none" />
-
-<LinearLayout
-    app:layout_constraintStart_toStartOf="parent"
-    app:layout_constraintTop_toBottomOf="@id/recycler_view_1"
-    android:layout_width="wrap_content"
-    android:layout_centerVertical="true"
-    android:layout_height="wrap_content"
-    android:orientation="vertical"
-    tools:ignore="MissingConstraints">
-    <TextView
-        android:id="@+id/run_mode1"
-        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textColor="#333"
-        android:textStyle="bold"
-        android:text="@string/nayax_model"
-        android:layout_margin="@dimen/dp_8"
-        android:textSize="@dimen/sp_14" />
-    <RadioGroup
-        android:id="@+id/rg_always_idle"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal">
-
-        <RadioButton
-            android:id="@+id/rb_always_idle_yes"
-            android:layout_width="@dimen/dp_60"
-            android:layout_height="@dimen/dp_26"
-            android:gravity="center"
-            android:text="@string/open_wifi"
-            android:textColor="#576478"
-            android:textSize="@dimen/sp_8" />
-
-        <RadioButton
-            android:id="@+id/rb_always_idle_no"
-            android:layout_width="@dimen/dp_60"
-            android:layout_height="@dimen/dp_26"
-            android:layout_marginLeft="@dimen/dp_20"
-            android:gravity="center"
-            android:text="@string/close_wifi"
-            android:textColor="#576478"
-            android:textSize="@dimen/sp_8" />
-    </RadioGroup>
-</LinearLayout>
+        android:overScrollMode="never"
+        android:scrollbars="none"
+        app:layout_constraintEnd_toEndOf="@id/sn_line"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/run_mode" />
+
+    <ScrollView
+        android:layout_width="@dimen/dp_200"
+        android:layout_height="@dimen/dp_250"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/recycler_view_1">
+
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="vertical">
+
+            <LinearLayout
+                android:id="@+id/ll_protocol_setting"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:orientation="vertical"
+                tools:ignore="MissingConstraints">
+                <LinearLayout
+                    android:id="@+id/ll_mdb_level_select"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    tools:ignore="MissingConstraints">
+
+                    <TextView
+                        android:id="@+id/run_mdb_level"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="@string/mdb_level"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/rg_mdb_level"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/rb_mdb_level_3"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:gravity="center"
+                            android:text="L3"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+
+                        <RadioButton
+                            android:id="@+id/rb_mdb_level_2"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:layout_marginLeft="@dimen/dp_20"
+                            android:gravity="center"
+                            android:text="L2"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+                    </RadioGroup>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_protocol_select"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    tools:ignore="MissingConstraints">
+
+                    <TextView
+                        android:id="@+id/run_protocol"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="@string/banknote_exchange_protocol"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/rg_protocol"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/rb_wmdb"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:gravity="center"
+                            android:text="WMDB"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+
+                        <RadioButton
+                            android:id="@+id/rb_ict"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:layout_marginLeft="@dimen/dp_20"
+                            android:gravity="center"
+                            android:text="ICT"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+                    </RadioGroup>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_currency_selection_select"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    tools:ignore="MissingConstraints">
+
+                    <TextView
+                        android:id="@+id/run_currency_selection"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="@string/ict_currency_selection"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <Spinner
+                        android:id="@+id/sp_currency"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_marginLeft="@dimen/dp_20"
+                        android:layout_marginBottom="@dimen/dp_10" />
+
+
+                </LinearLayout>
+
+            </LinearLayout>
+
+            <LinearLayout
+                android:id="@+id/ll_abroad_pay_setting"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:orientation="vertical"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@id/ll_protocol_setting"
+                tools:ignore="MissingConstraints">
+
+                <LinearLayout
+                    android:id="@+id/ll_naxya_model_select"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    tools:ignore="MissingConstraints">
+
+                    <TextView
+                        android:id="@+id/run_mode1"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="@string/nayax_model"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/rg_always_idle"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/rb_always_idle_yes"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:gravity="center"
+                            android:text="@string/open_wifi"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+
+                        <RadioButton
+                            android:id="@+id/rb_always_idle_no"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:layout_marginLeft="@dimen/dp_20"
+                            android:gravity="center"
+                            android:text="@string/close_wifi"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+                    </RadioGroup>
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_mdb_ratio"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical">
+
+                    <TextView
+                        android:id="@+id/tv_mdb_rate"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="@string/mdb_rate"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <LinearLayout
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <EditText
+                            android:id="@+id/et_mdb_rate"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_22"
+                            android:layout_marginLeft="@dimen/dp_20"
+                            android:hint="@string/mdb_rate"
+                            android:inputType="number"
+                            android:textColor="@color/colorHint"
+                            android:textColorHint="@color/colorHint"
+                            android:textSize="@dimen/dp_7" />
+
+                        <Button
+                            android:id="@+id/btn_mdb_rate"
+                            android:layout_width="@dimen/dp_44"
+                            android:layout_height="@dimen/dp_22"
+                            android:layout_marginLeft="@dimen/dp_10"
+                            android:background="@drawable/shape_message_normal"
+                            android:text="@string/update"
+                            android:textColor="#333"
+                            android:textSize="@dimen/dp_8" />
+                    </LinearLayout>
+
+                </LinearLayout>
+
+                <LinearLayout
+                    android:id="@+id/ll_isaac_model_select"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:orientation="vertical"
+                    tools:ignore="MissingConstraints">
+
+                    <TextView
+                        android:id="@+id/run_isaac_mode"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:layout_margin="@dimen/dp_8"
+                        android:text="ISAAC MODEL"
+                        android:textColor="#333"
+                        android:textSize="@dimen/sp_14"
+                        android:textStyle="bold" />
+
+                    <RadioGroup
+                        android:id="@+id/rg_isaac"
+                        android:layout_width="wrap_content"
+                        android:layout_height="wrap_content"
+                        android:orientation="horizontal">
+
+                        <RadioButton
+                            android:id="@+id/rb_isaac_yes"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:gravity="center"
+                            android:text="@string/open_wifi"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+
+                        <RadioButton
+                            android:id="@+id/rb_isaac_no"
+                            android:layout_width="@dimen/dp_60"
+                            android:layout_height="@dimen/dp_26"
+                            android:layout_marginLeft="@dimen/dp_20"
+                            android:gravity="center"
+                            android:text="@string/close_wifi"
+                            android:textColor="#576478"
+                            android:textSize="@dimen/sp_8" />
+                    </RadioGroup>
+                </LinearLayout>
+            </LinearLayout>
+        </LinearLayout>
+
+    </ScrollView>
 
     <TextView
         android:id="@+id/pay_mode"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_centerVertical="true"
+        android:layout_margin="@dimen/dp_8"
+        android:text="@string/setting_pay_mode"
         android:textColor="#333"
+        android:textSize="@dimen/sp_14"
         android:textStyle="bold"
-        android:text="@string/setting_pay_mode"
         app:layout_constraintStart_toEndOf="@id/sn_line"
-        app:layout_constraintTop_toTopOf="parent"
-        android:layout_margin="@dimen/dp_8"
-        android:textSize="@dimen/sp_14" />
+        app:layout_constraintTop_toTopOf="parent" />
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/recycler_view_2"
         android:layout_width="0dp"
         android:layout_height="0dp"
-        app:layout_constraintTop_toBottomOf="@id/pay_mode"
+        android:overScrollMode="never"
+        android:scrollbars="none"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toEndOf="@id/sn_line"
         app:layout_constraintEnd_toEndOf="parent"
-        android:overScrollMode="never"
-        android:scrollbars="none" />
+        app:layout_constraintStart_toEndOf="@id/sn_line"
+        app:layout_constraintTop_toBottomOf="@id/pay_mode" />
 </android.support.constraint.ConstraintLayout>

+ 33 - 0
app/src/main/res/layout/fragment_technology_support.xml

@@ -74,5 +74,38 @@
         </LinearLayout>
 
     </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/rl_ts_device_id"
+        android:layout_width="wrap_content"
+        app:layout_constraintBottom_toBottomOf="parent"
+        android:layout_height="wrap_content"
+        android:layout_marginBottom="@dimen/dp_25"
+        tools:ignore="MissingConstraints">
 
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_marginLeft="@dimen/dp_20">
+
+            <TextView
+                android:id="@+id/tv_ts_device_id"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:text="@string/equipment_no"
+                android:textColor="@color/text_shop_cart"
+                android:textSize="@dimen/sp_12"/>
+
+            <TextView
+                android:id="@+id/tv_ts_device_id1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center_vertical"
+                android:text=""
+
+                android:textColor="@color/text_shop_cart"
+                android:layout_marginRight="@dimen/dp_10"
+                android:textSize="@dimen/sp_12" />
+        </LinearLayout>
+
+    </RelativeLayout>
 </android.support.constraint.ConstraintLayout>

+ 3 - 3
app/src/main/res/layout/item_price.xml

@@ -4,7 +4,7 @@
     android:layout_width="match_parent"
     android:paddingStart="@dimen/dp_20"
     android:paddingEnd="@dimen/dp_20"
-    android:layout_height="@dimen/dp_60">
+    android:layout_height="@dimen/dp_45">
 
     <TextView
         android:id="@+id/item_title"
@@ -24,8 +24,8 @@
         android:layout_height="wrap_content">
         <android.support.v7.widget.AppCompatImageView
             android:id="@+id/item_icon"
-            android:layout_width="@dimen/dp_60"
-            android:layout_height="@dimen/dp_60"
+            android:layout_width="@dimen/dp_42"
+            android:layout_height="@dimen/dp_42"
             android:padding="@dimen/dp_4"
             android:visibility="invisible"/>
     </FrameLayout>

+ 7 - 1
app/src/main/res/values-cs/strings.xml

@@ -62,7 +62,7 @@
     <string name="flavor_multi">Zmrzlina s více příchutěmi</string>
     <string name="flavor_sauce">Sirup +</string>
     <string name="flavor_kernel">+ polevy</string>
-    <string name="shop_cart_add">Přidat do košíku</string>
+    <string name="shop_cart_add">Přidat do \nkošíku</string>
     <string name="make_now">Vytváření</string>
     <string name="shop_cart">Košík</string>
     <string name="shop_cart_pay">Pokladna</string>
@@ -461,5 +461,11 @@
     <string name="nayax_model">Model NaYax:</string>
     <string name="nayax_pay">Platba NaYax</string>
     <string name="nayax_pay_mix">NaYax+smíšená platba</string>
+    <string name="setting_pay_pos_pay_mix">čtečka karet MDB + smíšená platba</string>
+    <string name="online_and_price_model">Dva kódy v jedné platbě + platba papírovými penězi</string>
+    <string name="ict_currency_selection">Výběr měny ICT</string>
+    <string name="banknote_exchange_protocol">Protokol výměny bankovek</string>
+    <string name="mdb_level">Úroveň MDB</string>
+
 </resources>
 <!--捷克语-->

+ 7 - 1
app/src/main/res/values-de/strings.xml

@@ -63,7 +63,7 @@
     <string name="flavor_multi">Eiscreme mit mehreren Geschmacksrichtungen</string>
     <string name="flavor_sauce">Sirup +</string>
     <string name="flavor_kernel">+ Toppings</string>
-    <string name="shop_cart_add">In den Warenkorb legen</string>
+    <string name="shop_cart_add">zum Warenkorb \nhinzufügen</string>
     <string name="make_now">Machen</string>
     <string name="shop_cart">Warenkorb</string>
     <string name="shop_cart_pay">Zur Kasse</string>
@@ -461,5 +461,11 @@
     <string name="nayax_pay">NaYax-Zahlung</string>
     <string name="nayax_pay_mix">NaYax+Mischzahlung</string>
 
+    <string name="setting_pay_pos_pay_mix">MDB-Kartenleser + gemischte Zahlung</string>
+    <string name="online_and_price_model">Zwei Codes in einer Zahlung + Papiergeldzahlung</string>
+    <string name="ict_currency_selection">ICT-Währungsauswahl</string>
+    <string name="banknote_exchange_protocol">Banknotenaustauschprotokoll</string>
+    <string name="mdb_level">MDB-Ebene</string>
+
 </resources>
 <!--德语-->

+ 6 - 0
app/src/main/res/values-en/strings.xml

@@ -462,5 +462,11 @@
     <string name="nayax_model">NaYax model:</string>
     <string name="nayax_pay">NaYax payment</string>
     <string name="nayax_pay_mix">NaYax+mixed payment</string>
+    <string name="setting_pay_pos_pay_mix">MDB card reader + mixed payment</string>
+    <string name="online_and_price_model">Two codes in one payment + paper money payment</string>
+    <string name="ict_currency_selection">ICT currency selection</string>
+    <string name="banknote_exchange_protocol">Banknote Exchange Protocol</string>
+    <string name="mdb_level">MDB level</string>
+
 </resources>
 <!--英语-->

+ 6 - 1
app/src/main/res/values-es/strings.xml

@@ -63,7 +63,7 @@
     <string name="flavor_multi">Helado de múltiples sabores</string>
     <string name="flavor_sauce">Jarabe +</string>
     <string name="flavor_kernel">+ Ingredientes</string>
-    <string name="shop_cart_add">Agregar al carrito</string>
+    <string name="shop_cart_add">Agregar al \ncarrito</string>
     <string name="make_now">Creación</string>
     <string name="shop_cart">Carrito</string>
     <string name="shop_cart_pay">Pagar</string>
@@ -463,6 +463,11 @@
     <string name="nayax_model">Modelo NaYax:</string>
     <string name="nayax_pay">Pago NaYax</string>
     <string name="nayax_pay_mix">NaYax+pago mixto</string>
+    <string name="setting_pay_pos_pay_mix">Lector de tarjetas MDB + pago mixto</string>
+    <string name="online_and_price_model">Dos códigos en un solo pago + pago en papel moneda</string>
+    <string name="ict_currency_selection">Selección de moneda TIC</string>
+    <string name="banknote_exchange_protocol">Protocolo de intercambio de billetes</string>
+    <string name="mdb_level">nivel MDB</string>
 
 </resources>
 <!--西班牙语-->

+ 7 - 1
app/src/main/res/values-et/strings.xml

@@ -63,7 +63,7 @@
     <string name="flavor_multi">Mitme maitsega jäätis</string>
     <string name="flavor_sauce">Siirup +</string>
     <string name="flavor_kernel">+ Lisandid</string>
-    <string name="shop_cart_add">Lisa ostukorvi</string>
+    <string name="shop_cart_add">ostukorvi\n lisama</string>
     <string name="make_now">Valmistamine</string>
     <string name="shop_cart">Korv</string>
     <string name="shop_cart_pay">Kassasse</string>
@@ -460,5 +460,11 @@
     <string name="nayax_model">NaYaxi mudel:</string>
     <string name="nayax_pay">NaYaxi makse</string>
     <string name="nayax_pay_mix">NaYax+segamakse</string>
+    <string name="setting_pay_pos_pay_mix">MDB-kaardilugeja + segamakse</string>
+    <string name="online_and_price_model">Kaks koodi ühes makses + paberrahamakse</string>
+    <string name="ict_currency_selection">IKT valuuta valik</string>
+    <string name="banknote_exchange_protocol">Pangatähtede vahetusprotokoll</string>
+    <string name="mdb_level">MDB tase</string>
+
 </resources>
 <!--爱沙尼亚语-->

+ 6 - 0
app/src/main/res/values-ko/strings.xml

@@ -466,5 +466,11 @@
     <string name="nayax_pay">NaYax 결제</string>
     <string name="nayax_pay_mix">NaYax+혼합 결제</string>
 
+    <string name="setting_pay_pos_pay_mix">MDB 카드 리더기 + 혼합 결제</string>
+    <string name="online_and_price_model">한 번의 결제 + 지폐 결제로 두 개의 코드</string>
+    <string name="ict_currency_selection">ICT 통화 선택</string>
+    <string name="banknote_exchange_protocol">은행권 교환 프로토콜</string>
+    <string name="mdb_level">MDB 수준</string>
+
 </resources>
     <!--韩语-->

+ 7 - 1
app/src/main/res/values-lt/strings.xml

@@ -63,7 +63,7 @@
     <string name="flavor_multi">Įvairių skonių ledai</string>
     <string name="flavor_sauce">Sirupas +</string>
     <string name="flavor_kernel">+ Priedai</string>
-    <string name="shop_cart_add">Įdėti į krepšelį</string>
+    <string name="shop_cart_add">Įdėti į\n krepšelį</string>
     <string name="make_now">Kūrimas</string>
     <string name="shop_cart">Krepšelis</string>
     <string name="shop_cart_pay">Patikra</string>
@@ -460,5 +460,11 @@
     <string name="nayax_pay">NaYax mokėjimas</string>
     <string name="nayax_pay_mix">NaYax + mišrus mokėjimas</string>
 
+    <string name="setting_pay_pos_pay_mix">MDB kortelių skaitytuvas ir mišrus mokėjimas</string>
+    <string name="online_and_price_model">Du kodai vienu mokėjimu + mokėjimas popieriniais pinigais</string>
+    <string name="ict_currency_selection">IRT valiutos pasirinkimas</string>
+    <string name="banknote_exchange_protocol">Banknotų keitimo protokolas</string>
+    <string name="mdb_level">MDB lygis</string>
+
 </resources>
 <!--立陶宛-->

+ 7 - 1
app/src/main/res/values-lv/strings.xml

@@ -64,7 +64,7 @@
     <string name="flavor_multi">Dažādu garšu saldējums</string>
     <string name="flavor_sauce">Sīrups +</string>
     <string name="flavor_kernel">+ Piedevas</string>
-    <string name="shop_cart_add">Pievienot grozam</string>
+    <string name="shop_cart_add">Pievienot \ngrozam</string>
     <string name="make_now">Izgatavošana</string>
     <string name="shop_cart">Grozs</string>
     <string name="shop_cart_pay">Izrakstīšanās</string>
@@ -456,5 +456,11 @@
     <string name="nayax_model">NaYax modelis:</string>
     <string name="nayax_pay">NaYax maksājums</string>
     <string name="nayax_pay_mix">NaYax+jauktais maksājums</string>
+    <string name="setting_pay_pos_pay_mix">MDB karšu lasītājs + jaukts maksājums</string>
+    <string name="online_and_price_model">Divi kodi vienā maksājumā + papīra naudas maksājums</string>
+    <string name="ict_currency_selection">IKT valūtas atlase</string>
+    <string name="banknote_exchange_protocol">Banknošu apmaiņas protokols</string>
+    <string name="mdb_level">MDB līmenis</string>
+
 </resources>
 <!--拉脱维亚-->

+ 7 - 1
app/src/main/res/values-ru/strings.xml

@@ -59,7 +59,7 @@
     <string name="flavor_multi">Мороженое с несколькими вкусами</string>
     <string name="flavor_sauce">Добавить джем +</string>
     <string name="flavor_kernel">+ выберите ядро</string>
-    <string name="shop_cart_add">Добавить в корзину</string>
+    <string name="shop_cart_add">Добавить в\n корзину</string>
     <string name="make_now">Сделать сейчас</string>
     <string name="shop_cart">Корзина</string>
     <string name="shop_cart_pay">Перейти к оплате</string>
@@ -457,5 +457,11 @@
     <string name="nayax_pay">Платеж NaYax</string>
     <string name="nayax_pay_mix">NaYax+смешанный платеж</string>
 
+    <string name="setting_pay_pos_pay_mix">Считыватель карт MDB + смешанная оплата</string>
+    <string name="online_and_price_model">Два кода в одном платеже + оплата бумажными деньгами</string>
+    <string name="ict_currency_selection">Выбор валюты ICT</string>
+    <string name="banknote_exchange_protocol">Протокол обмена банкнот</string>
+    <string name="mdb_level">Уровень MDB</string>
+
 </resources>
     <!--俄语-->

+ 5 - 1
app/src/main/res/values-zh/strings.xml

@@ -463,7 +463,11 @@
     <string name="nayax_model">NaYax模式:</string>
     <string name="nayax_pay">NaYax支付</string>
     <string name="nayax_pay_mix">NaYax+混合支付</string>
-
+    <string name="setting_pay_pos_pay_mix">MDB刷卡器+混合支付</string>
+    <string name="online_and_price_model">二码合一支付+纸币支付</string>
+    <string name="ict_currency_selection">ICT币值选择</string>
+    <string name="banknote_exchange_protocol">纸币器协议</string>
+    <string name="mdb_level">MDB等级</string>
 
 </resources>
 

+ 6 - 1
app/src/main/res/values/strings.xml

@@ -231,7 +231,7 @@
     <string name="setting_run_offline">离线模式</string>
     <string name="setting_pay_mode">收款方式</string>
     <string name="setting_pay_free">免费模式</string>
-    <string name="setting_pay_pos">POS机/钱柜模式</string>
+    <string name="setting_pay_pos">MDB刷卡器</string>
     <string name="setting_pay_online">在线收款模式</string>
 
     <string name="setting_clean_title">清洗配置</string>
@@ -468,6 +468,11 @@
     <string name="nayax_model">NaYax模式:</string>
     <string name="nayax_pay">NaYax支付</string>
     <string name="nayax_pay_mix">NaYax+混合支付</string>
+    <string name="setting_pay_pos_pay_mix">MDB刷卡器+混合支付</string>
+    <string name="online_and_price_model">二码合一支付+纸币支付</string>
+    <string name="ict_currency_selection">ICT币值选择</string>
+    <string name="banknote_exchange_protocol">纸币器协议</string>
+    <string name="mdb_level">MDB等级</string>
 
 </resources>
 

+ 6 - 0
app/src/main/res/xml/filepaths.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<paths xmlns:android="http://schemas.android.com/apk/res/android">
+    <external-path
+        name="apk"
+        path="."/>
+</paths>

+ 2 - 2
config.gradle

@@ -4,8 +4,8 @@ ext {
             "compileSdkVersion"            : 28,
             "minSdkVersion"                : 19,
             "targetSdkVersion"             : 28,
-            "versionCode"                  : 103,
-            "versionName"                  : "1.0.3",
+            "versionCode"                  : 107,
+            "versionName"                  : "1.0.8",
 
             "androidSupport"               : "28.0.0",
             "constraint-layout"            : "1.1.3",

BIN
jniLibs/arm64-v8a/libSerialPortJni.so


BIN
jniLibs/armeabi-v7a/libSerialPortJni.so


BIN
jniLibs/x86/libSerialPortJni.so


BIN
jniLibs/x86_64/libSerialPortJni.so


+ 2 - 4
module_offpay/src/main/java/com/example/offpay/ictrs232/SerialPortUtil.java

@@ -67,7 +67,6 @@ public class SerialPortUtil {
         } catch (IOException e) {
             e.printStackTrace();
         }
-
         getSerialPort();
     }
 
@@ -115,8 +114,6 @@ public class SerialPortUtil {
         //如果传递的数据为12
         lastData=data;
         Log.d(TAG, "sendSerialPort: " + data);
-        Log.d(TAG, "sendSerialPort: " + data);
-        Log.d(TAG, "creditCardVendCancel: 取消支付2start"+data);
         LogUtils.logWrite("WD:" + data);
         try {
             if (outputStream != null) {
@@ -152,7 +149,6 @@ public class SerialPortUtil {
             //条件判断,只要条件为true,则一直执行这个线程
             StringBuilder sber = new StringBuilder();
             String communicAtion = Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB);
-
             while (isStart) {
                 if (inputStream == null) {
                     return;
@@ -193,10 +189,12 @@ public class SerialPortUtil {
                             } else if (Name.ICT.equals(communicAtion)) {
                                 String readString = DataUtils.ByteArrToHex(readData, 0, size);
                                 EventBus.getDefault().post(new WmdbIctMessageEvent(Name.ICT, readString));
+                                Log.d(TAG, "run: WmdbIctMessageEvent ict");
                             }
                         }
                         Thread.sleep(30);
                     } catch (Exception e) {
+                        Log.d(TAG, "run: WmdbIctMessageEvent ict1");
                         e.printStackTrace();
                         sber.delete(0, sber.length());
                     }

+ 2 - 0
module_offpay/src/main/java/com/example/offpay/service/ModuleOffPayInitializer.java

@@ -18,8 +18,10 @@ public class ModuleOffPayInitializer implements ModuleInitializer {
         Intent intent = new Intent(BaseApplication.getContext(), OfflinePayService.class);
         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
             BaseApplication.getContext().startForegroundService(intent);
+            Log.d(TAG, "initialize1: ");
         }else{
             BaseApplication.getContext().startService(intent);
+            Log.d(TAG, "initialize: ");
         }
         Log.d(TAG, "initialize: ");
 

+ 4 - 7
module_offpay/src/main/java/com/example/offpay/service/OfflinePayService.java

@@ -59,7 +59,7 @@ public class OfflinePayService extends Service {
     private static final CharSequence NOTIFICATION_NAME = "OfflinePayService";
     private SerialPortUtil serialPortUtil;
     private Double nowAmountMoney;
-    private String communicAtion = Hawk.get(Name.NOTE_COMMUNICATION, Name.ICT);
+    private String communicAtion = Hawk.get(Name.NOTE_COMMUNICATION, Name.WMDB);
     private BillBeanDao billBeanDao;
     private boolean cardSetupSuccess = false;
 
@@ -115,17 +115,15 @@ public class OfflinePayService extends Service {
         new Handler().postDelayed(new Runnable() {
             @Override
             public void run() {
-                if (Global.isVersions != 1) {
                     if (Name.ICT.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
                         SerialPortUtil.getSerialPortUtil().openSerialPort("/dev/" + Hawk.get(Name.MDBSERIALPORT, "ttyS3"), 9600, 0, 1);
                         SerialPortUtil.getSerialPortUtil().sendSerialPort("3E");
+                        Log.d(TAG, "run: Name.ICT");
                     } else if (Name.WMDB.equals(Hawk.get(Name.NOTE_COMMUNICATION, Name.MDB))) {
                         SerialPortUtil.getSerialPortUtil().openSerialPort("/dev/" + Hawk.get(Name.MDBSERIALPORT, "ttyS3"), 9600, 0, 0);
                         WeaverUtil.billValidatorEscrowPressure();
                     }
 
-
-
                     String communicAtion = Hawk.get(Name.NOTE_COMMUNICATION, Name.ICT);
                     if (Name.WMDB.equals(communicAtion)) {
                         int isSleep = (int) SharedPreferencesUtils.getParam("sleep", -1);
@@ -162,9 +160,6 @@ public class OfflinePayService extends Service {
                         startBillPoll();
                     }
                 }
-
-
-            }
         },5000);
 
     }
@@ -187,6 +182,7 @@ public class OfflinePayService extends Service {
     public void event(WmdbIctMessageEvent messageEvent) {
         String asciiData = (String) messageEvent.getData();
         Log.d(TAG, messageEvent.getName()+"WmdbIctMessageEvent event: "+asciiData);
+        Log.d(TAG, "event: WmdbIctMessageEvent RD:"+asciiData);
         LogUtils.logWrite("RD:" + asciiData);
         switch (messageEvent.getName()) {
             case Name.WMDB:
@@ -409,6 +405,7 @@ public class OfflinePayService extends Service {
             Log.d(TAG, "creditCardReconnection getSerial: "+creditCardReconnection+","+setupSuccess);
             if (creditCardReconnection >= 2) {
                 //如果是soepay,并且已经初始化成功。
+
                 if (issoepay &&cardSetupSuccess == true) {
                     //那么其实已经没有必要了。
                     creditCardReconnection = 0;