Sfoglia il codice sorgente

优化报警逻辑

ccc 1 anno fa
parent
commit
3c68379756
61 ha cambiato i file con 3373 aggiunte e 335 eliminazioni
  1. 23 6
      .idea/misc.xml
  2. 2 1
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Global.java
  3. 1 1
      BaseLibrary/src/main/java/com/hboxs/base_library/constant/Name.java
  4. 53 0
      BaseLibrary/src/main/java/com/hboxs/base_library/event/ErrorApiMessageEvent.java
  5. 3 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java
  6. 3 0
      BaseLibrary/src/main/java/com/hboxs/base_library/http/OrderApi.java
  7. 5 5
      BaseLibrary/src/main/java/com/hboxs/base_library/util/DrawableSelectorUtils.java
  8. 21 0
      BaseLibrary/src/main/res/values-ms/strings.xml
  9. 2 0
      app/src/main/AndroidManifest.xml
  10. 65 15
      app/src/main/java/com/bgy/autosale/App.java
  11. 4 0
      app/src/main/java/com/bgy/autosale/BootReceiver.java
  12. 7 7
      app/src/main/java/com/bgy/autosale/IceCreamDeviceConstants.java
  13. 91 49
      app/src/main/java/com/bgy/autosale/RemoteSupportService.java
  14. 1 1
      app/src/main/java/com/bgy/autosale/entitys/SpecBean.java
  15. 47 0
      app/src/main/java/com/bgy/autosale/helpers/CommunicationHelper.java
  16. 1 1
      app/src/main/java/com/bgy/autosale/helpers/OrderHelper.java
  17. 33 0
      app/src/main/java/com/bgy/autosale/payutil/AddAlarmRecordBean.java
  18. 120 0
      app/src/main/java/com/bgy/autosale/payutil/CoinOrdeBean.java
  19. 34 0
      app/src/main/java/com/bgy/autosale/payutil/EliminateBean.java
  20. 3 1
      app/src/main/java/com/bgy/autosale/payutil/HeartbeatBean.java
  21. 209 38
      app/src/main/java/com/bgy/autosale/payutil/MQService.java
  22. 0 1
      app/src/main/java/com/bgy/autosale/payutil/MdbCreditCardDialog.java
  23. 2 1
      app/src/main/java/com/bgy/autosale/payutil/ShoppingCartBean.java
  24. 27 3
      app/src/main/java/com/bgy/autosale/ui/EasyErrorActivity.java
  25. 18 8
      app/src/main/java/com/bgy/autosale/ui/MainActivity.java
  26. 139 102
      app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java
  27. 28 2
      app/src/main/java/com/bgy/autosale/ui/consumer/MainFragment.java
  28. 151 0
      app/src/main/java/com/bgy/autosale/ui/consumer/ServiceFragment.java
  29. 95 0
      app/src/main/java/com/bgy/autosale/ui/operator/LockActivity.java
  30. 68 0
      app/src/main/java/com/bgy/autosale/ui/operator/SleepSettingActivity.java
  31. 49 10
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/PriceFragment.java
  32. 3 3
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/SwitchFragment.java
  33. 26 7
      app/src/main/java/com/bgy/autosale/ui/operator/fragments/TechnologySupportFragment.java
  34. 21 17
      app/src/main/java/com/bgy/autosale/ui/widget/BatchingView.java
  35. 34 30
      app/src/main/java/com/bgy/autosale/utils/IceCreamErrorUtils.java
  36. 2 2
      app/src/main/res/layout/activity_error.xml
  37. 70 0
      app/src/main/res/layout/activity_lock.xml
  38. 147 0
      app/src/main/res/layout/activity_system_text_setting.xml
  39. 0 1
      app/src/main/res/layout/fragment_main.xml
  40. 17 1
      app/src/main/res/layout/fragment_price.xml
  41. 179 0
      app/src/main/res/layout/fragment_service.xml
  42. 5 5
      app/src/main/res/layout/fragment_switch.xml
  43. 6 6
      app/src/main/res/layout/fragment_technology_support.xml
  44. 6 0
      app/src/main/res/layout/item_switch.xml
  45. 6 4
      app/src/main/res/layout/view_contact.xml
  46. 9 0
      app/src/main/res/values-cs/strings.xml
  47. 9 0
      app/src/main/res/values-de/strings.xml
  48. 10 0
      app/src/main/res/values-en/strings.xml
  49. 8 0
      app/src/main/res/values-es/strings.xml
  50. 8 0
      app/src/main/res/values-et/strings.xml
  51. 8 0
      app/src/main/res/values-hy/strings.xml
  52. 8 0
      app/src/main/res/values-ko/strings.xml
  53. 9 1
      app/src/main/res/values-lt/strings.xml
  54. 10 2
      app/src/main/res/values-lv/strings.xml
  55. 482 0
      app/src/main/res/values-ms/strings.xml
  56. 483 0
      app/src/main/res/values-ro/strings.xml
  57. 10 1
      app/src/main/res/values-ru/strings.xml
  58. 474 0
      app/src/main/res/values-th/strings.xml
  59. 5 1
      app/src/main/res/values-zh/strings.xml
  60. 12 1
      app/src/main/res/values/strings.xml
  61. 1 1
      config.gradle

+ 23 - 6
.idea/misc.xml

@@ -7,6 +7,7 @@
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/shape_btn_back.xml" value="0.141" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/shape_btn_login.xml" value="0.155" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/shape_et_login.xml" value="0.141" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/drawable/shape_message_normal.xml" value="0.112" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout-land/dialog_normal.xml" value="0.21119929453262787" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout/activity_base_web_view.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/BaseLibrary/src/main/res/layout/dialog_normal.xml" value="0.24947916666666667" />
@@ -14,26 +15,42 @@
         <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.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_error.xml" value="0.176" />
         <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_lock.xml" value="0.152" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_main.xml" value="0.2" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_sleep_setting.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/activity_system_text_setting.xml" value="0.176" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/activity_update_password.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/dialog_coin_sucess.xml" value="0.24947916666666667" />
         <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.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_select_icon.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.536" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_clean_finish.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_clean_schedule.xml" value="0.24947916666666667" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_common.xml" value="0.1358695652173913" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_ice_cream.xml" value="0.4655004859086492" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_lock.xml" value="0.176" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_log.xml" value="0.24947916666666667" />
         <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_main.xml" value="0.264" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_operate_check.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.4" />
-        <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/fragment_service.xml" value="0.2484375" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_switch.xml" value="0.1" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_technology_support.xml" value="0.176" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/fragment_warnings.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/item_switch.xml" value="0.4" />
+        <entry key="..\:/Users/Desktop/iceCream-QX/icecream-lite-main/app/src/main/res/layout/item_technology.xml" value="0.4" />
         <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_contact.xml" value="0.6" />
         <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" />

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

