|
@@ -3,7 +3,9 @@ package com.doverfuelingsolutions.issp.api
|
|
|
import com.doverfuelingsolutions.issp.R
|
|
|
import com.doverfuelingsolutions.issp.api.basic.RetrofitUtil
|
|
|
import com.doverfuelingsolutions.issp.api.dto.*
|
|
|
+import com.doverfuelingsolutions.issp.api.entity.DefaultParams
|
|
|
import com.doverfuelingsolutions.issp.api.entity.NozzleInfo
|
|
|
+import com.doverfuelingsolutions.issp.api.entity.ParametersBean
|
|
|
import com.doverfuelingsolutions.issp.api.entity.PumpInfo
|
|
|
import com.doverfuelingsolutions.issp.api.service.ServiceStation
|
|
|
import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
@@ -31,7 +33,7 @@ object FuelInfoApi {
|
|
|
/**
|
|
|
* 获取泵+枪信息,并且其中的补全残缺信息
|
|
|
*/
|
|
|
- suspend fun requestPumpInfo() = suspendCoroutine<DFSResult<List<PumpInfo>>> {
|
|
|
+ suspend fun requestPumpInfo() = suspendCoroutine<DFSResult<List<NozzleInfo>>> {
|
|
|
GlobalScope.launch(Dispatchers.IO) {
|
|
|
val resultApi = getApiInfo(WayneApiConfig.Api_GetPumpsLayout)
|
|
|
if (resultApi.success && resultApi.data != null) {
|
|
@@ -44,23 +46,33 @@ object FuelInfoApi {
|
|
|
return@launch
|
|
|
}
|
|
|
|
|
|
- val pumpList = arrayListOf<PumpInfo>()
|
|
|
- for (item in resultPumpList.data) {
|
|
|
- if (item.Nozzles.isEmpty()) continue
|
|
|
- val firstNozzle = item.Nozzles[0]
|
|
|
- // FCC3.0 传递了油品名称,不需要像 FCC2.0 那样自行查询
|
|
|
- val pump = PumpInfo(item.PumpId, firstNozzle.ProductName, item.Nozzles.map { resultNozzleInfo ->
|
|
|
- NozzleInfo(
|
|
|
- item.PumpId,
|
|
|
- resultNozzleInfo.LogicalId,
|
|
|
- resultNozzleInfo.SiteLevelNozzleId,
|
|
|
- resultNozzleInfo.ProductBarcode,
|
|
|
- firstNozzle.ProductName)
|
|
|
- })
|
|
|
- pumpList.add(pump)
|
|
|
- }
|
|
|
-
|
|
|
- it.resume(DFSResult.success(pumpList))
|
|
|
+ val nozzles = arrayListOf<NozzleInfo>()
|
|
|
+ val barcodeHashMap = HashMap<Int, ResultBarcode>()
|
|
|
+ resultPumpList.data.forEach { pump ->
|
|
|
+ pump.Nozzles.forEach { nozzle ->
|
|
|
+ val barcode = nozzle.ProductBarcode
|
|
|
+ val barcodeInfo: ResultBarcode? = if (barcodeHashMap.containsKey(barcode)) {
|
|
|
+ barcodeHashMap[barcode]
|
|
|
+ } else {
|
|
|
+ val resultBarcodeInfo = SystemApi.barcodeName(barcode)
|
|
|
+ if (resultBarcodeInfo.success && resultBarcodeInfo.data != null) {
|
|
|
+ barcodeHashMap[barcode] = resultBarcodeInfo.data
|
|
|
+ resultBarcodeInfo.data
|
|
|
+ } else {
|
|
|
+ null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val n = NozzleInfo(
|
|
|
+ pump.PumpId,
|
|
|
+ nozzle.LogicalId,
|
|
|
+ nozzle.SiteLevelNozzleId,
|
|
|
+ nozzle.ProductBarcode,
|
|
|
+ barcodeInfo?.ItemName ?: "",
|
|
|
+ barcodeInfo?.Id ?: "")
|
|
|
+ nozzles.add(n)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ it.resume(DFSResult.success(nozzles))
|
|
|
} else {
|
|
|
it.resume(DFSResult.fail(resultApi.message))
|
|
|
}
|
|
@@ -122,6 +134,91 @@ object FuelInfoApi {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 【FCC2.0】获取泵+枪信息,并且其中的补全残缺信息
|
|
|
+ */
|
|
|
+ suspend fun requestPumpInfoFromFCC2(): DFSResult<List<NozzleInfo>> {
|
|
|
+ return suspendCoroutine {
|
|
|
+ serviceStation.getNozzleInfo().enqueue(object : Callback<ResponseBody> {
|
|
|
+ override fun onResponse(call: Call<ResponseBody>, response: Response<ResponseBody>) {
|
|
|
+ try {
|
|
|
+ val code = response.code()
|
|
|
+ val body = response.body()?.string()
|
|
|
+ if (code == 200 && body != null) {
|
|
|
+ val obj = Gson().fromJson<List<ResultPumpInfoFCC2>>(body, object : TypeToken<List<ResultPumpInfoFCC2>>() {}.type)
|
|
|
+ GlobalScope.launch {
|
|
|
+ val nozzles = arrayListOf<NozzleInfo>()
|
|
|
+ val barcodeHashMap = HashMap<Int, ResultBarcode>()
|
|
|
+
|
|
|
+ obj.forEach { pump ->
|
|
|
+ pump.Nozzles.forEach { nozzle ->
|
|
|
+ val barcode = nozzle.ProductBarcode
|
|
|
+ val barcodeInfo: ResultBarcode? = if (barcodeHashMap.containsKey(barcode)) {
|
|
|
+ barcodeHashMap[barcode]
|
|
|
+ } else {
|
|
|
+ val resultBarcodeInfo = SystemApi.barcodeName(barcode)
|
|
|
+ if (resultBarcodeInfo.success && resultBarcodeInfo.data != null) {
|
|
|
+ barcodeHashMap[barcode] = resultBarcodeInfo.data
|
|
|
+ resultBarcodeInfo.data
|
|
|
+ } else {
|
|
|
+ null
|
|
|
+ }
|
|
|
+ }
|
|
|
+ val n = NozzleInfo(
|
|
|
+ pump.PumpId,
|
|
|
+ nozzle.LogicalId,
|
|
|
+ nozzle.SiteLevelNozzleId,
|
|
|
+ nozzle.ProductBarcode,
|
|
|
+ barcodeInfo?.ItemName ?: "",
|
|
|
+ barcodeInfo?.Id ?: "")
|
|
|
+ nozzles.add(n)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ it.resume(DFSResult.success(nozzles))
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ it.resume(DFSResult.fail(response.message()))
|
|
|
+ }
|
|
|
+ } catch (e: Exception) {
|
|
|
+ it.resume(DFSResult.fail(e.message.toString()))
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onFailure(call: Call<ResponseBody>, t: Throwable) {
|
|
|
+ it.resume(DFSResult.fail(t.message.toString()))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 【FCC2.0】获取累计数信息
|
|
|
+ */
|
|
|
+ suspend fun accumulationInfoFromFCC2(dc: DeviceClass): DFSResult<ResultAccumulationInfo> {
|
|
|
+ return suspendCoroutine {
|
|
|
+ val bean = ParametersBean().apply {
|
|
|
+ Value = dc.releaseTokenElement
|
|
|
+ }
|
|
|
+ serviceStation.accumulationInfo(DefaultParams(listOf(bean))).enqueue(object : Callback<List<ResultAccumulationInfo>> {
|
|
|
+ override fun onResponse(call: Call<List<ResultAccumulationInfo>>, response: Response<List<ResultAccumulationInfo>>) {
|
|
|
+ val code = response.code()
|
|
|
+ val body = response.body()
|
|
|
+ if (code == 200 && body != null && body.isNotEmpty()) {
|
|
|
+ it.resume(DFSResult.success(body[0]))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ it.resume(DFSResult.fail(R.string.fail_get_accumulation))
|
|
|
+ }
|
|
|
+
|
|
|
+ override fun onFailure(call: Call<List<ResultAccumulationInfo>>, t: Throwable) {
|
|
|
+ DFSLog.e("FuelInfoApi.accumulationInfo.onFailure", t)
|
|
|
+ it.resume(DFSResult.fail(R.string.fail_get_accumulation))
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/* Wayne FCC3.0 后,不能使用静态 Url 请求接口,必须查询得到动态 Url 后调用 */
|
|
|
private val apiInfoListType = (object : TypeToken<List<ResultApiInfo>>() {}).type
|
|
|
private suspend fun getApiInfo(type: String) = suspendCoroutine<DFSResult<ResultApiInfo>> {
|