From 025f743ff5138de88ce5ba3a3b68947b51c66f99 Mon Sep 17 00:00:00 2001 From: xuxinchao Date: Fri, 23 Aug 2024 19:02:29 +0800 Subject: [PATCH] =?UTF-8?q?[6.6.0]=E6=95=B0=E6=8D=AE=E9=97=AD=E7=8E=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workorder/FaultReasonWindow.kt | 21 +++++++++--- .../workorder/ReportTypeWindow.kt | 32 +++++++++++++++++- .../workorder/TakeOverReasonWindow.kt | 11 ++++++ .../workorder/adapter/TakeOverListAdapter.kt | 22 ++++++++++-- .../res/drawable/icon_reason_audio_normal.png | Bin 0 -> 847 bytes .../drawable/icon_reason_audio_pressed.png | Bin 0 -> 1627 bytes .../res/drawable/icon_record_cannot_check.png | Bin 0 -> 2189 bytes .../main/res/layout/item_take_over_record.xml | 14 ++++++++ .../src/main/res/layout/view_fault_reason.xml | 8 ++--- .../main/res/layout/view_take_over_reason.xml | 8 ++--- .../src/main/res/values/strings.xml | 1 + .../hmi/ui/tools/AutoPilotAndCheckView.kt | 16 +++++++-- 12 files changed, 115 insertions(+), 18 deletions(-) create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_reason_audio_normal.png create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_reason_audio_pressed.png create mode 100644 core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_record_cannot_check.png diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt index 0917bac5be..e5ff7af426 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/FaultReasonWindow.kt @@ -293,12 +293,21 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener, //问题描述录音 ivNoteAudio.setOnClickListener { audioStatus = !audioStatus + if(audioStatus){ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + mActivity, + R.drawable.icon_reason_audio_pressed + )) + }else{ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + mActivity, + R.drawable.icon_reason_audio_normal + )) + } setAudio(audioStatus) } //上报 tvFaultReport.setOnClickListener{ - CallerOrderListenerManager.invokeOrderLineUpdate("测试") - val geocodeSearch = GeocodeSearch(mActivity) geocodeSearch.setOnGeocodeSearchListener(object: GeocodeSearch.OnGeocodeSearchListener { override fun onRegeocodeSearched(regeocodeResult: RegeocodeResult?, p1: Int) { @@ -344,9 +353,7 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener, } //开始录音,展示放大缩小动效 val scaleAnimation = ScaleAnimation( - 1.0f, 0.8f, 1.0f, 0.8f, - Animation.RELATIVE_TO_SELF, 0.8f, Animation.RELATIVE_TO_SELF, 0.8f - ) + 1.0f, 0.8f, 1.0f, 0.8f) scaleAnimation.duration = 1000 scaleAnimation.repeatCount = -1 ivNoteAudio.startAnimation(scaleAnimation) @@ -502,6 +509,10 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener, super.problemPadAddSuccess() //显示上报成功页面,短暂停留关闭弹窗 ThreadUtils.runOnUiThread { + if(ivNoteAudio.hasTransientState()){ + //结束动画 + ivNoteAudio.clearAnimation() + } rvFaultList.visibility = View.GONE tvUploadSuccess.visibility = View.VISIBLE faultReasonGroup.visibility = View.GONE diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/ReportTypeWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/ReportTypeWindow.kt index af5a73474b..494914ba77 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/ReportTypeWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/ReportTypeWindow.kt @@ -16,7 +16,9 @@ import android.widget.ImageView import android.widget.TextView import androidx.appcompat.widget.AppCompatTextView import androidx.constraintlayout.widget.Group +import com.mogo.eagle.core.function.api.devatools.IMoGoDevaToolsListener import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager +import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsListenerManager import com.mogo.eagle.core.utilcode.util.BarUtils import com.mogo.eagle.core.utilcode.util.ThreadUtils import com.mogo.eagle.core.utilcode.util.ToastUtils @@ -30,7 +32,7 @@ import kotlin.math.round * 上报类型选择,包括一键上报及上报类型选择:故障类、接管类 * 一键上报和类型选择互斥,当点击弹出上报类型选择时,一键上报隐藏 */ -class ReportTypeWindow constructor(activity: Activity) { +class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener { companion object{ const val TAG = "ReportTypeWindow" @@ -85,6 +87,7 @@ class ReportTypeWindow constructor(activity: Activity) { } private fun initEvent(){ + CallerDevaToolsListenerManager.addListener(TAG, this) if(isOneClickType){ oneClickGroup.visibility = View.VISIBLE reportTypeGroup.visibility = View.GONE @@ -114,6 +117,8 @@ class ReportTypeWindow constructor(activity: Activity) { ivOneClickReport.setOnClickListener { hasReportOperate = true //TODO + + CallerDevaToolsListenerManager.invokeProblemPadAddSuccess() } //故障类 tvReportTypeFault.setOnClickListener { @@ -128,6 +133,7 @@ class ReportTypeWindow constructor(activity: Activity) { BadCaseConfig.totalDuration, BadCaseConfig.previousDuration) if(response){ //已发起录包 + oneClickGroup.visibility = View.GONE reportTypeGroup.visibility = View.GONE tvReportSuccess.visibility = View.VISIBLE tvReportSuccess.text = mActivity.resources.getString(R.string.record_success) @@ -137,6 +143,7 @@ class ReportTypeWindow constructor(activity: Activity) { },1500) }else{ ToastUtils.showShort("主动录包命令下发失败") + clickListener?.closeWindow() } } @@ -154,6 +161,7 @@ class ReportTypeWindow constructor(activity: Activity) { } fun hideFloatWindow() { + CallerDevaToolsListenerManager.removeListener(TAG) if (mFloatLayout.parent != null){ mWindowManager!!.removeView(mFloatLayout) } @@ -167,4 +175,26 @@ class ReportTypeWindow constructor(activity: Activity) { fun closeWindow() } + /** + * 故障上报成功 + */ + override fun problemPadAddSuccess() { + //显示上报成功页面,短暂停留关闭弹窗 + ThreadUtils.runOnUiThread { + oneClickGroup.visibility = View.GONE + reportTypeGroup.visibility = View.GONE + tvReportSuccess.visibility = View.VISIBLE + tvReportSuccess.text = mActivity.resources.getString(R.string.report_success) + val successHandler = Handler(Looper.getMainLooper()) + successHandler.postDelayed({ + clickListener?.closeWindow() + },1500) + } + } + + override fun problemPadAddError(msg: String) { + super.problemPadAddError(msg) + ToastUtils.showShort("故障原因上报失败$msg") + } + } \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/TakeOverReasonWindow.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/TakeOverReasonWindow.kt index 6d2e5dd8d7..da5e546bc0 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/TakeOverReasonWindow.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/TakeOverReasonWindow.kt @@ -249,6 +249,17 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene //问题描述录音 ivNoteAudio.setOnClickListener { audioStatus = !audioStatus + if(audioStatus){ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + mActivity, + R.drawable.icon_reason_audio_pressed + )) + }else{ + ivNoteAudio.setImageDrawable(ContextCompat.getDrawable( + mActivity, + R.drawable.icon_reason_audio_normal + )) + } setAudio(audioStatus) } //上报 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/adapter/TakeOverListAdapter.kt b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/adapter/TakeOverListAdapter.kt index 280ca9898b..8b50828017 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/adapter/TakeOverListAdapter.kt +++ b/core/function-impl/mogo-core-function-devatools/src/main/java/com/zhjt/mogo_core_function_devatools/workorder/adapter/TakeOverListAdapter.kt @@ -7,10 +7,12 @@ import android.view.ViewGroup import android.widget.CheckBox import android.widget.ImageView import android.widget.TextView +import androidx.appcompat.content.res.AppCompatResources import androidx.core.content.ContextCompat import androidx.recyclerview.widget.RecyclerView import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.eagle.core.utilcode.util.TimeUtils.getHourMinSecondFormat import com.mogo.eagle.core.utilcode.util.ToastUtils import com.zhjt.mogo_core_function_devatools.R @@ -36,12 +38,27 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.Adapter clickListener?.onSelectRecord(recordEntity,isChecked) } - holder.tvFaultStartTime.text = TimeUtils.millis2String(recordEntity.faultStartTime) + holder.ivCannotCheck.setOnClickListener { + ToastUtils.showShort("该条记录已上传,不可选择") + } + holder.tvFaultStartTime.text = TimeUtils.millis2String(recordEntity.faultStartTime,getHourMinSecondFormat()) holder.tvLineName.text = recordEntity.lineName - holder.tvTakeOverReason.text = recordEntity.reportNote + //TODO 还应该判断类型和原因 + if(recordEntity.reportNote.isEmpty()){ + holder.tvTakeOverReason.text = "原因:空" + }else{ + holder.tvTakeOverReason.text = "原因:${recordEntity.reportNote}" + } if(recordEntity.reportStatus){ //已上报 holder.ivRecordStatusLabel.setImageDrawable( @@ -72,6 +89,7 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.AdapterPx#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR91DgXcg0G{9}LjV8*xk*GpR9Fe^m%mRGK@`XD_#tY5 zP8&jurBoU$DYYaT3Lv3E=~QAtLV|w*y$zj(J!)lCD6B0lw6ai%qKRT*Oq4r6-@BdV z?PhjnSTB)+mwcHw?|t9*&FqrfnMNbg+U@o*xDB3z9q>CFUohSRBZ*S!G(=~?ClE5_ z=h9UpOvKhg-8{Lqh-5sC=)6ZbB{UybuVA1)0zRj7@o;ukUm@KI_XU!Rf)_tv)S(^?`ad*M`K7JbSg74rNIBlAJF@7C)*A}6D3Oohh zz;c5>KY+6ZM<%fCf;Go&r=<~%1*5a4cl^;1t{DHZ@$0ycN<~(CM=RMdEBS!m`JyoD z1fr8f9n;ArKY`%)18F(8AYYFE{3T=ejZI z=3s9Ux>@LkF`Sb#hu9*JmNWGjD)0zQfj^GHxDS>Kq(e-oy_0D$bWGY)UI`L6yPU$` zC(O=y3p_z_fojUOPEoIGH6J;kz|IO1B9)=Ig?JBK(8_H4EB zf8y)EbSr~=#e61>X>XINAO+*#At>*jP}EeT+VLv=Xq@6p;6C^YVkVBb7o)wTbfz;VZa?O9+arY}xu})s%c~X}_d4Xf5WDH*Z zDb3Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR919-spN1ONa40RR91DgXcg0G{9}LjV8;#Ysd#R9Fd}S50hHMHD`BU**|E z6g6!Z)fhF=ND~cW;zkn}G_D9>s8lhAQZR06#UKRGNNj`zB{39Tm{t)1t1b$-VrQr; zWBg03(HM9 zNEh7NFsH4^q{(GG&*ZT5o4*zc2aNegZPY#rf&;MZC|N@(oVk-z02`cr+INo=x& zKB%)%yA#+1yOflK1u11mJ}YB#(C!S*6^qJ@Ya_N7rG3BTuNhLQYszTmxjZI=W~}7b zut^h-+QlfxkFakKKAIg!EY`-8S;(+1^waqTxm~uWd!8(HW~48Wl3*5-#F#ND_avn* zTDN62*$7Q?B#Dv5YUkwv9byp!6`UD*C?}a&<0Pr-ayeUK-C|p1M#d4;{lI-G%W`=cK-U4JyVfdef^jaB zj+A6&z=F{0d1m#MsloBg%69>ai;MCIf_fPCOYn*v%D{fcMM;2MR;V#_C-@EyX9`Zx z=&7bbDLL&~5zOO?<>aiapq}=azh^K!O(*w?o0V?)(AH>}FOs(*rk(Lz`It#D37`RB zt%N?D#5)Nx%vlNhR0Go!- zw^;Kc9+EfB-{cBolkJ23DC`XESds66au0$#Ul7xBmwf;SpI}w<r* zhQkus4AK$xFB4O{-EKu}`w)Nusk<<6WKWLfGjde^kqJ3u{!;)aH`uH3f_)GlS?lp% z#Cq7bII^nbgNy73vmR_*Rt#yfS3Owlb;aS6v46X0LX2Str3~a z5;lLr=Lvbwuxh2zoR}uh*_&~h_5$p27#WrgK<@WWC+=gShBJ$^V|X_2kTLTs;TlJp zSS<(aGCa@wQNmt;-$*hgb6ds+ej{(08Fi_W3nz|H%tkv7!qq;@C4q;mxAC6%)0(Yu_mdTK^K8FEYHLCUXV{V=-oD5 zYAeeDUU$7jA46%`Q}%cM-qvBcycsEVY2q0)ZeU literal 0 HcmV?d00001 diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_record_cannot_check.png b/core/function-impl/mogo-core-function-devatools/src/main/res/drawable/icon_record_cannot_check.png new file mode 100644 index 0000000000000000000000000000000000000000..7484265321f6b82fdf718371534733ac6705af31 GIT binary patch literal 2189 zcmV;82y*v{P)Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91GN1zh1ONa40RR91G5`Po0Cmf+s{jB8_en%SRA>d&n*D2)RUE+Y?(XL1 zHeV25(nyMA5XT3lRQ(B0h~ z)Iq$LI7NGt0Jx^F!^-PyzyW_zF|X3d(lht_$EJkd~z zqqP2-_V)IZrKP1srt|!^l(7C#MieVWP^Ov2`=0tLQD&}n;GV)ypE702x2I2^?(5eU zOml-Og66TAGiSc55@DY)Xg!bM3sL0JY15`f zmM&d-qN%CL*)YR7;08EaW-WqhLnY$CzmF9*VU7RD92-#J&L_mI%Q~$a4#$#{K&@