@@ -19,6 +19,7 @@ public abstract class Global {
      */
     public static boolean isTrue=false;
 
+    public static int isGetProductName=0;
     /**
      * 控制当前是否为离线版本m
      * false 线上版本
@@ -32,7 +33,7 @@ public abstract class Global {
      * 1:
      * 2:国外线上
      */
-    public static final int isVersions = 2;
+    public static final int isVersions = 1;
 
     /**
      * 信用卡支付方式user

+ 1 - 1
BaseLibrary/src/main/java/com/hboxs/base_library/constant/Name.java

@@ -204,7 +204,7 @@ public interface Name {
     String CHANGE_NUMBER = "CHANGE_NUMBER";//找零库存
     String EARLY_WARNING_CHANGE_NUMBER = "EARLY_WARNING_CHANGE_NUMBER";//找零预警库存
     String CHANGE_ZC = "CHANGE_ZC";//找零暂存功能
-    String WARNING_ALARM = "WARNING_ALARM";//找零预警 true表示执行过了,false报警还没执行
+    String WARNING_ALARM = "WARNING_ALARM";
     //-------------------------------------找零功能相关 ----------------------------------- ----------------------------------- -----------------------------------
 
 

+ 53 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/event/ErrorApiMessageEvent.java

@@ -0,0 +1,53 @@
+package com.hboxs.base_library.event;
+
+/**
+ * @author whw
+ * @time 2019/4/11
+ * @Description 发送推送结果
+ */
+public class ErrorApiMessageEvent {
+
+    private String name;
+
+    private Object data;
+
+    private String level;
+    public ErrorApiMessageEvent(String name, Object data,String level){
+        this.name=name;
+        this.data=data;
+        this.level=level;
+    }
+
+    public String getLevel() {
+        return level;
+    }
+
+    public void setLevel(String level) {
+        this.level = level;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setMessage(String name) {
+        this.name = name;
+    }
+
+    public Object getData() {
+        return data;
+    }
+
+    public void setData(Object data) {
+        this.data = data;
+    }
+
+    @Override
+    public String toString() {
+        return "ErrorApiMessageEvent{" +
+                "name='" + name + '\'' +
+                ", data=" + data +
+                ", level=" + level +
+                '}';
+    }
+}

+ 3 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/NoPayOrderStringApi.java

@@ -233,4 +233,7 @@ public interface NoPayOrderStringApi {
     @GET("api/app_equipment/index/selectCode.htm")
     Observable<String> selectCode(@QueryMap Map<String, String> params);
 
+    //告诉后台消除报警
+    @GET("api/app_alarmRecord/alarmRecodeIndex/eliminateAlarm")
+    Observable<String> eliminateClean(@QueryMap Map<String, String> params);
 }

+ 3 - 0
BaseLibrary/src/main/java/com/hboxs/base_library/http/OrderApi.java

@@ -58,4 +58,7 @@ public interface OrderApi {
     @GET("tCoinOrder/listCoin")
     Observable<HttpResult<String>> orderListCoin(@QueryMap Map<String, Object> params);
 
+    //冰淇淋用这个接口上传订单
+    @POST("tCoinOrder/newSaveCoinOrder")
+    Observable<HttpResult<String>> newSaveCoinOrder(@Body RequestBody body);
 }

+ 5 - 5
BaseLibrary/src/main/java/com/hboxs/base_library/util/DrawableSelectorUtils.java

@@ -218,8 +218,8 @@ public class DrawableSelectorUtils {
         int logoF = 0;
         int width = 0;
         int height = 0;
-        String logo = Hawk.get("logo", "1");
-        if ("1".equals(logo) | "SUNZ".equals(logo)) {
+        String logo = Hawk.get("logo", "7777");
+        if ("1".equals(logo) | "7770".equals(logo)) {
 //            logoF = R.drawable.logo_1;
             width = R.dimen.dp_0;
             height = R.dimen.dp_0;
@@ -348,7 +348,7 @@ public class DrawableSelectorUtils {
         int logoF = 0;
         int width = 0;
         int height = 0;
-        String logo = Hawk.get("logo", "1");
+        String logo = Hawk.get("logo", "7777");
         if ("1".equals(logo) | "SUNZ".equals(logo)) {
             logoF = R.drawable.logo_1;
             width = R.dimen.dp_40;
@@ -485,7 +485,7 @@ public class DrawableSelectorUtils {
     public static void setImageLogoVisi(ImageView view) {
         int logoF = 0;
 
-        String logo = Hawk.get("logo", "1");
+        String logo = Hawk.get("logo", "7777");
         if (("1".equals(logo) | "SUNZ".equals(logo) && Hawk.get(Name.ThemeSwitch, Name.Theme2).equals(Name.Theme2))) {
             logoF = R.drawable.logo_1;
         }
@@ -500,7 +500,7 @@ public class DrawableSelectorUtils {
             activity.setTheme(R.style.dingdiantheme);
             return;
         }
-        String logo = Hawk.get("logo", "1");
+        String logo = Hawk.get("logo", "7777");
         if ("1".equals(logo) | "SUNZ".equals(logo)) {
             activity.setTheme(R.style.AppTheme);
         } else if ("2".equals(logo) | "8647".equals(logo)) {

+ 21 - 0
BaseLibrary/src/main/res/values-ms/strings.xml

@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="equipment_no">Nombor peralatan:</string>
+    <string name="connected_server">bersambung:\n</string>
+    <string name="version_information">Maklumat versi</string>
+    <string name="contacts">Contacts</string>
+    <string name="way_contacts">Maklumat hubungan</string>
+    <string name="mdb_rate">Kadar MDB</string>
+    <string name="update">Update</string>
+    <string name="confirm_revision">Sahkan pengubahsuaian</string>
+    <string name="serverid_title">Kaedah sambungan 1: Sila masukkan ID pengurusan untuk digunakan</string>
+    <string name="apply_connect">Mohon untuk sistem sambungan jauh</string>
+    <string name="server_id">Sila masukkan ID sistem pengurusan</string>
+    <string name="apply_now">Mohon sekarang</string>
+    <string name="cancel">Batal</string>
+    <string name="update_now">Kemas kini sekarang</string>
+    <string name="have_update_content1">Versi baharu ditemui v</string>
+    <string name="hibernation">Teks Cina hibernasi tersuai</string>
+
+</resources>
+<!--马来语-->

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

@@ -64,6 +64,8 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
+        <activity android:name=".ui.operator.LockActivity" />
+        <activity android:name=".ui.operator.SleepSettingActivity" />
 
         <activity
             android:name=".ui.operator.DeviceManagerActivity"

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

@@ -8,6 +8,7 @@ import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.graphics.Typeface;
+import android.os.Bundle;
 import android.util.Log;
 
 import com.bgy.autosale.entitys.ContactBean;
@@ -30,7 +31,12 @@ 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.event.ApiMessageEvent;
+import com.hboxs.base_library.event.ErrorApiMessageEvent;
 import com.hboxs.base_library.util.FileUtil;
+import com.hboxs.base_library.util.HotWifitUtil;
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
 import com.orhanobut.hawk.Hawk;
 
 import org.greenrobot.eventbus.EventBus;
@@ -38,6 +44,7 @@ import org.greenrobot.eventbus.EventBus;
 import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Locale;
 
@@ -76,6 +83,8 @@ public class App extends BaseApplication {
 
     public Locale locale = Locale.CHINA;
 
+    public boolean specMultipleChoices = true;
+
     @SuppressLint("SdCardPath")
     @Override
     public void onCreate() {
@@ -136,10 +145,36 @@ public class App extends BaseApplication {
     }
 
     private void openService() {
+        openHotWifi();//打开后台、前台服务
         openRestService();
         openMqService();//打开mq
     }
-
+    private void openHotWifi() {
+        if (Global.isVersions == 1 | Global.isVersions == 2) {
+            boolean isAutoOpenHot = (boolean) SharedPreferencesUtils.getParam(Name.IS_AUTO_OPENHOT, false);
+            if (!isAutoOpenHot) {
+                Intent intent = new Intent(this, RemoteSupportService.class);
+                Bundle bundle = new Bundle();
+                bundle.putInt("first", 4);
+                intent.putExtras(bundle);
+                startService(intent);
+            } else {
+                HotWifitUtil hotWifitUtil = new HotWifitUtil();
+                String name = hotWifitUtil.getName();
+                String password = hotWifitUtil.getPassword();
+                LogUtil.d(TAG, "openHotWifi: " + name + password);
+                String hotWifi = "HotWifi";
+                Intent intent = new Intent(this, RemoteSupportService.class);
+                intent.putExtra("HotWifi", hotWifi);
+                intent.putExtra("ApName", "sunzee");
+                intent.putExtra("key", "66666666");
+                Bundle bundle = new Bundle();
+                bundle.putInt("first", 4);
+                intent.putExtras(bundle);
+                startService(intent);
+            }
+        }
+    }
     private void openRestService() {
         Intent intent = new Intent(this, RemoteSupportService.class);
         startService(intent);
@@ -191,22 +226,37 @@ public class App extends BaseApplication {
                         break;
                     case BasePlcAgreement.PLC_HEART_REPORT:
                         if (result.data != null) {
+                            Log.d(TAG, "onResult:测试报警1 "+result.message);
                             if (result.data) {
                                 ErrorViewHelper.getInstance().hideErrorView(R.string.setting_plc_connect);
+                                Log.d("上传报警", "onResult: 上传报警:清除了未进入自动售卖的问题");
+                                autoMode.clear();
                             } else {
                                 if (result.message != null) {
                                     String[] lastErrorMessage = result.message.split("-");
+                                    Log.d(TAG, "onResult: "+result.message);
+                                    String prefix = result.message.substring(0, result.message.indexOf('-'));
+                                    Log.d(TAG, "onResult1: "+prefix);
                                     ErrorViewHelper.getInstance().showErrorView(R.string.setting_plc_connect, lastErrorMessage);
+                                    if (autoMode.add(prefix)){
+                                        Log.d("上传报警", "onResult: 上传报警:"+prefix);
+                                        EventBus.getDefault().post(new ErrorApiMessageEvent(Name.WARNING_ALARM, prefix,"1"));
+                                    }
                                 } else {
                                     ErrorViewHelper.getInstance().showErrorView(R.string.setting_plc_connect, new String[]{getString(R.string.error_wait), getString(R.string.make_fail_describe_refund)});
+                                    EventBus.getDefault().post(new ErrorApiMessageEvent(Name.WARNING_ALARM, getString(R.string.error_wait),"1"));
                                 }
                             }
+                        }else {
+                            Log.d(TAG, "onResult: 测试报警5");
+                            autoMode.clear();
                         }
                         break;
                 }
             }
         });
     }
+    private static final HashSet<String> autoMode = new HashSet<>();
 
     public boolean isPlcConnected() {
         return pclDeviceConnected;
@@ -234,19 +284,19 @@ 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.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);
-//        }
+        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);
+        }
     }
 }

+ 4 - 0
app/src/main/java/com/bgy/autosale/BootReceiver.java

@@ -6,6 +6,9 @@ import android.content.Intent;
 import android.os.Build;
 import android.util.Log;
 
+import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.LogUtils;
+
 /**
  * create by cjx on 2023/11/19
  */
@@ -13,6 +16,7 @@ public class BootReceiver extends BroadcastReceiver {
     @Override
     public void onReceive(Context context, Intent intent) {
         Log.d("BootReceiver", "收到:" + intent.getAction());
+        LogUtils.logWrite("安卓屏上电");
         if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {//开机启动广播
             Intent start = new Intent();
             start.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

+ 7 - 7
app/src/main/java/com/bgy/autosale/IceCreamDeviceConstants.java

@@ -7,15 +7,15 @@ package com.bgy.autosale;
 public class IceCreamDeviceConstants {
 
     // 控制机台指令
-    public static final int ORDER_RESET = 1; // 复位
+    public static final int ORDER_RESET = 1; // 复位                              //复位开机
     public static final int ORDER_THAW = 2; // 解冻
-    public static final int ORDER_CLEAN = 3; // 本体搅拌开
+    public static final int ORDER_CLEAN = 3; // 本体搅拌开                         //本体搅拌开
     public static final int ORDER_MANUAL_OPEN = 4; // 手动出料开
     public static final int ORDER_MANUAL_CLOSE = 5; // 手动出料关
-    public static final int ORDER_REFRIGERATION = 6; // 制冷
-    public static final int ORDER_KEEP_FRESH = 7; // 保鲜
+    public static final int ORDER_REFRIGERATION = 6; // 制冷                      //制冷模式
+    public static final int ORDER_KEEP_FRESH = 7; // 保鲜                         //保鲜模式
     public static final int ORDER_STAND_BY = 8; // 待机
-    public static final int ORDER_MODE_AUTO = 9; // 自动/手动模式
+    public static final int ORDER_MODE_AUTO = 9; // 自动/手动模式                  //自动/手动模式(自动的话消费者可以购买冰淇淋)
     public static final int ORDER_STOP = 10; // 本体搅拌关
     public static final int ORDER_MAKE_ORDER = 12; // 模拟下单
     public static final int ORDER_SAUCE_1 = 15; // 果酱1控制
@@ -23,9 +23,9 @@ public class IceCreamDeviceConstants {
     public static final int ORDER_SAUCE_3 = 17; // 果酱3控制
     public static final int ORDER_KERNEL_1 = 18; // 果碎1控制
     public static final int ORDER_KERNEL_2 = 19; // 果碎2控制
-    public static final int ORDER_CUT_DOWN = 20; // 关机
+    public static final int ORDER_CUT_DOWN = 20; // 关机                          //关机(这个功能会把屏幕都给断电了)
     public static final int ORDER_DOOR_CLEAR = 21; // 出餐口清洁
-    public static final int ORDER_OPERATE_CLEAN = 22; // 运营点检、出废料
+    public static final int ORDER_OPERATE_CLEAN = 22; // 运营点检、出废料           //运营点检 (这个会把所有物料都加一遍进行制作)
     public static final int ORDER_MCU_VERSION = 23; // 获取mcu版本
     public static final int ORDER_KERNEL_3 = 24; // 果碎3控制
     public static final int ORDER_POWER_ON = 25; // 远程上电

+ 91 - 49
app/src/main/java/com/bgy/autosale/RemoteSupportService.java

@@ -18,16 +18,15 @@ import android.os.IBinder;
 import android.text.TextUtils;
 import android.util.Log;
 
-import com.bgy.autosale.payutil.DownServer;
+import com.bgy.autosale.payutil.AddAlarmRecordBean;
 import com.bgy.autosale.payutil.HeartbeatBean;
 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;
+import com.hboxs.base_library.base.BaseApplication;
 import com.hboxs.base_library.base.IView;
 import com.hboxs.base_library.beans.PaperInvoiceBean;
 import com.hboxs.base_library.constant.BaseConstant;
@@ -35,6 +34,7 @@ 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;
+import com.hboxs.base_library.event.ErrorApiMessageEvent;
 import com.hboxs.base_library.http.NoPayOrderStringApi;
 import com.hboxs.base_library.http.PayApi;
 import com.hboxs.base_library.http.exception.ApiException;
@@ -55,14 +55,12 @@ import com.igexin.sdk.PushManager;
 import com.orhanobut.hawk.Hawk;
 import com.orhanobut.logger.Logger;
 
-import org.greenrobot.eventbus.EventBus;
 import org.greenrobot.eventbus.Subscribe;
 import org.greenrobot.eventbus.ThreadMode;
 
-import java.util.ArrayList;
-import java.util.Arrays;
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.HashMap;
-import java.util.List;
 import java.util.Map;
 import java.util.Timer;
 import java.util.TimerTask;
@@ -77,9 +75,6 @@ import io.reactivex.functions.Function;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
 import okhttp3.RequestBody;
-import top.keepempty.sph.library.SerialPortHelper;
-import top.keepempty.sph.library.SphCmdEntity;
-import top.keepempty.sph.library.SphResultCallback;
 
 
 /**
@@ -218,30 +213,22 @@ public class RemoteSupportService extends Service {
 //                updateEqeStatus((Integer) messageEvent.getData());
                 break;
             case "eliminate":
-                LogUtils.logWrite("消除报警" + (String) messageEvent.getData());
-                Map<String, String> params = new HashMap<>();
-                params.put("id", (String) messageEvent.getData());
-                addSubscriptionNew(NoPayOrderStringApi.api.eliminate(params), String.class,
-                        new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
+                HashMap<String, String> params = new HashMap<>();
+                params.put("clientId", Heartbeat.deviceId);
+                addSubscriptionNew(NoPayOrderStringApi.api.eliminateClean(params),String.class,
+                        new HttpResultObserver<String>(view, getApplicationContext()) {
                             @Override
                             public void onNext(String s) {
-                                LogUtil.d(TAG, "eliminateApionNext: " + s);
-                                LogUtils.logWrite("消除报警next" + (String) messageEvent.getData());
-
+                                Log.d(TAG, "报警eliminateApionNext: " + s);
+                                LogUtils.logWrite("消除报警next");
                             }
 
                             @Override
                             public void onError(Throwable t) {
                                 super.onError(t);
-                                BaseException exception = ExceptionFactory.create(t);
-                                LogUtil.d(TAG, "eliminateApi onError: ");
-                                LogUtils.logWrite("消除报警error" + (String) messageEvent.getData());
-
+                                Log.d(TAG, "报警eliminateApi onError: "+t.getMessage());
                             }
                         });
-//                if (warringDialog != null) {
-//                    warringDialog.dismiss();
-//                }
                 break;
             case "dosugar":
 //                makingmarshmallows((String) messageEvent.getData());
@@ -410,6 +397,14 @@ public class RemoteSupportService extends Service {
                     }
                 }, 3000);
                 break;
+            case "sessioncomplete":
+                new Handler().postDelayed(new Runnable() {
+                    @Override
+                    public void run() {
+                        WeaverUtil.creditCardSessionComplete();
+                    }
+                },  5000);
+                break;
             case "humidification":
 //                startHumidification();
 //                if (Integer.parseInt(Heartbeat.cabinetTm) > 110) {
@@ -501,10 +496,6 @@ public class RemoteSupportService extends Service {
                 //读取找零信息
 //                startChangeInformation();
                 break;
-            case Name.WARNING_ALARM:
-//                Log.d(TAG, "event: WARNING_ALARM");
-//                myServicePresenter.setError1(1, UiUtil.getStringRes(R.string.warning_alarm));
-                break;
             case "orderInformations":
                 PaperInvoiceBean paperInvoiceBean = (PaperInvoiceBean) messageEvent.getData();
 //                invoiceUtil.Print_Ex(paperInvoiceBean);
@@ -585,6 +576,18 @@ public class RemoteSupportService extends Service {
 
         }
     }
+
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(ErrorApiMessageEvent messageEvent) {
+        switch (messageEvent.getName()){
+            case Name.WARNING_ALARM:
+                Log.d(TAG, "event: WARNING_ALARM"+messageEvent.getData());
+                setError1(1, (String) messageEvent.getData(),messageEvent.getLevel());
+                break;
+        }
+
+    }
     //获取个推id
     private Timer timerGeTui;
     private TimerTask taskGeTui;
@@ -770,6 +773,7 @@ public class RemoteSupportService extends Service {
                     @Override
                     public void onNext(String s) {
                         Logger.i(TAG + "收到结果" + s);
+                        Log.d(TAG, "onNext: 测试  :"+ s);
                         if (s.equals("心跳成功")) {
                             //  ToastUtil.showToast(UiUtil.getStringRes(R.string.heart_success));
                             LogUtil.d(TAG, "onNext: 心跳成功");
@@ -792,15 +796,6 @@ public class RemoteSupportService extends Service {
                 });
     }
 
-//    @Override
-//    public int onStartCommand(Intent intent, int flags, int startId) {
-//
-//        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
-//            createNotificationChannel();
-//        }
-//        return START_STICKY;
-//    }
-//
     @Override
     public int onStartCommand(Intent intent, int flags, int startId) {
         Log.d(TAG, "onStartCommand: ");
@@ -812,7 +807,6 @@ public class RemoteSupportService extends Service {
             extras = intent.getExtras();
         }
         if (extras != null) {
-            int tag = extras.getInt("stopread");
             int heartbeat = extras.getInt("heartbeat");
             if (heartbeat == 3) {
                 stopHeartbeat();
@@ -842,15 +836,6 @@ public class RemoteSupportService extends Service {
         //定义通知行为
         manager1.notify(0, notification);
 
-//        long date = System.currentTimeMillis();
-//        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-//        Date curDate = new Date(date);
-//        String time = formatter.format(curDate);
-//        WarringBean warringBean = new WarringBean();
-//        warringBean.setTime(date);
-//        warringBean.setThingError("asdfasdf");
-//        warringBeanDao.insert(warringBean);
-
         return super.onStartCommand(intent, flags, startId);
     }
     private CompositeDisposable mDisposables;
@@ -924,7 +909,6 @@ public class RemoteSupportService extends Service {
                         BaseException exception = ExceptionFactory.create(t);
                         t.printStackTrace();
                         LogUtils.logWrite("定位:" + t.getMessage());
-
                     }
                 });
     }
@@ -1035,4 +1019,62 @@ public class RemoteSupportService extends Service {
         getDefault().unregister(this);
         Log.d(TAG, "RemoteSupportServiceonDestroy: ");
     }
+
+    public void setError1(int key, String reason,String level) {
+        long date = System.currentTimeMillis();
+        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        Date curDate = new Date(date);
+        String time = formatter.format(curDate);
+        AddAlarmRecordBean addAlarmRecordBean = new AddAlarmRecordBean(reason, Heartbeat.deviceId, time, "",level);
+//        WarringBean warringBean = new WarringBean();
+//        warringBean.setTime(date);
+//        warringBean.setThingError(reason);
+//        getBeanDao().insert(warringBean);
+        Log.d(TAG, "setError1: "+addAlarmRecordBean.toString());
+        Gson gson = new Gson();
+        String json = gson.toJson(addAlarmRecordBean);
+        Log.d(TAG, "setError2报警: "+json);
+        RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json; charset=utf-8"), json);
+        //上传到服务器
+        upError(body, 0);
+    }
+
+    private void upError(RequestBody body, int alarmErrorNumber) {
+        addSubscriptionNew(NoPayOrderStringApi.api.addAlarmRecord(body), String.class,
+                new HttpResultNotActivityObserver<String>(view, BaseApplication.getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        Log.d(TAG, "onNext报警测试1: "+o);
+                        if (o != null) {
+                            Log.d("AddAlarmRecordApi3", "onNext: " + o);
+                        }
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Log.d(TAG, "onNext报警测试2: "+t.getMessage());
+                        if (t instanceof ApiException) {
+                            ApiException a = (ApiException) t;
+                            //后台返回
+                            Log.d(TAG, "acceptmm: " + a.getErrorText());
+                        } else {
+                            new Handler().postDelayed(new Runnable() {
+                                @Override
+                                public void run() {
+                                    //需要重新发送报警
+                                    if (alarmErrorNumber >= 3) {//重试三次。
+                                        return;
+                                    }
+                                    upError(body, alarmErrorNumber + 1);
+                                    Log.d(TAG, "run: asdfasdfasdf");
+                                    LogUtils.logWrite("报警了,但是上传失败,需要重新上传");
+                                }
+                            }, 1000 * 60 * 5);
+                        }
+
+                    }
+                });
+    }
+
 }

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

@@ -31,7 +31,7 @@ public class SpecBean implements Serializable {
     /**
      * 添加时雪糕上的图片效果
      */
-    public Object[] effectImage;
+    public int[] effectImage;
 
     /**
      * 做法名称

+ 47 - 0
app/src/main/java/com/bgy/autosale/helpers/CommunicationHelper.java

@@ -2,6 +2,7 @@ package com.bgy.autosale.helpers;
 
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 
 
 import com.bgy.autosale.App;
@@ -22,9 +23,20 @@ import com.bgy.autosale.plc.IceCreamAgreement;
 import com.bgy.autosale.utils.IceCreamErrorUtils;
 import com.bgy.autosale.utils.PlcLog;
 import com.bgy.autosale.utils.SPUtils;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.event.ApiMessageEvent;
+import com.hboxs.base_library.event.ErrorApiMessageEvent;
+import com.hboxs.base_library.util.LogUtils;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.orhanobut.hawk.Hawk;
 
+import org.greenrobot.eventbus.EventBus;
+
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashSet;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import io.reactivex.android.schedulers.AndroidSchedulers;
@@ -208,7 +220,39 @@ public class CommunicationHelper {
                                 deviceStatus[2] = 1;
                             }
                             IceCreamErrorUtils.getInstance().bindStatus(deviceStatus);
+                            if (deviceStatus[0] == 1 && deviceStatus[2] == 1) {
+                                SharedPreferencesUtils.setParam("open", 1);
+                            } else {
+                                SharedPreferencesUtils.setParam("open", 0);
+                            }
                             parserDeviceStatus();
+                            if (IceCreamErrorUtils.getInstance().getErrorMessage() != null) {
+                                LogUtils.logWrite("机器报警了:");
+                                String[] parts = IceCreamErrorUtils.getInstance().getErrorMessage().split(",");
+                                HashSet<String> tempSet = new HashSet<>();
+                                for (String part : parts) {
+                                    String[] subparts = part.split("-"); // 对每个部分再根据破折号分隔
+                                    String item = subparts[0]; // 分隔后的第一部分
+                                    String number = subparts[1]; // 分隔后的第二部分
+                                    Log.d(TAG, "onResultsubparts: Item: " + item + ", Number: " + number);
+                                    if (itemSet.add(item)){
+                                       EventBus.getDefault().post(new ErrorApiMessageEvent(Name.WARNING_ALARM, item, number));//这里上传报警
+                                        Log.d("上传报警", "onResult: 上传报警111:"+item);
+                                        shouldClearItemSet = false;
+                                    }else {
+                                        shouldClearItemSet=true;
+                                    }
+                                    tempSet.add(item);
+                                }
+                                Log.d("上传报警", "onResult: 上传报警112: "+itemSet+shouldClearItemSet);
+                                if (shouldClearItemSet) {
+                                    itemSet.clear(); // 如果所有的item都已经存在,清空itemSet
+                                    itemSet.addAll(tempSet); // 更新itemSet为tempSet的值
+                                    Log.d(TAG, "上传报警111: 清除");
+                                }
+                            } else {
+                                EventBus.getDefault().post(new ApiMessageEvent("eliminate", null));
+                            }
                         }
                         break;
                 }
@@ -224,6 +268,9 @@ public class CommunicationHelper {
         agreement.connect(0, 9527);
     }
 
+    private static final HashSet<String> itemSet = new HashSet<>();
+//    private static final
+    boolean shouldClearItemSet = true;
     // 退款
     private void refundOrder() {
         synchronized (CommunicationHelper.class) {

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

@@ -295,7 +295,7 @@ public class OrderHelper {
         }
         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]));
+        return stringBuilder.toString()+ SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0], App.app.getString(PriceFragment.ProductAbout.defaultName[0]));
     }
 
     /////////////////////////////////////////

+ 33 - 0
app/src/main/java/com/bgy/autosale/payutil/AddAlarmRecordBean.java

@@ -0,0 +1,33 @@
+package com.bgy.autosale.payutil;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/4/9
+ * @Description 报警记录
+ */
+public class AddAlarmRecordBean implements Serializable {
+    private String alarmContent;
+    private String clientId;
+    private String occurrenceTime;
+    private String remark;
+private String level;
+    public AddAlarmRecordBean(String alarmContent, String clientId, String occurrenceTime, String remark,String level) {
+        this.alarmContent = alarmContent;
+        this.clientId = clientId;
+        this.occurrenceTime = occurrenceTime;
+        this.remark = remark;
+        this.level=level;
+    }
+
+    @Override
+    public String toString() {
+        return "AddAlarmRecordBean{" +
+                "alarmContent='" + alarmContent + '\'' +
+                ", clientId='" + clientId + '\'' +
+                ", occurrenceTime='" + occurrenceTime + '\'' +
+                ", remark='" + remark + '\'' +
+                '}';
+    }
+}

+ 120 - 0
app/src/main/java/com/bgy/autosale/payutil/CoinOrdeBean.java

@@ -0,0 +1,120 @@
+package com.bgy.autosale.payutil;
+
+import java.io.Serializable;
+
+/**
+ * @author whw
+ * @time 2019/5/22
+ * @Description 作用
+ */
+public class CoinOrdeBean implements Serializable {
+
+
+    /**
+     * sn : 123455
+     * name : 棉花糖
+     * clientId : 71963777bd63e0f0a5b6490f04bf1ae4
+     * price : 123
+     * payType : 0
+     * status : 0
+     */
+
+    private String sn;
+    private String name;
+    private String clientId;
+    private double price;
+    private int payType;
+    private String createDate;
+    private String status;
+
+    private Integer productNumber;
+    private String no;
+
+    @Override
+    public String toString() {
+        return "CoinOrdeBean{" +
+                "sn='" + sn + '\'' +
+                ", name='" + name + '\'' +
+                ", clientId='" + clientId + '\'' +
+                ", price=" + price +
+                ", payType=" + payType +
+                ", createDate='" + createDate + '\'' +
+                ", status='" + status + '\'' +
+                ", productNumber=" + productNumber +
+                ", no='" + no + '\'' +
+                '}';
+    }
+
+    public String getNo() {
+        return no;
+    }
+
+    public void setNo(String no) {
+        this.no = no;
+    }
+
+    public Integer getProductNumber() {
+        return productNumber;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(String createDate) {
+        this.createDate = createDate;
+    }
+
+    public String getSn() {
+        return sn;
+    }
+
+    public void setSn(String sn) {
+        this.sn = sn;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getClientId() {
+        return clientId;
+    }
+
+    public void setClientId(String clientId) {
+        this.clientId = clientId;
+    }
+
+    public double getPrice() {
+        return price;
+    }
+
+    public void setPrice(double price) {
+        this.price = price;
+    }
+
+    public int getPayType() {
+        return payType;
+    }
+
+    public void setPayType(int payType) {
+        this.payType = payType;
+    }
+
+    public void setProductNumber(Integer productNumber) {
+        this.productNumber = productNumber;
+    }
+
+}

+ 34 - 0
app/src/main/java/com/bgy/autosale/payutil/EliminateBean.java

@@ -0,0 +1,34 @@
+package com.bgy.autosale.payutil;
+
+/**
+ * @author whw
+ * @time 2019/4/12
+ * @Description 作用
+ */
+public class EliminateBean {
+
+
+    /**
+     * id : xxx
+     * content : xxxxxxx
+     */
+
+    private String id;
+    private String content;
+
+    public String getId() {
+        return id;
+    }
+
+    public void setId(String id) {
+        this.id = id;
+    }
+
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+}

+ 3 - 1
app/src/main/java/com/bgy/autosale/payutil/HeartbeatBean.java

@@ -1,11 +1,13 @@
 package com.bgy.autosale.payutil;
 
+import java.io.Serializable;
+
 /**
  * @author whw
  * @time 2019/4/8
  * @Description 心跳实体
  */
-public class HeartbeatBean {
+public class HeartbeatBean implements Serializable {
 
     private String cabinetHd;//温度
     private String cabinetTm;//湿度

+ 209 - 38
app/src/main/java/com/bgy/autosale/payutil/MQService.java

@@ -1,49 +1,45 @@
 package com.bgy.autosale.payutil;
 
+import static com.hboxs.base_library.util.ToastUtil.showToast;
+
 import android.app.Service;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 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;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
-import android.text.TextUtils;
 import android.util.Log;
 
 
 import com.alibaba.android.arouter.facade.annotation.Route;
 import com.bgy.autosale.App;
+import com.bgy.autosale.Constant;
+import com.bgy.autosale.IceCreamDeviceConstants;
 import com.bgy.autosale.R;
 import com.bgy.autosale.RemoteSupportService;
+import com.bgy.autosale.helpers.CommunicationHelper;
+import com.bgy.autosale.interfaces.SendCallback;
+import com.bgy.autosale.ui.operator.LockActivity;
 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.IceCreamErrorUtils;
 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;
 import com.hboxs.base_library.event.ApiMessageEvent;
-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.AlarmClock;
 import com.hboxs.base_library.beans.ProductsBean;
 import com.hboxs.base_library.constant.BaseConstant;
 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.http.NoPayOrderApi;
 import com.hboxs.base_library.http.NoPayOrderStringApi;
 import com.hboxs.base_library.http.exception.BaseException;
@@ -52,12 +48,10 @@ import com.hboxs.base_library.http.observer.HttpResultNotActivityObserver;
 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.AlarmManagerUtil;
 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.SharedPreferencesUtils;
-import com.hboxs.base_library.util.ToastUtil;
 import com.hboxs.base_library.util.UiUtil;
 import com.orhanobut.hawk.Hawk;
 import com.rabbitmq.client.AMQP;
@@ -79,12 +73,8 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.HttpURLConnection;
 import java.net.URL;
-import java.net.URLConnection;
-import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Calendar;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -95,10 +85,9 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
 import io.reactivex.disposables.CompositeDisposable;
 import io.reactivex.observers.DisposableObserver;
 import io.reactivex.schedulers.Schedulers;
-import okhttp3.RequestBody;
 
 @Route(path = "/module_app/mqservice")
-public class MQService extends Service {
+public class MQService extends Service implements SendCallback {
 
     private static final String TAG = "MQService";
     ConnectionFactory factory;
@@ -127,6 +116,8 @@ public class MQService extends Service {
     private boolean isSetSuccess = false;   //是否置为成功
     private boolean isRstSuccess = false;   //是否复位成功
     private NetWorkBroadCastReciver mNetWorkBroadCastReciver;
+    private boolean isManualMake = false;
+
 
     private void getMessage(Message msg) {
 
@@ -152,7 +143,7 @@ public class MQService extends Service {
 //                savePas(gson, baseBean, Name.GUEST);
                 break;
             case "adminPwd":
-//                savePas(gson, baseBean, Name.ADMIN);
+                savePas(gson, baseBean, Name.ADMIN);
                 break;
             case "pay_success":
                 pay(gson, baseBean, kind);
@@ -169,7 +160,7 @@ public class MQService extends Service {
                 break;
             case "phone":
                 //联系方式
-//                saveContacts(gson, baseBean, kind);
+                saveContacts(gson, baseBean, kind);
                 break;
             case "pushTimeRule"://广告是按照这里来的。
                 //广告规则
@@ -187,9 +178,12 @@ public class MQService extends Service {
 //                    }
 //                }
                 break;
+            case "machineReset":
+                CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_RESET, this);
+                break;
             case "eqeStatus":
                 //远程开关机
-//                openOrClose(gson, baseBean, kind);
+                openOrClose(gson, baseBean, kind);
                 break;
             case "block":
                 //锁机
@@ -197,7 +191,7 @@ public class MQService extends Service {
                 break;
             case "is_sleep":
 //                LogUtils.logWrite("远程操作休眠");
-//                sleep(baseBean.getKind_data());
+                sleep(baseBean.getKind_data());
                 break;
             case "Param"://远程修改参数
 //                UpdateAloneParam(baseBean.getKind_data());
@@ -232,10 +226,15 @@ public class MQService extends Service {
                 break;
             case "eliminate":
                 //todo 消除报警,并且告知后台消除报警成功。
+
+//                if (IceCreamErrorUtils.getInstance().getErrorMessage()!=null){
+//                    EventBus.getDefault().post(new ApiMessageEvent(Name.WARNING_ALARM,IceCreamErrorUtils.getInstance().getErrorMessage()));
+//                }
 //                eliminateApi(gson, baseBean, kind);
                 break;
             case "dosugar":
                 //远程制作棉花糖
+                CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_OPERATE_CLEAN, this);
 //                EventBus.getDefault().post(new ApiMessageEvent("dosugar", baseBean.getKind_data()));
                 break;
             case "alarmClock":
@@ -279,10 +278,11 @@ public class MQService extends Service {
                 break;
             case "updateLogo":
                 //修改logo
-//                updateLogo(gson, baseBean, kind);
+                updateLogo(gson, baseBean, kind);
+                EventBus.getDefault().post(new ApiMessageEvent("updateUI","1"));
                 break;
             case "updateProductsPrice"://更新价格
-//                getProductPrice();
+                getProductPrice();
                 break;
             case "humidityParameters"://区间参数
 //                humidityParameters(baseBean.getKind_data());
@@ -305,8 +305,8 @@ public class MQService extends Service {
 //                pay(gson, baseBean, kind);
                 break;
             case "sleepDesc":
-//                String hibernation = baseBean.getKind_data();
-//                sleepDesc(hibernation);
+                String hibernation = baseBean.getKind_data();
+                sleepDesc(hibernation);
                 break;
             case "paymentType"://修改支付方式
 //                String kind_data1 = baseBean.getKind_data();
@@ -327,6 +327,27 @@ public class MQService extends Service {
             case "couponStatus"://  关闭优惠券识别字符串 0:关闭,1:开启
 //                EventBus.getDefault().post(new ApiMessageEvent("couponStatus", baseBean.getKind_data()));
                 break;
+            case "restartAndroid"://重启安卓屏
+                try {
+                    Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot"});
+                    proc.waitFor();
+                } catch (Exception ex) {
+                    ex.printStackTrace();
+                }
+                break;
+            case "workingMode"://雪糕机的工作模式(0:制冷,1:搅拌,2:保鲜)
+               String mode= baseBean.getKind_data();
+                if (mode.equals("0")){
+                    LogUtils.logWrite("远程制冷");
+                    CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_REFRIGERATION, this);
+                }else if (mode.equals("1")){
+                    LogUtils.logWrite("远程搅拌");
+                    CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CLEAN, this);
+                }else if (mode.equals("2")){
+                    LogUtils.logWrite("远程保鲜");
+                    CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_KEEP_FRESH, this);
+                }
+                break;
             default:
                 break;
         }
@@ -423,18 +444,18 @@ public class MQService extends Service {
         Log.d(TAG, "appStatusType: " + appStatusType);
         if (appStatusType.getStatus().equals("rejected")) {
             //拒绝
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected));
+            showToast(UiUtil.getStringRes(R.string.rejected));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 0);
             Log.e(TAG, "statusType: 申请拒绝");
         } else if (appStatusType.getStatus().equals("agreed")) {
             //申请通过
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected1));
+            showToast(UiUtil.getStringRes(R.string.rejected1));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
             Log.e(TAG, "statusType: 申请通过");
             SharedPreferencesUtils.setParam(Name.SYSTEM_ID, appStatusType.getManagerId());
         } else if (appStatusType.getStatus().equals("agreed1")) {
-            ToastUtil.showToast("第二次");
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected1));
+            showToast("第二次");
+            showToast(UiUtil.getStringRes(R.string.rejected1));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
             Log.e(TAG, "statusType: 申请通过");
             SharedPreferencesUtils.setParam(Name.SYSTEM_ID, appStatusType.getManagerId());
@@ -459,18 +480,18 @@ public class MQService extends Service {
         String s = gson.fromJson(json, String.class);
         if (s.equals("rejected")) {
             //拒绝
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected));
+            showToast(UiUtil.getStringRes(R.string.rejected));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 0);
             Log.e(TAG, "statusType: 申请拒绝");
         } else if (s.equals("agreed")) {
             //申请通过
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected1));
+            showToast(UiUtil.getStringRes(R.string.rejected1));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
             Log.e(TAG, "statusType: 申请通过");
             SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
         } else if (s.equals("agreed1")) {
-            ToastUtil.showToast("第二次");
-            ToastUtil.showToast(UiUtil.getStringRes(R.string.rejected1));
+            showToast("第二次");
+            showToast(UiUtil.getStringRes(R.string.rejected1));
             SharedPreferencesUtils.setParam(Name.CONNECT_STATE, 2);
             Log.e(TAG, "statusType: 申请通过");
             SharedPreferencesUtils.setParam(Name.SYSTEM_ID, Heartbeat.managerId);
@@ -950,7 +971,7 @@ public class MQService extends Service {
                                     public void run() {
                                         while (netConnectedNumber < 10) { // 当重连次数小于10时执行循环
                                             try {
-                                                Log.d(TAG, "isNetConnected7: "+netConnectedNumber);
+                                                Log.d(TAG, "isNetConnected7: " + netConnectedNumber);
                                                 Thread.sleep(10000); // 等待10秒后再次执行
                                                 isNetConnected(getApplicationContext());
                                                 netConnectedNumber++; // 增加重连次数
@@ -971,7 +992,7 @@ public class MQService extends Service {
         }).start();
     }
 
-    private  int netConnectedNumber = 0;
+    private int netConnectedNumber = 0;
 
     //获取mq中的相关信息
     private void getAddQueue() {
@@ -1181,4 +1202,154 @@ public class MQService extends Service {
                 .subscribe(observer);
         mDisposables.add(observer);
     }
+
+    @Override
+    public void callBack(boolean ok, int[] result) {
+        AndroidSchedulers.mainThread().scheduleDirect(new Runnable() {
+            @Override
+            public void run() {
+                showToast(ok ? App.app.getString(R.string.setting_plc_send_success) : App.app.getString(R.string.setting_plc_send_fail));
+            }
+        });
+    }
+
+    private void updateLogo(Gson gson, BaseBean baseBean, String kind) {
+        String s = baseBean.getKind_data();
+        Log.d(TAG, "updateLogo: " + s);
+//        if ("1".equals(s) || "2".equals(s) || "3".equals(s) || "4".equals(s) ||
+//                "5".equals(s) || "6".equals(s) || "7".equals(s) || "8".equals(s)||
+//                "9".equals(s)|| "10".equals(s)|| "11".equals(s)|| "12".equals(s)|| "14".equals(s)) {
+        if ("SUNZ".equals(s) || "7770".equals(s) || "8647".equals(s) || "7264".equals(s) || "1932".equals(s) ||
+                "2381".equals(s) || "0291".equals(s) || "1313".equals(s) || "3103".equals(s) ||
+                "4873".equals(s) || "5291".equals(s) || "9284".equals(s) || "2222".equals(s)
+                || "3212".equals(s) || "3535".equals(s) || "1921".equals(s) || "3624".equals(s)
+                || "2019".equals(s) || "7391".equals(s) || "0924".equals(s) || "9427".equals(s) || "0735".equals(s)
+                || "5769".equals(s) || "6894".equals(s) || "8123".equals(s) || "5217".equals(s) || "6431".equals(s)
+                || "7777".equals(s) || "8080".equals(s) || "6702".equals(s) || "7772".equals(s)) {
+            Hawk.put("logo", s);
+            Hawk.get("logo", "7777");
+        }
+    }
+
+    /**
+     * 远程开关机
+     * @param gson
+     * @param baseBean
+     * @param kind
+     */
+    private void openOrClose(Gson gson, BaseBean baseBean, String kind) {
+        String kind_data = baseBean.getKind_data();
+        Log.d(TAG, "openOrClose: " + baseBean);
+        if ((int) SharedPreferencesUtils.getParam(Name.toComplete, 0) == 1) {
+            Global.isSave = true;
+        }
+        if (kind_data.equals("0")) {
+            CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CUT_DOWN, this);
+        } else if (kind_data.equals("1")) {
+            CommunicationHelper.getInstance().sendControl(IceCreamDeviceConstants.ORDER_CUT_DOWN, this);
+        }
+    }
+
+    private void sleep(String baseBean) {
+        if (baseBean.equals("1")) {
+            //睡眠
+            Intent intent = new Intent(this, LockActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(intent);
+        } else {
+            SharedPreferencesUtils.setParam("sleep", 1);
+            Intent intent = new Intent(this, MainActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(intent);
+
+            HashMap<String, Object> params = new HashMap<>();
+            params.put("clientId", Heartbeat.deviceId);
+            params.put("is_sleep", false);
+            addSubscriptionNew(NoPayOrderStringApi.api.updateSleep(params), String.class,
+                    new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
+                        @Override
+                        public void onNext(String data) {
+
+                        }
+
+                        @Override
+                        public void onError(Throwable t) {
+                            super.onError(t);
+
+                        }
+                    });
+        }
+        // 如果没跳到锁机界面 上传锁机失败
+        new Handler().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                boolean isSuccess = (boolean) SharedPreferencesUtils.getParam("sleep_state", false);
+                if (isSuccess) {
+                    //进行网络请求
+                    LogUtil.d(TAG, "run: 睡眠状态上传false");
+                    HashMap<String, Object> params = new HashMap<>();
+                    params.put("clientId", Heartbeat.deviceId);
+                    params.put("is_sleep", false);
+                    addSubscriptionNew(NoPayOrderStringApi.api.UpdateBlockApi(params), String.class,
+                            new HttpResultNotActivityObserver<String>(view, getApplicationContext()) {
+                                @Override
+                                public void onNext(String data) {
+
+                                }
+
+                                @Override
+                                public void onError(Throwable t) {
+                                    super.onError(t);
+
+                                }
+                            });
+                }
+                SharedPreferencesUtils.setParam("block_state", false);
+
+            }
+        }, 1000 * 10);
+    }
+
+    private void sleepDesc(String hibernation) {
+        if (hibernation != null && !"".equals(hibernation)) {
+            Hawk.put(Name.HIBERNATION, hibernation);
+        } else {
+            Hawk.put(Name.HIBERNATION, "");
+        }
+        EventBus.getDefault().post(new ApiMessageEvent("sleepDesc", null));
+    }
+
+    private void saveContacts(Gson gson, BaseBean baseBean, String kind) {
+        String json = baseBean.getKind_data();
+        Log.e(TAG, "saveContacts:json= " + json);
+        Log.e(TAG, "saveContacts:  " + json.contains(":"));
+
+        if (json.contains(":")) {
+            //获取:后的数据(广告规则id)
+            String contactsWay = json.substring(json.lastIndexOf(":") + 1, json.length());
+            Log.e(TAG, "saveContacts: 联系方式=" + contactsWay);
+            //去掉:的值
+            String contactsName = json.substring(0, json.lastIndexOf(":"));
+            Log.e(TAG, "saveContacts: 联系人=" + contactsName);
+            Hawk.put(Name.CONTACTS_NUM, contactsName);
+            Hawk.put(Name.CONTACTS_NAME, contactsWay);
+            EventBus.getDefault().post(new ApiMessageEvent(kind, null));
+        }
+    }
+
+    private void savePas(Gson gson, BaseBean baseBean, String type) {
+        String json = baseBean.getKind_data();
+        String s = gson.fromJson(json, String.class);
+        SPUtils.getInstance(this).putString(Constant.SHARE_PREFERENCE_MANAGER_PWD,s);
+    }
+
+    /**
+     * 上传服务器发送过来的报警id
+     */
+    private void eliminateApi(Gson gson, BaseBean baseBean, String kind) {
+        String json = baseBean.getKind_data();
+        EliminateBean eliminateApi = gson.fromJson(json, EliminateBean.class);
+        EventBus.getDefault().post(new ApiMessageEvent("eliminate", eliminateApi.getId()));
+
+    }
 }

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

@@ -129,6 +129,5 @@ public class MdbCreditCardDialog extends FrameLayout implements View.OnClickList
                 dismiss();
                 break;
         }
-
     }
 }

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

@@ -1,11 +1,12 @@
 package com.bgy.autosale.payutil;
 
+import java.io.Serializable;
 import java.util.ArrayList;
 
 /**
  * 购物车bean
  */
-public class ShoppingCartBean {
+public class ShoppingCartBean implements Serializable {
     private int id;//商品id
     private String imageUrl;//商品图片
     private String shoppingName;//商品名字

+ 27 - 3
app/src/main/java/com/bgy/autosale/ui/EasyErrorActivity.java

@@ -8,6 +8,7 @@ import android.os.Bundle;
 import android.support.annotation.Nullable;
 import android.support.v7.widget.AppCompatImageView;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.View;
 import android.widget.TextView;
 
@@ -20,6 +21,13 @@ import com.bgy.autosale.ui.operator.DeviceManagerActivity;
 import com.bgy.autosale.ui.operator.SnSettingActivity;
 import com.bgy.autosale.ui.widget.ContactView;
 import com.bgy.autosale.utils.ReadCacheInfoUtils;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.event.ApiMessageEvent;
+import com.orhanobut.hawk.Hawk;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
 
 
 /**
@@ -28,6 +36,7 @@ import com.bgy.autosale.utils.ReadCacheInfoUtils;
  */
 public class EasyErrorActivity extends BaseScanGunActivity {
 
+    private static final String TAG = "EasyErrorActivity";
     private BroadcastReceiver receiver;
 
     private TextView tip1View;
@@ -38,6 +47,16 @@ public class EasyErrorActivity extends BaseScanGunActivity {
     private long prevClickTime = 0L;
 
     private boolean isVisable = false;
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(ApiMessageEvent messageEvent) {
+        switch (messageEvent.getName()) {
+            case "phone":
+                contactView.setInfo(getString(R.string.way_contacts)+":"+ Hawk.get(Name.CONTACTS_NAME,""), //电话
+                        getString(R.string.contacts)+":"+Hawk.get(Name.CONTACTS_NUM,""));//联系人
+                break;
+        }
+    }
     public static void startActivity(Context context, String[] message) {
         if(Constant.LOGIN_DEBUG){
             return;
@@ -51,6 +70,7 @@ public class EasyErrorActivity extends BaseScanGunActivity {
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
         setContentView(R.layout.activity_error);
 
         tip1View = findViewById(R.id.error_tips);
@@ -144,6 +164,7 @@ public class EasyErrorActivity extends BaseScanGunActivity {
     @Override
     protected void onDestroy() {
         super.onDestroy();
+        EventBus.getDefault().unregister(this);
         if (receiver != null) {
             unregisterReceiver(receiver);
         }
@@ -177,18 +198,21 @@ public class EasyErrorActivity extends BaseScanGunActivity {
             }
         }
     }
-
+    ContactView contactView;
     private void setContactView() {
 
-        ContactView contactView = findViewById(R.id.contact_view);
+        contactView = findViewById(R.id.contact_view);
         contactView.setVisibility(View.VISIBLE);
         if (!TextUtils.isEmpty(App.app.contactBean.faultPhone)) {
             if (TextUtils.isEmpty(App.app.contactBean.faultContacts)) {
                 App.app.contactBean.faultContacts = getString(R.string.error_contact_phone);
             }
             contactView.setInfo(App.app.contactBean.faultPhone, App.app.contactBean.faultContacts);
+            Log.d(TAG, "setContactView: ");
         } else {
-            contactView.setInfo(App.app.contactBean.hotServicePhone, App.app.contactBean.hotServiceTime);
+            contactView.setInfo(getString(R.string.way_contacts)+":"+App.app.contactBean.hotServicePhone, //电话
+                    getString(R.string.contacts)+":"+App.app.contactBean.hotServiceTime);//联系人
+            Log.d(TAG, "setContactView:1 ");
         }
     }
 }

+ 18 - 8
app/src/main/java/com/bgy/autosale/ui/MainActivity.java

@@ -28,7 +28,9 @@ import com.bgy.autosale.payutil.GeTuiUtil;
 import com.bgy.autosale.payutil.MyIntentService;
 import com.bgy.autosale.ui.base.BaseScanGunActivity;
 import com.bgy.autosale.ui.consumer.MainFragment;
+import com.bgy.autosale.ui.consumer.ServiceFragment;
 import com.bgy.autosale.ui.operator.AuthNumberActivity;
+import com.bgy.autosale.ui.operator.LockActivity;
 import com.bgy.autosale.ui.operator.SnSettingActivity;
 import com.bgy.autosale.utils.CacheFileUtil;
 import com.bgy.autosale.utils.PlcLog;
@@ -42,6 +44,7 @@ import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.event.ApiMessageEvent;
 import com.hboxs.base_library.util.FileUtil;
 import com.hboxs.base_library.util.LogUtil;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
 import com.igexin.sdk.PushManager;
 import com.orhanobut.hawk.Hawk;
 
@@ -77,10 +80,17 @@ public class MainActivity extends BaseScanGunActivity {
 
     private boolean isDestroy = false;
     private Disposable checkDisposable;
+    int isSleep = (int) SharedPreferencesUtils.getParam("sleep", -1);
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
 
+        if (isSleep == 0) {
+            //锁机
+            Intent intent = new Intent(this, LockActivity.class);
+            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
+            startActivity(intent);
+        }
         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());
@@ -98,12 +108,12 @@ public class MainActivity extends BaseScanGunActivity {
         } 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.specMultipleChoices = SPUtils.getInstance(App.app).getBoolean(ServiceFragment.SHARED_PREFERENCE_FLAVOR_MULTIPLE, true);
             App.app.currencySymbol = "";
         }
 
         super.onCreate(savedInstanceState);
         EventBus.getDefault().register(this);
-
         setContentView(R.layout.activity_main);
 
         initView = findViewById(R.id.main_init_tip);
@@ -223,9 +233,9 @@ public class MainActivity extends BaseScanGunActivity {
         // 进行刷新操作
         switch (messageEvent.getName()) {
             case "updateUI":
-                Intent intent = getIntent();
-                finish();
-                startActivity(intent);
+//                Intent intent = getIntent();
+//                finish();
+//                startActivity(intent);
                 break;
         }
 
@@ -353,13 +363,13 @@ public class MainActivity extends BaseScanGunActivity {
         PlcLog.getInstance().e_s(TAG, "initMainView");
         UISoundHelper.getInstance();
         findViewById(R.id.main_fragment).setVisibility(View.VISIBLE);
-
-        if (!SPUtils.getInstance(App.app).getBoolean(Constant.LOCK_IN_ERROR, false)) {
+        if (isSleep != 0 && !SPUtils.getInstance(App.app).getBoolean(Constant.LOCK_IN_ERROR, false)) {
             App.app.initDeviceStateListener();//是否开机
         }
 
         if (initView != null) {
             ViewGroup group = (ViewGroup) initView.getParent();
+
             group.removeView(initView);
             group.removeView(snView);
             initView = null;
@@ -388,10 +398,10 @@ public class MainActivity extends BaseScanGunActivity {
             App.app.contactBean.environmentMode = 1;
         }
         if (App.app.contactBean.hotServicePhone == null) {
-            App.app.contactBean.hotServicePhone = "400-831-3228";//默认
+            App.app.contactBean.hotServicePhone=Hawk.get(Name.CONTACTS_NAME,"");
         }
         if (App.app.contactBean.hotServiceTime == null) {
-            App.app.contactBean.hotServiceTime = "售后服务热线 | 08:00-22:00";//默认
+            App.app.contactBean.hotServiceTime =Hawk.get(Name.CONTACTS_NUM,"");//默认
         }
         if (App.app.contactBean.serviceWechatPlatform == null) {
             App.app.contactBean.serviceWechatPlatform = "http://qx-device-manage.oss-cn-shenzhen.aliyuncs.com/photo/20211020141937.jpg";//默认

+ 139 - 102
app/src/main/java/com/bgy/autosale/ui/consumer/IceCreamFragment.java

@@ -11,6 +11,7 @@ import android.os.Handler;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
 import android.support.v4.app.FragmentTransaction;
 import android.support.v4.content.ContextCompat;
 import android.support.v7.widget.AppCompatImageView;
@@ -45,6 +46,7 @@ import com.bgy.autosale.helpers.CommunicationHelper;
 import com.bgy.autosale.helpers.OrderHelper;
 import com.bgy.autosale.helpers.StockHelper;
 import com.bgy.autosale.helpers.UISoundHelper;
+import com.bgy.autosale.payutil.CoinOrdeBean;
 import com.bgy.autosale.payutil.CoinPaySuccessDialog;
 import com.bgy.autosale.payutil.CreditCardDialog;
 import com.bgy.autosale.payutil.CustomDecimalFormat;
@@ -85,6 +87,7 @@ 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;
+import com.hboxs.base_library.http.OrderApi;
 import com.hboxs.base_library.http.PayApi;
 import com.hboxs.base_library.http.exception.BaseException;
 import com.hboxs.base_library.http.exception.ExceptionFactory;
@@ -108,14 +111,17 @@ import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.text.DecimalFormat;
 import java.text.DecimalFormatSymbols;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Date;
 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.UUID;
 import java.util.concurrent.TimeUnit;
 
 import io.reactivex.Observable;
@@ -177,6 +183,13 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private BatchingView[] sauceViews;
     private BatchingView[] kernelViews;
 
+    final int[] sauceEffectIcon = new int[]{R.drawable.vector_sauce_pineapple_1,
+            R.drawable.vector_sauce_pineapple_2,
+            R.drawable.vector_sauce_pineapple_3};
+    final int[] kernelEffectIcon = new int[]{R.drawable.vector_kernel_1,
+            R.drawable.vector_kernel_2,
+            R.drawable.vector_kernel_3};
+
     // 当前选中的果酱
     private BatchingView selectSauce;
     // 当前选中的果碎
@@ -445,7 +458,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
         });
         Log.d(TAG, "MDB_COIN: 4");
-
     }
 
     @Override
@@ -477,7 +489,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     @Override
     public void onDestroy() {
         super.onDestroy();
-
     }
 
     @Override
@@ -518,7 +529,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
                 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_PAY || manualReason != null) {
                 showNayaxCreditCard();
             } else if (App.app.payChannel == Constant.PAY_NAYAX_PAY_MIX || manualReason != null) {
                 dismissLoading();
@@ -592,7 +603,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private CreditCardDialog mCreditCardDialog;
     private boolean isCreditCards = false;
 
-
     private void showDialogCreditCard() {
         Log.d(TAG, "showDialogCreditCard: ");
         LogUtils.logWrite("弹出刷卡对话框");
@@ -637,10 +647,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         mCreditCardDialog.show();
         //停止时间
         dismissLoading();
-
     }
 
-
     // 当前页面超时,自动退出
     @Override
     protected void onTimeOutFinish() {
@@ -680,7 +688,8 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         AppCompatImageView view = sauceDownViews.get(0);
         Animation anim = (Animation) view.getTag(R.anim.fade_in);
         sauceDownViews.remove(view);
-        Glide.with(view).load(view.getTag(R.id.item_value)).into(view);
+//        Glide.with(view).load(view.getTag(R.id.item_value)).into(view);
+        view.setImageResource((int) view.getTag(R.id.item_value));
         view.startAnimation(anim);
 
     }
@@ -709,74 +718,80 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     }
 
     private void initOperateConfig() {
-
         Constant.useScanGunPay = true;
-
     }
 
     private void selectSauce(int position) {
         BatchingView batchingView = sauceViews[position];
 
-        if (selectSauce == batchingView) {
-            selectSauce.setSelected(false);
-            selectSauce = null;
+        if (App.app.specMultipleChoices) {
+            batchingView.setSelected(!batchingView.isSelected());
         } else {
-            if (selectSauce != null) {
+            if (selectSauce == batchingView) {
                 selectSauce.setSelected(false);
+                selectSauce = null;
+            } else {
+                if (selectSauce != null) {
+                    selectSauce.setSelected(false);
+                }
+                selectSauce = batchingView;
+                selectSauce.setSelected(true);
+            }
+        }
+        int selectCount = 0;
+        for (View v : sauceViews) {
+            if (v.isSelected()) {
+                selectCount++;
             }
-            selectSauce = batchingView;
-            selectSauce.setSelected(true);
         }
-
         // 添加果酱的动效和视觉图
         if (batchingView.isSelected()) {
             sauceDownViews.clear();
-
             // 反序判断, 是否要从上一层流酱料下来
             AppCompatImageView effectView = sauceEffectViews[2];
 
             Glide.with(effectView).load(batchingView.getEffectIcons()[0]).into(effectView);
             effectView.startAnimation(pullFlavorAnim);
         } else {
-            for (AppCompatImageView v : sauceEffectViews) {
-                if (v.getTag() != null && v.getTag() == batchingView) {
-                    v.setTag(null);
-                    v.setImageBitmap(null);
-                }
-            }
+            AppCompatImageView effectView = sauceEffectViews[selectCount];
+            effectView.setImageBitmap(null);
         }
-
         initIceCream();
     }
 
     private void selectKernel(int position) {
         BatchingView batchingView = kernelViews[position];
-        if (selectKernel == batchingView) {
-            selectKernel.setSelected(false);
-            selectKernel = null;
+        if (App.app.specMultipleChoices) {
+            batchingView.setSelected(!batchingView.isSelected());
         } else {
-            if (selectKernel != null) {
+            if (selectKernel == batchingView) {
                 selectKernel.setSelected(false);
+                selectKernel = null;
+            } else {
+                if (selectKernel != null) {
+                    selectKernel.setSelected(false);
+                }
+                selectKernel = batchingView;
+                selectKernel.setSelected(true);
             }
-            selectKernel = batchingView;
-            selectKernel.setSelected(true);
         }
 
         // 添加果碎的动效和视觉图
-        AppCompatImageView effectView = kernelEffectViews[position];
-        if (batchingView.isSelected()) {
-            for (AppCompatImageView v : kernelEffectViews) {
-                if (v == effectView) {
-                    continue;
-                }
-                v.setImageBitmap(null);
+        int selectCount = 0;
+        for (View v : kernelViews) {
+            if (v.isSelected()) {
+                selectCount++;
             }
-            Glide.with(effectView).load(batchingView.getEffectIcons()[0]).into(effectView);
+        }
+        // 添加果酱的动效和视觉图
+        if (batchingView.isSelected()) {
+            AppCompatImageView effectView = kernelEffectViews[selectCount - 1];
+            effectView.setImageResource(batchingView.getEffectIcons()[selectCount - 1]);
             effectView.startAnimation(pullFlavorAnim);
         } else {
+            AppCompatImageView effectView = kernelEffectViews[selectCount];
             effectView.setImageBitmap(null);
         }
-
         initIceCream();
     }
 
@@ -820,7 +835,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             } else {
                 batchingViews[count].bindSpec(specBean, this);
             }
-
             count++;
         }
     }
@@ -828,15 +842,18 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     private void initIceCream() {
 
         currentDish.selectSpecBeans.clear();
-        if (selectSauce != null) {
-            SpecBean sb = selectSauce.getSpecBean();
-            currentDish.selectSpecBeans.add(sb);
+        for (BatchingView v : sauceViews) {
+            if (v.isSelected()) {
+                SpecBean sb = v.getSpecBean();
+                currentDish.selectSpecBeans.add(sb);
+            }
         }
-        if (selectKernel != null) {
-            SpecBean sb = selectKernel.getSpecBean();
-            currentDish.selectSpecBeans.add(sb);
+        for (BatchingView v : kernelViews) {
+            if (v.isSelected()) {
+                SpecBean sb = v.getSpecBean();
+                currentDish.selectSpecBeans.add(sb);
+            }
         }
-
         initPrice();
     }
 
@@ -1012,7 +1029,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         return result;
     }
 
-
     private AnimatorSet showAnim;
     private AnimatorSet hideAnim;
     private boolean isShopCartViewShow;
@@ -1148,7 +1164,6 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         dialog.show((ViewGroup) iceCreamView.getParent());
     }
 
-
     private View.OnClickListener modifyListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
@@ -1599,6 +1614,18 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     // 进入手动制作的界面
     private void manualMake() {
+        if (Global.isVersions!=1&&orderHelper.getOrderList().size()>0){
+            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+
+                Log.d(TAG,"单个商品需要制作的杯数:" + orderHelper.getOrderList().get(i).buyCount);
+                shoppingCart.setShoppingName(orderHelper.getOrderList().get(i).selectTag);//商品名字
+                shoppingCart.setCount(orderHelper.getOrderList().get(i).buyCount);
+                shoppingCart.setPrice(Double.parseDouble(orderHelper.getOrderList().get(i).price));
+                saveCoinOrder(shoppingCart.getShoppingName(),shoppingCart.getPrice(),1,orderHelper.getOrderList().get(i).buyCount);
+            }
+        }
         LogUtils.logWrite("制作了"+orderHelper.generateMakingIceCream().size()+"杯冰淇淋");
         if (App.app.payChannel != Constant.PAY_FREE) {
             LogUtils.logWrite("制作冰激凌了");
@@ -1624,7 +1651,7 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
 
     // 添加购物车
     private void addShopCart() {
-        Log.d(TAG, "addShopCart: ");
+        Log.d(TAG, "addShopCart: "+currentDish.selectSpecBeans);
         ResponseBean<Integer> result = addItem(currentDish.selectSpecBeans);
         if (!result.success) {
             return;
@@ -1786,9 +1813,9 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
         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 +
+            Log.d(TAG, "onClick: 冰淇淋组合:" + orderHelper.getOrderList().get(i).selectTag);
 //                            "冰淇淋的金额:"+orderHelper.getOrderList().get(i).price+
-                    "单个商品需要制作的杯数:" + orderHelper.getOrderList().get(i).buyCount);
+            Log.d(TAG,"单个商品需要制作的杯数:" + orderHelper.getOrderList().get(i).buyCount);
             String str = "";
             String[] parts = orderHelper.getOrderList().get(i).selectTag.split(",");
             str = getStr(str, parts);
@@ -1831,62 +1858,35 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
     ArrayList<PriceFragment.PriceBean> priceBeans = new ArrayList<>();
 
     private String getStr(String str, String[] parts) {
+        StringBuilder resultBuilder = new StringBuilder();
         Log.d(TAG, "getStrtestPriceBean: " + priceBeans);
+        String getOneTaste = "";
         for (String part : parts) {
             Log.d(TAG, "onClick0: " + part);
+           String[] getFlavorCombinations= part.split(priceBeans.get(0).getChineseName());
+            for (String getFlavorCombination : getFlavorCombinations) {
+                Log.d(TAG, "getStr:10 " + getFlavorCombination);
+                if (getFlavorCombinations.length==1){
+                    getOneTaste=getFlavorCombination;
+                }
+            }
             if (part.contains("_")) {
-                int index = part.indexOf("_");
-                // 处理拆分后的部分...
-                if (index != -1) {
-                    // 获取下划线前面的部分
-                    String part1 = part.substring(0, index);
-                    Log.d(TAG, "onClick0getStr: " + part1);
-                    String a = "";
-                    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();
-                    }
-//                    // 获取下划线后面的部分
-//                    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(priceBeans.get(1).getChineseName())) {
-                        b = priceBeans.get(1).getDefaultName();
-                    } else if (part2.trim().equals(priceBeans.get(2).getChineseName())) {
-                        b = priceBeans.get(2).getDefaultName();
+                String[] getTaste = getFlavorCombinations[0].split("_");
+                for (int i = 0; i < getTaste.length; i++) {
+                    Log.d(TAG, "getStr:11 "+getTaste[i]);
+
+                    resultBuilder.append(getTaste[i]);
+                    if (i < getTaste.length - 1) {
+                        resultBuilder.append(",");
                     }
-                    str = priceBeans.get(0).getDefaultName() + "-" + a + "," + b;
-                    Log.d(TAG, "onClick0getStrgetStr3: " + str);
                 }
-            } else {
-                // 字符串中没有下划线的情况处理...
-                Log.d(TAG, "onClick2: " + part);
-                if (part.trim().equals(priceBeans.get(0).getChineseName())) {
-                    str = priceBeans.get(0).getDefaultName();
-                    Log.d(TAG, "getStr:priceBeans " + str);
-                } else {
-                    String s = "";
-                    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);
-                    }
-                    str = priceBeans.get(0).getDefaultName() + "-" + s;
+                str= SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0],getString(PriceFragment.ProductAbout.defaultName[0])) + "-"+resultBuilder.toString();
+                Log.d(TAG, "getStr:测试 "+str);
+            }else {
+                if (getOneTaste.equals("")){
+                    str= SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0],getString(PriceFragment.ProductAbout.defaultName[0]));
+                }else {
+                    str= SPUtils.getInstance(App.app).getString(PriceFragment.ProductAbout.nameKey[0],getString(PriceFragment.ProductAbout.defaultName[0])) + "-"+getOneTaste;
                 }
             }
         }
@@ -1956,4 +1956,41 @@ public class IceCreamFragment extends BaseAutoExitFragment implements View.OnCli
             }
         }, 1000);
     }
+
+    private void saveCoinOrder(String productName, double price, int payType,int count) {
+        CoinOrdeBean bean = new CoinOrdeBean();
+        String sn = UUID.randomUUID().toString().replace("-", "");
+        bean.setClientId(Heartbeat.deviceId);
+        bean.setSn(sn);
+        bean.setPayType(payType);
+        bean.setName(productName+"x"+count);
+        bean.setProductNumber(count);
+        bean.setPrice(price);
+        bean.setCreateDate(getStackCompleteTime());
+        bean.setNo(productName+"-"+"I01"+"-"+count);
+        Gson gson = new Gson();
+        String json = gson.toJson(bean);
+        Log.d(TAG, "saveCoinOrder: "+json);
+        RequestBody body = RequestBody.create(okhttp3.MediaType.parse("application/json;charset=utf-8"), json);
+        addSubscription(OrderApi.api.newSaveCoinOrder(body).compose(HttpResultHandler.<String>transformer())
+                , new HttpResultObserver<String>(mView, getContext()) {
+                    @Override
+                    public void onNext(String o) {
+                        Log.e(TAG, "onNext: " + o);
+                    }
+
+                    @Override
+                    public void onError(Throwable t) {
+                        super.onError(t);
+                        Log.e(TAG, "Throwable: " + t.getMessage());
+
+                    }
+                });
+    }
+
+    private String getStackCompleteTime() {
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+        String sd = sdf.format(new Date(Long.parseLong(String.valueOf(System.currentTimeMillis()))));
+        return sd;
+    }
 }

+ 28 - 2
app/src/main/java/com/bgy/autosale/ui/consumer/MainFragment.java

@@ -1,10 +1,13 @@
 package com.bgy.autosale.ui.consumer;
 
+import android.content.Intent;
 import android.os.Bundle;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
 import android.support.constraint.ConstraintLayout;
 import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
 import android.util.Log;
 import android.view.MotionEvent;
 import android.view.View;
@@ -35,9 +38,14 @@ import com.bgy.autosale.ui.operator.DeviceManagerActivity;
 import com.bgy.autosale.ui.operator.fragments.PriceFragment;
 import com.bgy.autosale.utils.SPUtils;
 import com.bgy.autosale.utils.ToastUtil;
+import com.hboxs.base_library.event.ApiMessageEvent;
 import com.hboxs.base_library.util.DrawableSelectorUtils;
 import com.orhanobut.hawk.Hawk;
 
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
 import java.util.ArrayList;
 import java.util.concurrent.TimeUnit;
 
@@ -67,7 +75,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
 
     private BannerMediaHelper mediaHelper;
     private GuideAnimHelper animHelper;
-
+    private ImageView ivLogo;
     public static MainFragment getFragment() {
         return new MainFragment();
     }
@@ -80,7 +88,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
-        ImageView ivLogo=view.findViewById(R.id.iv_logo);
+        ivLogo=view.findViewById(R.id.iv_logo);
         DrawableSelectorUtils.setImageLogo(ivLogo);
         clickView = view.findViewById(R.id.ice_cream_bg);
         findViewById(R.id.action_view).setOnClickListener(new View.OnClickListener() {
@@ -123,6 +131,13 @@ public class MainFragment extends BaseFragment implements RadarCallback {
     }
 
     @Override
+    public void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
+
+    }
+
+    @Override
     public void onDestroyView() {
         super.onDestroyView();
     }
@@ -135,6 +150,7 @@ public class MainFragment extends BaseFragment implements RadarCallback {
     @Override
     public void onDestroy() {
         super.onDestroy();
+        EventBus.getDefault().unregister(this);
     }
 
     @Override
@@ -252,6 +268,16 @@ public class MainFragment extends BaseFragment implements RadarCallback {
 
     }
 
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(ApiMessageEvent messageEvent) {
+        // 进行刷新操作
+        switch (messageEvent.getName()) {
+            case "updateUI":
+                DrawableSelectorUtils.setImageLogo(ivLogo);
+                break;
+        }
+    }
+
     private void showBanner(boolean show) {
         if (lockDisposable != null) {
             lockDisposable.dispose();

+ 151 - 0
app/src/main/java/com/bgy/autosale/ui/consumer/ServiceFragment.java

@@ -0,0 +1,151 @@
+package com.bgy.autosale.ui.consumer;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.support.v4.content.ContextCompat;
+import android.support.v7.widget.AppCompatEditText;
+import android.text.Editable;
+import android.text.TextWatcher;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import com.bgy.autosale.App;
+import com.bgy.autosale.R;
+import com.bgy.autosale.ui.base.BaseFragment;
+import com.bgy.autosale.utils.SPUtils;
+
+/**
+ * Created by cjx on 2021-05-19
+ * 说明:
+ */
+public class ServiceFragment extends BaseFragment implements View.OnClickListener {
+
+    public static final String SHARED_PREFERENCE_SERVICE_VISIBILITY = "SHARED_PREFERENCE_SERVICE_VISIBILITY";
+    public static final String SHARED_PREFERENCE_SERVICE_TITLE = "SHARED_PREFERENCE_SERVICE_TITLE";
+    public static final String SHARED_PREFERENCE_SERVICE_CONTENT = "SHARED_PREFERENCE_SERVICE_CONTENT";
+
+    public static final String SHARED_PREFERENCE_FLAVOR_MULTIPLE = "SHARED_PREFERENCE_FLAVOR_MULTIPLE";
+
+    public static final boolean DEFAULT_SERVICE_VISIBILITY = true;
+    public static final String DEFAULT_SERVICE_TITLE = "售后时间 | 08:00~18:00";
+    public static final String DEFAULT_SERVICE_CONTENT = "400-399-1234";
+
+    public static ServiceFragment getFragment() {
+        return new ServiceFragment();
+    }
+
+    @Override
+    public int getViewId() {
+        return R.layout.fragment_service;
+    }
+
+    @Override
+    public void onShow() {
+
+    }
+
+    @Override
+    public void onDestroy() {
+        super.onDestroy();
+        App.app.sendBroadcast(new Intent(App.ACTION_CONTACT_LOAD));
+    }
+
+    @Override
+    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
+        super.onViewCreated(view, savedInstanceState);
+        View v = view.findViewById(R.id.service_visibility);
+        v.setOnClickListener(this);
+        TextView switchTextView = v.findViewById(R.id.service_visibility_text);
+        View switchIconView = v.findViewById(R.id.service_visibility_icon);
+        SPUtils instance = SPUtils.getInstance(getContext());
+        boolean visible = instance.getBoolean(SHARED_PREFERENCE_SERVICE_VISIBILITY, DEFAULT_SERVICE_VISIBILITY);
+        open(v, switchTextView, switchIconView, visible);
+
+        String time = instance.getString(SHARED_PREFERENCE_SERVICE_TITLE, DEFAULT_SERVICE_TITLE);
+        String phone = instance.getString(SHARED_PREFERENCE_SERVICE_CONTENT, DEFAULT_SERVICE_CONTENT);
+
+        AppCompatEditText timeView = view.findViewById(R.id.service_time);
+        timeView.setText(time);
+        timeView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                SPUtils.getInstance(getContext()).putString(SHARED_PREFERENCE_SERVICE_TITLE, s.toString());
+            }
+        });
+
+        AppCompatEditText phoneView = view.findViewById(R.id.service_phone);
+        phoneView.setText(phone);
+        phoneView.addTextChangedListener(new TextWatcher() {
+            @Override
+            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+
+            }
+
+            @Override
+            public void onTextChanged(CharSequence s, int start, int before, int count) {
+
+            }
+
+            @Override
+            public void afterTextChanged(Editable s) {
+                SPUtils.getInstance(getContext()).putString(SHARED_PREFERENCE_SERVICE_CONTENT, s.toString());
+            }
+        });
+
+        View flavorView = view.findViewById(R.id.flavor_multiple);
+        flavorView.setOnClickListener(this);
+        TextView flavorSwitchTextView = flavorView.findViewById(R.id.flavor_multiple_text);
+        View flavorSwitchIconView = flavorView.findViewById(R.id.flavor_multiple_icon);
+        open(flavorView, flavorSwitchTextView, flavorSwitchIconView, App.app.specMultipleChoices);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.service_visibility) {
+            boolean visible = SPUtils.getInstance(getContext()).getBoolean(SHARED_PREFERENCE_SERVICE_VISIBILITY, DEFAULT_SERVICE_VISIBILITY);
+            visible = !visible;
+            SPUtils.getInstance(getContext()).putBoolean(SHARED_PREFERENCE_SERVICE_VISIBILITY, visible);
+            TextView switchTextView = v.findViewById(R.id.service_visibility_text);
+            View switchIconView = v.findViewById(R.id.service_visibility_icon);
+            open(v, switchTextView, switchIconView, visible);
+        } else if (id == R.id.flavor_multiple) {
+            App.app.specMultipleChoices = !App.app.specMultipleChoices;
+            SPUtils.getInstance(getContext()).putBoolean(SHARED_PREFERENCE_FLAVOR_MULTIPLE, App.app.specMultipleChoices);
+            TextView switchTextView = v.findViewById(R.id.flavor_multiple_text);
+            View switchIconView = v.findViewById(R.id.flavor_multiple_icon);
+            open(v, switchTextView, switchIconView, App.app.specMultipleChoices);
+        }
+    }
+
+    private void open(View v, TextView switchTextView, View switchIconView, boolean open) {
+        ViewGroup switchView = (ViewGroup) v;
+        switchView.removeAllViews();
+        if (open) {
+            switchView.addView(switchTextView);
+            switchView.addView(switchIconView);
+            switchTextView.setText(R.string.setting_switch_on);
+            switchTextView.setTextColor(ContextCompat.getColor(App.app, R.color.colorSwitchOn));
+            switchView.setBackgroundResource(R.drawable.bg_switch_on);
+        } else {
+            switchView.addView(switchIconView);
+            switchView.addView(switchTextView);
+            switchTextView.setText(R.string.setting_switch_off);
+            switchTextView.setTextColor(ContextCompat.getColor(App.app, R.color.colorSwitchOff));
+            switchView.setBackgroundResource(R.drawable.bg_switch_off);
+        }
+    }
+}

+ 95 - 0
app/src/main/java/com/bgy/autosale/ui/operator/LockActivity.java

@@ -0,0 +1,95 @@
+package com.bgy.autosale.ui.operator;
+
+import android.content.Intent;
+import android.os.Bundle;
+import android.os.Handler;
+import android.support.annotation.NonNull;
+import android.support.annotation.Nullable;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import com.bgy.autosale.R;
+import com.bgy.autosale.ui.MainActivity;
+import com.bgy.autosale.ui.base.BaseFragment;
+import com.bgy.autosale.ui.base.BaseScanGunActivity;
+import com.bgy.autosale.ui.consumer.MainFragment;
+import com.hboxs.base_library.constant.Heartbeat;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.event.ApiMessageEvent;
+import com.hboxs.base_library.util.DrawableSelectorUtils;
+import com.hboxs.base_library.util.LongClickUtils;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.orhanobut.hawk.Hawk;
+
+import org.greenrobot.eventbus.EventBus;
+import org.greenrobot.eventbus.Subscribe;
+import org.greenrobot.eventbus.ThreadMode;
+
+/**
+ * Created by cjx on 2020-12-31
+ * 说明:
+ */
+public class LockActivity extends BaseScanGunActivity {
+
+    private TextView tvLock;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        EventBus.getDefault().register(this);
+        setContentView(R.layout.activity_lock);
+        TextView tvDeviceId1 = findViewById(R.id.tv_device_id1);
+        if (Heartbeat.deviceId != null && Heartbeat.deviceId.length() > 6) {
+            tvDeviceId1.setText(Heartbeat.deviceId.substring(Heartbeat.deviceId.length() - 6));
+        }
+        tvLock = findViewById(R.id.tv_lock);
+        String hibernation = Hawk.get(Name.HIBERNATION, "");
+        if (!"".equals(hibernation)) {
+            tvLock.setText(hibernation);
+            tvLock.setVisibility(View.VISIBLE);
+        }
+        SharedPreferencesUtils.setParam("sleep", 0);
+        ImageView ivLogo = findViewById(R.id.iv_logo);
+        DrawableSelectorUtils.setImageLogo(ivLogo);
+        RelativeLayout rlLogo = findViewById(R.id.rl_logo);
+        LongClickUtils.setLongClick(new Handler(), rlLogo, 2000, new View.OnLongClickListener() {
+            @Override
+            public boolean onLongClick(View v) {
+                goToMainFragment();
+                return false;
+            }
+        });
+    }
+
+    @Subscribe(threadMode = ThreadMode.MAIN)
+    public void event(ApiMessageEvent messageEvent) {
+        switch (messageEvent.getName()) {
+            case "sleepDesc":
+                String hibernation = Hawk.get(Name.HIBERNATION, "");
+                if (!"".equals(hibernation)) {//如果为""
+                    tvLock.setText(hibernation);
+                    tvLock.setVisibility(View.VISIBLE);
+                }
+                break;
+        }
+    }
+
+    private void goToMainFragment() {
+        SharedPreferencesUtils.setParam("sleep", 1);
+        Intent intent = new Intent();
+        intent.setClass(this, MainActivity.class);
+        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
+        startActivity(intent);
+        finish();
+    }
+
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        EventBus.getDefault().unregister(this);
+    }
+}

+ 68 - 0
app/src/main/java/com/bgy/autosale/ui/operator/SleepSettingActivity.java

@@ -0,0 +1,68 @@
+package com.bgy.autosale.ui.operator;
+
+import android.os.Bundle;
+import android.support.annotation.Nullable;
+import android.view.View;
+import android.widget.EditText;
+
+import com.bgy.autosale.App;
+import com.bgy.autosale.R;
+import com.bgy.autosale.ui.base.BaseScanGunActivity;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.util.SharedPreferencesUtils;
+import com.orhanobut.hawk.Hawk;
+
+/**
+ * Created by cjx on 2020-09-08
+ * 说明:
+ */
+public class SleepSettingActivity extends BaseScanGunActivity implements View.OnClickListener {
+
+    private static final String TAG = "SnSettingActivity";
+    private EditText etSleepText;
+    private EditText etPeopleText;
+    private EditText etPhoneText;
+
+    @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.activity_system_text_setting);
+
+        etSleepText = findViewById(R.id.et_sleep_test);
+        etPeopleText = findViewById(R.id.et_people_test);
+        etPhoneText = findViewById(R.id.et_phone_test);
+        etSleepText.setText(Hawk.get(Name.HIBERNATION, "休眠中..."));
+        etPeopleText.setText(Hawk.get(Name.CONTACTS_NAME,""));
+        etPhoneText.setText(Hawk.get(Name.CONTACTS_NUM,""));
+        findViewById(R.id.setting_back).setOnClickListener(this);
+        findViewById(R.id.sleep_save).setOnClickListener(this);
+        findViewById(R.id.people_save).setOnClickListener(this);
+        findViewById(R.id.phone_save).setOnClickListener(this);
+    }
+
+    @Override
+    public void onClick(View v) {
+        int id = v.getId();
+        if (id == R.id.setting_back) {
+            finish();
+        } else if (id == R.id.sleep_save) {
+            Hawk.put(Name.HIBERNATION, etSleepText.getText().toString());
+            showToast("修改成功");
+        } else if (id == R.id.people_save) {
+            String contacts = etPeopleText.getText().toString();
+            Hawk.put(Name.CONTACTS_NAME, contacts);
+            App.app.contactBean.faultPhone = Hawk.get(Name.CONTACTS_NAME,"");
+            showToast("修改成功");
+        } else if (id == R.id.phone_save) {
+            String contacts = etPhoneText.getText().toString();
+            Hawk.put(Name.CONTACTS_NUM, contacts);
+            App.app.contactBean.hotServicePhone = Hawk.get(Name.CONTACTS_NUM,"");
+            showToast("修改成功");
+        }
+    }
+
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+    }
+}

+ 49 - 10
app/src/main/java/com/bgy/autosale/ui/operator/fragments/PriceFragment.java

@@ -126,12 +126,20 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
     private Map<String, Integer> flowerTypeIds;//存储花型对应的id
     private ArrayList<PriceBean> list;
     private Button btnConfirmRevision;
+    private Button btnConfirmName;
 
     @Override
     public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
         super.onViewCreated(view, savedInstanceState);
 //        if (Global.isVersions == 1) {
-//            getproducts();
+        if (Global.isGetProductName == 0&&Global.isVersions == 1) {
+            Log.d(TAG, "onViewCreated: ");
+            getproducts();
+        }
+        btnConfirmName = view.findViewById(R.id.btn_confirm_name);
+        if (Global.isVersions == 2) {
+            btnConfirmName.setVisibility(View.GONE);
+        }
 //        }
         recyclerView = view.findViewById(R.id.recycler_view);
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
@@ -192,8 +200,10 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
                     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());
+                    if (Global.isVersions == 2) {
+                        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());
@@ -202,13 +212,25 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
                     priceList.add(priceBean);
                     Hawk.put("PRICEBEAN", priceList);
                     if (Global.isVersions == 1) {
-//                            getproducts();
                         updateDate(priceList);
                     }
                     showToast("更新成功");
                 }
             }
         });
