|
@@ -3,8 +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.DFSResult
|
|
|
-import com.doverfuelingsolutions.issp.api.dto.ResultNozzleInfo
|
|
|
+import com.doverfuelingsolutions.issp.api.dto.ResultPumpInfo
|
|
|
import com.doverfuelingsolutions.issp.api.entity.NozzleInfo
|
|
|
+import com.doverfuelingsolutions.issp.api.entity.PumpInfo
|
|
|
import com.doverfuelingsolutions.issp.api.service.ServiceStation
|
|
|
import com.doverfuelingsolutions.issp.utils.log.DFSLog
|
|
|
import com.doverfuelingsolutions.issp.utils.sp.SPKeys
|
|
@@ -22,48 +23,55 @@ object FuelInfoApi {
|
|
|
|
|
|
private var serviceStation: ServiceStation = serviceMaker()
|
|
|
|
|
|
- suspend fun getNozzleInfo() = suspendCoroutine<DFSResult<List<NozzleInfo>>> {
|
|
|
+ suspend fun requestPumpInfo() = suspendCoroutine<DFSResult<List<PumpInfo>>> {
|
|
|
GlobalScope.launch(Dispatchers.IO) {
|
|
|
- val resultNozzleList = getNozzleData()
|
|
|
- if (!resultNozzleList.success || resultNozzleList.data == null) {
|
|
|
- it.resume(DFSResult.fail(resultNozzleList.message))
|
|
|
+ val resultPumpList = requestPumpList()
|
|
|
+ if (!resultPumpList.success || resultPumpList.data == null) {
|
|
|
+ it.resume(DFSResult.fail(resultPumpList.message))
|
|
|
return@launch
|
|
|
- } else if (resultNozzleList.data.isEmpty()) {
|
|
|
+ } else if (resultPumpList.data.isEmpty()) {
|
|
|
it.resume(DFSResult.success(emptyList()))
|
|
|
return@launch
|
|
|
}
|
|
|
|
|
|
val localBarcodeMap = getLocalBarcodeMap().toMutableMap()
|
|
|
var isLocalAdd = false
|
|
|
- val nozzleInfoList = arrayListOf<NozzleInfo>()
|
|
|
- for (pump in resultNozzleList.data) {
|
|
|
- for (nozzle in pump.Nozzles) {
|
|
|
- val localName = localBarcodeMap[nozzle.ProductBarcode]
|
|
|
- val name: String = if (localName != null && localName.isNotEmpty()) {
|
|
|
- localName
|
|
|
+ val pumpList = arrayListOf<PumpInfo>()
|
|
|
+ for (item in resultPumpList.data) {
|
|
|
+ if (item.nozzles.isEmpty()) return@launch
|
|
|
+ // confirm 确认是否每个油泵下的枪的油品都是一致的?ResultPumpInfo 的 Name 属性?
|
|
|
+ // 当前油泵的油品名称
|
|
|
+ val firstNozzle = item.nozzles[0]
|
|
|
+ val localName = localBarcodeMap[firstNozzle.ProductBarcode]
|
|
|
+ val name: String = if (localName != null && localName.isNotEmpty()) {
|
|
|
+ localName
|
|
|
+ } else {
|
|
|
+ val resultBarcodeInfo = CloudApi.barcodeName(firstNozzle.ProductBarcode)
|
|
|
+ if (resultBarcodeInfo.success && resultBarcodeInfo.data != null && resultBarcodeInfo.data.IsFuelItem) {
|
|
|
+ localBarcodeMap[firstNozzle.ProductBarcode] = resultBarcodeInfo.data.ItemName
|
|
|
+ isLocalAdd = true
|
|
|
+ resultBarcodeInfo.data.ItemName
|
|
|
} else {
|
|
|
- val resultBarcodeInfo = CloudApi.barcodeName(nozzle.ProductBarcode)
|
|
|
- if (resultBarcodeInfo.success && resultBarcodeInfo.data != null && resultBarcodeInfo.data.IsFuelItem) {
|
|
|
- localBarcodeMap[nozzle.ProductBarcode] = resultBarcodeInfo.data.ItemName
|
|
|
- isLocalAdd = true
|
|
|
- resultBarcodeInfo.data.ItemName
|
|
|
- } else {
|
|
|
- ""
|
|
|
- }
|
|
|
+ ""
|
|
|
}
|
|
|
- nozzleInfoList.add(NozzleInfo(pump.PumpId, nozzle.SiteLevelNozzleId, nozzle.ProductBarcode, name))
|
|
|
}
|
|
|
+ val pump = PumpInfo(item.PumpId, name, item.nozzles.map { resultNozzleInfo ->
|
|
|
+ NozzleInfo(item.PumpId, resultNozzleInfo.SiteLevelNozzleId, resultNozzleInfo.ProductBarcode, name)
|
|
|
+ })
|
|
|
+ pumpList.add(pump)
|
|
|
}
|
|
|
if (isLocalAdd) setLocalBarcodeMap(localBarcodeMap)
|
|
|
|
|
|
- nozzleInfoList.sortBy { it.physicalId }
|
|
|
- it.resume(DFSResult.success(nozzleInfoList))
|
|
|
+ // confirm 是否还有必要做排序?
|
|
|
+ pumpList.sortBy { it.pumpId }
|
|
|
+ it.resume(DFSResult.success(pumpList))
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private suspend fun getNozzleData() = suspendCoroutine<DFSResult<Array<ResultNozzleInfo>>> {
|
|
|
- serviceStation.getNozzleInfo().enqueue(object : Callback<Array<ResultNozzleInfo>> {
|
|
|
- override fun onResponse(call: Call<Array<ResultNozzleInfo>>, response: Response<Array<ResultNozzleInfo>>) {
|
|
|
+ // confirm 订单主键从 nozzle 改为 pump
|
|
|
+ private suspend fun requestPumpList() = suspendCoroutine<DFSResult<Array<ResultPumpInfo>>> {
|
|
|
+ serviceStation.getNozzleInfo().enqueue(object : Callback<Array<ResultPumpInfo>> {
|
|
|
+ override fun onResponse(call: Call<Array<ResultPumpInfo>>, response: Response<Array<ResultPumpInfo>>) {
|
|
|
val code = response.code()
|
|
|
val body = response.body()
|
|
|
if (code == 200 && body != null) {
|
|
@@ -73,7 +81,7 @@ object FuelInfoApi {
|
|
|
it.resume(DFSResult.fail(R.string.return_data_error))
|
|
|
}
|
|
|
|
|
|
- override fun onFailure(call: Call<Array<ResultNozzleInfo>>, t: Throwable) {
|
|
|
+ override fun onFailure(call: Call<Array<ResultPumpInfo>>, t: Throwable) {
|
|
|
DFSLog.e("FuelInfoApi.getNozzleData.onFailure", t)
|
|
|
it.resume(DFSResult.fail(t.message.toString()))
|
|
|
}
|