Quellcode durchsuchen

首页只显示油枪选择列表,油枪根据有无订单显示颜色

ZHanJv vor 4 Jahren
Ursprung
Commit
24157f19a0
28 geänderte Dateien mit 224 neuen und 38 gelöschten Zeilen
  1. 20 0
      .idea/jarRepositories.xml
  2. 10 2
      app/build.gradle
  3. BIN
      app/debug/1.1.20.20210524103540-debug.apk
  4. BIN
      app/debug/1.1.20.20210524105045-debug.apk
  5. 18 0
      app/debug/output-metadata.json
  6. 1 0
      app/src/main/java/com/doverfuelingsolutions/issp/DFSApplication.kt
  7. 1 0
      app/src/main/java/com/doverfuelingsolutions/issp/api/basic/AuthInterceptor.kt
  8. 9 1
      app/src/main/java/com/doverfuelingsolutions/issp/api/basic/LoggingInterceptor.kt
  9. 1 2
      app/src/main/java/com/doverfuelingsolutions/issp/api/basic/RetrofitUtil.kt
  10. 2 0
      app/src/main/java/com/doverfuelingsolutions/issp/bugly/BuglyUtil.kt
  11. 1 0
      app/src/main/java/com/doverfuelingsolutions/issp/data/GlobalData.kt
  12. 2 0
      app/src/main/java/com/doverfuelingsolutions/issp/driver/scan/ComScanKeyManager.java
  13. 2 1
      app/src/main/java/com/doverfuelingsolutions/issp/utils/DeviceUtil.kt
  14. 9 0
      app/src/main/java/com/doverfuelingsolutions/issp/utils/sp/SPUtil.kt
  15. 6 7
      app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt
  16. 12 2
      app/src/main/java/com/doverfuelingsolutions/issp/view/adapter/ChooseListAdapter.kt
  17. 2 2
      app/src/main/java/com/doverfuelingsolutions/issp/view/adapter/OrderListAdapter.kt
  18. 1 2
      app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentBasic.kt
  19. 69 3
      app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentNozzle.kt
  20. 0 1
      app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentOrderList.kt
  21. 24 0
      app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentPayScanCode.kt
  22. 3 0
      app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentPreference.kt
  23. 2 2
      app/src/main/java/com/doverfuelingsolutions/issp/view/util/LoadingDialogBuilder.kt
  24. 2 2
      app/src/main/res/layout/activity_login.xml
  25. 2 0
      app/src/main/res/values/keys.xml
  26. 3 0
      app/src/main/res/values/strings.xml
  27. 10 7
      app/src/main/res/xml/root_preferences.xml
  28. 12 4
      build.gradle

+ 20 - 0
.idea/jarRepositories.xml

@@ -26,5 +26,25 @@
       <option name="name" value="maven" />
       <option name="url" value="https://jitpack.io" />
     </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven2" />
+      <option name="name" value="maven2" />
+      <option name="url" value="https://maven.aliyun.com/repository/google" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven3" />
+      <option name="name" value="maven3" />
+      <option name="url" value="https://maven.aliyun.com/repository/central" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven" />
+      <option name="name" value="maven" />
+      <option name="url" value="https://maven.aliyun.com/repository/jcenter" />
+    </remote-repository>
+    <remote-repository>
+      <option name="id" value="maven4" />
+      <option name="name" value="maven4" />
+      <option name="url" value="https://maven.aliyun.com/repository/gradle-plugin" />
+    </remote-repository>
   </component>
 </project>

+ 10 - 2
app/build.gradle