+        btnConfirmName = findViewById(R.id.btn_confirm_name);
+        btnConfirmName.setOnClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                Log.d(TAG, "onClick: btnConfirmName");
+                for (int i = 0; i < priceAdapter.getItemCount(); i++) {
+                    v = recyclerView.getChildAt(i);
+                    ViewHolder viewHolder = (ViewHolder) recyclerView.getChildViewHolder(v);
+                    Log.d(TAG, "onClick: btnConfirmName2");
+                    updateProductName(oldProductNames.get(i), viewHolder.nameView.getText().toString());
+                }
+            }
+        });
     }
 
     private List<PriceBean> priceBeans;
@@ -325,7 +347,7 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
 
     private int currentPosition = -1;
     String oldProductName;
-    List<String> oldProductNames = new ArrayList<>(6);
+    List<String> oldProductNames = new ArrayList<>(5);
 
 
     class PriceAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements View.OnClickListener {
@@ -343,10 +365,15 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
             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);
+//                oldProductName = SPUtils.getInstance(App.app).getString(list.get(i).getNameKey(), getString(ProductAbout.defaultName[i]));
+//                oldProductNames.add(oldProductName);
+                if (Global.isGetProductName == 0) {
+                    oldProductName = SPUtils.getInstance(App.app).getString(UiUtil.getStringRes(list.get(i).getTitle()), ProductAbout.chineseName[i]);
+                    oldProductNames.add(oldProductName);
+                }
+
             }
