diff --git a/app/src/main/java/com/sw/platecabinet/GlobalData.kt b/app/src/main/java/com/sw/platecabinet/GlobalData.kt index c3c381c..c462b34 100644 --- a/app/src/main/java/com/sw/platecabinet/GlobalData.kt +++ b/app/src/main/java/com/sw/platecabinet/GlobalData.kt @@ -4,7 +4,8 @@ object GlobalData { /** * 同一设备全局使用的设备编号 */ - var globalEquipmentCode: String = "202501171634" +// var globalEquipmentCode: String = "202501171634" + var globalEquipmentCode: String = "202507231144" /** * app版本号 @@ -30,7 +31,17 @@ object GlobalData { } /** - * + * 全局常量 + */ +object Constants { + /** + * 自动关闭时间 + */ + const val AUTO_CLOSE_TIME: Long = 3 +} + +/** + * key */ object GlobalKey { const val KEY_TOKEN = "tokenKey" diff --git a/app/src/main/java/com/sw/platecabinet/MyApp.kt b/app/src/main/java/com/sw/platecabinet/MyApp.kt index 65f0140..b792609 100644 --- a/app/src/main/java/com/sw/platecabinet/MyApp.kt +++ b/app/src/main/java/com/sw/platecabinet/MyApp.kt @@ -20,7 +20,7 @@ class MyApp : App() { * 初始化全局数据 */ private fun initGlobalData() { - GlobalData.appVersion = AppUtil.getAppVersionName(this) + GlobalData.appVersion = AppUtil.getAppVersionCode(this).toString() GlobalData.globalEquipmentCode = "202501171634" } } \ No newline at end of file diff --git a/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt b/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt index 8c53b12..00ac3ab 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/BaseActivity.kt @@ -306,13 +306,22 @@ abstract class BaseActivity : AppCompatActivity() { * @param isAdmin true 管理员 执行绑盘此操作 false 用户,提示错误 */ fun handleLoginSuccess(equipmentUserInfo: EquipmentUserInfo, isAdmin: Boolean) { + Timber.d("handleLoginSuccess isAdmin = $isAdmin") viewModel.resetUserInfo() + if (equipmentUserInfo.isOtherEquipment()) { + MainActivity.start( + context, + pageType = PageType.PLATE_TIP, + equipmentUserInfo = equipmentUserInfo + ) + return + } if (equipmentUserInfo.equipmentBoxCode?.isNotEmpty() == true) { SerialApi.openPlate( equipmentUserInfo.equipmentBoxCode.toInt(), object : SerialPortManager.SendCallback { override fun onSuccess() { - MainActivity.start(context, pageType = PageType.PLATE_OPEN) + MainActivity.start(context, pageType = PageType.PLATE_TIP) } override fun onFail(e: Exception?) { @@ -323,7 +332,12 @@ abstract class BaseActivity : AppCompatActivity() { if (isAdmin) { settingViewModel.getEquipmentList() } else { - ToastUtils.showToast("无餐盘信息") + Timber.d("无餐盘信息") + MainActivity.start( + context, + pageType = PageType.PLATE_TIP, + equipmentUserInfo = equipmentUserInfo + ) } } } diff --git a/app/src/main/java/com/sw/platecabinet/activity/MainActivity.kt b/app/src/main/java/com/sw/platecabinet/activity/MainActivity.kt index fe4b4e6..5b673eb 100644 --- a/app/src/main/java/com/sw/platecabinet/activity/MainActivity.kt +++ b/app/src/main/java/com/sw/platecabinet/activity/MainActivity.kt @@ -52,7 +52,7 @@ class MainActivity : BaseActivity() { val page = when (pageType) { PageType.SETTING_LIST -> SettingListFragment() PageType.BIND_PLATE -> BindPlateFragment.newInstance(equipmentUserInfo) - PageType.PLATE_OPEN -> PlateOpenFragment() + PageType.PLATE_TIP -> PlateOpenFragment.newInstance(equipmentUserInfo) PageType.UNBIND_PLATE -> UnBindPlateFragment.newInstance(equipmentUserInfo) PageType.PLATE_CABINET_FULL -> PlateCabinetFullFragment() } @@ -90,9 +90,9 @@ class MainActivity : BaseActivity() { */ enum class PageType { /** - * 餐盘柜打开 + * 提示 */ - PLATE_OPEN, + PLATE_TIP, /** * 设置列表 diff --git a/app/src/main/java/com/sw/platecabinet/fragment/BindPlateFragment.kt b/app/src/main/java/com/sw/platecabinet/fragment/BindPlateFragment.kt index 502fb52..2130a82 100644 --- a/app/src/main/java/com/sw/platecabinet/fragment/BindPlateFragment.kt +++ b/app/src/main/java/com/sw/platecabinet/fragment/BindPlateFragment.kt @@ -13,6 +13,7 @@ import androidx.recyclerview.widget.RecyclerView import com.sw.plate.utils.ToastUtils import com.sw.platecabinet.R import com.sw.platecabinet.activity.MainActivity +import com.sw.platecabinet.activity.PageType import com.sw.platecabinet.adapter.GenericItemAdapter import com.sw.platecabinet.adapter.GridSpacingItemDecoration import com.sw.platecabinet.adapter.dpToPx @@ -34,24 +35,24 @@ class BindPlateFragment : BaseFragment( FragmentBindPlateBinding::inflate ) { private lateinit var adapter: GenericItemAdapter - internal val ARG_PARAM1 = "param1" + internal val KEY_ACTION_TYPE = "actionType" private var info: EquipmentUserInfo? = null private var checkedItem: SearchResult.Member? = null private var lastText = "" companion object { @JvmStatic - fun newInstance(param1: EquipmentUserInfo?) = + fun newInstance(userInfo: EquipmentUserInfo?) = BindPlateFragment().apply { arguments = Bundle().apply { - putParcelable(ARG_PARAM1, param1) + putParcelable(KEY_ACTION_TYPE, userInfo) } } } override fun initialize() { arguments?.let { - info = it.getParcelable(ARG_PARAM1) + info = it.getParcelable(KEY_ACTION_TYPE) info?.let { binding.tvNum.text = "${it.equipmentName}-${it.equipmentBoxCode}" if (!TextUtils.isEmpty(it.plateNumber)) { @@ -175,8 +176,16 @@ class BindPlateFragment : BaseFragment( if (it.first == null) return@collect // 解绑状态过滤 val errorInfo = it.second if (errorInfo.isSuccess()) { - ToastUtils.showToast("绑定成功") - activity?.finish() + if (errorInfo.equipmentUserInfo?.isOtherEquipment() == true) { + MainActivity.start( + requireContext(), + pageType = PageType.PLATE_TIP, + equipmentUserInfo = errorInfo.equipmentUserInfo + ) + } else { + ToastUtils.showToast("绑定成功") + activity?.finish() + } } else { ToastUtils.showToast(errorInfo.msg) } diff --git a/app/src/main/java/com/sw/platecabinet/fragment/PlateCabinetFullFragment.kt b/app/src/main/java/com/sw/platecabinet/fragment/PlateCabinetFullFragment.kt index f10bbfe..58d7449 100644 --- a/app/src/main/java/com/sw/platecabinet/fragment/PlateCabinetFullFragment.kt +++ b/app/src/main/java/com/sw/platecabinet/fragment/PlateCabinetFullFragment.kt @@ -1,6 +1,7 @@ package com.sw.platecabinet.fragment import android.os.CountDownTimer +import com.sw.platecabinet.Constants import com.sw.platecabinet.databinding.FragmentPlateCabinetFullBinding import timber.log.Timber @@ -9,7 +10,7 @@ import timber.log.Timber */ class PlateCabinetFullFragment : BaseFragment(FragmentPlateCabinetFullBinding::inflate) { - private var totalTimeInMillis: Long = 5 * 1000 + private var totalTimeInMillis: Long = Constants.AUTO_CLOSE_TIME * 1000 override fun initialize() { Timber.d("initialize") diff --git a/app/src/main/java/com/sw/platecabinet/fragment/PlateOpenFragment.kt b/app/src/main/java/com/sw/platecabinet/fragment/PlateOpenFragment.kt index 2feb7f4..e65a292 100644 --- a/app/src/main/java/com/sw/platecabinet/fragment/PlateOpenFragment.kt +++ b/app/src/main/java/com/sw/platecabinet/fragment/PlateOpenFragment.kt @@ -1,16 +1,54 @@ package com.sw.platecabinet.fragment +import android.os.Bundle import android.os.CountDownTimer +import com.sw.platecabinet.Constants +import com.sw.platecabinet.R import com.sw.platecabinet.databinding.FragmentPlateOpenBinding +import com.sw.platecabinet.model.response.EquipmentUserInfo /** - * 餐盘柜打开界面 + * 餐盘柜提示界面 */ class PlateOpenFragment : BaseFragment(FragmentPlateOpenBinding::inflate) { - private var totalTimeInMillis: Long = 5 * 1000 + private var totalTimeInMillis: Long = Constants.AUTO_CLOSE_TIME * 1000 + internal val KEY_ACTION_TYPE = "actionType" + private var info: EquipmentUserInfo? = null + + companion object { + @JvmStatic + fun newInstance(userInfo: EquipmentUserInfo?) = + PlateOpenFragment().apply { + arguments = Bundle().apply { + putParcelable(KEY_ACTION_TYPE, userInfo) + } + } + } override fun initialize() { + arguments?.let { + info = it.getParcelable(KEY_ACTION_TYPE) + info?.let { + if (!it.isBound()) { + binding.ivType.setImageResource(R.drawable.ic_tip_warn) + binding.tvTitle.text = "暂无餐盘信息" + binding.tvSubTitle.text = "请联系管理员" + binding.tvTitle.setTextColor(requireContext().getColor(R.color.tip_title_fail)) + } else if (it.isOtherEquipment()) { + binding.ivType.setImageResource(R.drawable.ic_tip_warn) + binding.tvTitle.text = "暂无餐盘信息" + binding.tvSubTitle.text = "您的餐盘绑定在${it.equipmentName ?: " "}号柜上" + binding.tvTitle.setTextColor(requireContext().getColor(R.color.tip_title_fail)) + } else { + binding.ivType.setImageResource(R.drawable.ic_tip_success) + binding.tvTitle.text = "柜门开启" + binding.tvSubTitle.text = "餐盘取出后请关闭柜门" + binding.tvTitle.setTextColor(requireContext().getColor(R.color.tip_title_success)) + } + } + } + initCountTime() } diff --git a/app/src/main/java/com/sw/platecabinet/fragment/SettingListFragment.kt b/app/src/main/java/com/sw/platecabinet/fragment/SettingListFragment.kt index e5a03fc..8172287 100644 --- a/app/src/main/java/com/sw/platecabinet/fragment/SettingListFragment.kt +++ b/app/src/main/java/com/sw/platecabinet/fragment/SettingListFragment.kt @@ -162,7 +162,7 @@ class SettingListFragment : SerialApi.openPlate(equipmentBoxCode, object : SerialPortManager.SendCallback { override fun onSuccess() { hideWaitingDialog() - MainActivity.start(requireContext(), pageType = PageType.PLATE_OPEN) + MainActivity.start(requireContext(), pageType = PageType.PLATE_TIP) } override fun onFail(e: Exception?) { diff --git a/app/src/main/java/com/sw/platecabinet/model/ErrorInfo.kt b/app/src/main/java/com/sw/platecabinet/model/ErrorInfo.kt index 1ad9498..c950887 100644 --- a/app/src/main/java/com/sw/platecabinet/model/ErrorInfo.kt +++ b/app/src/main/java/com/sw/platecabinet/model/ErrorInfo.kt @@ -1,9 +1,15 @@ package com.sw.platecabinet.model +import com.sw.platecabinet.model.response.EquipmentUserInfo + /** * 错误信息 code == 200 成功 */ -data class ErrorInfo(val code: Int = 200, val msg: String = "") { +data class ErrorInfo( + val code: Int = 200, + val msg: String = "", + val equipmentUserInfo: EquipmentUserInfo? = null +) { fun isSuccess(): Boolean { return code == 200 } diff --git a/app/src/main/java/com/sw/platecabinet/viewmodel/SettingViewModel.kt b/app/src/main/java/com/sw/platecabinet/viewmodel/SettingViewModel.kt index ffb8999..caa881c 100644 --- a/app/src/main/java/com/sw/platecabinet/viewmodel/SettingViewModel.kt +++ b/app/src/main/java/com/sw/platecabinet/viewmodel/SettingViewModel.kt @@ -1,7 +1,6 @@ package com.sw.platecabinet.viewmodel import com.sw.inbound.utils.DateTimeUtils -import com.sw.plate.utils.ToastUtils import com.sw.platecabinet.GlobalData import com.sw.platecabinet.GlobalData.globalEquipmentCode import com.sw.platecabinet.model.ErrorInfo @@ -96,13 +95,7 @@ class SettingViewModel : BaseViewModel() { val response = repository.bindEquipment(bindParam) if (parseResponse(response)) { val userInfo = response.data - userInfo?.let { - if (it.isOtherEquipment()) { - ToastUtils.showToast("餐盘已在${it.equipmentName}绑定") - return@launchWithLoading - } - } - _bindStateChange.value = true to ErrorInfo() + _bindStateChange.value = true to ErrorInfo(equipmentUserInfo = userInfo) } else { _bindStateChange.value = true to ErrorInfo(response.code, response.msg.toString()) } @@ -140,14 +133,6 @@ class SettingViewModel : BaseViewModel() { ) val response = repository.findByPlateNumber(bindParam) if (response.code == 200) { - val userInfo = response.data - userInfo?.let { - if (it.isOtherEquipment()) { - ToastUtils.showToast("餐盘已在${it.equipmentName}绑定") - return@launchWithLoading - } - } - _searchUserInfo.value = response.data } else { _searchUserInfo.value = EquipmentUserInfo( diff --git a/app/src/main/res/drawable/ic_plate_open.png b/app/src/main/res/drawable/ic_tip_success.png similarity index 100% rename from app/src/main/res/drawable/ic_plate_open.png rename to app/src/main/res/drawable/ic_tip_success.png diff --git a/app/src/main/res/drawable/ic_tip_warn.png b/app/src/main/res/drawable/ic_tip_warn.png new file mode 100644 index 0000000..d975347 Binary files /dev/null and b/app/src/main/res/drawable/ic_tip_warn.png differ diff --git a/app/src/main/res/layout/fragment_plate_open.xml b/app/src/main/res/layout/fragment_plate_open.xml index 5199a18..1739332 100644 --- a/app/src/main/res/layout/fragment_plate_open.xml +++ b/app/src/main/res/layout/fragment_plate_open.xml @@ -28,11 +28,13 @@ android:orientation="vertical"> + android:src="@drawable/ic_tip_success" /> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f2462f8..df74aac 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -12,4 +12,7 @@ #32283C #4c91ceff + #ff02f1be + #FF9933 + #887872 \ No newline at end of file