Bh)cn}k z*mxnmo{awOIzdYu!Mslb?d;URAX`I$HvFL0OBXgual27DOrO!!t5L{x>m>0N>FZ1e z92s6FW3W!3#2J)%hc&@PDI?z~0cR5%l|dGn>|!#?nqHtE&}|2q-ZmqdT)B2r_&kf3 zvr|r;46?`+vNnCLucYe4m-ir z6{O_pkBnI3V#qAz0xjZ|jm{bC^6egy`b3THuZ*(FY)$H5>re6z&a-qIGeE{hvhPuT z{mLk-%puvNyzfTCZ9*0CfUk3xS-IY(2MJCx~lr?1y!;I5lLqkIs7sS6|wv{|9rEnz$OFB9_8of|PK!)P! zf<_}w*GW)!l9_5VO02R=!SF9!uWj78(U+(FE<+Jhz2#oMe0dkqYP{f8XzvyOPlQg~ zV|89hsswMvRs;T~EGXi1TUT3K`vqZ!8?=QPSbHe+p=QL#5cFPIS=m-vrGnC9u~@pM zRamEW%OHzPvSnxx{uy8q(|sevYp&zdr%#`OAm2*_Z;S{%-~T{M{f%`-<;sW)xDK`< z_o2wg_?N6(CFoN7cq#hM-o1MVUEc;(gu)Tu)$y9^JA^o4FUF%&)cws;Dr)Bf;4FRE zm!V$A+*Wt + + diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml index 55140a6af9..9dda0c1899 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/layout/view_take_over_reason.xml @@ -190,13 +190,13 @@ diff --git a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml index 8a3a241e52..0df48d8bae 100644 --- a/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml +++ b/core/function-impl/mogo-core-function-devatools/src/main/res/values/strings.xml @@ -65,5 +65,6 @@ 保存 取消 暂无接管记录 + 不能选则 \ No newline at end of file diff --git a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt index 1664812221..7d41978c3f 100644 --- a/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt +++ b/core/function-impl/mogo-core-function-hmi/src/main/java/com/mogo/eagle/core/function/hmi/ui/tools/AutoPilotAndCheckView.kt @@ -14,6 +14,7 @@ import com.mogo.commons.env.ProjectUtils import com.mogo.eagle.core.data.app.AppConfigInfo import com.mogo.eagle.core.data.deva.bindingcar.IPCUpgradeStateInfo import com.mogo.eagle.core.data.deva.bizconfig.FuncBizConfig +import com.mogo.eagle.core.data.deva.report.TakeOverRecordInfo import com.mogo.eagle.core.data.temp.EventLogout import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotCarConfigListener import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener @@ -21,6 +22,7 @@ import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotControlManager import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotCarConfigListenerManager import com.mogo.eagle.core.function.call.devatools.CallerDevaToolsManager +import com.mogo.eagle.core.function.call.takeover.CallerTakeOverManager import com.mogo.eagle.core.function.hmi.R import com.mogo.eagle.core.function.hmi.ui.utils.KeyBoardUtil import com.mogo.eagle.core.function.msgbox.MsgBoxConfig @@ -133,10 +135,20 @@ internal class AutoPilotAndCheckView @JvmOverloads constructor( clickListener?.onClose(it) } rlKillLayout.setOnClickListener { - killApp() +// killApp() + val takeOverRecordInfo = TakeOverRecordInfo( + System.currentTimeMillis(),"地址1",1,2,3,"测试路线2", + "",false + ) + CallerTakeOverManager.insertRecord(context,takeOverRecordInfo) } sopLayout.setOnClickListener { - clickListener?.showSOPSettingView() +// clickListener?.showSOPSettingView() + val takeOverRecordInfo = TakeOverRecordInfo( + System.currentTimeMillis(),"地址1",1,2,3,"测试路线3", + "",true + ) + CallerTakeOverManager.insertRecord(context,takeOverRecordInfo) } //录包 CallerDevaToolsManager.initBadCase(badCaseReportLayout)