+            Log.d(TAG, "PriceAdapter刚开始: " + oldProductNames);
 //            nameListener = (v, hasFocus) -> {
 //                if (!hasFocus) {
 //                    // 获取当前点击的位置
@@ -656,7 +683,7 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
                         }
                         Hawk.put("PRICEBEAN", priceBeans);
                         Hawk.put(Name.ITEM_GOODS, goodsBeanArrayList);
-                        getproductsSuccess();
+                        showToast("Success");
                     }
 
                     @Override
@@ -676,7 +703,17 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
     }
 
     public void getproductsSuccess() {
+        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());
+        }
         showToast("Success");
+        Global.isGetProductName = 1;
     }
 
     /**
@@ -708,6 +745,8 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
                         //修改成功
                         showToast(UiUtil.getStringRes(R.string.modified_success));
 //                        updateProductNameSuccess(newProductName);
+                        getproductsSuccess();
+
                     }
 
                     @Override
@@ -766,7 +805,7 @@ public class PriceFragment extends BaseFragment implements View.OnClickListener
             name = priceBean.getDefaultName();
             OrderPriceBean bean = new OrderPriceBean(Heartbeat.deviceId,
                     priceBean.getPriceDefault(),
-                    priceBean.getDefaultName(),
+                    priceBean.getChineseName(),
                     priceBean.getPriceDefault(),
                     true);
             orderPriceBeans.add(bean);

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

@@ -426,12 +426,12 @@ public class SwitchFragment extends BaseFragment implements RadioGroup.OnChecked
 
         if (id == R.id.btn_changlogoupdate) {
             String s = etChanglog.getText().toString();
-            if ("7772".equals(s)) {
+            if ("7772".equals(s)||"7770".equals(s)||"7777".equals(s)) {
                 Hawk.put("logo", s);
-                Hawk.get("logo", "1");
+                Hawk.get("logo", "7777");
                 ToastUtil.showToast(UiUtil.getStringRes(R.string.xgwc));
             } else {
-                Hawk.put("logo", "1");
+                Hawk.put("logo", "7777");
                 ToastUtil.showToast("输入错误");
                 return;
             }

+ 26 - 7
app/src/main/java/com/bgy/autosale/ui/operator/fragments/TechnologySupportFragment.java

@@ -26,9 +26,9 @@ 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.RemoteSupportService;
 import com.bgy.autosale.entitys.LanguageBean;
 import com.bgy.autosale.helpers.SmallApkHelper;
 import com.bgy.autosale.payutil.ApkInfoBean;
@@ -39,11 +39,11 @@ 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.SleepSettingActivity;
 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;
@@ -57,7 +57,6 @@ import com.hboxs.base_library.constant.Name;
 import com.hboxs.base_library.dialog.NormalDialog;
 import com.hboxs.base_library.event.ApiMessageEvent;
 import com.hboxs.base_library.event.DownLoadMessageEvent;
-import com.hboxs.base_library.http.NoPayOrderApi;
 import com.hboxs.base_library.http.NoPayOrderStringApi;
 import com.hboxs.base_library.http.exception.BaseException;
 import com.hboxs.base_library.http.exception.ExceptionFactory;
@@ -65,7 +64,6 @@ 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.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;
@@ -105,6 +103,7 @@ public class TechnologySupportFragment extends BaseFragment implements View.OnCl
     private final int ACTION_PASSWORD = 6;
     private final int ACTION_LANGUAGE = 7;
     private final int ACTION_IGNORE = 8;
+    private final int SLEEP_TEXT = 9;
 
     private String versionId;
     private int languageIndex = 0;
@@ -124,7 +123,11 @@ private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
         new LanguageBean("eesti keel(爱沙尼亚语)", "et", "爱沙尼亚语"),
         new LanguageBean("lietuvių(立陶宛语)", "lt", "立陶宛语"),
         new LanguageBean("latviski(拉脱维亚语)", "lv", "拉脱维亚语"),
-        new LanguageBean("հայերեն(亚美尼亚语)", "hy", "亚美尼亚语")
+        new LanguageBean("հայերեն(亚美尼亚语)", "hy", "亚美尼亚语"),
+        new LanguageBean("Melayu(马来语)", "ms", "马来语"),
+        new LanguageBean("Română(罗马尼亚语)", "ro", "罗马尼亚语"),
+        new LanguageBean("ประเทศไทย(泰语)", "th", "泰语")
+
 ));
     public static TechnologySupportFragment getFragment() {
         return new TechnologySupportFragment();
@@ -177,12 +180,20 @@ private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
         list.add(new TechnologyBean(ACTION_DEBUG, getString(R.string.setting_technology_mcu_debug), R.string.button_start));
         list.add(initLanguage());
         list.add(initIgnoreError());
+        list.add(initSleepMsg());
 
         RecyclerView recyclerView = view.findViewById(R.id.recycler_view);
         recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
         TechnologyAdapter adapter = new TechnologyAdapter(list, getContext());
         recyclerView.setAdapter(adapter);
     }
+    private TechnologyBean initSleepMsg() {
+        TechnologyBean itemBean = new TechnologyBean(SLEEP_TEXT);
+        itemBean.title = getString(R.string.setting_text_message);
+        itemBean.button = R.string.button_update;
+        itemBean.buttonEnable = true;
+        return itemBean;
+    }
 
     private TechnologyBean initSn() {
         TechnologyBean itemBean = new TechnologyBean(ACTION_SN);
@@ -513,9 +524,17 @@ private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
                     }, 4, TimeUnit.SECONDS);
                     open(v);
                     break;
+                case SLEEP_TEXT:
+                    gotoSetSleepText();
+                    break;
             }
         }
 
+        private void gotoSetSleepText() {
+            Intent intent = new Intent(getContext(), SleepSettingActivity.class);
+            startActivity(intent);
+        }
+
         private void open(View v) {
             ViewGroup switchView = (ViewGroup) v;
             TextView switchTextView = switchView.findViewById(R.id.item_switch_text);
@@ -627,7 +646,7 @@ private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
             }
         });
 
-        updateDialog2.setUpdateContent(R.string.check_update, versionName, isUpdate, versionInfo);
+        updateDialog2.setUpdateContent(R.string.update_app, versionName, isUpdate, versionInfo);
         updateDialog2.show();
     }
 
@@ -674,7 +693,7 @@ private final ArrayList<LanguageBean> languages = new ArrayList<>(Arrays.asList(
             }
         });
 
-        updateDialog.setUpdateContent(R.string.check_update, versionName, isUpdate, versionInfo);
+        updateDialog.setUpdateContent(R.string.update_app, versionName, isUpdate, versionInfo);
         updateDialog.show();
         getApkInfoList();
 

+ 21 - 17
app/src/main/java/com/bgy/autosale/ui/widget/BatchingView.java

@@ -107,14 +107,18 @@ public class BatchingView extends FrameLayout {
         }
     }
 
-    public Object[] getEffectIcons() {
-        if(getSpecBean().effectImage == null){
-            if(DishesBean.SPEC_CATEGORY_SAUCE.equals(specBean.categoryCode)){
-                return new Object[] {R.drawable.vector_sauce_pineapple_3};
-            }else if(DishesBean.SPEC_CATEGORY_KERNEL.equals(specBean.categoryCode)){
-                return new Object[] {R.drawable.vector_kernel_1};
+    public int[] getEffectIcons() {
+        if (getSpecBean().effectImage == null) {
+            if (DishesBean.SPEC_CATEGORY_SAUCE.equals(specBean.categoryCode)) {
+                return new int[]{R.drawable.vector_sauce_pineapple_1,
+                        R.drawable.vector_sauce_pineapple_2,
+                        R.drawable.vector_sauce_pineapple_3};
+            } else if (DishesBean.SPEC_CATEGORY_KERNEL.equals(specBean.categoryCode)) {
+                return new int[]{R.drawable.vector_kernel_1,
+                        R.drawable.vector_kernel_2,
+                        R.drawable.vector_kernel_3};
             }
-            return new Object[] {};
+            return new int[]{};
         }
         return getSpecBean().effectImage;
     }
@@ -139,30 +143,30 @@ public class BatchingView extends FrameLayout {
     }
 
     private int initDefaultIcon() {
-        if(specBean == null){
+        if (specBean == null) {
             return 0;
         }
         int icon = 0;
         if (specBean.name.contains("花生") || specBean.name.contains("Peanut")) {
             icon = R.drawable.vector_peanut;
             specBean.name = App.app.getString(R.string.peanut);
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
                     R.drawable.vector_kernel_1
             };
         } else if (specBean.name.contains("榛子")) {
             icon = R.drawable.vector_filbert;
             specBean.name = App.app.getString(R.string.filbert);
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
                     R.drawable.vector_kernel_2
             };
         } else if (specBean.name.contains("腰果")) {
             icon = R.drawable.vector_cashew;
             specBean.name = App.app.getString(R.string.cashew);
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
                     R.drawable.vector_kernel_3
             };
         } else if (specBean.name.contains("菠萝")) {
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
 //                    R.drawable.vector_sauce_pineapple_1,
 //                    R.drawable.vector_sauce_pineapple_2,
                     R.drawable.vector_sauce_pineapple_3,
@@ -170,7 +174,7 @@ public class BatchingView extends FrameLayout {
             icon = R.drawable.vector_pineapple;
             specBean.name = App.app.getString(R.string.pineapple);
         } else if (specBean.name.contains("草莓") || specBean.name.contains("Strawberry")) {
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
 //                    R.drawable.vector_sauce_strawberry_1,
 //                    R.drawable.vector_sauce_strawberry_2,
                     R.drawable.vector_sauce_strawberry_3,
@@ -182,15 +186,15 @@ public class BatchingView extends FrameLayout {
                 icon = R.drawable.strawberry_ic;
             }
         } else if (specBean.name.contains("蓝莓")) {
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
 //                    R.drawable.vector_sauce_blueberry_1,
 //                    R.drawable.vector_sauce_blueberry_2,
                     R.drawable.vector_sauce_blueberry_3,
             };
             icon = R.drawable.vector_blueberry;
             specBean.name = App.app.getString(R.string.blueberry);
-        } else if (specBean.name.contains("芒果")) {
-            specBean.effectImage = new Object[]{
+        } else if (specBean.name.contains("芒果")) {
+            specBean.effectImage = new int[]{
 //                    R.drawable.vector_sauce_mango_1,
 //                    R.drawable.vector_sauce_mango_2,
                     R.drawable.vector_sauce_mango_3,
@@ -198,7 +202,7 @@ public class BatchingView extends FrameLayout {
             icon = R.drawable.vector_mango;
             specBean.name = App.app.getString(R.string.mango);
         } else if (specBean.name.contains("巧克力") || specBean.name.contains("Chocolate")) {
-            specBean.effectImage = new Object[]{
+            specBean.effectImage = new int[]{
 //                    R.drawable.vector_sauce_chocolate_1,
 //                    R.drawable.vector_sauce_chocolate_2,
                     R.drawable.vector_sauce_chocolate_3,

+ 34 - 30
app/src/main/java/com/bgy/autosale/utils/IceCreamErrorUtils.java

@@ -4,6 +4,10 @@ package com.bgy.autosale.utils;
 import com.bgy.autosale.App;
 import com.bgy.autosale.Constant;
 import com.bgy.autosale.R;
+import com.hboxs.base_library.constant.Name;
+import com.hboxs.base_library.event.ErrorApiMessageEvent;
+
+import org.greenrobot.eventbus.EventBus;
 
 /**
  * Created by cjx on 2020-01-13
@@ -129,51 +133,51 @@ public class IceCreamErrorUtils {
         StringBuilder stringBuilder = new StringBuilder(80);
         if (!errorCode1.equals("0")) {
             if (checkStatusError(errorCode1, 0)) {
-                stringBuilder.append(App.app.getString(R.string.error_toke_order_time_out)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_toke_order_time_out)).append("-1,");
             }
             if (checkStatusError(errorCode1, 1)) {
-                stringBuilder.append(App.app.getString(R.string.error_milk_slurry_lack)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_milk_slurry_lack)).append("-2,");
             }
             if (checkStatusError(errorCode1, 2)) {
                 if (isRR141) {
-                    stringBuilder.append(App.app.getString(R.string.error_cup_lack)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_cup_lack)).append("-3,");
                 } else {
-                    stringBuilder.append(App.app.getString(R.string.error_cup_1_lack)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_cup_1_lack)).append("-3,");
                 }
             }
             if (!isRR141 && checkStatusError(errorCode1, 3)) {
-                stringBuilder.append(App.app.getString(R.string.error_cup_2_lack)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_cup_2_lack)).append("-3,");
             }
             if (checkStatusError(errorCode1, 4)) {
-                stringBuilder.append(App.app.getString(R.string.error_high_pressure)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_high_pressure)).append("-3,");
             }
             if (isRR141) {
                 if (checkStatusError(errorCode1, 5)) {
-                    stringBuilder.append(App.app.getString(R.string.error_nuts_1_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_nuts_1_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 6)) {
-                    stringBuilder.append(App.app.getString(R.string.error_nuts_2_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_nuts_2_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 7)) {
-                    stringBuilder.append(App.app.getString(R.string.error_nuts_3_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_nuts_3_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 8)) {
-                    stringBuilder.append(App.app.getString(R.string.error_jam_1_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_jam_1_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 9)) {
-                    stringBuilder.append(App.app.getString(R.string.error_jam_2_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_jam_2_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 10)) {
-                    stringBuilder.append(App.app.getString(R.string.error_jam_3_lack)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_jam_3_lack)).append(",");
                 }
                 if (checkStatusError(errorCode1, 12)) {
-                    stringBuilder.append(App.app.getString(R.string.error_door_un_close)).append(",");
+//                    stringBuilder.append(App.app.getString(R.string.error_door_un_close)).append(",");
                 }
                 if (checkStatusError(errorCode1, 13)) {
-                    stringBuilder.append(App.app.getString(R.string.error_reset)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_reset)).append("-3,");
                 }
                 if (checkStatusError(errorCode1, 14)) {
-                    stringBuilder.append(App.app.getString(R.string.error_power_saving)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_power_saving)).append("-1,");
                 }
             }
         }
@@ -181,52 +185,52 @@ public class IceCreamErrorUtils {
         if (!errorCode2.equals("0")) {
             if (checkStatusError(errorCode2, 0)) {
                 if (isRR141) {
-                    stringBuilder.append(App.app.getString(R.string.error_cup_empty)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_cup_empty)).append("-3,");
                 } else {
-                    stringBuilder.append(App.app.getString(R.string.error_cup_1_empty)).append(",");
+                    stringBuilder.append(App.app.getString(R.string.error_cup_1_empty)).append("-2,");
                 }
             }
             if (!isRR141 && checkStatusError(errorCode2, 1)) {
-                stringBuilder.append(App.app.getString(R.string.error_cup_2_empty)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_cup_2_empty)).append("-3,");
             }
 //            if (checkStatusError(errorCode2, 2)) {
 //                stringBuilder.append("雪糕机无杯,");
 //            }
             if (checkStatusError(errorCode2, 3)) {
-                stringBuilder.append(App.app.getString(R.string.error_no_in_refrigeration)).append(",");
+//                stringBuilder.append(App.app.getString(R.string.error_no_in_refrigeration)).append(",");
             }
             if (checkStatusError(errorCode2, 4)) {
-                stringBuilder.append(App.app.getString(R.string.error_milk_slurry_empty)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_milk_slurry_empty)).append("-3,");
             }
             if (checkStatusError(errorCode2, 5)) {
-                stringBuilder.append(App.app.getString(R.string.error_machine_fault)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_machine_fault)).append("-4,");
             }
             if (checkStatusError(errorCode2, 6)) {
-                stringBuilder.append(App.app.getString(R.string.error_machine_offline)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_machine_offline)).append("-3,");
             }
             if (checkStatusError(errorCode2, 7)) {
-                stringBuilder.append(App.app.getString(R.string.error_order_time_out)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_order_time_out)).append("-2,");
             }
             if (checkStatusError(errorCode2, 8)) {
-                stringBuilder.append(App.app.getString(R.string.error_door_obstacle)).append(",");
+//                stringBuilder.append(App.app.getString(R.string.error_door_obstacle)).append(",");
             }
             if (checkStatusError(errorCode2, 10)) {
-                stringBuilder.append(App.app.getString(R.string.error_claw_no_cup)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_claw_no_cup)).append("-2,");
             }
             if (checkStatusError(errorCode2, 11)) {
-                stringBuilder.append(App.app.getString(R.string.error_rotate_machine)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_rotate_machine)).append("-3,");
             }
             if (checkStatusError(errorCode2, 12)) {
-                stringBuilder.append(App.app.getString(R.string.error_elevator_machine)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_elevator_machine)).append("-3,");
             }
             if (checkStatusError(errorCode2, 13)) {
-                stringBuilder.append(App.app.getString(R.string.error_door_machine)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_door_machine)).append("-3,");
             }
             if (checkStatusError(errorCode2, 14)) {
-                stringBuilder.append(App.app.getString(R.string.error_door_slip_fail)).append(",");
+//                stringBuilder.append(App.app.getString(R.string.error_door_slip_fail)).append(",");
             }
             if (checkStatusError(errorCode2, 15)) {
-                stringBuilder.append(App.app.getString(R.string.error_rotate_time_out)).append(",");
+                stringBuilder.append(App.app.getString(R.string.error_rotate_time_out)).append("-3,");
             }
         }
 

+ 2 - 2
app/src/main/res/layout/activity_error.xml

@@ -2,7 +2,7 @@
 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:id="@+id/error_main"
-    android:layout_width="@dimen/dp_269"
+    android:layout_width="@dimen/dp_300"
     android:layout_height="wrap_content"
     android:background="@drawable/bg_dialog"
     android:paddingBottom="@dimen/dp_16">
@@ -67,7 +67,7 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/dp_8"
         android:background="@drawable/bg_contact"
-        android:visibility="gone"
+        android:visibility="visible"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="parent"

+ 70 - 0
app/src/main/res/layout/activity_lock.xml

@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="@color/color_202020">
+
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:gravity="center">
+        <TextView
+            android:id="@+id/tv_lock"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/sleep_msg"
+            android:textColor="@color/white"
+            android:textSize="@dimen/dp_40"
+            android:textStyle="bold" />
+    </RelativeLayout>
+
+    <RelativeLayout
+        android:id="@+id/rl_logo"
+        android:layout_width="@dimen/dp_60"
+        android:layout_height="@dimen/dp_50">
+
+    <ImageView
+        android:id="@+id/iv_logo"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:visibility="visible"
+        app:layout_constraintDimensionRatio="1:1"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintWidth_percent="0.08"
+        tools:ignore="MissingConstraints" />
+
+    </RelativeLayout>
+    <RelativeLayout
+        android:id="@+id/rl_device_id"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_alignParentRight="true"
+        android:layout_marginTop="@dimen/dp_10">
+        <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/color_ddd"
+                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/color_ddd"
+                android:layout_marginRight="@dimen/dp_10"
+                android:textSize="@dimen/sp_10" />
+        </LinearLayout>
+
+    </RelativeLayout>
+</RelativeLayout>

+ 147 - 0
app/src/main/res/layout/activity_system_text_setting.xml

@@ -0,0 +1,147 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:focusableInTouchMode="true"
+    android:focusable="true">
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        tools:ignore="MissingConstraints">
+        <LinearLayout
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_gravity="center">
+
+            <TextView
+                android:id="@+id/sleep_tip"
+                android:layout_width="@dimen/dp_80"
+                android:layout_height="@dimen/dp_50"
+                android:text="@string/hibernation"
+                android:gravity="center"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_12"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+            <android.support.v7.widget.AppCompatEditText
+                android:id="@+id/et_sleep_test"
+                android:layout_width="@dimen/dp_200"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:singleLine="true"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_24"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+
+            <TextView
+                android:id="@+id/sleep_save"
+                android:layout_width="@dimen/dp_150"
+                android:layout_height="@dimen/dp_50"
+                android:background="@drawable/bg_config_confirm"
+                android:gravity="center"
+                android:text="@string/confirm_revision"
+                android:textColor="#FE5DBB"
+                android:textSize="@dimen/sp_22"/>
+        </LinearLayout>
+        <LinearLayout
+            android:layout_width="wrap_content"
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_gravity="center">
+
+            <TextView
+                android:id="@+id/phone_tip"
+                android:layout_width="@dimen/dp_80"
+                android:layout_height="@dimen/dp_50"
+                android:text="@string/contacts"
+                android:gravity="center"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_12"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+            <android.support.v7.widget.AppCompatEditText
+                android:id="@+id/et_phone_test"
+                android:layout_width="@dimen/dp_200"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:singleLine="true"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_24"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+
+            <TextView
+                android:id="@+id/phone_save"
+                android:layout_width="@dimen/dp_150"
+                android:layout_height="@dimen/dp_50"
+                android:background="@drawable/bg_config_confirm"
+                android:gravity="center"
+                android:text="@string/confirm_revision"
+                android:textColor="#FE5DBB"
+                android:textSize="@dimen/sp_22"/>
+        </LinearLayout>
+        <LinearLayout
+            android:layout_marginTop="@dimen/dp_10"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal"
+            android:layout_gravity="center">
+
+            <TextView
+                android:id="@+id/people_tip"
+                android:layout_width="@dimen/dp_80"
+                android:layout_height="@dimen/dp_50"
+                android:text="@string/way_contacts"
+                android:gravity="center"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_12"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+            <android.support.v7.widget.AppCompatEditText
+                android:id="@+id/et_people_test"
+                android:layout_width="@dimen/dp_200"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+                android:singleLine="true"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_24"
+                android:textStyle="bold"
+                tools:ignore="MissingConstraints" />
+
+
+            <TextView
+                android:id="@+id/people_save"
+                android:layout_width="@dimen/dp_150"
+                android:layout_height="@dimen/dp_50"
+                android:background="@drawable/bg_config_confirm"
+                android:gravity="center"
+                android:text="@string/confirm_revision"
+                android:textColor="#FE5DBB"
+                android:textSize="@dimen/sp_22"/>
+        </LinearLayout>
+
+    </LinearLayout>
+
+    <android.support.v7.widget.AppCompatImageView
+        android:id="@+id/setting_back"
+        android:layout_width="@dimen/dp_35"
+        android:layout_height="@dimen/dp_35"
+        android:layout_marginStart="@dimen/dp_26"
+        android:layout_marginBottom="@dimen/dp_32"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:srcCompat="@drawable/vector_btn_back" />
+
+</android.support.constraint.ConstraintLayout>

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

@@ -50,7 +50,6 @@
         app:layout_constraintDimensionRatio="1:1"
         app:layout_constraintTop_toTopOf="parent"
         app:layout_constraintWidth_percent="0.08"
-        app:srcCompat="@drawable/logo_7cloud"
         tools:ignore="MissingConstraints" />
 
     <TextView

+ 17 - 1
app/src/main/res/layout/fragment_price.xml

@@ -25,17 +25,33 @@
             android:layout_gravity="right"
             android:layout_marginTop="@dimen/dp_20"
             android:visibility="visible">
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content">
 
             <Button
+                android:visibility="visible"
+                android:id="@+id/btn_confirm_name"
+                android:layout_width="@dimen/dp_76"
+                android:layout_height="match_parent"
+                android:layout_marginLeft="@dimen/dp_5"
+                android:layout_marginRight="@dimen/dp_105"
+                android:background="@drawable/bg_button_orange"
+                android:text="@string/confirm_name"
+                android:textColor="@color/colorPrimary"
+                android:textSize="@dimen/sp_9" />
+            <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:text="@string/unify_price"
                 android:textColor="@color/colorPrimary"
                 android:textSize="@dimen/sp_9" />
+            </LinearLayout>
+
         </RelativeLayout>
 
     </LinearLayout>

+ 179 - 0
app/src/main/res/layout/fragment_service.xml

@@ -0,0 +1,179 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <LinearLayout
+android:visibility="gone"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/dp_12"
+        android:background="@drawable/bg_tip"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/dp_8"
+            android:text="@string/setting_sale_service"
+            android:textColor="#333"
+            android:textSize="@dimen/sp_14"
+            android:textStyle="bold" />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:paddingStart="@dimen/dp_20"
+            android:paddingEnd="@dimen/dp_20">
+
+            <LinearLayout
+                android:id="@+id/service_visibility"
+                android:layout_width="wrap_content"
+                android:layout_height="@dimen/dp_30"
+                android:layout_alignParentEnd="true"
+                android:layout_centerVertical="true"
+                android:background="@drawable/bg_switch_off"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/service_visibility_text"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_30"
+                    android:gravity="center"
+                    android:text="隐藏"
+                    android:textColor="@color/colorSwitchOff"
+                    android:textSize="@dimen/sp_14" />
+
+                <View
+                    android:id="@+id/service_visibility_icon"
+                    android:layout_width="@dimen/dp_26"
+                    android:layout_height="@dimen/dp_26"
+                    android:layout_margin="@dimen/dp_2"
+                    android:background="@drawable/circular_white" />
+
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="@string/setting_service_visibility"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14" />
+        </RelativeLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:gravity="center_vertical"
+            android:orientation="horizontal"
+            android:paddingStart="@dimen/dp_20"
+            android:paddingEnd="@dimen/dp_20">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:text="@string/setting_service_title"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14" />
+
+            <android.support.v7.widget.AppCompatEditText
+                android:id="@+id/service_time"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:gravity="end"
+                android:orientation="horizontal"
+                android:singleLine="true"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_15" />
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:gravity="center_vertical"
+            android:paddingStart="@dimen/dp_20"
+            android:paddingEnd="@dimen/dp_20">
+
+            <TextView
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="3"
+                android:text="@string/setting_service_content"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14" />
+
+            <android.support.v7.widget.AppCompatEditText
+                android:id="@+id/service_phone"
+                android:layout_width="0dp"
+                android:layout_height="wrap_content"
+                android:layout_weight="2"
+                android:gravity="end"
+                android:orientation="horizontal"
+                android:singleLine="true"
+                android:textColor="@color/colorPrimaryDark"
+                android:textSize="@dimen/sp_15" />
+        </LinearLayout>
+    </LinearLayout>
+
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_margin="@dimen/dp_12"
+        android:background="@drawable/bg_tip"
+        android:orientation="vertical">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_margin="@dimen/dp_8"
+            android:text="@string/setting_flavor_config"
+            android:textColor="#333"
+            android:textSize="@dimen/sp_14"
+            android:textStyle="bold" />
+
+        <RelativeLayout
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/dp_45"
+            android:paddingStart="@dimen/dp_20"
+            android:paddingEnd="@dimen/dp_20">
+
+            <LinearLayout
+                android:id="@+id/flavor_multiple"
+                android:layout_width="wrap_content"
+                android:layout_height="@dimen/dp_30"
+                android:layout_alignParentEnd="true"
+                android:layout_centerVertical="true"
+                android:background="@drawable/bg_switch_off"
+                android:orientation="horizontal">
+
+                <TextView
+                    android:id="@+id/flavor_multiple_text"
+                    android:layout_width="@dimen/dp_50"
+                    android:layout_height="@dimen/dp_30"
+                    android:gravity="center"
+                    android:text="隐藏"
+                    android:textColor="@color/colorSwitchOff"
+                    android:textSize="@dimen/sp_14" />
+
+                <View
+                    android:id="@+id/flavor_multiple_icon"
+                    android:layout_width="@dimen/dp_26"
+                    android:layout_height="@dimen/dp_26"
+                    android:layout_margin="@dimen/dp_2"
+                    android:background="@drawable/circular_white" />
+
+            </LinearLayout>
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                android:text="@string/setting_flavor_multiple_choice"
+                android:textColor="#333"
+                android:textSize="@dimen/sp_14" />
+        </RelativeLayout>
+    </LinearLayout>
+</LinearLayout>

+ 5 - 5
app/src/main/res/layout/fragment_switch.xml

@@ -258,7 +258,7 @@
                             android:layout_width="@dimen/dp_60"
                             android:layout_height="@dimen/dp_26"
                             android:gravity="center"
-                            android:text="@string/open_wifi"
+                            android:text="@string/setting_switch_on"
                             android:textColor="#576478"
                             android:textSize="@dimen/sp_8" />
 
@@ -268,7 +268,7 @@
                             android:layout_height="@dimen/dp_26"
                             android:layout_marginLeft="@dimen/dp_20"
                             android:gravity="center"
-                            android:text="@string/close_wifi"
+                            android:text="@string/setting_switch_off"
                             android:textColor="#576478"
                             android:textSize="@dimen/sp_8" />
                     </RadioGroup>
@@ -329,7 +329,7 @@
                         android:layout_width="wrap_content"
                         android:layout_height="wrap_content"
                         android:layout_margin="@dimen/dp_8"
-                        android:text="硬币倍率"
+                        android:text="@string/coin_rate"
                         android:textColor="#333"
                         android:textSize="@dimen/sp_14"
                         android:textStyle="bold" />
@@ -426,7 +426,7 @@
                             android:layout_width="@dimen/dp_60"
                             android:layout_height="@dimen/dp_26"
                             android:gravity="center"
-                            android:text="@string/open_wifi"
+                            android:text="@string/setting_switch_on"
                             android:textColor="#576478"
                             android:textSize="@dimen/sp_8" />
 
@@ -436,7 +436,7 @@
                             android:layout_height="@dimen/dp_26"
                             android:layout_marginLeft="@dimen/dp_20"
                             android:gravity="center"
-                            android:text="@string/close_wifi"
+                            android:text="@string/setting_switch_off"
                             android:textColor="#576478"
                             android:textSize="@dimen/sp_8" />
                     </RadioGroup>

+ 6 - 6
app/src/main/res/layout/fragment_technology_support.xml

@@ -7,17 +7,17 @@
 
     <android.support.v7.widget.RecyclerView
         android:id="@+id/recycler_view"
-        android:layout_width="0dp"
-        android:layout_height="0dp"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_320"
+        android:layout_marginBottom="@dimen/dp_20"
         android:padding="@dimen/dp_20"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        tools:ignore="MissingConstraints" />
 
     <RelativeLayout
+        android:id="@+id/rl_system"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        app:layout_constraintTop_toBottomOf="@id/recycler_view"
         android:layout_alignParentEnd="true"
         android:layout_alignParentBottom="true"
         android:layout_marginBottom="@dimen/dp_25"

+ 6 - 0
app/src/main/res/layout/item_switch.xml

@@ -35,5 +35,11 @@
             android:text="隐藏"
             android:textColor="@color/colorSwitchOff"
             android:textSize="@dimen/sp_16" />
+
     </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/dp_0_5"
+        android:layout_alignParentBottom="true"
+        android:background="@drawable/bg_make_progress" />
 </RelativeLayout>

+ 6 - 4
app/src/main/res/layout/view_contact.xml

@@ -20,6 +20,7 @@
         android:id="@+id/contact_tip"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:text=""
         android:textColor="#7D3369"
         android:textSize="@dimen/sp_7"
         app:layout_constraintBottom_toBottomOf="@id/contact_time"
@@ -42,6 +43,7 @@
         android:id="@+id/contact_time"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:text=""
         android:textColor="#7D3369"
         app:layout_constraintVertical_chainStyle="packed"
         android:textSize="@dimen/sp_8"
@@ -53,12 +55,12 @@
         android:id="@+id/contact_phone"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginStart="@dimen/dp_4"
-        android:layout_marginEnd="@dimen/dp_12"
+        android:layout_marginStart="@dimen/dp_15"
+        android:layout_marginEnd="@dimen/dp_17"
         android:textColor="#E45DBF"
-        android:textSize="@dimen/sp_14"
+        android:textSize="@dimen/sp_12"
+        android:text=""
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintTop_toBottomOf="@id/contact_time"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@id/contact_icon" />
 

+ 9 - 0
app/src/main/res/values-cs/strings.xml

@@ -468,6 +468,15 @@
     <string name="mdb_level">Úroveň MDB</string>
     <string name="coin_x">Coin rush násobený X</string>
     <string name="coin_divide_x">Mince děleno X</string>
+    <string name="setting_text_message">Upravit část textu</string>
+    <string name="sleep_msg">Počítač spí...</string>
+    <string name="setting_flavor_config">Nastavení chuti</string>
+    <string name="setting_flavor_multiple_choice">Možnost výběru z více příchutí</string>
+    <string name="setting_sale_service">Služba prodeje</string>
+    <string name="setting_service_visibility">Zobrazit službu</string>
+    <string name="setting_service_title">Název služby</string>
+    <string name="setting_service_content">Obsah služby</string>
+
 
 </resources>
 <!--捷克语-->

+ 9 - 0
app/src/main/res/values-de/strings.xml

@@ -468,5 +468,14 @@
     <string name="mdb_level">MDB-Ebene</string>
     <string name="coin_x">Münzrausch multipliziert mit X</string>
     <string name="coin_divide_x">Münze dividieren durch X</string>
+    <string name="setting_text_message">Teil des Textes ändern</string>
+    <string name="sleep_msg">Die Maschine befindet sich im Ruhezustand.....</string>
+    <string name="setting_flavor_config">Geschmackseinstellung</string>
+    <string name="setting_flavor_multiple_choice">Geschmacksrichtung Multiple Choice</string>
+    <string name="setting_sale_service">Verkaufsservice</string>
+    <string name="setting_service_visibility">Service anzeigen</string>
+    <string name="setting_service_title">Servicetitel</string>
+    <string name="setting_service_content">Serviceinhalt</string>
+
 </resources>
 <!--德语-->

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

@@ -469,5 +469,15 @@
     <string name="mdb_level">MDB level</string>
     <string name="coin_x">Coin rush multiplied by X</string>
     <string name="coin_divide_x">Coin Divide by X</string>
+    <string name="setting_text_message">Modify some text</string>
+    <string name="sleep_msg">The machine is sleeping.....</string>
+    <string name="setting_flavor_config">Flavor settings</string>
+    <string name="setting_flavor_multiple_choice">Flavor multiple choices</string>
+    <string name="setting_sale_service">Sale Service</string>
+    <string name="setting_service_visibility">Show Service</string>
+    <string name="setting_service_title">Service Title</string>
+    <string name="setting_service_content">Service Content</string>
+
+
 </resources>
 <!--英语-->

+ 8 - 0
app/src/main/res/values-es/strings.xml

@@ -470,6 +470,14 @@
     <string name="mdb_level">nivel MDB</string>
     <string name="coin_x">Fiebre de monedas multiplicada por X</string>
     <string name="coin_divide_x">División de monedas por X</string>
+    <string name="setting_text_message">Modificar parte del texto</string>
+    <string name="sleep_msg">La máquina está durmiendo...</string>
+    <string name="setting_flavor_config">Configuración de sabor</string>
+    <string name="setting_flavor_multiple_choice">Sabor de opción múltiple</string>
+    <string name="setting_sale_service">Servicio de venta</string>
+    <string name="setting_service_visibility">Mostrar servicio</string>
+    <string name="setting_service_title">Título del servicio</string>
+    <string name="setting_service_content">Contenido del servicio</string>
 
 </resources>
 <!--西班牙语-->

+ 8 - 0
app/src/main/res/values-et/strings.xml

@@ -467,6 +467,14 @@
     <string name="mdb_level">MDB tase</string>
     <string name="coin_x">Müntide kiirus korrutatud X-ga</string>
     <string name="coin_divide_x">Müntide jagamine X-ga</string>
+    <string name="setting_text_message">Muutke osa tekstist</string>
+    <string name="sleep_msg">Masin magab...</string>
+    <string name="setting_flavor_config">Maitseseade</string>
+    <string name="setting_flavor_multiple_choice">Maitsestage valikvastustega</string>
+    <string name="setting_sale_service">Müügiteenus</string>
+    <string name="setting_service_visibility">Kuva teenus</string>
+    <string name="setting_service_title">Teenuse pealkiri</string>
+    <string name="setting_service_content">Teenuse sisu</string>
 
 </resources>
 <!--爱沙尼亚语-->

+ 8 - 0
app/src/main/res/values-hy/strings.xml

@@ -469,6 +469,14 @@
     <string name="mdb_level">MDB մակարդակ</string>
     <string name="coin_x">Մետաղադրամների շտապում բազմապատկված X-ով</string>
     <string name="coin_divide_x">Մետաղադրամի բաժանում X-ի</string>
+    <string name="setting_text_message">Փոփոխել տեքստի մի մասը</string>
+    <string name="sleep_msg">Մեքենան քնած է...</string>
+    <string name = "setting_flavor_config">Հոտի կարգավորում</string>
+    <string name="setting_flavor_multiple_choice">Բույրի բազմակի ընտրություն</string>
+    <string name="setting_sale_service">Վաճառքի ծառայություն</string>
+    <string name="setting_service_visibility">Ցուցադրել ծառայությունը</string>
+    <string name="setting_service_title">Ծառայության անվանում</string>
+    <string name="setting_service_content">Ծառայության բովանդակություն</string>
 
 </resources>
 <!--亚美尼亚语-->

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

@@ -473,6 +473,14 @@
     <string name="mdb_level">MDB 수준</string>
     <string name="coin_x">코인 러시 x X</string>
     <string name="coin_divide_x">코인을 X로 나누기</string>
+    <string name="setting_text_message">Փոփոխել տեքստի մի մասը</string>
+    <string name="sleep_msg">Մեքենան քնած է...</string>
+    <string name="setting_flavor_config">Հոտի կարգավորում</string>
+    <string name="setting_flavor_multiple_choice">Բույրի բազմակի ընտրություն</string>
+    <string name="setting_sale_service">판매 서비스</string>
+    <string name="setting_service_visibility">서비스 표시</string>
+    <string name="setting_service_title">서비스 제목</string>
+    <string name="setting_service_content">서비스 콘텐츠</string>
 
 </resources>
     <!--韩语-->

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

@@ -311,7 +311,7 @@
     <!-- 设备异常 -->
     <string name="error_power_saving">Energijos taupymas</string>
     <string name="error_wait">Įrenginys nėra automatinio pardavimo būsenoje</string>
-    <string name="error_contact_format">%s  Jei turite klausimų, susisiekite su parduotuvės personalu.(%s)</string>
+    <string name="error_contact_format">%s - Jei turite klausimų, susisiekite su parduotuvės personalu.(%s)</string>
     <string name="error_milk_slurry_empty_tip">Laukiama pieno mišinio papildymo</string>
     <string name="error_cup_empty_tip">Laukiama ledų puodelio papildymo</string>
     <string name="error_door_un_close">Įrenginio durelės neuždarytos</string>
@@ -467,6 +467,14 @@
     <string name="mdb_level">MDB lygis</string>
     <string name="coin_x">Monetų skubėjimas padaugintas iš X</string>
     <string name="coin_divide_x">Monetų padalijimas iš X</string>
+    <string name="setting_text_message">Keisti teksto dalį</string>
+    <string name="sleep_msg">Įrenginys miega...</string>
+    <string name="setting_flavor_config">Skonio nustatymas</string>
+    <string name="setting_flavor_multiple_choice">Pagardinkite kelis pasirinkimus</string>
+    <string name="setting_sale_service">Pardavimo paslauga</string>
+    <string name="setting_service_visibility">Rodyti paslaugą</string>
+    <string name="setting_service_title">Paslaugos pavadinimas</string>
+    <string name="setting_service_content">Paslaugos turinys</string>
 
 </resources>
 <!--立陶宛-->

+ 10 - 2
app/src/main/res/values-lv/strings.xml

@@ -67,7 +67,7 @@
     <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>
+    <string name="shop_cart_pay">Veikt apmaksu</string>
     <string name="shop_cart_price">%d saldējums, kopā %1s%2s</string>
     <string name="shop_cart_half_price_tip">Otrajam saldējumam (tādas pašas izvēles) 50% ATLAIDE!</string>
     <string name="peanut">Zemesrieksti</string>
@@ -89,7 +89,7 @@
     <!-- 付款页 -->
     <string name="pay_init_error">Iepirkumu grozs ir iztukšots, lūdzu, pasūtiet vēlreiz.</string>
     <string name="pay_close">Automātiski aizvērt pēc %d sekundēm.</string>
-    <string name="pay_go">Izrakstīšanās</string>
+    <string name="pay_go">Veikt apmaksu</string>
     <string name="pay_price">Kopā apmaksātā summa:&#160;</string>
     <string name="pay_way_tip">Lūdzu, atveriet WeChat/Alipay, lai skenētu un samaksātu.</string>
     <string name="pay_way_tip2">Lūdzu, uzrādiet skenerim maksājuma QR kodu.</string>
@@ -463,6 +463,14 @@
     <string name="mdb_level">MDB līmenis</string>
     <string name="coin_x">Monētu pieplūdums reizināts ar X</string>
     <string name="coin_divide_x">Monētu dalīšana ar X</string>
+    <string name="setting_text_message">Pārveidojiet teksta daļu</string>
+    <string name="sleep_msg">Ierīce guļ...</string>
+    <string name="setting_flavor_config">Garšas iestatījums</string>
+    <string name="setting_flavor_multiple_choice">Izgaršojiet vairākas izvēles iespējas</string>
+    <string name="setting_sale_service">Pārdošanas pakalpojums</string>
+    <string name="setting_service_visibility">Rādīt pakalpojumu</string>
+    <string name="setting_service_title">Pakalpojuma nosaukums</string>
+    <string name="setting_service_content">Pakalpojuma saturs</string>
 
 </resources>
 <!--拉脱维亚-->

+ 482 - 0
app/src/main/res/values-ms/strings.xml

@@ -0,0 +1,482 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <string name="setting_technology_language_describe">Bahasa Cina</string>
+
+    <!-- Konfigurasikan nama apl utama perbezaan-->
+    <string name="app_name">Mesin aiskrim</string>
+    <string name="bd" translatable="false">19900521</string>
+    <string name="un" translatable="false">ChenJinXu</string>
+    <string name="pos_no_ready" translatable="false">Peranti POS belum sedia!</string>
+    <string name="pay_way_tip_marshall" translatable="false">Sila akhirkan pembayaran anda pada POS.</string>
+    <string name="pay_error_pos" translatable="false">Kebenaran Ditolak</string>
+    <string name="cache_file_name" translatable="false">Ais Krim</string>
+    <string name="error_device_clean">Peranti untuk dibersihkan</string>
+
+    <!-- Modul komunikasi -->
+    <string name="plc_send_action_again">Hantar semula arahan >>> </string>
+    <string name="plc_connect_status">Sambungan: %s Penerangan: %s</string>
+    <string name="plc_header_length_error">Ralat panjang pengepala: %d</string>
+    <string name="plc_header_error">Ralat maklumat pengepala: %d != %d Data asal: %s %s</string>;
+    <string name="plc_message_length_error">Ralat panjang mesej standard: %d</string>
+    <string name="plc_body_empty">Tiada maklumat kandungan kandungan</string>
+    <string name="plc_body_length_error">Ralat panjang kandungan: %d != %d</string>
+
+    <string name="plc_disconnect_initiative">Putuskan sambungan klien secara aktif</string>
+    <string name="plc_disconnect">Putuskan sambungan peranti</string>
+    <string name="plc_has_other_order">Peranti belum memproses pesanan terakhir >> </string>
+    <string name="plc_send_order_again">Cuba semula hantar pesanan >> </string>
+    <string name="plc_make_error_not_status">Peralatan tidak melaporkan status pengeluaran, mengakibatkan penghantaran makanan tidak normal >> </string>
+    <string name="plc_message_body_empty">Kandungan mesej kosong! </string>
+    <string name="plc_order_empty">Kandungan pesanan telah dikosongkan!</string>
+    <string name="plc_order_result_empty">Panjang kandungan hasil pesanan adalah salah!</string>
+    <string name="plc_order_start">Bersedia untuk mula membuat aiskrim: %s</string>
+    <string name="plc_order_making">Sub pesanan sedang disampaikan: %s</string>
+    <string name="plc_order_prepare">Pesanan untuk diambil: %s</string>
+    <string name="plc_order_taked">Pesanan telah diambil: %s</string>
+    <string name="plc_order_busy">Status sibuk: %s</string>
+    <string name="plc_order_error">Gagal menghantar subpesanan!</string>
+    <string name="plc_order_error2">Pengecualian penghantaran makanan!</string>
+    <string name="plc_prepare">Peranti sedia untuk menerima pesanan!</string>
+    <string name="plc_not_order">Tiada maklumat pesanan!</string>
+    <string name="plc_order_receive">Terima pesanan >> %s</string>
+    <string name="plc_order_no_response">Tiada respons semasa membuat pesanan!</string>
+
+    <!-- Halaman iklan -->
+    <string name="guide_touch">Pemesanan skrin sentuh</string>
+    <string name="no_ready">Status jualan tidak normal</string>
+    <string name="is_in_sale_view">Sila keluar dari halaman pesanan dan cuba lagi. </string>
+    <string name="is_in_get_dishes_info">Mendapatkan maklumat produk~</string>
+    <string name="is_click_too_fast">Diklik terlalu cepat~</string>
+    <string name="is_used_code">Tiada aiskrim untuk dibuat untuk pesanan ini</string>
+    <string name="is_invalid_code">Op, kod QR anda tidak sah, sila hubungi pelayan~</string>
+    <string name="check_fail">Gagal membuat pertanyaan pesanan</string>
+    <string name="guide_text_1">Anda nampaknya kehilangan secawan aiskrim, datang dan cuba~</string>
+    <string name="guide_text_2">Hai, saya rasa awak nak makan aiskrim~</string>
+
+    <!-- Halaman pesanan -->
+    <string name="price_unit">¥</string>
+    <string name="ice_cream">Ais krim</string>
+    <string name="buy_too_much">Terhad kepada 6 cawan pada satu masa! </string>
+    <string name="no_dishes_info">Gagal mendapatkan maklumat produk! </string>
+    <string name="flavor_original">Ais krim asli</string>
+    <string name="flavor_original_hw">Ais krim asli</string>
+    <string name="flavor_multi">Ais krim pelbagai rasa</string>
+    <string name="flavor_sauce">Tambah jem +</string>
+    <string name="flavor_kernel">+ pilih kernel</string>
+    <string name="shop_cart_add">Tambahkan pada troli</string>
+    <string name="make_now">Buat sekarang</string>
+    <string name="shop_cart">Keranjang belanja</string>
+    <string name="shop_cart_pay">Pergi ke pembayaran</string>
+    <string name="shop_cart_price">Jumlah %d cawan, jumlah %1s%2s</string>
+    <string name="shop_cart_half_price_tip">Ais krim dengan spesifikasi yang sama, yang kedua boleh menikmati diskaun separuh harga! </string>
+    <string name="peanut">Peanut</string>
+    <string name="filbert">Hazelnut</string>
+    <string name="cashew">Gajus</string>
+    <string name="pineapple">Nanas</string>
+    <string name="strawberry">Strawberi</string>
+    <string name="blueberry">Blueberry</string>
+    <string name="mango">Mangga</string>
+    <string name="chocolates">Coklat</string>
+    <string name="oreo">Oreo</string>
+    <string name="flavor_invalid">Tiada</string>
+    <string name="flavor_stock_empty">Habis dijual</string>
+    <string name="spec_stock_empty">%s kehabisan stok</string>
+    <string name="spec_invalid">%s telah dialih keluar daripada rak</string>
+    <string name="flavor_stock">%d cawan lagi</string>
+    <string name="material_milk">Susu</string>
+    <string name="material_cup">cawan</string>
+
+    <!-- Halaman pembayaran -->
+    <string name="pay_init_error">Keranjang beli-belah telah dikosongkan, sila buat pesanan sekali lagi</string>
+    <string name="pay_close">Ditutup secara automatik selepas %ds</string>
+    <string name="pay_go">Sila bayar</string>
+    <string name="pay_price">Jumlah pembayaran sebenar:</string>
+    <string name="pay_way_tip">Sila buka WeChat/Alipay dan imbas kod QR untuk membayar</string>
+    <string name="pay_way_tip2">Sila letakkan kod pembayaran di bawah pengimbas kod untuk melengkapkan pembayaran</string>
+    <string name="pay_way">Kaedah pembayaran:</string>
+    <string name="pay_way_wechat">WeChat</string>
+    <string name="pay_way_alipay">Alipay</string>
+    <string name="paying_tip">Petua pembayaran</string>
+    <string name="paying_close">Batalkan pesanan secara automatik selepas %ds</string>
+    <string name="paying_describe">Pembayaran sedang dijalankan, sila tunggu...</string>
+    <string name="paying_success_tip">Pembayaran berjaya, pesanan sedang diproses...</string>
+    <string name="paying_fail_tip">Pembayaran gagal, sila cuba lagi</string>
+    <string name="paying_back">Kembali ke halaman sebelumnya,</string>
+    <string name="paying_again">Bayar balik</string>
+    <string name="pay_way_only">Hanya menyokong pembayaran WeChat dan Alipay</string>
+    <string name="pay_time_out">Tiada bayaran perlu dibayar selepas tamat masa, tutup antara muka</string>
+    <string name="pay_cancel">Batalkan pembayaran dan tutup antara muka</string>
+
+    <!-- Halaman makan -->
+    <string name="error_plc_order_err">Gagal membuat pesanan</string>
+    <string name="take_tip">Petua pengambilan makan</string>
+    <string name="take_back">Kembali ke halaman utama</string>
+    <string name="pay_success">Pembayaran berjaya</string>
+    <string name="order_complete">Pesanan selesai</string>
+    <string name="make_describe_ing">Ais krim anda sedang dibuat, sila tunggu...</string>
+    <string name="make_ing">Penyediaan hidangan</string>
+    <string name="take_describe_complete">Ais krim anda telah siap, sila ambil secepat mungkin! </string>
+    <string name="take_complete">Sila ambil makanan</string>
+    <string name="take_describe_close">Port pengambilan makanan sedang ditutup, sila beri perhatian. </string>
+    <string name="take_close">Menetapkan semula</string>
+    <string name="take_describe_finish">Pesanan selesai, dialu-alukan untuk melawat lain kali~</string>
+    <string name="take_finish">Diambil</string>
+    <string name="make_fail_tip">Ah, maaf~pembuatan gagal</string>
+    <string name="make_fail_describe">Jika anda mempunyai sebarang soalan, sila hubungi perkhidmatan pelanggan~</string>
+    <string name="make_fail_describe_refund">Ais krim yang belum dibuat akan dibayar balik dengan cara yang sama Jika anda mempunyai sebarang pertanyaan, sila hubungi perkhidmatan pelanggan~</string>
+
+    <!--Log masuk belakang -->
+    <string name="auth_login_type_scan">Imbas kod untuk log masuk</string>
+    <string name="auth_login_type_phone">Log masuk nombor telefon mudah alih</string>
+    <string name="auth_login_type_phone_hint">Sila masukkan nombor telefon mudah alih anda</string>
+    <string name="auth_login_type_pwd_hint">Kata laluan dinamik</string>
+    <string name="auth_login_type_pwd_get_way">Lihat kaedah pemerolehan kata laluan dinamik >></string>
+    <string name="auth_login_return">Kembali ke skrin pesanan</string>
+    <string name="auth_login_confirm">Log masuk</string>
+    <string name="auth_login_scan_hint">Sila kemukakan kod QR log masuk dan letakkan di port pengimbasan</string>
+    <string name="auth_login_scan_code_get_way">Lihat kaedah pemerolehan kod QR log masuk >></string>
+    <string name="auth_login_fail">Pengesahan log masuk gagal! </string>
+    <string name="auth_login_understand">Difahamkan</string>
+    <string name="operate_reason_title">Sila pilih sebab operasi</string>
+
+    <!-- Pengurusan bahagian belakang -->
+    <string name="auth_old_pwd">Sila masukkan kata laluan asal</string>
+    <string name="auth_old_pwd_fail">Ralat pengesahan kata laluan asal</string>
+    <string name="auth_new_pwd">Sila masukkan kata laluan baharu</string>
+    <string name="auth_new_pwd_again">Sila masukkan kata laluan baharu sekali lagi</string>
+    <string name="auth_new_pwd_different">Dua kata laluan baharu tidak konsisten, sila masukkan semula kata laluan baharu</string>
+    <string name="auth_new_pwd_success">Pengubahsuaian berjaya</string>
+    <string name="auth_fail">Pengesahan gagal!</string>
+    <string name="ice_cream_setting">Tetapan mesin ais krim</string>
+    <string name="return_start">Kembali ke pesanan</string>
+    <string name="exit_app">Keluar dari aplikasi</string>
+    <string name="guide_video">Panduan penggunaan\nVideo operasi</string>
+
+    <string name="setting_temperature_anomaly">Keabnormalan suhu</string>
+    <string name="realtime_warnings">Maklumat masa nyata:</string>
+    <string name="setting_common">Tetapan operasi</string>
+    <string name="setting_warnings">Rekod amaran</string>
+    <string name="setting_machine">Pengurusan mesin</string>
+    <string name="setting_switch">Tetapan mod</string>
+    <string name="setting_price">Pelan jualan</string>
+    <string name="error_plc_disconnect">Peranti tidak disambungkan</string>
+    <string name="setting_select_manual">Sila tukar peranti kepada keadaan manual dahulu! </string>
+    <string name="setting_plc_connect">Disambungkan</string>
+    <string name="setting_plc_un_connect">Tidak disambungkan</string>
+    <string name="setting_common_reset">Tetapkan semula</string>
+    <string name="setting_common_manual">Manual</string>
+    <string name="setting_common_auto">Auto</string>
+    <string name="setting_common_clean">Pembersihan mesin</string>
+    <string name="setting_common_check">Semakan operasi</string>
+    <string name="setting_common_order">Pesanan manual</string>
+    <string name="setting_common_config">Konfigurasi parameter</string>
+    <string name="setting_version_un_support">Versi MCU semasa tidak menyokong fungsi ini</string>
+    <string name="setting_reset_ing">Menetapkan semula</string>
+    <string name="setting_reset_success">Set semula berjaya</string>
+    <string name="setting_reset_fail">Reset gagal</string>
+    <string name="setting_check_prepare">Sila kosongkan pengecualian peranti dahulu! </string>
+    <string name="setting_plc_send_ing">Menghantar...</string>
+    <string name="setting_plc_send_success">Berjaya dihantar! </string>
+    <string name="setting_plc_send_fail">Penghantaran gagal! </string>
+    <string name="setting_plc_send_busy">Memproses arahan lain~</string>
+
+    <string name="setting_control_device">Pengurusan mesin</string>
+    <string name="setting_control_cut_down">Penjimatan kuasa dan kesegaran</string>
+    <string name="setting_control_power_on">Kuasa hidup</string>
+    <string name="setting_control_refrigeration">Auto (penyejukan)</string>
+    <string name="setting_control_keep_fresh">Mod malam (segar)</string>
+    <string name="setting_control_clean_mode">Pembersihan alur</string>
+    <string name="setting_control_keep_device">Bersedia</string>
+    <string name="setting_control_sauce_1">Pengurusan Jam 1</string>
+    <string name="setting_control_sauce_2">Pengurusan Jam 2</string>
+    <string name="setting_control_sauce_3">Pengurusan Jam 3</string>
+    <string name="setting_control_kernel_1">Pengurusan Guoshan 1</string>
+    <string name="setting_control_kernel_2">Pengurusan Guoshan 2</string>
+    <string name="setting_control_kernel_3">Pengurusan Guoshan 3</string>
+    <string name="setting_control_positive">positif</string>
+    <string name="setting_control_negative">Cabutan terbalik</string>
+    <string name="setting_control_stop">Berhenti</string>
+    <string name="setting_control_open">Buka</string>
+    <string name="setting_control_close">Tutup</string>
+    <string name="setting_control_cut_down_tip">Matikan semua sumber kuasa kecuali kesegaran? </string>
+    <string name="setting_control_cut_down_success">Masukkan mod penjimatan kuasa selepas 5 saat</string>
+    <string name="setting_switch_on">Hidup</string>
+    <string name="setting_switch_off">Mati</string>
+    <string name="setting_technology_version">Versi semasa: %s</string>
+    <string name="setting_technology_version_not_new">Tiada versi terkini</string>
+    <string name="setting_technology_version_new">Versi terkini: %s</string>
+    <string name="setting_technology_version_update">Kemas kini</string>
+    <string name="setting_technology_num">Nombor kilang</string>
+    <string name="setting_technology_num_reset">Tetapkan semula</string>
+    <string name="setting_technology_system_reset">Pulihkan tetapan kilang</string>
+    <string name="setting_technology_update_pwd">Tukar kata laluan</string>
+    <string name="setting_technology_upload_log">Log program</string>
+    <string name="setting_technology_clean_config">Pembersihan konfigurasi</string>
+    <string name="setting_technology">Sokongan teknikal</string>
+    <string name="setting_technology_upload_success">Muat naik berjaya</string>
+    <string name="setting_technology_mcu_debug">Penyahpepijatan MCU</string>
+    <string name="setting_technology_mcu_debug_fail">Permulaan gagal, sila pasang apl penyahpepijatan</string>
+    <string name="setting_technology_language">Bahasa pengaturcaraan</string>
+    <string name="setting_technology_sn_input">Sila masukkan nombor peranti sebenar</string>
+    <string name="setting_technology_sn_update">Mulakan semula aplikasi secara automatik selepas 5 saat untuk berkuat kuasa! </string>
+    <string name="setting_technology_debug">Mod nyahpepijat</string>
+
+
+    <string name="setting_run_mode">Mod jalankan</string>
+    <string name="setting_run_online">Mod dalam talian</string>
+    <string name="setting_run_offline">Mod luar talian</string>
+    <string name="setting_pay_mode">Kaedah pembayaran</string>
+    <string name="setting_pay_free">Mod percuma</string>
+    <string name="setting_pay_pos">mod mesin/juruwang POS</string>
+    <string name="setting_pay_online">Mod pembayaran dalam talian</string>
+
+    <string name="setting_clean_title">Pembersihan konfigurasi</string>
+    <string name="setting_clean_switch">Hidupkan sekatan pembersihan</string>
+    <string name="setting_lock_switch">Kunci tidak dibersihkan</string>
+    <string name="setting_clean_schedule_day">Kitaran pembersihan (hari)</string>
+    <string name="setting_clean_warn_first_time">Waktu awal amaran pertama (jam)</string>
+    <string name="setting_clean_warn_second_time">Amaran semula masa awal (jam)</string>
+    <string name="setting_clean_warn_last_time">Masa awal amaran terakhir (jam)</string>
+
+    <string name="setting_icecream_title">Ais krim</string>
+    <string name="setting_icecream_name">Ais krim asli</string>
+    <string name="setting_icecream_price">Harga aiskrim</string>
+    <string name="setting_kernel_title_1">Buah Hancur (1)</string>
+    <string name="setting_kernel_title_2">Remah Buah(2)</string>
+    <string name="setting_kernel_name_1">Nama buah (1)</string>
+    <string name="setting_kernel_name_2">Nama buah (2)</string>
+    <string name="setting_kernel_price_1">Harga hancurkan buah (1)</string>
+    <string name="setting_kernel_price_2">Harga hancurkan buah-buahan (2)</string>
+    <string name="setting_sauce_title_1">Jam(1)</string>
+    <string name="setting_sauce_title_2">Jam (2)</string>
+    <string name="setting_sauce_title_3">Jam (3)</string>
+    <string name="setting_sauce_name_1">Jam name (1)</string>
+    <string name="setting_sauce_name_2">Jam name (2)</string>
+    <string name="setting_sauce_name_3">Jam name (3)</string>
+    <string name="setting_sauce_price_1">Harga selai (1)</string>
+    <string name="setting_sauce_price_2">Harga jam (2)</string>
+    <string name="setting_sauce_price_3">Harga jam (3)</string>
+
+    <string name="setting_clean_countdown_time">Membersihkan kira detik:</string>
+    <string name="setting_clean_countdown_time_hour">Jam</string>
+    <string name="setting_clean_countdown_time_minute">Minit</string>
+    <string name="setting_clean_countdown_time_out">Masa pembersihan telah melebihi</string>
+    <string name="setting_clean_countdown_error_tip">Peranti sedang tidur</string>
+    <string name="setting_clean_countdown_error_describe">Menunggu untuk bangun~</string>
+
+    <string name="setting_clean_recent_time">Masa pembersihan terakhir: %s</string>
+    <string name="setting_clean_stir_time">Masa kacau:</string>
+    <string name="setting_clean_clean_time">Masa pembersihan semasa tangki bahan: %d</string>
+    <string name="setting_clean_button_pull_stop">Hentikan bersarang</string>
+    <string name="setting_clean_button_pull_start">Mulakan bersarang</string>
+    <string name="setting_clean_button_stir_stop">Berhenti mengacau</string>
+    <string name="setting_clean_button_stir_start">Mulakan kacau</string>
+    <string name="setting_clean_tip">Ia mengambil masa 3 minit untuk kacau pertama</string>
+    <string name="setting_clean_describe">Nota:\n1 Bahan hanya boleh dibuang dalam mod kacau\n2 Sila toskan adunan sebelum menambah air untuk pembersihan\n3 Sila letakkan cawan penyukat terus di bawah port pelepasan\n4. Apabila cawan penyukat adalah 8 minit penuh, "%s" akan dipaparkan dalam masa</string>
+    <string name="setting_clean_complete">Selesaikan pembersihan tangki</string>
+    <string name="setting_clean_finish">Selesai</string>
+    <string name="setting_clean_finish_tip">Klik butang Selesai selepas pembersihan selesai</string>
+
+    <string name="setting_operate_check_start">Mulakan semak</string>
+    <string name="setting_operate_check_tip">Peranti sedang diperiksa...</string>
+    <string name="setting_operate_check_progress_ing">Menyemak</string>
+    <string name="setting_operate_check_complete">Semak selesai</string>
+    <string name="setting_operate_check_complete_return">Semakan selesai dan akan kembali secara automatik selepas 5 saat</string>
+    <string name="setting_operate_check_exception">Semak pengecualian</string>
+    <string name="setting_operate_check_fail">Gagal</string>
+
+    <string name="setting_config_sauce_1">Jam 1 masa nyahcas</string>
+    <string name="setting_config_sauce_2">Masa nyahcas Jam 2</string>
+    <string name="setting_config_sauce_3">Masa pendispensan Jam 3</string>
+    <string name="setting_config_kernel_1">Hancur buah 1 masa nyahcas</string>
+    <string name="setting_config_kernel_2">Fruit crush 2 masa nyahcas</string>
+    <string name="setting_config_kernel_3">Fruit crush 3 discharging time</string>
+    <string name="setting_config_milk">Campur masa nyahcas</string>
+    <string name="setting_config_cup">Kali pertama cawan</string>
+    <string name="setting_config_free">Masa lapang</string>
+    <string name="setting_config_recommend">Tetapan yang disyorkan</string>
+    <string name="setting_config_sauce_1_recommend">Tetapan yang disyorkan ialah 4000 ms</string>
+    <string name="setting_config_sauce_2_recommend">Tetapan yang disyorkan ialah 3000 ms</string>
+    <string name="setting_config_sauce_3_recommend">Tetapan yang disyorkan ialah 5000 ms</string>
+    <string name="setting_config_kernel_1_recommend">Tetapan yang disyorkan ialah 1600 ms</string>
+    <string name="setting_config_kernel_2_recommend">Tetapan yang disyorkan ialah 1600 ms</string>
+    <string name="setting_config_kernel_3_recommend">Tetapan yang disyorkan ialah 1600 ms</string>
+    <string name="setting_config_milk_recommend">Tetapan yang disyorkan ialah 2800 ms</string>
+    <string name="setting_config_cup_recommend">Tetapan yang disyorkan ialah 2400 ms</string>
+    <string name="setting_config_free_recommend">Syorkan tetapan kepada 6 min</string>
+
+    <string name="remote_operate_success">Operasi berjaya</string>
+    <string name="remote_operate_failed">Operasi gagal</string>
+    <string name="remote_shutdown_flavor_stock">Campuran tidak mencukupi, operasi gagal</string>
+    <string name="remote_shutdown_in_sale">Operasi gagal semasa pengguna memesan makanan</string>
+
+    <!-- Keabnormalan peralatan -->
+    <string name="error_power_saving">Siaga penjimatan kuasa</string>
+    <string name="error_wait">Peranti belum memasuki keadaan jual automatik</string>
+    <string name="error_contact_format">%s-Jika anda mempunyai sebarang soalan, sila hubungi kakitangan operasi kedai (%s)</string>
+    <string name="error_milk_slurry_empty_tip">Menunggu pelayan mengisi susu</string>
+    <string name="error_cup_empty_tip">Menunggu pelayan mengisi semula cawan aiskrim</string>
+    <string name="error_door_un_close">Pintu peranti tidak ditutup</string>
+    <string name="error_toke_order_time_out">Tamat masa pengambilan makanan</string>
+    <string name="error_milk_slurry_lack">Mesin aiskrim kehabisan bahan</string>
+    <string name="error_cup_lack">Penitis cawan tiada cawan</string>
+    <string name="error_cup_1_lack">Tiub 1 cawan tiada</string>
+    <string name="error_cup_2_lack">Tiub 2 cawan tiada</string>
+    <string name="error_high_pressure">Tekan penggera tekanan tinggi</string>
+    <string name="error_nuts_1_lack">Nuts 1 tiada</string>
+    <string name="error_nuts_2_lack">Nuts 2 kekurangan bahan</string>
+    <string name="error_nuts_3_lack">Nuts 3 kekurangan bahan</string>
+    <string name="error_jam_1_lack">Jam 1 kehabisan bahan</string>
+    <string name="error_jam_2_lack">Jam 2 kekurangan bahan</string>
+    <string name="error_jam_3_lack">Jam 3 kekurangan bahan</string>
+    <string name="error_reset">Reset gagal</string>
+    <string name="error_cup_empty">Penitis cawan tiada cawan</string>
+    <string name="error_cup_1_empty">Tiada cawan dalam tiub cawan 1</string>
+    <string name="error_cup_2_empty">Tiada cawan dalam tiub No. 2 cawan</string>
+    <string name="error_no_in_refrigeration">Tidak memasuki penyejukan automatik</string>
+    <string name="error_milk_slurry_empty">Mesin aiskrim kehabisan bahan</string>
+    <string name="error_machine_fault">Kesalahan badan utama mesin aiskrim</string>
+    <string name="error_machine_offline">Badan utama mesin aiskrim telah kehilangan komunikasi</string>
+    <string name="error_order_time_out">Mesin aiskrim tidak menghasilkan aiskrim</string>
+    <string name="error_door_obstacle">Terdapat halangan di jeriji</string>
+    <string name="error_claw_no_cup">Kuku elektrik menjatuhkan cawan semasa operasi</string>
+    <string name="error_rotate_machine">Ralat motor pelangkah putaran peringkat putaran</string>
+    <string name="error_elevator_machine">Ralat motor stepper mengangkat peringkat berputar</string>
+    <string name="error_door_machine">Ralat motor stepper angkat pintu</string>
+    <string name="error_door_slip_fail">Gagal meluncur ke bawah cawan makan</string>
+    <string name="error_rotate_time_out">Tamat masa putaran jadual putaran</string>
+    <string name="error_contact_phone">Telefon:</string>
+
+    <!-- Permulaan -->
+    <string name="init_sn_input">Masukkan nombor peranti</string>
+    <string name="init_sn_check">Sila pastikan nombor peranti yang dimasukkan adalah tepat</string>
+    <string name="init_sn_save">Simpan dan mulakan semula untuk berkuat kuasa</string>
+    <string name="init_check_activation">Semak status pengaktifan···</string>
+    <string name="init_activation">Aktifkan peranti···</string>
+    <string name="init_activation_error">Pengaktifan gagal: %s</string>
+    <string name="init_power">Dapatkan kebenaran peranti···</string>
+    <string name="init_power_error">Gagal mendapatkan kebenaran peranti: %s</string>
+    <string name="init_synchronization">Data penyegerakan···</string>
+    <string name="init_synchronization_error">Ralat data penyegerakan: %s</string>
+    <string name="init_synchronization_error_dishes">Tiada maklumat hidangan</string>
+    <string name="init_synchronization_error_stock">Maklumat lokasi inventori peranti hilang</string>
+    <string name="init_synchronization_error_material">Maklumat bahan tiada</string>
+    <string name="init_synchronization_error_spec">Maklumat amalan hilang</string>
+    <string name="init_startup">Program permulaan...</string>
+    <string name="init_complete">Permulaan selesai...</string>
+    <string name="init_store_config">Kesan konfigurasi kedai···</string>
+    <string name="init_store_config_error">Pengecualian konfigurasi kedai: %s</string>
+    <string name="init_store_connect">Sambung ke sistem pesanan···</string>
+    <string name="init_store_connect_error">Pengecualian sistem pesanan sambungan: %s</string>
+    <string name="init_resource_download">Muat turun fail sumber: %s, kemajuan muat turun: %s</string>
+    <string name="init_update_tip">Naik taraf automatik sedang diselenggara, sila jangan beroperasi</string>
+    <string name="init_update_install">Memasang program terkini</string>
+    <string name="init_update_install_success">Naik taraf selesai, program akan bermula secara automatik, sila jangan beroperasi</string>
+    <string name="init_update_install_fail">Pemasangan gagal, sila cuba lagi</string>
+
+    <!-- Gesaan pop timbul -->
+    <string name="tip">Petua</string>
+    <string name="tip_empty_order">Tiada maklumat pesanan ditemui</string>
+    <string name="tip_used_order">Kod makan yang digunakan</string>
+    <string name="tip_search_order_failed">Gagal menanyakan data pesanan</string>
+    <string name="tip_use_technology">"Sila gunakan modul ini di bawah bimbingan sokongan teknikal!</string>
+    <string name="describe_shop_cart_clear_tip">Adakah anda mahu mengosongkan item troli beli-belah semasa? </string>
+    <string name="describe_update_password">Kata laluan semasa adalah lalai dan terdapat risiko keselamatan Adakah anda mahu menukarnya dengan segera? </string>
+    <string name="describe_paying_give_up_tip">Tempahan tidak akan dibuat selepas berputus asa. Jika pembayaran telah dibuat, sila hubungi kakitangan operasi. Adakah anda mahu meninggalkan pesanan? </string>
+    <string name="describe_open_spec_multiple">Untuk memastikan pengeluaran normal, fungsi ini akan melaraskan saiz bahagian setiap perisa kepada kira-kira 80% daripada bahagian pilihan tunggal\nAdakah anda pasti menghidupkannya? </string>
+    <string name="describe_open_free_mode">Adakah anda pasti menghidupkan mod aiskrim percuma untuk peranti ini? </string>
+    <string name="button_back">Kembali</string>
+    <string name="button_update">Ubah suai</string>
+    <string name="button_open">Lihat</string>
+    <string name="button_start">Mula</string>
+    <string name="button_clear">Kosongkan</string>
+    <string name="button_delete">Backspace</string>
+    <string name="button_confirm">Sahkan</string>
+    <string name="button_cancel">Batal</string>
+    <string name="button_un_set_pwd">Belum ditetapkan lagi</string>
+    <string name="button_set_pwd">Tetapkan kata laluan baharu</string>
+    <string name="button_paying_give_up">Tolak pesanan</string>
+    <string name="button_paying_keep_on">Teruskan bayar</string>
+    <string name="button_setting">Tetapan</string>
+
+    <string name="plc_errTip1">Mod manual peralatan</string>
+    <string name="plc_errTip2">Keabnormalan peralatan</string>
+    <string name="plc_errTip3">Peranti sedang sibuk</string>
+    <string name="plc_errTip4">Terdapat penderia di saluran keluar makanan</string>
+
+    <string name="setting_jam_set">Tukar</string>
+    <string name="setting_ker_map">Memetakan Pecah Buah</string>
+    <string name="setting_jam_map">Pemetaan saluran paip</string>
+    <string name="setting_ker_def">Hancur buah lalai</string>
+    <string name="setting_jam_def">Paip lalai</string>
+
+    <string name="time_ready">Masa semasa sedang disediakan</string>
+    <string name="maxcount_tips_start">Untuk memastikan rasa, sila imbas kod sekali lagi selepas mengambil 6 cawan~</string>
+    <string name="maxcount_tips_end">Anda masih mempunyai ais krim dan perlu terus mengimbas kod~</string>
+
+    <string name="setting_warn_real_time">Amaran masa nyata:</string>
+    <string name="setting_error_log">Log kesalahan:</string>
+    <string name="setting_make_fail_title">Buat Gagal !</string>
+    <string name="setting_make_fail">Penggera:</string>
+    <string name="setting_make_fail_insert">Pemasukan penggera amaran:</string>
+    <string name="setting_make_fail_warn">Amaran</string>
+
+    <!-- Log -->
+    <string name="making_error">Pengecualian dalam membuat aiskrim</string>
+    <string name="making_ing">Membuat aiskrim</string>
+    <string name="making_out_cup">making_out_cup</string>
+    <string name="making_out_flavor">Ais krim</string>
+    <string name="making_taking">Menunggu untuk mengambil aiskrim</string>
+    <string name="making_taked">Ais krim telah diambil</string>
+    <string name="making_finish">Selesaikan pesanan</string>
+    <string name="making_next">Buat ais krim seterusnya dan terdapat %d aiskrim yang belum dibuat</string>
+    <string name="mcu_connect">Sambungan peranti berjaya</string>
+    <string name="mcu_disconnect">Peranti diputuskan sambungan</string>
+    <string name="mcu_waring_message">Amaran: %s, Mesej: %s</string>
+
+    <string name="setting_select_icon">Pilih ikon</string>
+    <string name="setting_select_kernel_icon">Pilih ikon hancurkan buah</string>
+    <string name="setting_select_sauce_icon">Pilih ikon jem</string>
+
+    <string name="clean_recycle">Kitaran pembersihan: %d</string>
+    <string name="clean_lock_warning_last">Amaran pembersihan terakhir</string>
+    <string name="clean_lock_warning_first">Amaran pembersihan pertama</string>
+    <string name="clean_lock_warning_second">Amaran pembersihan kedua</string>
+    <string name="clean_lock_notify_last">Pembersihan pemberitahuan terakhir</string>
+    <string name="clean_lock_notify_first">Pembersihan pemberitahuan pertama</string>
+    <string name="clean_lock_notify_second">Pembersihan pemberitahuan kedua</string>
+    <string name="scan_code">Kod QR diiktiraf: %s</string>
+
+    <string name="update_channel">Kemas kini saluran pembayaran kepada: %d</string>
+    <string name="update_mode">Kemas kini mod larian ialah: %d</string>
+
+    <string name="credit_failed">Komunikasi pembaca kad gagal, sila cuba lagi kemudian</string>
+    <string name="system_link">Sambungkan sistem</string>
+    <string name="system_divorce">Tinggalkan sistem</string>
+    <string name="update_app">Semak kemas kini</string>
+    <string name="price_model">Bayaran bercampur wang kertas dan syiling</string>
+    <string name="nayax_model1">Nayax No Idle</string>
+    <string name="nayax_model2">Nayax Idle</string>
+    <string name="have_money">Amaun yang dilaburkan:</string>
+    <string name="nayax_model">Model NaYax:</string>
+    <string name="nayax_pay">Bayaran NaYax</string>
+    <string name="nayax_pay_mix">NaYax+bayaran bercampur</string>
+    <string name="setting_pay_pos_pay_mix">Pembaca kad MDB + pembayaran bercampur</string>
+    <string name="online_and_price_model">Dua kod dalam satu pembayaran + pembayaran wang kertas</string>
+    <string name="ict_currency_selection">Pemilihan mata wang ICT</string>
+    <string name="banknote_exchange_protocol">Protokol Pertukaran Wang Kertas</string>
+    <string name="mdb_level">MDB level</string>
+    <string name="coin_x">Tergesa-gesa syiling didarab dengan X</string>
+    <string name="coin_divide_x">Syiling Bahagi dengan X</string>
+    <string name="setting_text_message">Ubah suai sebahagian daripada teks</string>
+    <string name="sleep_msg">Mesin sedang tidur. . . </string>
+    <string name="setting_flavor_config">Tetapan rasa</string>
+    <string name="setting_flavor_multiple_choice">Aneka pilihan rasa</string>
+    <string name="coin_rate">Pengganda syiling</string>
+    <string name="setting_sale_service">Perkhidmatan Jualan</string>
+    <string name="setting_service_visibility">Tunjukkan Perkhidmatan</string>
+    <string name="setting_service_title">Tajuk Perkhidmatan</string>
+    <string name="setting_service_content">Kandungan Perkhidmatan</string>
+
+</resources>
+<!--马来语-->

+ 483 - 0
app/src/main/res/values-ro/strings.xml

@@ -0,0 +1,483 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+    <string name="setting_technology_language_describe">Română</string>
+
+    <!-- Configurați numele aplicației principale a diferenței-->
+    <string name="app_name">Mașină de înghețată</string>
+    <string name="bd" translatable="false">19900521</string>
+    <string name="un" translatable="false">ChenJinXu</string>
+    <string name="pos_no_ready" translatable="false">Dispozitivul POS nu este pregătit!</string>
+    <string name="pay_way_tip_marshall" translatable="false">Vă rugăm să finalizați plata la POS.</string>
+    <string name="pay_error_pos" translatable="false">Autorizare refuzată</string>
+    <string name="cache_file_name" translatable="false">Înghețată</string>
+    <string name="error_device_clean">Dispozitiv de curățat</string>
+
+    <!-- Modul de comunicare -->
+    <string name="plc_send_action_again">Retrimiteți comanda >>> </string>
+    <string name="plc_connect_status">Conexiune: %s Descriere: %s</string>
+    <string name="plc_header_length_error">Eroare de lungime a antetului: %d</string>
+    <string name="plc_header_error">Eroare de informații despre antet: %d != %d Date originale: %s %s</string>
+    <string name="plc_message_length_error">Eroare standard privind lungimea mesajului: %d</string>
+    <string name="plc_body_empty">Fără informații despre conținutul corpului</string>
+    <string name="plc_body_length_error">Eroare de lungime a conținutului: %d != %d</string>
+
+    <string name="plc_disconnect_initiative">Deconectați activ clientul</string>
+    <string name="plc_disconnect">Deconectarea dispozitivului</string>
+    <string name="plc_has_other_order">Dispozitivul nu a procesat ultima comandă >> </string>
+    <string name="plc_send_order_again">Reîncercați să trimiteți comanda >> </string>
+    <string name="plc_make_error_not_status">Echipamentul nu a raportat starea producției, ceea ce a dus la livrarea anormală a mesei >> </string>
+    <string name="plc_message_body_empty">Conținutul mesajului este gol! </string>
+    <string name="plc_order_empty">Conținutul comenzii a fost șters!</string>
+    <string name="plc_order_result_empty">Lungimea conținutului rezultatului comenzii este greșită!</string>
+    <string name="plc_order_start">Gata să începeți să faceți înghețată: %s</string>
+    <string name="plc_order_making">Subcomandă în curs de difuzare: %s</string>
+    <string name="plc_order_prepare">Comanda de ridicat: %s</string>
+    <string name="plc_order_taked">Comanda a fost luată: %s</string>
+    <string name="plc_order_busy">Starea ocupat: %s</string>
+    <string name="plc_order_error">Livrarea comenzii secundare a eșuat!</string>
+    <string name="plc_order_error2">Excepție de livrare a mesei!</string>
+    <string name="plc_prepare">Dispozitivul este gata să primească comenzi!</string>
+    <string name="plc_not_order">Fără informații despre comandă!</string>
+    <string name="plc_order_receive">Comandă primită >> %s</string>
+    <string name="plc_order_no_response">Niciun răspuns la plasarea comenzii!</string>
+
+    <!-- Pagina de publicitate -->
+    <string name="guide_touch">Ordinarea ecranului tactil</string>
+    <string name="no_ready">Starea anormală a vânzărilor</string>
+    <string name="is_in_sale_view">Ieșiți din pagina de comandă și încercați din nou. </string>
+    <string name="is_in_get_dishes_info">Obținerea de informații despre produse~</string>
+    <string name="is_click_too_fast">S-a făcut clic prea repede~</string>
+    <string name="is_used_code">Nu există înghețată de făcut pentru această comandă</string>
+    <string name="is_invalid_code">Hopa, codul dvs. QR este invalid, vă rugăm să contactați chelnerul~</string>
+    <string name="check_fail">Ordinea de interogare a eșuat</string>
+    <string name="guide_text_1">Se pare că îți lipsește o ceașcă de înghețată, vino și încearcă-o~</string>
+    <string name="guide_text_2">Bună, cred că vrei să mănânci înghețată~</string>
+
+    <!-- Pagina de comandă -->
+    <string name="price_unit">¥</string>
+    <string name="ice_cream">Îghețată</string>
+    <string name="buy_too_much">Limitat la 6 cesti odata! </string>
+    <string name="no_dishes_info">Obținerea informațiilor despre produs a eșuat! </string>
+    <string name="flavor_original">Înghețată originală</string>
+    <string name="flavor_original_hw">Înghețată originală</string>
+    <string name="flavor_multi">Înghețată cu mai multe arome</string>
+    <string name="flavor_sauce">Adăugați gem +</string>
+    <string name="flavor_kernel">+ alegeți nucleul</string>
+    <string name="shop_cart_add">Adăugați în coș</string>
+    <string name="make_now">Fă acum</string>
+    <string name="shop_cart">Coș de cumpărături</string>
+    <string name="shop_cart_pay">Accesați plată</string>
+    <string name="shop_cart_price">Total %d cani, total %1s%2s</string>
+    <string name="shop_cart_half_price_tip">Înghețată de aceleași specificații, a doua se poate bucura de reducere la jumătate de preț! </string>
+    <string name="peanut">Arahide</string>
+    <string name="filbert">Alune</string>
+    <string name="cashew">Caju</string>
+    <string name="pineapple">Ananas</string>
+    <string name="strawberry">Capsuni</string>
+    <string name="blueberry">Afine</string>
+    <string name="mango">Mango</string>
+    <string name="chocolates">Ciocolată</string>
+    <string name="oreo">Oreo</string>
+    <string name="flavor_invalid">Niciuna</string>
+    <string name="flavor_stock_empty">Epuizat</string>
+    <string name="spec_stock_empty">%s este epuizat</string>
+    <string name="spec_invalid">%s a fost eliminat de pe rafturi</string>
+    <string name="flavor_stock">%d căni rămase</string>
+    <string name="material_milk">Lapte</string>
+    <string name="material_cup">cupă</string>
+
+    <!-- Pagina de plată -->
+    <string name="pay_init_error">Coșul de cumpărături a fost șters, vă rugăm să plasați din nou o comandă</string>
+    <string name="pay_close">Închide automat după %ds</string>
+    <string name="pay_go">Plătiți</string>
+    <string name="pay_price">Total de plată efectivă:</string>
+    <string name="pay_way_tip">Deschideți WeChat/Alipay și scanați codul QR pentru a plăti</string>
+    <string name="pay_way_tip2">Plasați codul de plată sub scannerul de coduri pentru a finaliza plata</string>
+    <string name="pay_way">Metoda de plată:</string>
+    <string name="pay_way_wechat">WeChat</string>
+    <string name="pay_way_alipay">Alipay</string>
+    <string name="paying_tip">Sfat de plată</string>
+    <string name="paying_close">Anulați automat comanda după %ds</string>
+    <string name="paying_describe">Plata în curs, așteptați...</string>
+    <string name="paying_success_tip">Plata reușită, comanda este în curs de procesare...</string>
+    <string name="paying_fail_tip">Plata nu a reușit, încercați din nou</string>
+    <string name="paying_back">Reveniți la pagina anterioară,</string>
+    <string name="paying_again">Plătește din nou</string>
+    <string name="pay_way_only">Acceptă numai plățile WeChat și Alipay</string>
+    <string name="pay_time_out">Nici o plată datorată după expirarea timpului, închideți interfața</string>
+    <string name="pay_cancel">Anulați plata și închideți interfața</string>
+
+    <!-- Pagina de mese -->
+    <string name="error_plc_order_err">Eșuat la efectuarea comenzii</string>
+    <string name="take_tip">Sfaturi pentru a lua masa</string>
+    <string name="take_back">Reveniți la pagina de pornire</string>
+    <string name="pay_success">Plata reușită</string>
+    <string name="order_complete">Comanda finalizată</string>
+    <string name="make_describe_ing">Îți face înghețata, așteptați...</string>
+    <string name="make_ing">Pregătirea mesei</string>
+    <string name="take_describe_complete">Înghețata dvs. a fost finalizată, vă rugăm să o ridicați cât mai curând posibil! </string>
+    <string name="take_complete">Vă rugăm să luați masa</string>
+    <string name="take_describe_close">Portul de alimentare se închide, vă rugăm să fiți atenți. </string>
+    <string name="take_close">Resetare</string>
+    <string name="take_describe_finish">Comanda finalizată, bine ați venit să o vizitați data viitoare~</string>
+    <string name="take_finish">Luat</string>
+    <string name="make_fail_tip">Ah, scuze~efectuarea a eșuat</string>
+    <string name="make_fail_describe">Dacă aveți întrebări, vă rugăm să contactați serviciul pentru clienți~</string>
+    <string name="make_fail_describe_refund">Înghețata nepreparată va fi rambursată în același mod. Dacă aveți întrebări, vă rugăm să contactați serviciul pentru clienți~</string>
+
+    <!--Autentificare backend -->
+    <string name="auth_login_type_scan">Scanați codul pentru a vă conecta</string>
+    <string name="auth_login_type_phone">Autentificare la numărul de telefon mobil</string>
+    <string name="auth_login_type_phone_hint">Vă rugăm să introduceți numărul dvs. de telefon mobil</string>
+    <string name="auth_login_type_pwd_hint">Parolă dinamică</string>
+    <string name="auth_login_type_pwd_get_way">Vizualizați metoda dinamică de achiziție a parolei >></string>
+    <string name="auth_login_return">Revenire la ecranul de comandă</string>
+    <string name="auth_login_confirm">Autentificare</string>
+    <string name="auth_login_scan_hint">Prezentați codul QR de conectare și plasați-l în portul de scanare</string>
+    <string name="auth_login_scan_code_get_way">Vizualizați metoda de achiziție a codului QR de conectare >></string>
+    <string name="auth_login_fail">Autentificarea autentificată a eșuat! </string>
+    <string name="auth_login_understand">Înțeles</string>
+    <string name="operate_reason_title">Vă rugăm să selectați motivul operației</string>
+
+    <!-- Management backend -->
+    <string name="auth_old_pwd">Vă rugăm să introduceți parola originală</string>
+    <string name="auth_old_pwd_fail">Eroare de verificare a parolei originale</string>
+    <string name="auth_new_pwd">Vă rugăm să introduceți o nouă parolă</string>
+    <string name="auth_new_pwd_again">Vă rugăm să introduceți din nou noua parolă</string>
+    <string name="auth_new_pwd_different">Cele două noi parole sunt inconsecvente, vă rugăm să reintroduceți noua parolă</string>
+    <string name="auth_new_pwd_success">Modificare reușită</string>
+    <string name="auth_fail">Autentificarea eșuată!</string>
+    <string name="ice_cream_setting">Setări aparat de înghețată</string>
+    <string name="return_start">Revenire la comandă</string>
+    <string name="exit_app">Ieșiți din aplicație</string>
+    <string name="guide_video">Ghid de utilizare\nVideo de operare</string>
+
+    <string name="setting_temperature_anomaly">Anormalitate de temperatură</string>
+    <string name="realtime_warnings">Informații în timp real:</string>
+    <string name="setting_common">Setări operaționale</string>
+    <string name="setting_warnings">Înregistrare de avertizare</string>
+    <string name="setting_machine">Gestionarea mașinii</string>
+    <string name="setting_switch">Setarea modului</string>
+    <string name="setting_price">Plan de vânzări</string>
+    <string name="error_plc_disconnect">Dispozitivul nu este conectat</string>
+    <string name="setting_select_manual">Vă rugăm să comutați mai întâi dispozitivul la starea manuală! </string>
+    <string name="setting_plc_connect">Conectat</string>
+    <string name="setting_plc_un_connect">Neconectat</string>
+    <string name="setting_common_reset">Resetați</string>
+    <string name="setting_common_manual">Manual</string>
+    <string name="setting_common_auto">Automat</string>
+    <string name="setting_common_clean">Curăţare maşină</string>
+    <string name="setting_common_check">Verificarea funcționării</string>
+    <string name="setting_common_order">Comanda manuală</string>
+    <string name="setting_common_config">Configurarea parametrilor</string>
+    <string name="setting_version_un_support">Versiunea actuală a MCU nu acceptă această funcție</string>
+    <string name="setting_reset_ing">Resetare</string>
+    <string name="setting_reset_success">Resetare reușită</string>
+    <string name="setting_reset_fail">Resetarea eșuată</string>
+    <string name="setting_check_prepare">Ștergeți mai întâi excepția dispozitivului! </string>
+    <string name="setting_plc_send_ing">Se trimite...</string>
+    <string name="setting_plc_send_success">Trimis cu succes! </string>
+    <string name="setting_plc_send_fail">Trimiterea a eșuat! </string>
+    <string name="setting_plc_send_busy">Se procesează alte instrucțiuni~</string>
+
+    <string name="setting_control_device">Gestionarea mașinii</string>
+    <string name="setting_control_cut_down">Economie de energie și prospețime</string>
+    <string name="setting_control_power_on">Porniți</string>
+    <string name="setting_control_refrigeration">Automat (răcire)</string>
+    <string name="setting_control_keep_fresh">Modul de noapte (proaspăt)</string>
+    <string name="setting_control_clean_mode">Curăţare prize</string>
+    <string name="setting_control_keep_device">Standby</string>
+    <string name="setting_control_sauce_1">Gestionarea Jam 1</string>
+    <string name="setting_control_sauce_2">Gestionarea Jam 2</string>
+    <string name="setting_control_sauce_3">Gestionarea Jam 3</string>
+    <string name="setting_control_kernel_1">Management Guoshan 1</string>
+    <string name="setting_control_kernel_2">Gestionarea Guoshan 2</string>
+    <string name="setting_control_kernel_3">Management Guoshan 3</string>
+    <string name="setting_control_positive">pozitiv</string>
+    <string name="setting_control_negative">Desenare inversă</string>
+    <string name="setting_control_stop">Opriți</string>
+    <string name="setting_control_open">Deschide</string>
+    <string name="setting_control_close">Închidere</string>
+    <string name="setting_control_cut_down_tip">Opriți toate sursele de alimentare, cu excepția prospețimii? </string>
+    <string name="setting_control_cut_down_success">Intrați în modul de economisire a energiei după 5 secunde</string>
+
+
+    <string name="setting_switch_on">Activat</string>
+    <string name="setting_switch_off">Dezactivat</string>
+    <string name="setting_technology_version">Versiunea actuală: %s</string>
+    <string name="setting_technology_version_not_new">Fără cea mai recentă versiune</string>
+    <string name="setting_technology_version_new">Cea mai recentă versiune: %s</string>
+    <string name="setting_technology_version_update">Actualizare</string>
+    <string name="setting_technology_num">Număr din fabrică</string>
+    <string name="setting_technology_num_reset">Resetați</string>
+    <string name="setting_technology_system_reset">Restabiliți setările din fabrică</string>
+    <string name="setting_technology_update_pwd">Schimbați parola</string>
+    <string name="setting_technology_upload_log">Jurnal de program</string>
+    <string name="setting_technology_clean_config">Configurație de curățare</string>
+    <string name="setting_technology">Asistență tehnică</string>
+    <string name="setting_technology_upload_success">Încărcare reușită</string>
+    <string name="setting_technology_mcu_debug">Depanare MCU</string>
+    <string name="setting_technology_mcu_debug_fail">Pornire eșuată, instalați aplicația de depanare</string>
+    <string name="setting_technology_language">Limbajul de programare</string>
+    <string name="setting_technology_sn_input">Vă rugăm să introduceți numărul real al dispozitivului</string>
+    <string name="setting_technology_sn_update">Reporniți automat aplicația după 5 secunde pentru a intra în vigoare! </string>
+    <string name="setting_technology_debug">Mod de depanare</string>
+
+
+    <string name="setting_run_mode">Mod de rulare</string>
+    <string name="setting_run_online">Modul online</string>
+    <string name="setting_run_offline">Mod offline</string>
+    <string name="setting_pay_mode">Metoda de plată</string>
+    <string name="setting_pay_free">Modul gratuit</string>
+    <string name="setting_pay_pos">modul aparat POS/casier</string>
+    <string name="setting_pay_online">Modul de plată online</string>
+
+    <string name="setting_clean_title">Configurație de curățare</string>
+    <string name="setting_clean_switch">Activați restricțiile de curățare</string>
+    <string name="setting_lock_switch">Lacăt necurățat</string>
+    <string name="setting_clean_schedule_day">Ciclul de curățare (zile)</string>
+    <string name="setting_clean_warn_first_time">Timp de avans al primului avertisment (ore)</string>
+    <string name="setting_clean_warn_second_time">Timp anticipat de re-avertizare (ore)</string>
+    <string name="setting_clean_warn_last_time">Ora de avans al ultimului avertisment (ore)</string>
+
+    <string name="setting_icecream_title">Îghețată</string>
+    <string name="setting_icecream_name">Înghețată originală</string>
+    <string name="setting_icecream_price">Prețul înghețatei</string>
+    <string name="setting_kernel_title_1">Fructe zdrobite (1)</string>
+    <string name="setting_kernel_title_2">Fructe zdrobite (2)</string>
+    <string name="setting_kernel_name_1">Numele fructelor (1)</string>
+    <string name="setting_kernel_name_2">Numele fructelor (2)</string>
+    <string name="setting_kernel_price_1">Prețul zdrobirii fructelor (1)</string>
+    <string name="setting_kernel_price_2">Prețul zdrobirii fructelor (2)</string>
+    <string name="setting_sauce_title_1">Jam(1)</string>
+    <string name="setting_sauce_title_2">Dulceata (2)</string>
+    <string name="setting_sauce_title_3">Dulceata (3)</string>
+    <string name="setting_sauce_name_1">Nume dulceață (1)</string>
+    <string name="setting_sauce_name_2">Nume dulceață (2)</string>
+    <string name="setting_sauce_name_3">Nume dulceață (3)</string>
+    <string name="setting_sauce_price_1">Prețul gemului (1)</string>
+    <string name="setting_sauce_price_2">Prețul gemului (2)</string>
+    <string name="setting_sauce_price_3">Prețul gemului (3)</string>
+
+    <string name="setting_clean_countdown_time">Numărătoare inversă de curățare:</string>
+    <string name="setting_clean_countdown_time_hour">Ora</string>
+    <string name="setting_clean_countdown_time_minute">Minut</string>
+    <string name="setting_clean_countdown_time_out">Timpul de curățare a depășit</string>
+    <string name="setting_clean_countdown_error_tip">Dispozitivul inactiv</string>
+    <string name="setting_clean_countdown_error_describe">Se așteaptă trezirea~</string>
+
+    <string name="setting_clean_recent_time">Ora ultimei curățări: %s</string>
+    <string name="setting_clean_stir_time">Timp de amestecare:</string>
+    <string name="setting_clean_clean_time">Timpul curent de curățare a rezervorului de material: %d</string>
+    <string name="setting_clean_button_pull_stop">Opriți imbricarea</string>
+    <string name="setting_clean_button_pull_start">Începeți imbricarea</string>
+    <string name="setting_clean_button_stir_stop">Nu mai amestecați</string>
+    <string name="setting_clean_button_stir_start">Începe să amesteci</string>
+    <string name="setting_clean_tip">Prima amestecare durează 3 minute</string>
+    <string name="setting_clean_describe">Note:\n1 Materialul poate fi evacuat numai în modul de amestecare\n2 Vă rugăm să scurgeți amestecul înainte de a adăuga apă pentru curățare\n3. Când paharul de măsurat este plin la 80%, „%s” va apărea în timp</string>
+    <string name="setting_clean_complete">Curăţare completă a rezervorului</string>
+    <string name="setting_clean_finish">Finalizare</string>
+    <string name="setting_clean_finish_tip">Faceți clic pe butonul Terminare după ce curățarea este finalizată</string>
+
+    <string name="setting_operate_check_start">Începe verificarea</string>
+    <string name="setting_operate_check_tip">Dispozitivul este verificat...</string>
+    <string name="setting_operate_check_progress_ing">Verificare</string>
+    <string name="setting_operate_check_complete">Verificare finalizată</string>
+    <string name="setting_operate_check_complete_return">Verificarea este finalizată și va reveni automat după 5 secunde</string>
+    <string name="setting_operate_check_exception">Verificați excepția</string>
+    <string name="setting_operate_check_fail">Eșuat</string>
+
+    <string name="setting_config_sauce_1">Timp de descărcare Jam 1</string>
+    <string name="setting_config_sauce_2">Timp de descărcare Jam 2</string>
+    <string name="setting_config_sauce_3">Timp de distribuire a gemului 3</string>
+    <string name="setting_config_kernel_1">Zibire de fructe 1 timp de descărcare</string>
+    <string name="setting_config_kernel_2">Timp de descărcare pentru zdrobirea fructelor 2</string>
+    <string name="setting_config_kernel_3">Timp de descărcare pentru zdrobirea fructelor 3</string>
+    <string name="setting_config_milk">Timp de descărcare a amestecului</string>
+    <string name="setting_config_cup">Prima cupă</string>
+    <string name="setting_config_free">Timp liber</string>
+    <string name="setting_config_recommend">Setări recomandate</string>
+    <string name="setting_config_sauce_1_recommend">Setarea recomandată la 4000 ms</string>
+    <string name="setting_config_sauce_2_recommend">Setarea recomandată este de 3000 ms</string>
+    <string name="setting_config_sauce_3_recommend">Setarea recomandată este de 5000 ms</string>
+    <string name="setting_config_kernel_1_recommend">Setarea recomandată este de 1600 ms</string>
+    <string name="setting_config_kernel_2_recommend">Setarea recomandată este de 1600 ms</string>
+    <string name="setting_config_kernel_3_recommend">Setarea recomandată este de 1600 ms</string>
+    <string name="setting_config_milk_recommend">Setarea recomandată este de 2800 ms</string>
+    <string name="setting_config_cup_recommend">Setarea recomandată este de 2400 ms</string>
+    <string name="setting_config_free_recommend">Setarea recomandată la 6 minute</string>
+
+    <string name="remote_operate_success">Operațiune reușită</string>
+    <string name="remote_operate_failed">Operațiunea eșuată</string>
+    <string name="remote_shutdown_flavor_stock">Amestecul insuficient, operațiunea eșuată</string>
+    <string name="remote_shutdown_in_sale">Operațiunea a eșuat în timp ce utilizatorul comanda mâncare</string>
+
+    <!-- Anormalitate echipament -->
+    <string name="error_power_saving">Mod de așteptare pentru economisirea energiei</string>
+    <string name="error_wait">Dispozitivul nu a intrat în starea de vânzare automată</string>
+    <string name="error_contact_format">%s-Dacă aveți întrebări, vă rugăm să contactați personalul de operare a magazinului (%s)</string>
+    <string name="error_milk_slurry_empty_tip">Se așteaptă ca chelnerul să completeze lapte</string>
+    <string name="error_cup_empty_tip">Așteptăm ca chelnerul să umple paharul cu înghețată</string>
+    <string name="error_door_un_close">Ușa dispozitivului nu este închisă</string>
+    <string name="error_toke_order_time_out">Timp de preluare a mesei</string>
+    <string name="error_milk_slurry_lack">Mașina de înghețată nu mai are ingrediente</string>
+    <string name="error_cup_lack">Picuratorul de ceașcă îi lipsește o ceașcă</string>
+    <string name="error_cup_1_lack">Lipsește un tub de cană</string>
+    <string name="error_cup_2_lack">Lipsește tubul cu 2 pahare</string>
+    <string name="error_high_pressure">Apăsați alarma de înaltă presiune</string>
+    <string name="error_nuts_1_lack">Nuts 1 lipsește</string>
+    <string name="error_nuts_2_lack">Nuts 2 nu are material</string>
+    <string name="error_nuts_3_lack">Nuts 3 nu are ingrediente</string>
+    <string name="error_jam_1_lack">Dulceata 1 nu mai are ingrediente</string>
+    <string name="error_jam_2_lack">Dulceata 2 lipsește ingrediente</string>
+    <string name="error_jam_3_lack">Dulceata 3 îi lipsesc ingredientele</string>
+    <string name="error_reset">Resetarea eșuată</string>
+    <string name="error_cup_empty">Picuratorul de ceașcă nu are cană</string>
+    <string name="error_cup_1_empty">Nici o cană în tubul de ceașcă 1</string>
+    <string name="error_cup_2_empty">Nici o cană în tubul de cană nr. 2</string>
+    <string name="error_no_in_refrigeration">Nu intră în refrigerare automată</string>
+    <string name="error_milk_slurry_empty">Mașină de înghețată fără ingrediente</string>
+    <string name="error_machine_fault">Eșecul corpului principal al mașinii de înghețată</string>
+    <string name="error_machine_offline">Corpul principal al mașinii de înghețată și-a pierdut comunicarea</string>
+    <string name="error_order_time_out">Mașina de înghețată nu produce înghețată</string>
+    <string name="error_door_obstacle">Există un obstacol la grătar</string>
+    <string name="error_claw_no_cup">Gheara electrică cade o cană în timpul funcționării</string>
+    <string name="error_rotate_machine">Eroare motor pas cu pas de rotație a treptei rotative</string>
+    <string name="error_elevator_machine">Eroare motor pas cu pas de ridicare a treptei rotative</string>
+    <string name="error_door_machine">Eroare motor pas cu pas ridicare uși</string>
+    <string name="error_door_slip_fail">Nu s-a putut aluneca în jos cana de luat masa</string>
+    <string name="error_rotate_time_out">Timpul de rotație al tabelului de rotație</string>
+    <string name="error_contact_phone">Telefon:</string>
+
+    <!-- Inițializare -->
+    <string name="init_sn_input">Introduceți numărul dispozitivului</string>
+    <string name="init_sn_check">Vă rugăm să vă asigurați că numărul de dispozitiv introdus este corect</string>
+    <string name="init_sn_save">Salvați și reporniți pentru a avea efect</string>
+    <string name="init_check_activation">Verificați starea activării···</string>
+    <string name="init_activation">Activați dispozitivul···</string>
+    <string name="init_activation_error">Activare a eșuat: %s</string>
+    <string name="init_power">Obțineți permisiuni pentru dispozitiv···</string>
+    <string name="init_power_error">Eșuat la obținerea permisiunilor dispozitivului: %s</string>
+    <string name="init_synchronization">Date de sincronizare···</string>
+    <string name="init_synchronization_error">Eroare de sincronizare a datelor: %s</string>
+    <string name="init_synchronization_error_dishes">Fără informații despre antenă</string>
+    <string name="init_synchronization_error_stock">Lipsesc informații despre locația inventarului dispozitivului</string>
+    <string name="init_synchronization_error_material">Informații despre material lipsă</string>
+    <string name="init_synchronization_error_spec">Lipsesc informații despre practică</string>
+    <string name="init_startup">Program de pornire...</string>
+    <string name="init_complete">Inițializare finalizată...</string>
+    <string name="init_store_config">Detectați configurația magazinului···</string>
+    <string name="init_store_config_error">Excepție de configurare a magazinului: %s</string>
+    <string name="init_store_connect">Conectați-vă la sistemul de comandă···</string>
+    <string name="init_store_connect_error">Excepția sistemului de comandă a conexiunii: %s</string>
+    <string name="init_resource_download">Descărcați fișierul cu resurse: %s, progresul descărcării: %s</string>
+    <string name="init_update_tip">Actualizarea automată este în curs de întreținere, vă rugăm să nu utilizați</string>
+    <string name="init_update_install">Instalarea celui mai recent program</string>
+    <string name="init_update_install_success">Actualizarea este finalizată, programul va porni automat, vă rugăm să nu operați</string>
+    <string name="init_update_install_fail">Instalarea a eșuat, încercați din nou</string>
+    <!-- Pop-up prompt -->
+    <string name="tip">Sfaturi</string>
+    <string name="tip_empty_order">Nu au fost găsite informații despre comandă</string>
+    <string name="tip_used_order">Cod de masă consumată</string>
+    <string name="tip_search_order_failed">Nu s-au interogat datele comenzii</string>
+    <string name="tip_use_technology">„Vă rugăm să utilizați acest modul sub îndrumarea asistenței tehnice!</string>
+    <string name="describe_shop_cart_clear_tip">Ștergeți articolele curente din coșul de cumpărături? </string>
+    <string name="describe_update_password">Parola curentă este implicită și există riscuri de securitate Doriți să o schimbați imediat? </string>
+    <string name="describe_paying_give_up_tip">Comanda nu va fi efectuată după renunțare Dacă plata a fost efectuată, vă rugăm să contactați personalul de operare. Vrei să renunți la comanda? </string>
+    <string name="describe_open_spec_multiple">Pentru a asigura o producție normală, această funcție va ajusta dimensiunea porției din fiecare aromă la aproximativ 80% din porția cu selecție unică\nSigur o porniți? </string>
+    <string name="describe_open_free_mode">Sigur activați modul gratuit de înghețată pentru acest dispozitiv? </string>
+    <string name="button_back">Întoarcere</string>
+    <string name="button_update">Modificați</string>
+    <string name="button_open">Vizualizare</string>
+    <string name="button_start">Începe</string>
+    <string name="button_clear">Șterge</string>
+    <string name="button_delete">Backspace</string>
+    <string name="button_confirm">Confirmați</string>
+    <string name="button_cancel">Anulați</string>
+    <string name="button_un_set_pwd">Nesetat încă</string>
+    <string name="button_set_pwd">Setați o nouă parolă</string>
+    <string name="button_paying_give_up">Renunțați la comandă</string>
+    <string name="button_paying_keep_on">Continuați să plătiți</string>
+    <string name="button_setting">Setări</string>
+
+    <string name="plc_errTip1">Modul manual al echipamentului</string>
+    <string name="plc_errTip2">Anormalitate echipament</string>
+    <string name="plc_errTip3">Dispozitivul este ocupat</string>
+    <string name="plc_errTip4">Există un senzor la priza de alimentare</string>
+
+    <string name="setting_jam_set">Modificați</string>
+    <string name="setting_ker_map">Cartografiarea pauzei de fructe</string>
+    <string name="setting_jam_map">Conducta de cartografiere</string>
+    <string name="setting_ker_def">Zibire de fructe implicită</string>
+    <string name="setting_jam_def">Conductă implicită</string>
+
+    <string name="time_ready">Ora curentă este în curs de pregătire</string>
+    <string name="maxcount_tips_start">Pentru a vă asigura gustul, vă rugăm să scanați din nou codul după ce luați 6 căni~</string>
+    <string name="maxcount_tips_end">Îți mai rămâne înghețată și trebuie să continuați scanarea codului~</string>
+
+    <string name="setting_warn_real_time">Avertisment în timp real:</string>
+    <string name="setting_error_log">Jurnal de erori:</string>
+    <string name="setting_make_fail_title">Eșuează!</string>
+    <string name="setting_make_fail">Alarmă:</string>
+    <string name="setting_make_fail_insert">Inserarea alarmei de avertizare:</string>
+    <string name="setting_make_fail_warn">Avertisment</string>
+    <!-- Jurnal -->
+    <string name="making_error">Excepție la fabricarea înghețatei</string>
+    <string name="making_ing">Fabricarea înghețatei</string>
+    <string name="making_out_cup">making_out_cup</string>
+    <string name="making_out_flavor">Îghețată</string>
+    <string name="making_taking">Aștept să luăm înghețata</string>
+    <string name="making_taked">Înghețata a fost luată</string>
+    <string name="making_finish">Terminați comanda</string>
+    <string name="making_next">Pregătiți următoarea înghețată și mai sunt %d înghețate de făcut</string>
+    <string name="mcu_connect">Conexiunea dispozitivului a reușit</string>
+    <string name="mcu_disconnect">Dispozitiv deconectat</string>
+    <string name="mcu_waring_message">Avertisment: %s, Mesaj: %s</string>
+
+    <string name="setting_select_icon">Selectați pictograma</string>
+    <string name="setting_select_kernel_icon">Selectați pictograma de zdrobire de fructe</string>
+    <string name="setting_select_sauce_icon">Selectați pictograma gem</string>
+
+    <string name="clean_recycle">Ciclul de curățare: %d</string>
+    <string name="clean_lock_warning_last">Avertisment privind ultima curățare</string>
+    <string name="clean_lock_warning_first">Prima avertizare de curățare</string>
+    <string name="clean_lock_warning_second">A doua avertizare de curățare</string>
+    <string name="clean_lock_notify_last">Curăţare ultima notificare</string>
+    <string name="clean_lock_notify_first">Prima curățare de notificare</string>
+    <string name="clean_lock_notify_second">Curăţare a doua notificări</string>
+    <string name="scan_code">Cod QR recunoscut: %s</string>
+
+    <string name="update_channel">Actualizați canalul de plată la: %d</string>
+    <string name="update_mode">Modul de rulare al actualizării este: %d</string>
+
+    <string name="credit_failed">Comunicarea cititorului de carduri a eșuat, vă rugăm să încercați din nou mai târziu</string>
+    <string name="system_link">Conectați sistemul</string>
+    <string name="system_divorce">Părăsiți sistemul</string>
+    <string name="update_app">Căutați actualizări</string>
+    <string name="price_model">Plată mixtă de bancnote și monede</string>
+    <string name="nayax_model1">Nayax No Idle</string>
+    <string name="nayax_model2">Nayax Idle</string>
+    <string name="have_money">Suma investită:</string>
+    <string name="nayax_model">Model NaYax:</string>
+    <string name="nayax_pay">plată NaYax</string>
+    <string name="nayax_pay_mix">NaYax+plată mixtă</string>
+    <string name="setting_pay_pos_pay_mix">Cititor de carduri MDB + plată mixtă</string>
+    <string name="online_and_price_model">Două coduri într-o singură plată + plata pe hârtie</string>
+    <string name="ict_currency_selection">Selectarea monedei TIC</string>
+    <string name="banknote_exchange_protocol">Protocol de schimb de bancnote</string>
+    <string name="mdb_level">Nivel MDB</string>
+    <string name="coin_x">Coin rush multiplicat cu X</string>
+    <string name="coin_divide_x">Împărțire monedă cu X</string>
+    <string name="setting_text_message">Modificați o parte a textului</string>
+    <string name="sleep_msg">Aparatul este în stare de repaus. . . </string>
+    <string name="setting_flavor_config">Setare aromă</string>
+    <string name="setting_flavor_multiple_choice">Aromă cu alegere multiplă</string>
+
+    <string name="setting_sale_service">Serviciul de vânzare</string>
+    <string name="setting_service_visibility">Afișați serviciul</string>
+    <string name="setting_service_title">Titlul serviciului</string>
+    <string name="setting_service_content">Conținutul serviciului</string>
+
+</resources>
+<!--罗马尼亚语-->

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

@@ -308,7 +308,7 @@
     <!-- 设备异常 -->
     <string name="error_power_saving">Режим энергосбережения</string>
     <string name="error_wait">Устройство не перешло в состояние автоматической продажи</string>
-    <string name="error_contact_format">%s  Если у вас есть вопросы, обратитесь к персоналу магазина (%s)</string>
+    <string name="error_contact_format">%s - Если у вас есть вопросы, обратитесь к персоналу магазина (%s)</string>
     <string name="error_milk_slurry_empty_tip">Ждем, пока официант наполнит молоко</string>
     <string name="error_cup_empty_tip">Ожидание, пока официант снова наполнит чашку мороженого</string>
     <string name="error_door_un_close">Дверца устройства не закрыта</string>
@@ -466,5 +466,14 @@
     <string name="coin_x">Выброс монет, умноженный на X</string>
     <string name="coin_divide_x">Делить монету на X</string>
 
+    <string name="setting_text_message">Изменить часть текста</string>
+    <string name="sleep_msg">Машина находится в спящем режиме...</string>
+    <string name="setting_flavor_config">Настройка вкуса</string>
+    <string name="setting_flavor_multiple_choice">Множественный выбор</string>
+    <string name="setting_sale_service">Услуга продажи</string>
+    <string name="setting_service_visibility">Показать сервис</string>
+    <string name="setting_service_title">Название услуги</string>
+    <string name="setting_service_content">Содержимое службы</string>
+
 </resources>
     <!--俄语-->

File diff suppressed because it is too large
+ 474 - 0
app/src/main/res/values-th/strings.xml


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

@@ -470,6 +470,10 @@
     <string name="mdb_level">MDB等级</string>
     <string name="coin_x">硬币迈冲乘以X</string>
     <string name="coin_divide_x">硬币迈冲除以X</string>
+    <string name="setting_text_message">修改部分文本字样</string>
+    <string name="sleep_msg">机器休眠中。。。</string>
+    <string name="setting_flavor_config">口味设置</string>
+    <string name="setting_flavor_multiple_choice">口味多选</string>
 
 </resources>
-
+<!--中文-->

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

@@ -475,6 +475,17 @@
     <string name="mdb_level">MDB等级</string>
     <string name="coin_x">硬币迈冲乘以X</string>
     <string name="coin_divide_x">硬币迈冲除以X</string>
+    <string name="setting_text_message">修改部分文本字样</string>
+    <string name="sleep_msg">机器休眠中。。。</string>
+    <string name="setting_flavor_config">口味设置</string>
+    <string name="setting_flavor_multiple_choice">口味多选</string>
+    <string name="setting_sale_service">Sale Service</string>
+    <string name="setting_service_visibility">Show Service</string>
+    <string name="setting_service_title">Service Title</string>
+    <string name="setting_service_content">Service Content</string>
+    <string name="coin_rate">硬币倍率</string>
+    <string name="confirm_name">修改名字</string>
+    <string name="setting_technology_other">其他</string>
 
 </resources>
-
+<!--中文-->

+ 1 - 1
config.gradle

@@ -5,7 +5,7 @@ ext {
             "minSdkVersion"                : 19,
             "targetSdkVersion"             : 28,
             "versionCode"                  : 109,
-            "versionName"                  : "1.0.13",
+            "versionName"                  : "1.0.20",
 
             "androidSupport"               : "28.0.0",
             "constraint-layout"            : "1.1.3",