设备联调优化
This commit is contained in:
@@ -43,6 +43,7 @@
|
|||||||
android:name=".ShelfActivity"
|
android:name=".ShelfActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
|
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
|
||||||
|
<activity android:name="com.shuwei.intelligent.shelves.SettingActivity" />
|
||||||
|
|
||||||
<receiver
|
<receiver
|
||||||
android:name=".utils.BootReceiver"
|
android:name=".utils.BootReceiver"
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import android.os.Looper
|
|||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import android.util.SparseArray
|
import android.util.SparseArray
|
||||||
|
import android.util.SparseIntArray
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
@@ -75,7 +76,8 @@ class HomeActivity : BaseActivity() {
|
|||||||
//const val TEMPERATURE_CMD = "${HEADER}1001${FOOTER}"
|
//const val TEMPERATURE_CMD = "${HEADER}1001${FOOTER}"
|
||||||
|
|
||||||
const val DEVICE_INFO_CMD = "${HEADER}0301000000000000000000000000${FOOTER}"
|
const val DEVICE_INFO_CMD = "${HEADER}0301000000000000000000000000${FOOTER}"
|
||||||
|
//const val START_CMD= "${HEADER}0F01360000${FOOTER}"
|
||||||
|
const val START_CMD= "${HEADER}0F01050020${FOOTER}"
|
||||||
const val ACTIVE_CMD =
|
const val ACTIVE_CMD =
|
||||||
"${HEADER}000281C5D70A7D428948AD7254FADBB1516738938B4B9CBD73673E9D8E7F2E15062D${FOOTER}"
|
"${HEADER}000281C5D70A7D428948AD7254FADBB1516738938B4B9CBD73673E9D8E7F2E15062D${FOOTER}"
|
||||||
|
|
||||||
@@ -83,8 +85,10 @@ class HomeActivity : BaseActivity() {
|
|||||||
const val LIGHT_CLOSE = "${HEADER}020102020102020000000000000000000000000000${FOOTER}"
|
const val LIGHT_CLOSE = "${HEADER}020102020102020000000000000000000000000000${FOOTER}"
|
||||||
const val LIGHT_OPEN = "${HEADER}020102020002020000000000000000000000000000${FOOTER}"
|
const val LIGHT_OPEN = "${HEADER}020102020002020000000000000000000000000000${FOOTER}"
|
||||||
|
|
||||||
|
const val TEMPERATURE_CTRL = "${HEADER}0F01040000${FOOTER}"
|
||||||
|
|
||||||
val list: MutableList<ShelfModel> = mutableListOf()
|
val list: MutableList<ShelfModel> = mutableListOf()
|
||||||
val weightArray = SparseArray<Double?>()
|
val weightArray = SparseIntArray()
|
||||||
var shelfIndex = 0
|
var shelfIndex = 0
|
||||||
|
|
||||||
// public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0
|
// public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0
|
||||||
@@ -124,6 +128,7 @@ class HomeActivity : BaseActivity() {
|
|||||||
}
|
}
|
||||||
SerialPortManager.send(ACTIVE_CMD)
|
SerialPortManager.send(ACTIVE_CMD)
|
||||||
|
|
||||||
|
|
||||||
//SerialPortManager.send(DEVICE_INFO_CMD)
|
//SerialPortManager.send(DEVICE_INFO_CMD)
|
||||||
}
|
}
|
||||||
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
repeatOnLifecycle(Lifecycle.State.CREATED) {
|
||||||
@@ -296,7 +301,12 @@ class HomeActivity : BaseActivity() {
|
|||||||
//获取设备状态
|
//获取设备状态
|
||||||
getDeviceInfo(data)
|
getDeviceInfo(data)
|
||||||
}
|
}
|
||||||
|
"1001","1002" -> {
|
||||||
|
Log.d(TAG, "receiveSerialPortData,温控信息上报数据:${data}")
|
||||||
|
}
|
||||||
|
"0F02" -> {
|
||||||
|
Log.d(TAG, "receiveSerialPortData,温控信息应答数据:${data}")
|
||||||
|
}
|
||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -378,12 +388,11 @@ class HomeActivity : BaseActivity() {
|
|||||||
weightHex = firstByteHex + weightHex.substring(2)
|
weightHex = firstByteHex + weightHex.substring(2)
|
||||||
realWeight = -1 * weightHex.toInt()
|
realWeight = -1 * weightHex.toInt()
|
||||||
}
|
}
|
||||||
val realWeightDouble = realWeight / 1000.0
|
weightArray.put(index, realWeight)
|
||||||
weightArray.put(index, realWeightDouble)
|
|
||||||
|
|
||||||
if (index <= 10) {
|
if (index <= 10) {
|
||||||
list.firstOrNull { it.deviceNo == index }?.let {
|
list.firstOrNull { it.deviceNo == index }?.let {
|
||||||
it.weight = realWeightDouble
|
it.weight = realWeight.toDouble()
|
||||||
val pos = list.indexOf(it)
|
val pos = list.indexOf(it)
|
||||||
shelfAdapter.notifyItemChanged(pos)
|
shelfAdapter.notifyItemChanged(pos)
|
||||||
Log.d(TAG, "getWeightInfo: deviceNo=${it.deviceNo},realWeight=${realWeight}")
|
Log.d(TAG, "getWeightInfo: deviceNo=${it.deviceNo},realWeight=${realWeight}")
|
||||||
@@ -435,7 +444,7 @@ class HomeActivity : BaseActivity() {
|
|||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
private val shelfAdapter by lazy {
|
private val shelfAdapter by lazy {
|
||||||
ShelfAdapter(list).apply {
|
ShelfAdapter(list).apply {
|
||||||
setOnDebouncedItemClick { adapter, view, position ->
|
setOnItemClickListener { _, _, position ->
|
||||||
shelfIndex = position
|
shelfIndex = position
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
// val openCmd = if (list[position].deviceNo in 1..5)
|
// val openCmd = if (list[position].deviceNo in 1..5)
|
||||||
@@ -447,6 +456,7 @@ class HomeActivity : BaseActivity() {
|
|||||||
// toast("${list[position].goodsName}柜门开启失败")
|
// toast("${list[position].goodsName}柜门开启失败")
|
||||||
// return@launch
|
// return@launch
|
||||||
// }
|
// }
|
||||||
|
//SerialPortManager.send(START_CMD)
|
||||||
launch(Intent(this@HomeActivity, ShelfActivity::class.java).also {
|
launch(Intent(this@HomeActivity, ShelfActivity::class.java).also {
|
||||||
it.putExtra(ShelfActivity.SHELF_MODEL, list[position])
|
it.putExtra(ShelfActivity.SHELF_MODEL, list[position])
|
||||||
}) {
|
}) {
|
||||||
@@ -465,13 +475,13 @@ class HomeActivity : BaseActivity() {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
val submitList = list.sortedBy { it.deviceNo }
|
val submitList = list.sortedBy { item-> item.deviceNo }
|
||||||
val body = ShelfBody().also {
|
val body = ShelfBody().also { body ->
|
||||||
it.deviceId = App.deviceId ?: ""
|
body.deviceId = App.deviceId ?: ""
|
||||||
it.canteenId = App.canteenId
|
body.canteenId = App.canteenId
|
||||||
it.temperature = showTemperatureC
|
body.temperature = showTemperatureC
|
||||||
it.humidity = showHumidity
|
body.humidity = showHumidity
|
||||||
it.goodsList = submitList
|
body.goodsList = submitList
|
||||||
}
|
}
|
||||||
Log.d("mzf", "performSync: body:${body.toJsonString()}")
|
Log.d("mzf", "performSync: body:${body.toJsonString()}")
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
@@ -553,7 +563,8 @@ class HomeActivity : BaseActivity() {
|
|||||||
item?.apply {
|
item?.apply {
|
||||||
goodsId = ""
|
goodsId = ""
|
||||||
goodsName = null
|
goodsName = null
|
||||||
weight = null
|
weight = 0.0
|
||||||
|
weightBak = if (event.weight <= 0.0 ) 0.0 else -1 * event.weight.toDouble()
|
||||||
createTime = null
|
createTime = null
|
||||||
overdueDay = null
|
overdueDay = null
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,68 @@
|
|||||||
|
package com.shuwei.intelligent.shelves
|
||||||
|
|
||||||
|
import android.os.Bundle
|
||||||
|
import android.os.Handler
|
||||||
|
import android.os.Looper
|
||||||
|
import androidx.lifecycle.lifecycleScope
|
||||||
|
import com.shuwei.intelligent.shelves.base.BaseActivity
|
||||||
|
import com.shuwei.intelligent.shelves.databinding.ActivitySettingBinding
|
||||||
|
import com.shuwei.intelligent.shelves.serial.SerialPortManager
|
||||||
|
import com.shuwei.intelligent.shelves.utils.KeyboardUtil
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
import java.text.SimpleDateFormat
|
||||||
|
import java.util.Date
|
||||||
|
import java.util.Locale
|
||||||
|
|
||||||
|
class SettingActivity: BaseActivity() {
|
||||||
|
|
||||||
|
private lateinit var binding: ActivitySettingBinding
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
binding = ActivitySettingBinding.inflate(layoutInflater)
|
||||||
|
setBackground()
|
||||||
|
setContentView(binding.root)
|
||||||
|
binding.btnSendCmd.setOnClickListener{
|
||||||
|
val cmd = binding.etInputCmd.text.toString().trim()
|
||||||
|
if (cmd.isBlank()) {
|
||||||
|
return@setOnClickListener
|
||||||
|
}
|
||||||
|
val realCmd = "${HomeActivity.HEADER}0F01${cmd}${HomeActivity.FOOTER}"
|
||||||
|
lifecycleScope.launch {
|
||||||
|
SerialPortManager.send(realCmd)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
binding.ivBack.setOnClickListener { finish() }
|
||||||
|
binding.root.setOnClickListener { v ->
|
||||||
|
KeyboardUtil.hideKeyboard(v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private fun updateDateTime() {
|
||||||
|
val sdf = SimpleDateFormat(ShelfActivity.YYYY_MM_DD__EEEE_HH_MM_SS, Locale.CHINA)
|
||||||
|
val dateTime = sdf.format(Date())
|
||||||
|
val arr = dateTime.split("***")
|
||||||
|
updateLeftStatus(arr[0])
|
||||||
|
updateRightStatus(arr[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
private val handler = Handler(Looper.getMainLooper())
|
||||||
|
private val updateTask = object : Runnable {
|
||||||
|
override fun run() {
|
||||||
|
updateDateTime()
|
||||||
|
handler.postDelayed(this, 1000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onResume() {
|
||||||
|
super.onResume()
|
||||||
|
hideStatusBar()
|
||||||
|
handler.post(updateTask)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onPause() {
|
||||||
|
super.onPause()
|
||||||
|
handler.removeCallbacks(updateTask)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -54,7 +54,7 @@ class ShelfActivity : BaseActivity() {
|
|||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "ShelfActivity"
|
private const val TAG = "ShelfActivity"
|
||||||
|
|
||||||
private const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss"
|
const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss"
|
||||||
const val SHELF_MODEL = "shelfModel"
|
const val SHELF_MODEL = "shelfModel"
|
||||||
const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo"
|
const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo"
|
||||||
const val SHELF_WEIGHT = "shelfWeight"
|
const val SHELF_WEIGHT = "shelfWeight"
|
||||||
@@ -90,9 +90,9 @@ class ShelfActivity : BaseActivity() {
|
|||||||
shelfModel?.let {
|
shelfModel?.let {
|
||||||
binding.tvShelfName.text = it.shelfName
|
binding.tvShelfName.text = it.shelfName
|
||||||
binding.tvFoodName.text = if (it.goodsName.isNullOrBlank()) "-" else it.goodsName
|
binding.tvFoodName.text = if (it.goodsName.isNullOrBlank()) "-" else it.goodsName
|
||||||
realWeight = ((it.weight ?: 0.0) * 1000).toInt()
|
realWeight = it.weight?.toInt()?:0
|
||||||
// realWeight = (HomeActivity.getRealWeight() * 1000).toInt()
|
binding.tvFoodWeight.text = if(realWeight < 1000) "${realWeight}克" else "%.3f千克".format(realWeight/1000.0)
|
||||||
binding.tvFoodWeight.text = "${realWeight}克"
|
startTime = System.currentTimeMillis()
|
||||||
}
|
}
|
||||||
|
|
||||||
initRecyclerView()
|
initRecyclerView()
|
||||||
@@ -125,7 +125,7 @@ class ShelfActivity : BaseActivity() {
|
|||||||
shelfName = shelfModel?.shelfName,
|
shelfName = shelfModel?.shelfName,
|
||||||
goodsId = currentGoodsId,
|
goodsId = currentGoodsId,
|
||||||
goodsName = list[clickIndex].goodsName,
|
goodsName = list[clickIndex].goodsName,
|
||||||
weight = realWeight / 1000.0,
|
weight = realWeight.toDouble(),
|
||||||
overdueDay = list[clickIndex].overdueDay,
|
overdueDay = list[clickIndex].overdueDay,
|
||||||
// createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date())
|
// createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date())
|
||||||
createTime = DateTimeUtil.formatDateTime(dateTime = Date())
|
createTime = DateTimeUtil.formatDateTime(dateTime = Date())
|
||||||
@@ -142,11 +142,12 @@ class ShelfActivity : BaseActivity() {
|
|||||||
binding.btnClearZero.setOnClickListener {
|
binding.btnClearZero.setOnClickListener {
|
||||||
clearZero()
|
clearZero()
|
||||||
}
|
}
|
||||||
binding.btnClearEmpty?.setOnClickListener {
|
binding.btnClearEmpty.setOnClickListener {
|
||||||
|
val tempWeight = shelfModel?.weight?.toInt()?:0
|
||||||
clearZero()
|
clearZero()
|
||||||
binding.tvFoodName.text = "-"
|
binding.tvFoodName.text = "-"
|
||||||
binding.tvFoodWeight.text = "0克"
|
//binding.tvFoodWeight.text = "0克"
|
||||||
EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo))
|
EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo, tempWeight))
|
||||||
}
|
}
|
||||||
lifecycleScope.launch {
|
lifecycleScope.launch {
|
||||||
SerialPortManager.send(DEVICE_INFO_CMD)
|
SerialPortManager.send(DEVICE_INFO_CMD)
|
||||||
@@ -358,7 +359,12 @@ class ShelfActivity : BaseActivity() {
|
|||||||
@Subscribe(threadMode = ThreadMode.MAIN)
|
@Subscribe(threadMode = ThreadMode.MAIN)
|
||||||
public fun receiveWeightEvent(event: SendWeightEvent) {
|
public fun receiveWeightEvent(event: SendWeightEvent) {
|
||||||
if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) {
|
if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) {
|
||||||
binding.tvFoodWeight.text = "${event.weight}克"
|
val intervalTime = System.currentTimeMillis() - startTime
|
||||||
|
Log.d(TAG, "receiveWeightEvent: ${event.shelfNo}号货架重量数据获取间隔时间为:$intervalTime")
|
||||||
|
val weight = event.weight
|
||||||
|
binding.tvFoodWeight.text = if(weight < 1000) "${weight}克" else "%.3f千克".format(weight/1000.0)
|
||||||
|
startTime = System.currentTimeMillis()
|
||||||
|
window.decorView.postDelayed({ Loading.dismiss() }, 1000)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -375,10 +381,11 @@ class ShelfActivity : BaseActivity() {
|
|||||||
// binding.tvFoodWeight.text = "${realWeight}克"
|
// binding.tvFoodWeight.text = "${realWeight}克"
|
||||||
|
|
||||||
SerialPortManager.send(DEVICE_INFO_CMD)
|
SerialPortManager.send(DEVICE_INFO_CMD)
|
||||||
|
startTime = System.currentTimeMillis()
|
||||||
Loading.show(this@ShelfActivity)
|
Loading.show(this@ShelfActivity)
|
||||||
window.decorView.postDelayed({ Loading.dismiss() }, 5000)
|
// window.decorView.postDelayed({ Loading.dismiss() }, 5000)
|
||||||
}
|
}
|
||||||
KeyboardUtil.hideKeyboard(window.decorView)
|
KeyboardUtil.hideKeyboard(window.decorView)
|
||||||
}
|
}
|
||||||
|
private var startTime = 0L
|
||||||
}
|
}
|
||||||
@@ -14,7 +14,6 @@ import com.shuwei.intelligent.shelves.utils.DateTimeUtil
|
|||||||
import com.shuwei.intelligent.shelves.utils.ext.gone
|
import com.shuwei.intelligent.shelves.utils.ext.gone
|
||||||
import com.shuwei.intelligent.shelves.utils.ext.visible
|
import com.shuwei.intelligent.shelves.utils.ext.visible
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
import kotlin.math.roundToInt
|
|
||||||
|
|
||||||
class ShelfAdapter(list: MutableList<ShelfModel>) :
|
class ShelfAdapter(list: MutableList<ShelfModel>) :
|
||||||
BaseQuickAdapter<ShelfModel, ShelfAdapter.VH>(list) {
|
BaseQuickAdapter<ShelfModel, ShelfAdapter.VH>(list) {
|
||||||
@@ -37,7 +36,7 @@ class ShelfAdapter(list: MutableList<ShelfModel>) :
|
|||||||
override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) {
|
override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) {
|
||||||
val shelfNo = item!!.deviceNo
|
val shelfNo = item!!.deviceNo
|
||||||
item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}"
|
item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}"
|
||||||
val weight = item.weight ?: 0.toDouble()
|
val weight = item.weight ?: 0.0
|
||||||
val binding = holder.binding
|
val binding = holder.binding
|
||||||
if (item.overdueDay.isNullOrBlank()) {
|
if (item.overdueDay.isNullOrBlank()) {
|
||||||
binding.ivStaleFood.gone()
|
binding.ivStaleFood.gone()
|
||||||
@@ -63,7 +62,8 @@ class ShelfAdapter(list: MutableList<ShelfModel>) :
|
|||||||
binding.tvFoodWeight.run {
|
binding.tvFoodWeight.run {
|
||||||
setTextColor(getColor(R.color.food_weight_orange))
|
setTextColor(getColor(R.color.food_weight_orange))
|
||||||
//val showWeight = if (weight == 0.toDouble()) "0克" else "%.3f千克".format(weight)
|
//val showWeight = if (weight == 0.toDouble()) "0克" else "%.3f千克".format(weight)
|
||||||
text = "${(weight*1000).roundToInt()}克"
|
text = if(weight < 1000) "${weight.toInt()}克" else "%.3f千克".format(weight/1000.0)
|
||||||
|
//"${(weight*1000).roundToInt()}克"
|
||||||
}
|
}
|
||||||
//val isBlankShelf = weight <= 0
|
//val isBlankShelf = weight <= 0
|
||||||
val isBlankShelf = item.goodsName.isNullOrBlank()
|
val isBlankShelf = item.goodsName.isNullOrBlank()
|
||||||
|
|||||||
@@ -17,9 +17,11 @@ import com.shuwei.intelligent.shelves.HomeActivity
|
|||||||
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_CLOSE
|
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_CLOSE
|
||||||
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_OPEN
|
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_OPEN
|
||||||
import com.shuwei.intelligent.shelves.R
|
import com.shuwei.intelligent.shelves.R
|
||||||
|
import com.shuwei.intelligent.shelves.SettingActivity
|
||||||
import com.shuwei.intelligent.shelves.databinding.ActivityBaseBinding
|
import com.shuwei.intelligent.shelves.databinding.ActivityBaseBinding
|
||||||
import com.shuwei.intelligent.shelves.serial.SerialPortManager
|
import com.shuwei.intelligent.shelves.serial.SerialPortManager
|
||||||
import com.shuwei.intelligent.shelves.utils.ext.clickWithDebounce
|
import com.shuwei.intelligent.shelves.utils.ext.clickWithDebounce
|
||||||
|
import com.shuwei.intelligent.shelves.utils.ext.startActivity
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Suppress("DEPRECATION")
|
@Suppress("DEPRECATION")
|
||||||
@@ -146,6 +148,9 @@ open class BaseActivity : AppCompatActivity() {
|
|||||||
val tag = binding.tvLeftStatus.tag?.toString()?.toBoolean() ?: true
|
val tag = binding.tvLeftStatus.tag?.toString()?.toBoolean() ?: true
|
||||||
switchLight(tag.not())
|
switchLight(tag.not())
|
||||||
}
|
}
|
||||||
|
binding.tvRightStatus.clickWithDebounce {
|
||||||
|
startActivity<SettingActivity> { }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -7,4 +7,4 @@ data class SendWeightEvent(
|
|||||||
|
|
||||||
data class WeightEvent(var weight: Int)
|
data class WeightEvent(var weight: Int)
|
||||||
|
|
||||||
data class ClearShelfEvent(var shelfNo: Int)
|
data class ClearShelfEvent(var shelfNo: Int, var weight: Int)
|
||||||
@@ -10,6 +10,7 @@ data class ShelfModel(
|
|||||||
var goodsName: String? = null,
|
var goodsName: String? = null,
|
||||||
var deviceId: String? = null,
|
var deviceId: String? = null,
|
||||||
var weight: Double? = null,
|
var weight: Double? = null,
|
||||||
|
var weightBak: Double? = null,
|
||||||
var createTime: String? = null,
|
var createTime: String? = null,
|
||||||
var overdueDay: String? = null,
|
var overdueDay: String? = null,
|
||||||
var temperature: String? = null,
|
var temperature: String? = null,
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.shuwei.intelligent.shelves.net
|
package com.shuwei.intelligent.shelves.net
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
import android.app.Dialog
|
import android.app.Dialog
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
@@ -15,13 +16,15 @@ object Loading {
|
|||||||
|
|
||||||
private var dialog: LoadingDialog? = null
|
private var dialog: LoadingDialog? = null
|
||||||
|
|
||||||
fun show(context: Context) {
|
fun show(activity: Activity) {
|
||||||
|
if (activity.isFinishing || activity.isDestroyed) {
|
||||||
|
return
|
||||||
|
}
|
||||||
if (dialog?.isShowing == true) {
|
if (dialog?.isShowing == true) {
|
||||||
dialog?.dismiss()
|
dialog?.dismiss()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dialog == null) {
|
if (dialog == null) {
|
||||||
dialog = LoadingDialog(context)
|
dialog = LoadingDialog(activity)
|
||||||
}
|
}
|
||||||
dialog?.show()
|
dialog?.show()
|
||||||
}
|
}
|
||||||
@@ -47,12 +50,13 @@ class LoadingDialog(
|
|||||||
binding.tvMessage.text = message
|
binding.tvMessage.text = message
|
||||||
setContentView(binding.root)
|
setContentView(binding.root)
|
||||||
setCancelable(true)
|
setCancelable(true)
|
||||||
|
setCanceledOnTouchOutside(true)
|
||||||
window?.run {
|
window?.run {
|
||||||
setBackgroundDrawable(Color.TRANSPARENT.toDrawable())
|
setBackgroundDrawable(Color.TRANSPARENT.toDrawable())
|
||||||
setFlags(
|
// setFlags(
|
||||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
|
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
|
||||||
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
|
||||||
);
|
// )
|
||||||
}
|
}
|
||||||
setOnDismissListener {
|
setOnDismissListener {
|
||||||
onDismiss()
|
onDismiss()
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ class SyncTask(appContext: Context, workerParams: WorkerParameters) :
|
|||||||
val list = HomeActivity.list
|
val list = HomeActivity.list
|
||||||
Log.d(TAG, "performSync: list:${list.toJsonString()}")
|
Log.d(TAG, "performSync: list:${list.toJsonString()}")
|
||||||
val submitList = list.sortedBy { it.deviceNo }
|
val submitList = list.sortedBy { it.deviceNo }
|
||||||
|
submitList.forEach {
|
||||||
|
if (it.goodsId.isBlank()) {
|
||||||
|
it.weight = it.weightBak
|
||||||
|
}
|
||||||
|
}
|
||||||
// submitList.forEach {
|
// submitList.forEach {
|
||||||
// it.temperature = HomeActivity.showTemperatureC
|
// it.temperature = HomeActivity.showTemperatureC
|
||||||
// it.humidity = HomeActivity.showHumidity
|
// it.humidity = HomeActivity.showHumidity
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ object TaskManager {
|
|||||||
val nextRequest = OneTimeWorkRequestBuilder<SyncTask>()
|
val nextRequest = OneTimeWorkRequestBuilder<SyncTask>()
|
||||||
.setInitialDelay(2, TimeUnit.MINUTES)
|
.setInitialDelay(2, TimeUnit.MINUTES)
|
||||||
// .setInitialDelay(30, TimeUnit.SECONDS)
|
// .setInitialDelay(30, TimeUnit.SECONDS)
|
||||||
|
// .setInitialDelay(10, TimeUnit.MINUTES)
|
||||||
// .setInputData(inputData)
|
// .setInputData(inputData)
|
||||||
.build()
|
.build()
|
||||||
WorkManager.getInstance(App.getInstance())
|
WorkManager.getInstance(App.getInstance())
|
||||||
|
|||||||
@@ -406,7 +406,8 @@ public class AppUtil {
|
|||||||
*/
|
*/
|
||||||
@SuppressLint("MissingPermission")
|
@SuppressLint("MissingPermission")
|
||||||
public static String getUDID(Context context) {
|
public static String getUDID(Context context) {
|
||||||
return "test111";
|
return "SWZC-HG-001";
|
||||||
|
//"test111";
|
||||||
// String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
|
// String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
|
||||||
// if (!androidID.equals("")) {
|
// if (!androidID.equals("")) {
|
||||||
// try {
|
// try {
|
||||||
|
|||||||
@@ -35,10 +35,10 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="24dp"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:textColor="@color/bg_page"
|
android:textColor="@color/bg_page"
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
tools:text="货架 - 03" />
|
tools:text="货架 - 03" />
|
||||||
|
|
||||||
<Space
|
<Space
|
||||||
@@ -89,11 +89,11 @@
|
|||||||
android:layout_marginEnd="24dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:backgroundTint="@color/bg_page"
|
android:backgroundTint="@color/bg_page"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="清零"
|
android:text="清零"
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
app:cornerRadius="12dp"
|
app:cornerRadius="12dp"
|
||||||
@@ -105,25 +105,10 @@
|
|||||||
android:layout_width="60dp"
|
android:layout_width="60dp"
|
||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:layout_gravity="top|start"
|
android:layout_gravity="top|start"
|
||||||
android:layout_marginTop="24dp"
|
|
||||||
android:layout_marginStart="24dp"
|
android:layout_marginStart="24dp"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
android:src="@drawable/ic_back_512"
|
android:src="@drawable/ic_back_512"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnClearEmpty"
|
|
||||||
android:layout_width="120dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:layout_marginEnd="24dp"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:text="清空"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@color/food_name_black"
|
|
||||||
android:textSize="20sp"
|
|
||||||
tools:ignore="HardcodedText" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
@@ -167,16 +152,16 @@
|
|||||||
android:layout_height="60dp"
|
android:layout_height="60dp"
|
||||||
android:layout_marginEnd="24dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:background="@null"
|
android:background="@null"
|
||||||
|
android:fontFamily="sans-serif-medium"
|
||||||
android:hint="输入食材名称"
|
android:hint="输入食材名称"
|
||||||
android:maxLines="1"
|
|
||||||
android:inputType="text"
|
|
||||||
android:text=""
|
|
||||||
android:imeOptions="actionSearch"
|
android:imeOptions="actionSearch"
|
||||||
android:textColor="@color/food_name_black"
|
android:inputType="text"
|
||||||
|
android:maxLines="1"
|
||||||
android:paddingStart="1dp"
|
android:paddingStart="1dp"
|
||||||
android:paddingEnd="1dp"
|
android:paddingEnd="1dp"
|
||||||
|
android:text=""
|
||||||
|
android:textColor="@color/food_name_black"
|
||||||
android:textColorHint="#B4BEC8"
|
android:textColorHint="#B4BEC8"
|
||||||
android:fontFamily="sans-serif-medium"
|
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
tools:ignore="Autofill,HardcodedText,TextFields" />
|
tools:ignore="Autofill,HardcodedText,TextFields" />
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -184,8 +169,8 @@
|
|||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1"
|
android:layout_marginTop="24dp"
|
||||||
android:layout_marginTop="24dp">
|
android:layout_weight="1">
|
||||||
|
|
||||||
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
<com.scwang.smart.refresh.layout.SmartRefreshLayout
|
||||||
android:id="@+id/refreshLayout"
|
android:id="@+id/refreshLayout"
|
||||||
@@ -200,16 +185,16 @@
|
|||||||
android:id="@+id/rvSearch"
|
android:id="@+id/rvSearch"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:paddingStart="36dp"
|
|
||||||
android:paddingBottom="12dp"
|
|
||||||
android:paddingTop="12dp"
|
|
||||||
android:paddingEnd="36dp"
|
|
||||||
android:clipToPadding="false"
|
android:clipToPadding="false"
|
||||||
android:overScrollMode="never"
|
android:overScrollMode="never"
|
||||||
tools:listitem="@layout/list_item_search"
|
android:paddingStart="36dp"
|
||||||
|
android:paddingTop="12dp"
|
||||||
|
android:paddingEnd="36dp"
|
||||||
|
android:paddingBottom="12dp"
|
||||||
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
app:layoutManager="androidx.recyclerview.widget.GridLayoutManager"
|
||||||
app:spanCount="2"
|
app:spanCount="2"
|
||||||
tools:itemCount="10"/>
|
tools:itemCount="10"
|
||||||
|
tools:listitem="@layout/list_item_search" />
|
||||||
|
|
||||||
<com.scwang.smart.refresh.footer.ClassicsFooter
|
<com.scwang.smart.refresh.footer.ClassicsFooter
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
@@ -219,36 +204,66 @@
|
|||||||
|
|
||||||
<include
|
<include
|
||||||
android:id="@+id/include"
|
android:id="@+id/include"
|
||||||
|
layout="@layout/layout_empty_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
layout="@layout/layout_empty_view"
|
android:visibility="gone" />
|
||||||
android:visibility="gone"/>
|
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<!-- android:layout_marginTop="48dp"-->
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/btnClearEmpty"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="80dp"
|
||||||
|
android:layout_marginStart="48dp"
|
||||||
|
android:layout_marginTop="24dp"
|
||||||
|
android:layout_marginEnd="24dp"
|
||||||
|
android:layout_marginBottom="24dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:backgroundTint="@color/bg_page"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:insetTop="0dp"
|
||||||
|
android:insetBottom="0dp"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="清空"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="30sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:cornerRadius="12dp"
|
||||||
|
app:elevation="0dp"
|
||||||
|
tools:ignore="HardcodedText" />
|
||||||
|
|
||||||
<com.google.android.material.button.MaterialButton
|
<com.google.android.material.button.MaterialButton
|
||||||
android:id="@+id/btnConfirm"
|
android:id="@+id/btnConfirm"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="0dp"
|
||||||
android:layout_height="80dp"
|
android:layout_height="80dp"
|
||||||
|
android:layout_marginStart="24dp"
|
||||||
android:layout_marginTop="24dp"
|
android:layout_marginTop="24dp"
|
||||||
android:layout_marginEnd="48dp"
|
android:layout_marginEnd="48dp"
|
||||||
android:layout_marginStart="48dp"
|
|
||||||
android:layout_marginBottom="24dp"
|
android:layout_marginBottom="24dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:backgroundTint="@color/bg_page"
|
android:backgroundTint="@color/bg_page"
|
||||||
android:ellipsize="end"
|
android:ellipsize="end"
|
||||||
android:insetTop="0dp"
|
android:insetTop="0dp"
|
||||||
android:insetBottom="0dp"
|
android:insetBottom="0dp"
|
||||||
android:maxLines="1"
|
android:maxLines="1"
|
||||||
android:text="确定"
|
android:text="确定"
|
||||||
android:textStyle="bold"
|
|
||||||
android:textColor="@color/white"
|
android:textColor="@color/white"
|
||||||
android:textSize="30sp"
|
android:textSize="30sp"
|
||||||
|
android:textStyle="bold"
|
||||||
app:cornerRadius="12dp"
|
app:cornerRadius="12dp"
|
||||||
app:elevation="0dp"
|
app:elevation="0dp"
|
||||||
tools:ignore="HardcodedText" />
|
tools:ignore="HardcodedText" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -0,0 +1,71 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout 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:orientation="vertical"
|
||||||
|
tools:background="@color/bg_page">
|
||||||
|
|
||||||
|
<com.google.android.material.card.MaterialCardView
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="260dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
app:cardBackgroundColor="@color/white"
|
||||||
|
app:cardCornerRadius="6dp"
|
||||||
|
app:cardElevation="0dp">
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:orientation="vertical"
|
||||||
|
android:padding="10dp">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="50dp"
|
||||||
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@+id/ivBack"
|
||||||
|
android:layout_width="30dp"
|
||||||
|
android:layout_height="30dp"
|
||||||
|
android:layout_gravity="top|start"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:src="@drawable/ic_back_512"
|
||||||
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="28sp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:text="设置"
|
||||||
|
android:textColor="@color/black"/>
|
||||||
|
|
||||||
|
</FrameLayout>
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/etInputCmd"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:hint="请输入命令"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textSize="22sp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnSendCmd"
|
||||||
|
android:layout_width="180dp"
|
||||||
|
android:layout_height="60dp"
|
||||||
|
android:textSize="22sp"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginTop="30dp"
|
||||||
|
android:text="发送命令" />
|
||||||
|
</LinearLayout>
|
||||||
|
</com.google.android.material.card.MaterialCardView>
|
||||||
|
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -110,20 +110,6 @@
|
|||||||
android:src="@drawable/ic_back_512"
|
android:src="@drawable/ic_back_512"
|
||||||
tools:ignore="ContentDescription" />
|
tools:ignore="ContentDescription" />
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/btnClearEmpty"
|
|
||||||
android:layout_width="65dp"
|
|
||||||
android:layout_height="30dp"
|
|
||||||
android:layout_gravity="bottom|end"
|
|
||||||
android:layout_marginBottom="10dp"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
android:maxLines="1"
|
|
||||||
android:text="清空"
|
|
||||||
android:gravity="center"
|
|
||||||
android:textColor="@color/food_name_black"
|
|
||||||
android:textSize="12sp"
|
|
||||||
tools:ignore="HardcodedText" />
|
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
</com.google.android.material.card.MaterialCardView>
|
</com.google.android.material.card.MaterialCardView>
|
||||||
@@ -225,13 +211,42 @@
|
|||||||
android:visibility="gone" />
|
android:visibility="gone" />
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
<!-- android:layout_marginTop="48dp"-->
|
<LinearLayout
|
||||||
<com.google.android.material.button.MaterialButton
|
|
||||||
android:id="@+id/btnConfirm"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:gravity="center_vertical">
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/btnClearEmpty"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
android:layout_height="40dp"
|
android:layout_height="40dp"
|
||||||
android:layout_marginStart="24dp"
|
android:layout_marginStart="24dp"
|
||||||
android:layout_marginTop="12dp"
|
android:layout_marginTop="12dp"
|
||||||
|
android:layout_marginEnd="12dp"
|
||||||
|
android:layout_marginBottom="12dp"
|
||||||
|
android:backgroundTint="@color/bg_page"
|
||||||
|
android:ellipsize="end"
|
||||||
|
android:insetTop="0dp"
|
||||||
|
android:insetBottom="0dp"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:text="清空"
|
||||||
|
android:textColor="@color/white"
|
||||||
|
android:textSize="15sp"
|
||||||
|
android:textStyle="bold"
|
||||||
|
app:cornerRadius="6dp"
|
||||||
|
app:elevation="0dp"
|
||||||
|
tools:ignore="HardcodedText" />
|
||||||
|
|
||||||
|
|
||||||
|
<com.google.android.material.button.MaterialButton
|
||||||
|
android:id="@+id/btnConfirm"
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_height="40dp"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
android:layout_marginEnd="24dp"
|
android:layout_marginEnd="24dp"
|
||||||
android:layout_marginBottom="12dp"
|
android:layout_marginBottom="12dp"
|
||||||
android:backgroundTint="@color/bg_page"
|
android:backgroundTint="@color/bg_page"
|
||||||
@@ -246,6 +261,7 @@
|
|||||||
app:cornerRadius="6dp"
|
app:cornerRadius="6dp"
|
||||||
app:elevation="0dp"
|
app:elevation="0dp"
|
||||||
tools:ignore="HardcodedText" />
|
tools:ignore="HardcodedText" />
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user