From c2bae2f3e8a4bf1dddd740ee83de6c8ae42ad2fe Mon Sep 17 00:00:00 2001 From: zxj <275873859@qq.com> Date: Fri, 25 Jul 2025 13:35:17 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E9=A4=90=E7=9B=98?= =?UTF-8?q?=E6=9F=9C3=E7=A7=8D=E6=83=85=E5=86=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/sw/platecabinet/GlobalData.kt | 15 ++++++- .../main/java/com/sw/platecabinet/MyApp.kt | 2 +- .../sw/platecabinet/activity/BaseActivity.kt | 18 +++++++- .../sw/platecabinet/activity/MainActivity.kt | 6 +-- .../fragment/BindPlateFragment.kt | 21 ++++++--- .../fragment/PlateCabinetFullFragment.kt | 3 +- .../fragment/PlateOpenFragment.kt | 42 +++++++++++++++++- .../fragment/SettingListFragment.kt | 2 +- .../com/sw/platecabinet/model/ErrorInfo.kt | 8 +++- .../viewmodel/SettingViewModel.kt | 17 +------ .../{ic_plate_open.png => ic_tip_success.png} | Bin app/src/main/res/drawable/ic_tip_warn.png | Bin 0 -> 2853 bytes .../main/res/layout/fragment_plate_open.xml | 8 +++- app/src/main/res/values/colors.xml | 3 ++ 14 files changed, 109 insertions(+), 36 deletions(-) rename app/src/main/res/drawable/{ic_plate_open.png => ic_tip_success.png} (100%) create mode 100644 app/src/main/res/drawable/ic_tip_warn.png 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 0000000000000000000000000000000000000000..d975347c47ac767c67db1804d74d48ad8d2bd9b8 GIT binary patch literal 2853 zcmV+=3)=LFP)Px<-$_J4RA@uhTX}R;>vJXon#Mbu-}x@*xwk3ile zQM4B6s$$iidZ5Rnn9RJO$5v?Tg4(LM)D*k8>%0jOP!yNCoQUFv20}9PZvAE^GjFzJ zGI^u+{+G=6-QWFv>;3M%kEnvkjZ^kRjejPH?*f<#!66`P2Z4$MvI)W%C{Ms2Z|B_3 zjb58auM~t5J8Y@?)g$|3Oi7eR1d8M9cK z%_0uS`=H5noNqr}nUYkmiU~_g-9GS-ycXab0KS2ZkZuTH2Jj{*9{|{vZa)gZ7=Zf& zG6CSugXj?mSA)2WX7r^>h!2^ts6n!f5Cp#iv0HIaMG%ib@Gu-aj`!`2TnuL*14TeA zuRj=$Z#ux4pqvPB_Y(Sh0W86etygowrX52eJ|x1je9~AXYFB`mS;CO#0H+08omIT7 zvwJ9puT^p?a9y>0x+ZanIN4&-#Ij2D0{ZcCM+$1L*du%1vtKth&%-czh}OT?sgH2^;O32E!PXu!MtWK-2yVpe9$D+>aeHmkVO=4+i4p?_wFF z0B0$nmb&}u69Moun)Z@`@CGC-Vf}b$xDTLOytiij1M1^8|Tuv69m zMVietqv29Ul_V^dF&V()fcqqtUWojdq1a!(6qb3QVj0SldjNp@G*1ADAJFVrUChR! zgvBy;2jqEx2e~@+!I5*=Xy5x)Alq+)v;_`@_#VwAEgu8DQ)#YyHQ&}!gw-K5D`%+) z<}zg8`c)#EAsr4J1xIfGj2v?C<4|RHfvlb@GAm)u=;d3Iwmhk%ep; zo`38jy%OYkF59-D&#B{uvH$k}FK31&Vq5{@s+M? z0+LoDmeC17IZr7OG&2-!O%b+&%K>ek>&ImbMb+~2R3sAo4yZj@pfn*zvdR9Bmtcjf zN&ZFCJ}OOEe<$~3!(lX|&v_W5>6A8oK7?&qFj+y< zp6xYwa)y)lq%ZHj6+xF>o7`6>J5x#_axe8X1a3szUfq`0$b5 zm-mkSh^D<~Rq&ENw(qelH(5im^fdsF&is>!>1^mIJXk!kNG!b@po&(eMK;m2^CK9Z zprt*p4>JQS@(#r^l-qcq3t?}X(Jh`J7EvOW(FI^1*H6#Tj2>1!Jbg33uO;=1IBJGJ zbH#&uXhvNT1n{Z>_w`*&>qRROu4rhRF(FePHBOvQ<%X7~-7_5sxb zPi~`#et$Z?oQ83(pc%WmT9^{i9|C!Tn{Xe{?~Ta&H0{&|uabzRTL2rfOIl2ZY?mM4 zEwEUIa#>ZdFDdHK%AR6C9HXNnc{UQ>!e+HeSU(RMS7!dh_#`&0U0*dkOMk^3a8QIh z0M=&!ox}lb>`;M#s))4I?E?SEjY;2K@F+vkk4+J7GZsSNN;673O}j*vzw${>l}qUN093K9w8%qfw@>C>-d=?g z(OW<^Wnpj&L(zFD!Yz~bhrd>p1*Mm@2sBKrLfA!JL5~y;S>iOBN@*vb`% zuRjj(yGK6(r!T<9&cdKuIjBY2NF+EL)c#mV*t@uN@{S)dN_khKv&-38z))d0JJ-GmER1n&2hS6#x*#;q*;nlQ(6C5;4LcROL@f1n*+o<^%gP zD7l1}>&L)hd(J?JGmoLzEyE?7!EXx$;AqMy9pF0<`2|Dv9bV{{R{aQQ_$Np$tIuho z8OxMF6y}F5{ceD#yA1dgj8A35TDOblg?*mtkees&iA1dp@EfihU@b=5hWpwpBpj|E z56!m@;2tiE)?>#fhjYQEt)5!xkup)y&=2+1Adhz~02`6W~7V*n0L*>l-U2 zGFZQ)BNGYU0BRTIwv~3Y+b0xrW(F!-QrY@Pa$?pg(kdu+Ce7$4gBeuK-{s1>8jRaX zMM`o5fP#(i_Z-f7>s1D{Kn5;MOO-FFK)s$ff-geD8D4v0?|qMvVV>JtOsLV&Y#Yd+I0MefCj?m3*h@zcS`4tPqJ z>MUXXw9hL-RH$|DqHP4~tCZV-o_lC+c(WWM3Q4MCB^;LnY4aeCCNxX^p_AR(*)2C|R%Z&%sqIUN^ z!Nh)Wv_n7%KsX)b)NHK02pz$LaC$Fd(+jT+g=|GLoI`23Zoq+hh8;ij&vugAV2A@Q z&qHuIL-xZ%CEDM9h=9dm#4>b7n`4ZchDYXHt>{i&T>}{{d-gDp=mmN+Qf9y zeO&rsUYiO&P + 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