@@ -6,6 +6,14 @@ plugins {
 }
 
 android {
+    signingConfigs {
+        debug {
+            storeFile file('C:\\Users\\10076532\\AndroidStudioProjects\\issp-dev\\issp\\signature.jks')
+            storePassword '123456'
+            keyAlias 'isspt'
+            keyPassword '123456'
+        }
+    }
     compileSdkVersion 30
     buildToolsVersion "30.0.2"
 
@@ -13,8 +21,8 @@ android {
         applicationId "com.doverfuelingsolutions.issp"
         minSdkVersion 22
         targetSdkVersion 26
-        versionCode 6
-        versionName "1.1.19"
+        versionCode 7
+        versionName "1.1.20"
         archivesBaseName = versionName + "." + getTime()
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

BIN
app/debug/1.1.20.20210524103540-debug.apk


BIN
app/debug/1.1.20.20210524105045-debug.apk


+ 18 - 0
app/debug/output-metadata.json

@@ -0,0 +1,18 @@
+{
+  "version": 2,
+  "artifactType": {
+    "type": "APK",
+    "kind": "Directory"
+  },
+  "applicationId": "com.doverfuelingsolutions.issp",
+  "variantName": "processDebugResources",
+  "elements": [
+    {
+      "type": "SINGLE",
+      "filters": [],
+      "versionCode": 7,
+      "versionName": "1.1.20",
+      "outputFile": "1.1.20.20210524105045-debug.apk"
+    }
+  ]
+}

+ 1 - 0
app/src/main/java/com/doverfuelingsolutions/issp/DFSApplication.kt

@@ -10,6 +10,7 @@ class DFSApplication : Application() {
     companion object {
 
         lateinit var instance: DFSApplication
+
     }
 
     override fun onCreate() {

+ 1 - 0
app/src/main/java/com/doverfuelingsolutions/issp/api/basic/AuthInterceptor.kt

@@ -18,6 +18,7 @@ class AuthInterceptor : Interceptor {
             .addHeader("Content-Type", "application/json")
             .addHeader("Accept", "application/json")
             .addHeader("DeviceSN", GlobalData.serialNumber.get())
+//            .addHeader("DeviceSN", "QJ_03835900955")
         if (GlobalData.accessToken.get().isNotBlank()) request.header("Authorization", "Bearer ${GlobalData.accessToken.get()}")
         if (GlobalData.businessId.get().isNotBlank()) request.header("CurrentBuId", GlobalData.businessId.get())
         val response = chain.proceed(request.build())

+ 9 - 1
app/src/main/java/com/doverfuelingsolutions/issp/api/basic/LoggingInterceptor.kt

@@ -22,7 +22,15 @@ class LoggingInterceptor : Interceptor {
             "method: ${request.method()}",
             "url: ${request.url()}",
             "code: ${response.code()}",
-            "body: $stringBody"
+            "body: $stringBody",
+            "request: $request",
+            "request_headers: ${request.headers()}",
+            "request_body: ${request.body()}",
+            "request_cacheControl: ${request.cacheControl()}",
+            "request_url: ${request.url()}",
+            "request_header_DeviceSN: ${request.header("DeviceSN")}",
+            "request_header_Content: ${request.header("Content-Type")}",
+            "request_header_Accept: ${request.header("Accept")}",
         )
         return response
     }

+ 1 - 2
app/src/main/java/com/doverfuelingsolutions/issp/api/basic/RetrofitUtil.kt

@@ -22,9 +22,8 @@ object RetrofitUtil {
         .readTimeout(WayneApiConfig.timeoutAll, TimeUnit.SECONDS)
         .writeTimeout(WayneApiConfig.timeoutAll, TimeUnit.SECONDS)
         .callTimeout(WayneApiConfig.timeoutAll, TimeUnit.SECONDS)
-        .addInterceptor(loggingInterceptor)
         .addInterceptor(authInterceptor)
-
+        .addInterceptor(loggingInterceptor)
     private val mGsonConverterFactory: GsonConverterFactory by lazy { GsonConverterFactory.create() }
 
     fun getGsonBuilder(): Retrofit.Builder {

+ 2 - 0
app/src/main/java/com/doverfuelingsolutions/issp/bugly/BuglyUtil.kt

@@ -12,6 +12,7 @@ import com.tencent.bugly.beta.Beta
 import com.tencent.bugly.beta.UpgradeInfo
 import com.tencent.bugly.beta.upgrade.UpgradeListener
 import com.tencent.bugly.beta.upgrade.UpgradeStateListener
+import com.tencent.bugly.crashreport.CrashReport
 
 object BuglyUtil : UpgradeListener, UpgradeStateListener {
 
@@ -41,6 +42,7 @@ object BuglyUtil : UpgradeListener, UpgradeStateListener {
         Beta.upgradeListener = this
         val appId = if (AppUtil.isDebug()) "789ca54e1f" else "7bb19916d9"
         Bugly.init(applicationContext, appId, AppUtil.isDebug())
+
     }
 
     fun checkUpgrade() {

+ 1 - 0
app/src/main/java/com/doverfuelingsolutions/issp/data/GlobalData.kt

@@ -27,6 +27,7 @@ object GlobalData {
     val paymentId = GlobalDataProvider(-1, SPKeys.PAYMENT_ID)
     val paymentName = GlobalDataProvider("", SPKeys.PAYMENT_NAME)
 
+    val colorForSignOrder = arrayListOf<Int>() //用于记录油枪是否有订单,有:深色;无:浅色
     fun init() {
         accessTokenExpire.get().let {
             DFSLog.i(if (it > 0) {

+ 2 - 0
app/src/main/java/com/doverfuelingsolutions/issp/driver/scan/ComScanKeyManager.java

@@ -23,6 +23,7 @@ public class ComScanKeyManager implements ScanManager, DataReceivedListener {
     @Override
     public void onDataReceived(byte[] data, ScanValueListener scanValueListener) {
         if (data == null || data.length <= 2) return;
+        /*
 //        try {
 //            String s = new String(data, 0, data.length - 2, StandardCharsets.ISO_8859_1);//不知这里为何要减2,暂时先这样,后面研究下
 //            if (s.length() != 18 || !RegexUtils.isNumeric(s)) {
@@ -42,6 +43,7 @@ public class ComScanKeyManager implements ScanManager, DataReceivedListener {
 //            e.printStackTrace();
 //            BaseLogUtils.i(MyLogTag.SCAN_COM, e.toString());
 //        }
+        */
         try {
             boolean isGo = data[data.length - 1] == 10 && data[data.length - 2] == 13;//旧的扫描器判断
             String code = null;

+ 2 - 1
app/src/main/java/com/doverfuelingsolutions/issp/utils/DeviceUtil.kt

@@ -13,7 +13,8 @@ class DeviceUtil {
         fun generateSerialNumber(): String {
             if (sn.isEmpty()) {
                 val deviceSN = hardwareSerialNumber()
-                // val deviceSN = "4f49a5dbfbf7c6a6" // 测试代码
+//                 val deviceSN = "4f49a5dbfbf7c6a6" // 测试代码
+//                 val deviceSN = "03835900955" // 展厅自助机代码
                 sn = if (deviceSN == "03778700666" || deviceSN == "03492200711" || deviceSN == "f02b5d95d98833d3" || deviceSN == "cf811453a0548b77") {
                     SN_PREFIX + deviceSN.substring(0, deviceSN.length - SN_PREFIX.length)
                 } else {

+ 9 - 0
app/src/main/java/com/doverfuelingsolutions/issp/utils/sp/SPUtil.kt

@@ -65,6 +65,15 @@ object SPUtil {
 
     private fun setDefaultValue() {
         val firstLaunch = instance.getBoolean(SPKeys.FIRST_LAUNCH, true)
+
+        /**    为了在测试时可在 DeviceUtil.generateSerialNumber 中直接修改设备编码,在这里将
+         *  DeviceUtil.generateSerialNumber生成的设备编码存入 SP
+         */
+        instance.edit().run {
+            putString(SPKeys.SN, DeviceUtil.generateSerialNumber())
+            commit()
+        }
+
         if (!firstLaunch) return
 
         instance.edit().run {

+ 6 - 7
app/src/main/java/com/doverfuelingsolutions/issp/view/MainActivity.kt

@@ -23,11 +23,9 @@ import com.doverfuelingsolutions.issp.fusion.callback.OnFusionStatus
 import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.WindowUtil
 import com.doverfuelingsolutions.issp.utils.log.DFSLog
-import com.doverfuelingsolutions.issp.utils.sp.SPKeys
 import com.doverfuelingsolutions.issp.utils.sp.SPUtil
 import com.doverfuelingsolutions.issp.view.fragment.FragmentNozzle
 import com.doverfuelingsolutions.issp.view.fragment.FragmentReconnect
-import com.doverfuelingsolutions.issp.view.fragment.FragmentSelect
 import com.doverfuelingsolutions.issp.view.fragment.router.FragmentRouter
 import com.doverfuelingsolutions.issp.view.fragment.router.OnRouteChangeListener
 import com.doverfuelingsolutions.issp.view.util.LoadingDialogBuilder
@@ -278,11 +276,12 @@ class MainActivity : AppCompatActivity(),
 
     fun initFragmentEntry() {
         fragmentRouter.setHomeFragment(
-            if (SPUtil.getString(SPKeys.ORDER_CHOOSE) == "nozzle") {
-                FragmentNozzle.build()
-            } else {
-                FragmentSelect()
-            }
+//            if (SPUtil.getString(SPKeys.ORDER_CHOOSE) == "nozzle") {
+//                FragmentNozzle.build()
+//            } else {
+//                FragmentSelect()
+//            }
+            FragmentNozzle.build()
         )
     }
 

+ 12 - 2
app/src/main/java/com/doverfuelingsolutions/issp/view/adapter/ChooseListAdapter.kt

@@ -1,6 +1,5 @@
 package com.doverfuelingsolutions.issp.view.adapter
 
-import android.graphics.Color
 import android.view.View
 import android.view.ViewGroup
 import androidx.core.content.res.ResourcesCompat
@@ -9,7 +8,9 @@ import com.doverfuelingsolutions.issp.DFSApplication
 import com.doverfuelingsolutions.issp.R
 import kotlinx.android.synthetic.main.adapter_choose_item.view.*
 
-class ChooseListAdapter(private val chooseList: List<String>, private val handler: (item: String) -> Unit, private val chooseEffect: Boolean = false) :
+class ChooseListAdapter(private val chooseList: List<String>, private val handler: (item: String) -> Unit,
+                        private val chooseEffect: Boolean = false,
+                        private val signOrderList: ArrayList<Int> = arrayListOf()) :
     RecyclerView.Adapter<ChooseListAdapter.ChooseViewHolder>() {
 
     private var selectedIndex = 0
@@ -19,8 +20,11 @@ class ChooseListAdapter(private val chooseList: List<String>, private val handle
         return ChooseViewHolder(view)
     }
 
+
     override fun onBindViewHolder(holder: ChooseViewHolder, position: Int) {
         holder.itemView.chooseItemView.text = chooseList[position]
+
+        //油品页面选择了某一油品,那一项变深色,但是油品选择页面可能会删除,只剩下油枪选择页面
         if (chooseEffect) {
             val color = if (!chooseEffect || selectedIndex == position)
                 ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimary, null)
@@ -28,6 +32,12 @@ class ChooseListAdapter(private val chooseList: List<String>, private val handle
                 ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimaryTransparent, null)
             holder.itemView.chooseItemView.setBackgroundColor(color)
         }
+
+        //油枪选择页面中,有订单的油枪深色显示
+        if (signOrderList.size > position) {
+            holder.itemView.chooseItemView.setBackgroundColor(signOrderList[position])
+        }
+
         holder.itemView.chooseItemView.setOnClickListener {
             if (chooseEffect) {
                 selectedIndex = position

+ 2 - 2
app/src/main/java/com/doverfuelingsolutions/issp/view/adapter/OrderListAdapter.kt

@@ -28,11 +28,11 @@ class OrderListAdapter(
         holder.itemView.amount.text = StringUtil.get(R.string.amount_rmb, order.amount.toString())
         holder.itemView.volume.text = StringUtil.get(R.string.volume_l, order.volume.toString())
         holder.itemView.orderBox.setOnClickListener {
-            handler(order, 0, position)
+            handler(order, 0, position)     //单击付款
         }
         if (order.isLock) {
             holder.itemView.orderBox.setOnLongClickListener {
-                handler(order, 1, position)
+                handler(order, 1, position)     //长按解锁
                 true
             }
         }

+ 1 - 2
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentBasic.kt

@@ -4,7 +4,6 @@ import androidx.annotation.StringRes
 import androidx.appcompat.app.AlertDialog
 import androidx.fragment.app.Fragment
 import com.doverfuelingsolutions.issp.R
-import com.doverfuelingsolutions.issp.view.widget.FragmentToolbar
 import com.doverfuelingsolutions.issp.utils.StringUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.util.LoadingDialogBuilder
@@ -19,7 +18,7 @@ open class FragmentBasic : Fragment() {
 
     fun loading(@StringRes string: Int) = loading(StringUtil.get(string))
     private fun loading(msg: String): AlertDialog {
-        return LoadingDialogBuilder(requireContext())
+        return LoadingDialogBuilder(requireContext() as MainActivity)
             .setLoadingText(msg)
             .setCancelable(true)
             .show()

+ 69 - 3
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentNozzle.kt

@@ -4,9 +4,12 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.appcompat.app.AlertDialog
+import androidx.core.content.res.ResourcesCompat
 import androidx.databinding.DataBindingUtil
 import androidx.lifecycle.lifecycleScope
 import androidx.recyclerview.widget.GridLayoutManager
+import com.doverfuelingsolutions.issp.DFSApplication
 import com.doverfuelingsolutions.issp.R
 import com.doverfuelingsolutions.issp.api.SystemApi
 import com.doverfuelingsolutions.issp.data.GlobalData
@@ -16,11 +19,12 @@ import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.StringUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.adapter.ChooseListAdapter
+import com.hjq.toast.ToastUtils
 import com.scwang.smart.refresh.header.ClassicsHeader
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
 
-class FragmentNozzle private constructor() : FragmentBasic() {
+class FragmentNozzle private constructor() : FragmentBasic(){
 
     companion object {
 
@@ -29,8 +33,17 @@ class FragmentNozzle private constructor() : FragmentBasic() {
 
     override val title = StringUtil.get(R.string.query_by_nozzle)
 
+//    private val colorForSignOrder = arrayListOf<Int>() // 用于标记该油枪是否有订单,有:深色 ; 无:浅色
+
     private lateinit var binding: FragmentNozzleBinding
-    private val chooseListAdapter = ChooseListAdapter(FusionManager.nozzles.map { it.physicalId.toString() }, this::select)
+    private val chooseListAdapter = ChooseListAdapter(FusionManager.nozzles.map { it.physicalId.toString() },
+        this::select,signOrderList = GlobalData.colorForSignOrder)
+
+    override fun onCreate(savedInstanceState: Bundle?) {
+        super.onCreate(savedInstanceState)
+
+        loadListData()
+    }
 
     override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
         if (!this::binding.isInitialized) {
@@ -43,6 +56,8 @@ class FragmentNozzle private constructor() : FragmentBasic() {
             binding.smartRefreshLayout.setRefreshHeader(ClassicsHeader(context))
             binding.smartRefreshLayout.setOnRefreshListener { handleNozzleRefresh() }
         }
+        //刷新页面,因为可能支付完成功后某一把枪没订单了,该枪颜色应变浅色
+        chooseListAdapter.notifyDataSetChanged()
         return binding.root
     }
 
@@ -55,6 +70,8 @@ class FragmentNozzle private constructor() : FragmentBasic() {
             } else {
                 binding.smartRefreshLayout.finishRefresh(200, false, true)
             }
+
+            loadRemoteData()
         }
     }
 
@@ -71,4 +88,53 @@ class FragmentNozzle private constructor() : FragmentBasic() {
             (requireActivity() as MainActivity).fragmentRouter.push(FragmentOrderList.build(it.pumpId))
         }
     }
-}
+
+    private fun loadListData(){
+        lifecycleScope.launchWhenStarted {
+            val loadingDialog = loading(R.string.in_get_nozzle)
+
+            loadRemoteData()
+
+            loadingDialog.dismiss()
+
+        }
+    }
+
+    private suspend fun loadRemoteData() {
+        FusionManager.nozzles.forEach {
+            val result = FusionManager.getAllUnsettledOrder(it.pumpId)
+            if (result.success && result.data != null && result.data.isNotEmpty()) {
+                GlobalData.colorForSignOrder.add(ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimary, null))
+            } else {
+                GlobalData.colorForSignOrder.add(ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimaryTransparent, null))
+            }
+        }
+
+        chooseListAdapter.notifyDataSetChanged()
+    }
+
+    /*
+    private fun unsettledList(): ArrayList<Int>{
+        ToastUtils.show(R.string.in_get_nozzle)
+        val colorList = arrayListOf<Int>()
+        lifecycleScope.launchWhenStarted {
+            FusionManager.nozzles.forEach {
+                val result = FusionManager.getAllUnsettledOrder(it.pumpId)
+                if (result.success && result.data != null && result.data.isNotEmpty()) {
+                    colorList.add(ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimaryTransparent, null))
+                } else {
+                    colorList.add(ResourcesCompat.getColor(DFSApplication.instance.applicationContext.resources, R.color.colorPrimary, null))
+                }
+            }
+            chooseListAdapter.notifyDataSetChanged()
+            ToastUtils.show(R.string.end_get_nozzle)
+        }
+
+        return colorList
+    }
+
+     */
+
+}
+
+

+ 0 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentOrderList.kt

@@ -16,7 +16,6 @@ import com.doverfuelingsolutions.issp.databinding.FragmentNozzleOrdersBinding
 import com.doverfuelingsolutions.issp.fusion.FusionManager
 import com.doverfuelingsolutions.issp.utils.DFSToastUtil
 import com.doverfuelingsolutions.issp.utils.StringUtil
-import com.doverfuelingsolutions.issp.utils.log.DFSLog
 import com.doverfuelingsolutions.issp.utils.sp.SPUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.adapter.ChooseListAdapter

+ 24 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentPayScanCode.kt

@@ -4,13 +4,16 @@ import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
+import androidx.core.content.res.ResourcesCompat
 import androidx.core.os.bundleOf
 import androidx.databinding.DataBindingUtil
 import androidx.lifecycle.MutableLiveData
 import androidx.lifecycle.ViewModel
 import androidx.lifecycle.lifecycleScope
+import com.doverfuelingsolutions.issp.DFSApplication
 import com.doverfuelingsolutions.issp.R
 import com.doverfuelingsolutions.issp.api.SystemApi
+import com.doverfuelingsolutions.issp.data.GlobalData
 import com.doverfuelingsolutions.issp.databinding.FragmentPayScanCodeBinding
 import com.doverfuelingsolutions.issp.driver.lib.ScanCodeManager
 import com.doverfuelingsolutions.issp.fusion.FusionManager
@@ -124,7 +127,28 @@ class FragmentPayScanCode private constructor() : FragmentBasic() {
                         // 失败则记下来,后续再尝试消单
                         SPUtil.addUnclearedOrder(dc)
                     }
+
+                }
+
+                //查找该 pumpIP 是否还有订单,更新 GlobalData.colorForSignOrder
+                val unsettledResult = FusionManager.getAllUnsettledOrder(dc.pumpNo)
+                val copyList = IntArray(GlobalData.colorForSignOrder.size)
+                GlobalData.colorForSignOrder.forEachIndexed { index, i ->
+                    copyList[index] = i
+                }
+                if (unsettledResult.success && unsettledResult.data != null && unsettledResult.data.isEmpty()) { //若为空
+
+                    /**   eg:
+                     * pumpID:                                    | 1 | 4 | 2 | 3 |
+                     * SiteLevelNozzleId / nozzleNo / physicalId:| 1 | 2 | 3 | 4 |
+                     * 下标:                                     | 0 | 1 | 2 | 3 |
+                     * */
+                    copyList[dc.nozzleNo - 1] = ResourcesCompat.getColor(  //colorForSignOrder对应的颜色顺序会与油枪列表的顺序对应
+                        DFSApplication.instance.applicationContext.resources, R.color.colorPrimaryTransparent, null)
+
                 }
+                GlobalData.colorForSignOrder.clear()
+                GlobalData.colorForSignOrder.addAll(copyList.toList())
 
                 // 获取加油员名称
                 val resultInfo = SystemApi.getPosTicketInfo(posTrx.id)

+ 3 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentPreference.kt

@@ -8,6 +8,7 @@ import androidx.preference.EditTextPreference
 import androidx.preference.Preference
 import androidx.preference.PreferenceFragmentCompat
 import com.doverfuelingsolutions.issp.R
+import com.doverfuelingsolutions.issp.utils.AppUtil
 import com.doverfuelingsolutions.issp.utils.StringUtil
 import com.doverfuelingsolutions.issp.utils.ValidateUtil
 import com.doverfuelingsolutions.issp.utils.sp.SPKeys
@@ -17,6 +18,8 @@ class FragmentPreference : PreferenceFragmentCompat(), EditTextPreference.OnBind
     override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
         setPreferencesFromResource(R.xml.root_preferences, rootKey)
 
+        val version = findPreference<Preference>(StringUtil.get(R.string.sp_version))
+        version?.title = StringUtil.get(R.string.version_is, AppUtil.getVersionName())
         setNumberInput(SPKeys.SERVER_PORT_BASE)
         setNumberInput(SPKeys.SERVER_PORT_TRX)
         setNumberInput(SPKeys.SERVER_PORT_CONFIG)

+ 2 - 2
app/src/main/java/com/doverfuelingsolutions/issp/view/util/LoadingDialogBuilder.kt

@@ -1,14 +1,14 @@
 package com.doverfuelingsolutions.issp.view.util
 
-import android.content.Context
 import android.view.View
 import android.widget.TextView
 import androidx.annotation.StringRes
 import com.doverfuelingsolutions.issp.R
 import com.doverfuelingsolutions.issp.utils.StringUtil
+import com.doverfuelingsolutions.issp.view.MainActivity
 import com.google.android.material.dialog.MaterialAlertDialogBuilder
 
-class LoadingDialogBuilder(context: Context) : MaterialAlertDialogBuilder(context) {
+class LoadingDialogBuilder(context: MainActivity) : MaterialAlertDialogBuilder(context) {
 
     // loading view
     private val loadingView = View.inflate(context, R.layout.layout_loading, null)

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

@@ -66,8 +66,8 @@
             <Button
                 android:id="@+id/buttonLogin"
                 style="@style/Widget.MaterialComponents.Button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
+                android:layout_width="match_parent"
+                android:layout_height="35dp"
                 android:enabled="@{ !loginViewModel.submitting }"
                 android:text="@{ loginViewModel.submitting ? @string/in_login : @string/login }" />
         </LinearLayout>

+ 2 - 0
app/src/main/res/values/keys.xml

@@ -32,4 +32,6 @@
 
     <string name="sp_choose_order_way">choose_order_way</string>
     <string name="sp_use_fcc_2">use_fcc_2</string>
+
+    <string name="sp_version">version</string>
 </resources>

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

@@ -108,6 +108,9 @@
     <string name="amount_rmb">¥%1$s</string>
     <string name="volume_l">%1$sL</string>
 
+    <string name="in_get_nozzle">正在获取油枪页面</string>
+    <string name="end_get_nozzle">获取油枪页面成功</string>
+
     <string name="fail_pay">支付失败</string>
     <string name="wrong_order_info">订单信息错误</string>
     <string name="in_process_order">正在处理订单&#8230;</string>

+ 10 - 7
app/src/main/res/xml/root_preferences.xml

@@ -86,13 +86,16 @@
     </PreferenceCategory>
 
     <PreferenceCategory app:title="@string/preference_settings">
-        <ListPreference
-            android:entries="@array/order_choose_names"
-            android:entryValues="@array/order_choose_values"
-            app:defaultValue="all"
-            app:key="@string/sp_choose_order_way"
-            app:title="@string/order_choose_way"
-            app:useSimpleSummaryProvider="true" />
+<!--        <ListPreference-->
+<!--            android:entries="@array/order_choose_names"-->
+<!--            android:entryValues="@array/order_choose_values"-->
+<!--            app:defaultValue="all"-->
+<!--            app:key="@string/sp_choose_order_way"-->
+<!--            app:title="@string/order_choose_way"-->
+<!--            app:useSimpleSummaryProvider="true" />-->
+
+        <Preference
+            android:key="@string/sp_version" />
 
         <SwitchPreference
             android:defaultValue="false"

+ 12 - 4
build.gradle

@@ -3,8 +3,12 @@
 buildscript {
     ext.kotlin_version = "1.4.10"
     repositories {
-        google()
-        jcenter()
+        maven { url 'https://maven.aliyun.com/repository/jcenter' }
+        maven { url 'https://maven.aliyun.com/repository/google' }
+        maven { url 'https://maven.aliyun.com/repository/central' }
+        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+//        google()
+//        jcenter()
     }
     dependencies {
         classpath "com.android.tools.build:gradle:4.1.0"
@@ -17,8 +21,12 @@ buildscript {
 
 allprojects {
     repositories {
-        google()
-        jcenter()
+        maven { url 'https://maven.aliyun.com/repository/jcenter' }
+        maven { url 'https://maven.aliyun.com/repository/google' }
+        maven { url 'https://maven.aliyun.com/repository/central' }
+        maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
+//        google()
+//        jcenter()
         maven { url "https://jitpack.io" }
     }
 }