[6.6.0]数据闭环修改
This commit is contained in:
@@ -27,8 +27,9 @@ object RecordManager {
|
||||
*/
|
||||
fun insertRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
|
||||
takeOverRecordInfo.let {
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,
|
||||
it.level1Id,it.level1Name, it.level2Id,it.level2Name,
|
||||
it.level3Id,it.level3Name,it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch{
|
||||
withContext(Dispatchers.IO){
|
||||
@@ -60,7 +61,8 @@ object RecordManager {
|
||||
fun updateRecord(context: Context,takeOverRecordInfo: TakeOverRecordInfo){
|
||||
takeOverRecordInfo.let{
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
it.level1Name, it.level2Id,it.level2Name,it.level3Id,it.level3Name,
|
||||
it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch{
|
||||
withContext(Dispatchers.IO){
|
||||
@@ -92,7 +94,8 @@ object RecordManager {
|
||||
fun deleteRecord(context: Context, takeOverRecordInfo: TakeOverRecordInfo) {
|
||||
takeOverRecordInfo.let{
|
||||
val recordInfo = RecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus)
|
||||
it.level1Name, it.level2Id,it.level2Name,it.level3Id,it.level3Name,
|
||||
it.lineName,it.reportNote,it.reportStatus)
|
||||
if (Thread.currentThread() == Looper.getMainLooper().thread){
|
||||
scope.launch {
|
||||
withContext(Dispatchers.IO) {
|
||||
|
||||
@@ -43,7 +43,8 @@ class TakeOverRecordProvider: ITakeOverProvider {
|
||||
list.forEach {
|
||||
recordInfoList.add(
|
||||
TakeOverRecordInfo(it.faultStartTime,it.address,it.level1Id,
|
||||
it.level2Id,it.level3Id,it.lineName,it.reportNote,it.reportStatus,false)
|
||||
it.level2Id,it.level3Id,it.level1Name,it.level2Name,it.level3Name,
|
||||
it.lineName,it.reportNote,it.reportStatus,false)
|
||||
)
|
||||
}
|
||||
return recordInfoList
|
||||
|
||||
@@ -18,12 +18,21 @@ data class RecordInfo(
|
||||
//一级分类ID
|
||||
@ColumnInfo
|
||||
var level1Id: Int,
|
||||
//一级分类名称
|
||||
@ColumnInfo
|
||||
var level1Name: String,
|
||||
//二级分类ID
|
||||
@ColumnInfo
|
||||
var level2Id: Int,
|
||||
//二级分类名称
|
||||
@ColumnInfo
|
||||
var level2Name: String,
|
||||
//三级分类ID
|
||||
@ColumnInfo
|
||||
var level3Id: Int,
|
||||
//三级分类名称
|
||||
@ColumnInfo
|
||||
var level3Name: String,
|
||||
//行驶路线
|
||||
@ColumnInfo
|
||||
val lineName: String,
|
||||
|
||||
@@ -109,7 +109,9 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
private var level1Id: Int = 0 //一级分类ID
|
||||
private var level2Id: Int = 0 //二级分类ID
|
||||
private var level3Id: Int = 0 //三级分类ID
|
||||
private var lineName: String = "" //行驶路线
|
||||
private var level1Name: String = ""
|
||||
private var level2Name: String = ""
|
||||
private var level3Name: String = ""
|
||||
private var reportNote: String = "" //上报描述
|
||||
|
||||
|
||||
@@ -655,7 +657,9 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
address = it
|
||||
}
|
||||
val takeOverRecordInfo = TakeOverRecordInfo(System.currentTimeMillis(),
|
||||
address,level1Id,level2Id,level3Id,lineName,reportNote,
|
||||
address,level1Id,level2Id,level3Id,
|
||||
level1Name, level2Name, level3Name,
|
||||
BadCaseConfig.lineName,reportNote,
|
||||
reportStatus = false,
|
||||
selectStatus = false
|
||||
)
|
||||
@@ -675,7 +679,7 @@ internal object BadCaseManager : LifecycleEventObserver, IMoGoAutopilotRecordLis
|
||||
}
|
||||
|
||||
override fun onOrderLineUpdate(lineName: String) {
|
||||
this.lineName = lineName
|
||||
BadCaseConfig.lineName = lineName
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -66,6 +66,8 @@ object BadCaseConfig {
|
||||
@JvmField
|
||||
var tenantId: Long = 0
|
||||
|
||||
var lineName: String = "" //行驶路线
|
||||
|
||||
private const val resourceInitiative = "RESOURCE_INITIATIVE" //录包来源为主动录包
|
||||
private const val resourceAiData = "RESOURCE_AI_DATA" //录包来源为AI数据采集
|
||||
private const val recordFail = "RECORD_FAIL" //录包失败
|
||||
|
||||
@@ -99,6 +99,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
private lateinit var tvFaultTime: TextView
|
||||
private lateinit var tbFaultType: ToggleButton
|
||||
private lateinit var tbFaultReason: ToggleButton
|
||||
private lateinit var viewFaultReason: View
|
||||
private lateinit var ivFaultReason: ImageView
|
||||
private lateinit var ivTimeReduce: ImageView
|
||||
private lateinit var tvOccurrenceTime: TextView
|
||||
private lateinit var ivTimeAdd: ImageView
|
||||
@@ -117,11 +119,17 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
private var level1Id: Int = 0 //一级分类ID
|
||||
private var level2Id: Int = 0 //二级分类ID
|
||||
private var level3Id: Int = 0 //三级分类ID
|
||||
private var lineName: String = "" //行驶路线
|
||||
private var level1Name: String = ""
|
||||
private var level2Name: String = ""
|
||||
private var level3Name: String = ""
|
||||
private var reportNote: String = "" //上报描述
|
||||
private val reportType: Int = 2 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
private val reportType: Int = 1 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
|
||||
private var source: Int = 0 //操作源,0:类型;1:原因
|
||||
private var source: Int = 0 //操作源,0:默认,一级分类 1:类型,二级分类;2:原因,三级分类
|
||||
private var hasLevel3: Boolean = false //是否有三级分类
|
||||
|
||||
private var typeList: List<CategoryInfo> ?= null //故障类型列表
|
||||
private var reasonList: List<CategoryInfo> ?= null //故障原因列表
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
@@ -154,6 +162,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
tvFaultTime = mFloatLayout.findViewById(R.id.tvFaultTime)
|
||||
tbFaultType = mFloatLayout.findViewById(R.id.tbFaultType)
|
||||
tbFaultReason = mFloatLayout.findViewById(R.id.tbFaultReason)
|
||||
viewFaultReason = mFloatLayout.findViewById(R.id.viewFaultReason)
|
||||
ivFaultReason = mFloatLayout.findViewById(R.id.ivFaultReason)
|
||||
ivTimeReduce = mFloatLayout.findViewById(R.id.ivTimeReduce)
|
||||
tvOccurrenceTime = mFloatLayout.findViewById(R.id.tvOccurrenceTime)
|
||||
ivTimeAdd = mFloatLayout.findViewById(R.id.ivTimeAdd)
|
||||
@@ -170,16 +180,34 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
orderReasonAdapter = OrderReasonAdapter()
|
||||
orderReasonAdapter.setListener(object: OrderReasonAdapter.ReasonSelectListener{
|
||||
override fun onSelectReason(reason: CategoryInfo, mSource: Int) {
|
||||
if(mSource == 0){
|
||||
if(mSource == 1){
|
||||
//类型
|
||||
tbFaultType.textOn = reason.name
|
||||
tbFaultType.textOff = reason.name
|
||||
//选择了故障类型
|
||||
tbFaultReason.visibility = View.VISIBLE
|
||||
viewFaultReason.visibility = View.GONE
|
||||
ivFaultReason.visibility = View.GONE
|
||||
tbFaultType.performClick()
|
||||
if(level2Id != 0 && level2Id == reason.id){
|
||||
//故障类型选择没有变化
|
||||
reasonList?.let { orderReasonAdapter.setData(it,2) }
|
||||
}else{
|
||||
level2Id = reason.id
|
||||
level2Name = reason.name
|
||||
tbFaultReason.textOn = ""
|
||||
tbFaultReason.textOff = ""
|
||||
source = 2
|
||||
//获取故障三级分类即故障原因
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,3,level2Id,1,0)
|
||||
}
|
||||
}else{
|
||||
//原因
|
||||
tbFaultReason.textOn = reason.name
|
||||
tbFaultReason.textOff = reason.name
|
||||
tbFaultReason.performClick()
|
||||
level3Id = reason.id
|
||||
level3Name = reason.name
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -194,6 +222,8 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
|
||||
val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract)
|
||||
iconUp?.setBounds(0, 0, iconUp.minimumWidth, iconUp.minimumHeight)
|
||||
//获取一级分类
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,1,0,1,0)
|
||||
//弹窗展示时间
|
||||
tvFaultTime.text = mActivity.resources.getString(R.string.take_over_time) +
|
||||
millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())
|
||||
@@ -205,22 +235,26 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
rvFaultList.visibility = View.VISIBLE
|
||||
(rvFaultList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tbFaultType
|
||||
tbFaultReason.visibility = View.INVISIBLE
|
||||
|
||||
// val list = ArrayList<String>()
|
||||
// list.add("一级分类1")
|
||||
// orderReasonAdapter.setData(list,0)
|
||||
|
||||
source = 0
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,1,1,0)
|
||||
source = 1
|
||||
if(typeList.isNullOrEmpty()){
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,1,0)
|
||||
}else{
|
||||
orderReasonAdapter.setData(typeList!!,source)
|
||||
}
|
||||
|
||||
} else {
|
||||
buttonView.setCompoundDrawables(null, null, iconDown, null)
|
||||
//隐藏列表
|
||||
rvFaultList.visibility = View.GONE
|
||||
tbFaultReason.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
viewFaultReason.setOnClickListener {
|
||||
ToastUtils.showShort("请先选择故障类型")
|
||||
}
|
||||
ivFaultReason.setOnClickListener {
|
||||
ToastUtils.showShort("请先选择故障类型")
|
||||
}
|
||||
//故障原因选择
|
||||
tbFaultReason.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (isChecked) {
|
||||
@@ -228,16 +262,6 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
//展示列表
|
||||
rvFaultList.visibility = View.VISIBLE
|
||||
(rvFaultList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tbFaultReason
|
||||
|
||||
// val list = ArrayList<String>()
|
||||
// list.add("二级分类1")
|
||||
// orderReasonAdapter.setData(list,1)
|
||||
|
||||
source = 1
|
||||
//获取故障三级分类即故障原因
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,3,1,1,0)
|
||||
|
||||
|
||||
} else {
|
||||
buttonView.setCompoundDrawables(null, null, iconDown, null)
|
||||
//隐藏列表
|
||||
@@ -299,6 +323,14 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
}
|
||||
//上报
|
||||
tvFaultReport.setOnClickListener{
|
||||
if(level2Name.isEmpty()){
|
||||
ToastUtils.showShort("请完整填写再上报")
|
||||
return@setOnClickListener
|
||||
}
|
||||
if(hasLevel3 && level3Name.isEmpty()){
|
||||
ToastUtils.showShort("请完整填写再上报")
|
||||
return@setOnClickListener
|
||||
}
|
||||
//故障码列表赋值
|
||||
BadCaseConfig.newFMInfoMsg?.fmInfoList?.forEach {
|
||||
faultCodeList.add(it.faultId)
|
||||
@@ -310,8 +342,13 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
address = it
|
||||
}
|
||||
val padProblemList= ArrayList<PadProblemInfo>()
|
||||
val note = if(reportNote.isEmpty()){
|
||||
"$level1Name-$level2Name-$level3Name"
|
||||
}else{
|
||||
"$level1Name-$level2Name-$level3Name($reportNote)"
|
||||
}
|
||||
val padProblemInfo = PadProblemInfo(address,faultCodeList,millis2String(workOrderOccurrenceTime),level1Id,
|
||||
level2Id,level3Id,lineName,reportNote,reportType,
|
||||
level2Id,level3Id,BadCaseConfig.lineName,note,reportType,
|
||||
SharedPrefsMgr.getInstance().getString("och_account",""))
|
||||
padProblemList.add(padProblemInfo)
|
||||
val padAddProblemReq = PadAddProblemReq(padProblemList,AppConfigInfo.plateNumber)
|
||||
@@ -507,6 +544,7 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
rvFaultList.visibility = View.GONE
|
||||
tvUploadSuccess.visibility = View.VISIBLE
|
||||
faultReasonGroup.visibility = View.GONE
|
||||
tbFaultReason.visibility = View.GONE
|
||||
val successHandler = Handler(Looper.getMainLooper())
|
||||
successHandler.postDelayed({
|
||||
hideFloatWindow()
|
||||
@@ -523,21 +561,34 @@ class FaultReasonWindow constructor(activity: Activity) : View.OnTouchListener,
|
||||
super.getCategoriesSuccess(list)
|
||||
ThreadUtils.runOnUiThread {
|
||||
if(list.isNotEmpty()){
|
||||
orderReasonAdapter.setData(list,source)
|
||||
if(source == 0){
|
||||
level1Id = list[0].id
|
||||
level1Name = list[0].name
|
||||
|
||||
source = 1
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,1,0)
|
||||
}else{
|
||||
if(source == 1){
|
||||
typeList = list
|
||||
}else{
|
||||
reasonList = list
|
||||
hasLevel3 = true
|
||||
}
|
||||
orderReasonAdapter.setData(list,source)
|
||||
}
|
||||
}else{
|
||||
if(source == 2){
|
||||
hasLevel3 = false
|
||||
}else{
|
||||
ToastUtils.showShort("故障类型列表为空")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getCategoriesError(msg: String) {
|
||||
super.getCategoriesError(msg)
|
||||
ToastUtils.showShort("故障列表获取失败:$msg")
|
||||
}
|
||||
|
||||
/**
|
||||
* 订单路线名称变化监听
|
||||
* @param lineName 路线名称
|
||||
*/
|
||||
override fun onOrderLineUpdate(lineName: String) {
|
||||
this.lineName = lineName
|
||||
}
|
||||
|
||||
}
|
||||
@@ -74,9 +74,15 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
|
||||
private var level1Id: Int = 0 //一级分类ID
|
||||
private var level2Id: Int = 0 //二级分类ID
|
||||
private var level3Id: Int = 0 //三级分类ID
|
||||
private var level1Name: String = ""
|
||||
private var level2Name: String = ""
|
||||
private var level3Name: String = ""
|
||||
private var lineName: String = "" //行驶路线
|
||||
private var reportNote: String = "" //上报描述
|
||||
private val reportType: Int = 2 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
private val reportType: Int = 1 //上报方式:0:小程序 1:司机屏 2:云端上报
|
||||
private var level: Int = 1
|
||||
|
||||
private var canOneReport: Boolean = false //是否可以一键上报
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
@@ -118,6 +124,10 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
|
||||
}
|
||||
//一键上报
|
||||
ivOneClickReport.setOnClickListener {
|
||||
if(!canOneReport){
|
||||
ToastUtils.showShort("故障描述获取失败不能上报")
|
||||
return@setOnClickListener
|
||||
}
|
||||
hasReportOperate = true
|
||||
BadCaseConfig.newFMInfoMsg?.fmInfoList?.forEach {
|
||||
faultCodeList.add(it.faultId)
|
||||
@@ -243,7 +253,7 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
|
||||
mWindowManager!!.addView(mFloatLayout, mWindowParams)
|
||||
showOneCLickReportView()
|
||||
//请求一键上报故障码
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,1,1,4,1)
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,level,0,4,1)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -286,11 +296,38 @@ class ReportTypeWindow constructor(activity: Activity): IMoGoDevaToolsListener {
|
||||
|
||||
override fun getCategoriesSuccess(list: List<CategoryInfo>) {
|
||||
super.getCategoriesSuccess(list)
|
||||
//TODO
|
||||
if(list.isEmpty()){
|
||||
ToastUtils.showShort("一键上报故障描述后台未配置")
|
||||
canOneReport = false
|
||||
}else{
|
||||
when (level) {
|
||||
1 -> {
|
||||
level1Id = list[0].id
|
||||
level1Name = list[0].name
|
||||
level = 2
|
||||
//请求二级一键上报配置
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,level,level1Id,4,1)
|
||||
}
|
||||
2 -> {
|
||||
level2Id = list[0].id
|
||||
level2Name = list[0].name
|
||||
level = 3
|
||||
//请求三级一键上报配置
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,level,level2Id,4,1)
|
||||
}
|
||||
else -> {
|
||||
level3Id = list[0].id
|
||||
level3Name = list[0].name
|
||||
canOneReport = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getCategoriesError(msg: String) {
|
||||
super.getCategoriesError(msg)
|
||||
ToastUtils.showShort("一键上报故障描述获取失败$msg")
|
||||
canOneReport = false
|
||||
}
|
||||
|
||||
}
|
||||
@@ -49,7 +49,6 @@ import com.mogo.tts.base.SpeechUtils
|
||||
import com.zhjt.mogo_core_function_devatools.R
|
||||
import com.zhjt.mogo_core_function_devatools.badcase.consts.BadCaseConfig
|
||||
import com.zhjt.mogo_core_function_devatools.workorder.adapter.OrderReasonAdapter
|
||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||
import kotlin.math.absoluteValue
|
||||
|
||||
/**
|
||||
@@ -80,13 +79,13 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
var ret = 0 // 函数调用返回值
|
||||
private var audioStatus = false
|
||||
|
||||
private var workOrderOccurrenceTime = System.currentTimeMillis() //故障发生时间
|
||||
|
||||
private var clickListener: ClickListener? = null
|
||||
|
||||
private lateinit var tvTakeOverTime: TextView
|
||||
private lateinit var tbTakeOverType: ToggleButton
|
||||
private lateinit var tbTakeOverReason: ToggleButton
|
||||
private lateinit var viewTakeOverReason: View
|
||||
private lateinit var ivTakeOverReason: ImageView
|
||||
private lateinit var etNoteInput: AppCompatEditText
|
||||
private lateinit var ivNoteAudio: ImageView
|
||||
private lateinit var tvTakeOverSave: TextView
|
||||
@@ -98,7 +97,19 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
private lateinit var orderReasonAdapter: OrderReasonAdapter
|
||||
private lateinit var mTakeOverRecordInfo: TakeOverRecordInfo
|
||||
|
||||
private var source: Int = 0 //操作源,0:类型;1:原因
|
||||
private val type = 2 //接管类接口请求Type值为2
|
||||
private var source: Int = 0 //操作源,0:默认,一级分类 1:类型,二级分类;2:原因,三级分类
|
||||
private var hasLevel3: Boolean = false //是否有三级分类
|
||||
|
||||
private var typeList: List<CategoryInfo> ?= null //故障类型列表
|
||||
private var reasonList: List<CategoryInfo> ?= null //故障原因列表
|
||||
|
||||
private var level1Id: Int = 0 //一级分类ID
|
||||
private var level2Id: Int = 0 //二级分类ID
|
||||
private var level3Id: Int = 0 //三级分类ID
|
||||
private var level1Name: String = ""
|
||||
private var level2Name: String = ""
|
||||
private var level3Name: String = ""
|
||||
|
||||
init {
|
||||
initFloatWindow()
|
||||
@@ -130,6 +141,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
tvTakeOverTime = mFloatLayout.findViewById(R.id.tvTakeOverTime)
|
||||
tbTakeOverType = mFloatLayout.findViewById(R.id.tbTakeOverType)
|
||||
tbTakeOverReason = mFloatLayout.findViewById(R.id.tbTakeOverReason)
|
||||
viewTakeOverReason = mFloatLayout.findViewById(R.id.viewTakeOverReason)
|
||||
ivTakeOverReason = mFloatLayout.findViewById(R.id.ivTakeOverReason)
|
||||
etNoteInput = mFloatLayout.findViewById(R.id.etNoteInput)
|
||||
ivNoteAudio = mFloatLayout.findViewById(R.id.ivNoteAudio)
|
||||
tvTakeOverSave = mFloatLayout.findViewById(R.id.tvTakeOverSave)
|
||||
@@ -143,16 +156,34 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
orderReasonAdapter = OrderReasonAdapter()
|
||||
orderReasonAdapter.setListener(object: OrderReasonAdapter.ReasonSelectListener{
|
||||
override fun onSelectReason(reason: CategoryInfo, mSource: Int) {
|
||||
if(mSource == 0){
|
||||
if(mSource == 1){
|
||||
//类型
|
||||
tbTakeOverType.textOn = reason.name
|
||||
tbTakeOverType.textOff = reason.name
|
||||
//选择了故障类型
|
||||
tbTakeOverReason.visibility = View.VISIBLE
|
||||
viewTakeOverReason.visibility = View.GONE
|
||||
ivTakeOverReason.visibility = View.GONE
|
||||
tbTakeOverType.performClick()
|
||||
if(level2Id != 0 && level2Id == reason.id){
|
||||
//故障类型选择没有变化
|
||||
reasonList?.let { orderReasonAdapter.setData(it,2) }
|
||||
}else{
|
||||
level2Id = reason.id
|
||||
level2Name = reason.name
|
||||
tbTakeOverReason.textOn = ""
|
||||
tbTakeOverReason.textOff = ""
|
||||
source = 2
|
||||
//获取故障三级分类即故障原因
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,3,level2Id,type,0)
|
||||
}
|
||||
}else{
|
||||
//原因
|
||||
tbTakeOverReason.textOn = reason.name
|
||||
tbTakeOverReason.textOff = reason.name
|
||||
tbTakeOverReason.performClick()
|
||||
level3Id = reason.id
|
||||
level3Name = reason.name
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -166,9 +197,8 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
iconDown?.setBounds(0, 0, iconDown.minimumWidth, iconDown.minimumHeight)
|
||||
val iconUp = ContextCompat.getDrawable(mActivity, R.drawable.icon_fault_retract)
|
||||
iconUp?.setBounds(0, 0, iconUp.minimumWidth, iconUp.minimumHeight)
|
||||
//弹窗展示时间
|
||||
tvTakeOverTime.text = mActivity.resources.getString(R.string.take_over_time) +
|
||||
millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())
|
||||
//获取一级分类
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,1,0,type,0)
|
||||
//接管类型选择
|
||||
tbTakeOverType.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (isChecked) {
|
||||
@@ -178,16 +208,26 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
(rvTakeOverList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tbTakeOverType
|
||||
tbTakeOverReason.visibility = View.INVISIBLE
|
||||
|
||||
source = 0
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,1,1,0)
|
||||
source = 1
|
||||
if(typeList.isNullOrEmpty()){
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,type,0)
|
||||
}else{
|
||||
orderReasonAdapter.setData(typeList!!,source)
|
||||
}
|
||||
} else {
|
||||
buttonView.setCompoundDrawables(null, null, iconDown, null)
|
||||
//隐藏列表
|
||||
rvTakeOverList.visibility = View.GONE
|
||||
tbTakeOverReason.visibility = View.VISIBLE
|
||||
}
|
||||
}
|
||||
viewTakeOverReason.setOnClickListener {
|
||||
ToastUtils.showShort("请先选择接管类型")
|
||||
}
|
||||
ivTakeOverReason.setOnClickListener {
|
||||
ToastUtils.showShort("请先选择接管类型")
|
||||
}
|
||||
|
||||
//接管原因选择
|
||||
tbTakeOverReason.setOnCheckedChangeListener { buttonView, isChecked ->
|
||||
if (isChecked) {
|
||||
@@ -195,10 +235,6 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
//展示列表
|
||||
rvTakeOverList.visibility = View.VISIBLE
|
||||
(rvTakeOverList.layoutParams as ConstraintLayout.LayoutParams).topToBottom = R.id.tbTakeOverReason
|
||||
|
||||
source = 1
|
||||
//获取故障三级分类即故障原因
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,3,1,1,0)
|
||||
} else {
|
||||
buttonView.setCompoundDrawables(null, null, iconDown, null)
|
||||
//隐藏列表
|
||||
@@ -246,7 +282,21 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
}
|
||||
//保存
|
||||
tvTakeOverSave.setOnClickListener{
|
||||
if(level2Name.isEmpty()){
|
||||
ToastUtils.showShort("请完整填写再保存")
|
||||
return@setOnClickListener
|
||||
}
|
||||
if(hasLevel3 && level3Name.isEmpty()){
|
||||
ToastUtils.showShort("请完整填写再保存")
|
||||
return@setOnClickListener
|
||||
}
|
||||
mTakeOverRecordInfo.reportNote = etNoteInput.text.toString()
|
||||
mTakeOverRecordInfo.level1Id = level1Id
|
||||
mTakeOverRecordInfo.level1Name = level1Name
|
||||
mTakeOverRecordInfo.level2Id = level2Id
|
||||
mTakeOverRecordInfo.level2Name = level2Name
|
||||
mTakeOverRecordInfo.level3Id = level3Id
|
||||
mTakeOverRecordInfo.level3Name = level3Name
|
||||
CallerTakeOverManager.updateRecord(mActivity,mTakeOverRecordInfo)
|
||||
clickListener?.onSaveReason(mTakeOverRecordInfo)
|
||||
hideFloatWindow()
|
||||
@@ -383,6 +433,7 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
return true
|
||||
}
|
||||
|
||||
@SuppressLint("SetTextI18n")
|
||||
fun showFloatWindow(takeOverRecordInfo: TakeOverRecordInfo) {
|
||||
if (mFloatLayout.parent == null) {
|
||||
val metrics = DisplayMetrics()
|
||||
@@ -393,6 +444,13 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
mWindowManager!!.addView(mFloatLayout, mWindowParams)
|
||||
}
|
||||
mTakeOverRecordInfo = takeOverRecordInfo
|
||||
if(mTakeOverRecordInfo.faultStartTime == 0L){
|
||||
tvTakeOverTime.text = mActivity.resources.getString(R.string.take_over_time) +
|
||||
millis2String(System.currentTimeMillis(), TimeUtils.getHourMinSecondFormat())
|
||||
}else{
|
||||
tvTakeOverTime.text = mActivity.resources.getString(R.string.take_over_time) +
|
||||
millis2String(mTakeOverRecordInfo.faultStartTime, TimeUtils.getHourMinSecondFormat())
|
||||
}
|
||||
}
|
||||
|
||||
fun hideFloatWindow() {
|
||||
@@ -414,13 +472,35 @@ class TakeOverReasonWindow constructor(activity: Activity) : View.OnTouchListene
|
||||
super.getCategoriesSuccess(list)
|
||||
ThreadUtils.runOnUiThread {
|
||||
if(list.isNotEmpty()){
|
||||
orderReasonAdapter.setData(list,source)
|
||||
if(source == 0){
|
||||
level1Id = list[0].id
|
||||
level1Name = list[0].name
|
||||
|
||||
source = 1
|
||||
//获取故障二级分类即故障类型
|
||||
CallerDevaToolsManager.getCategories(BadCaseConfig.tenantId,2,level1Id,type,0)
|
||||
}else{
|
||||
if(source == 1){
|
||||
typeList = list
|
||||
}else{
|
||||
reasonList = list
|
||||
hasLevel3 = true
|
||||
}
|
||||
orderReasonAdapter.setData(list,source)
|
||||
}
|
||||
}else{
|
||||
if(source == 2){
|
||||
hasLevel3 = false
|
||||
}else{
|
||||
ToastUtils.showShort("接管类型列表为空")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun getCategoriesError(msg: String) {
|
||||
super.getCategoriesError(msg)
|
||||
ToastUtils.showShort("接管列表获取失败:$msg")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -71,7 +71,7 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
CallerDevaToolsListenerManager.removeListener(TAG)
|
||||
}
|
||||
//接管记录日期
|
||||
tvTakeOverRecordDate.text = TimeUtils.millis2String(System.currentTimeMillis(), getYMDFormat())
|
||||
tvTakeOverRecordDate.text = millis2String(System.currentTimeMillis(), getYMDFormat())
|
||||
val linearLayoutManager = LinearLayoutManager(context)
|
||||
rvTakeOverList.layoutManager = linearLayoutManager
|
||||
takeOverListAdapter = TakeOverListAdapter(context)
|
||||
@@ -117,9 +117,18 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
while(recordIterator.hasNext()){
|
||||
val uploadRecord = recordIterator.next()
|
||||
uploadRecord.let {
|
||||
if(it.level1Id == 0 || it.level2Id == 0 || it.level3Id == 0){
|
||||
ToastUtils.showShort("请编辑选中的接管记录")
|
||||
return@setOnClickListener
|
||||
}
|
||||
val reason = if(it.reportNote.isEmpty()){
|
||||
"${it.level1Name}-${it.level2Name}-${it.level3Name}"
|
||||
}else{
|
||||
"${it.level1Name}-${it.level2Name}-${it.level3Name}(${it.reportNote})"
|
||||
}
|
||||
val padProblemInfo = PadProblemInfo(it.address, emptyList(),
|
||||
millis2String(it.faultStartTime),it.level1Id,it.level2Id,it.level3Id,
|
||||
it.lineName,it.reportNote,1,
|
||||
it.lineName,reason,1,
|
||||
SharedPrefsMgr.getInstance().getString("och_account",""))
|
||||
padProblemList.add(padProblemInfo)
|
||||
}
|
||||
@@ -179,12 +188,21 @@ class TakeOverRecordView @JvmOverloads constructor(
|
||||
|
||||
override fun problemPadAddSuccess() {
|
||||
super.problemPadAddSuccess()
|
||||
|
||||
ToastUtils.showShort("接管记录上传成功")
|
||||
//更新记录状态并且刷新列表
|
||||
ThreadUtils.runOnUiThread {
|
||||
selectedUploadRecord.forEach {
|
||||
it.reportStatus = true
|
||||
it.selectStatus = false
|
||||
CallerTakeOverManager.updateRecord(context,it)
|
||||
takeOverListAdapter?.notifyRecordItemChanged(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun problemPadAddError(msg: String) {
|
||||
super.problemPadAddError(msg)
|
||||
|
||||
ToastUtils.showShort("接管记录上传失败$msg")
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zhjt.mogo_core_function_devatools.workorder
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.Response
|
||||
import com.mogo.eagle.core.data.deva.report.CategoryInfo
|
||||
import com.mogo.eagle.core.data.deva.report.PadAddProblemReq
|
||||
@@ -29,7 +30,10 @@ interface WorkOrderApiService {
|
||||
*/
|
||||
@Headers("Content-Type:application/json;charset=UTF-8")
|
||||
@POST("/vehicle-data-service/problem/pad/add")
|
||||
suspend fun problemPadAdd(@Body padAddProblemReq: PadAddProblemReq): Response<Any>
|
||||
suspend fun problemPadAdd(
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("ticket") ticket: String= SharedPrefsMgr.getInstance().token,
|
||||
@Body padAddProblemReq: PadAddProblemReq): Response<Any>
|
||||
|
||||
/**
|
||||
* 获取报障、接管、一键上报配置
|
||||
@@ -38,11 +42,27 @@ interface WorkOrderApiService {
|
||||
@GET("/platform/biz/categories/terminal")
|
||||
suspend fun getCategories(
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("tenantId") tenantId: Long,
|
||||
@Header("ticket") ticket: String= SharedPrefsMgr.getInstance().token,
|
||||
@Header("x-tenant-id") tenantId: Long,
|
||||
@Query("level") level: Int,
|
||||
@Query("parentId") parentId: Int,
|
||||
@Query("type") type: Int,
|
||||
@Query("upType") upType: Int
|
||||
): Response<List<CategoryInfo>>
|
||||
|
||||
|
||||
/**
|
||||
* 获取报障、接管、一键上报配置
|
||||
*/
|
||||
@Headers("Content-type:application/json;charset=UTF-8")
|
||||
@GET("/platform/biz/categories/terminal")
|
||||
suspend fun getCategories(
|
||||
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
@Header("ticket") ticket: String= SharedPrefsMgr.getInstance().token,
|
||||
@Header("x-tenant-id") tenantId: Long,
|
||||
@Query("level") level: Int,
|
||||
@Query("type") type: Int,
|
||||
@Query("upType") upType: Int
|
||||
): Response<List<CategoryInfo>>
|
||||
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zhjt.mogo_core_function_devatools.workorder
|
||||
|
||||
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
|
||||
import com.mogo.commons.storage.SharedPrefsMgr
|
||||
import com.mogo.eagle.core.data.Response
|
||||
import com.mogo.eagle.core.data.deva.report.CategoryInfo
|
||||
import com.mogo.eagle.core.data.deva.report.PadAddProblemReq
|
||||
@@ -46,7 +47,8 @@ class WorkOrderNetWorkModel {
|
||||
request<Response<Any>>{
|
||||
loader{
|
||||
apiResponseCall{
|
||||
getNetWorkApi(getOchUrl()).problemPadAdd(padAddProblemReq)
|
||||
getNetWorkApi(getOchUrl()).problemPadAdd(MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,padAddProblemReq)
|
||||
}
|
||||
}
|
||||
onSuccess{
|
||||
@@ -67,7 +69,13 @@ class WorkOrderNetWorkModel {
|
||||
request<Response<List<CategoryInfo>>>{
|
||||
loader{
|
||||
apiResponseCall{
|
||||
getNetWorkApi(getOchUrl()).getCategories(MoGoAiCloudClientConfig.getInstance().serviceAppId,tenantId, level, parentId,type,upType)
|
||||
if(parentId == 0){
|
||||
getNetWorkApi(getOchUrl()).getCategories(MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,tenantId, level,type,upType)
|
||||
}else{
|
||||
getNetWorkApi(getOchUrl()).getCategories(MoGoAiCloudClientConfig.getInstance().serviceAppId,
|
||||
SharedPrefsMgr.getInstance().token,tenantId, level, parentId,type,upType)
|
||||
}
|
||||
}
|
||||
}
|
||||
onSuccess {
|
||||
|
||||
@@ -80,11 +80,16 @@ class TakeOverListAdapter(private val context: Context): RecyclerView.Adapter<Ta
|
||||
}
|
||||
holder.tvFaultStartTime.text = TimeUtils.millis2String(recordEntity.faultStartTime,getHourMinSecondFormat())
|
||||
holder.tvLineName.text = recordEntity.lineName
|
||||
//TODO 还应该判断类型和原因
|
||||
if(recordEntity.reportNote.isEmpty()){
|
||||
if(recordEntity.reportNote.isEmpty() && recordEntity.level1Name.isEmpty()
|
||||
&& recordEntity.level2Name.isEmpty() && recordEntity.level3Name.isEmpty()){
|
||||
holder.tvTakeOverReason.text = "原因:空"
|
||||
}else{
|
||||
holder.tvTakeOverReason.text = "原因:${recordEntity.reportNote}"
|
||||
val reason = if(recordEntity.reportNote.isEmpty()){
|
||||
"${recordEntity.level1Name}-${recordEntity.level2Name}-${recordEntity.level3Name}"
|
||||
}else{
|
||||
"${recordEntity.level1Name}-${recordEntity.level2Name}-${recordEntity.level3Name}(${recordEntity.reportNote})"
|
||||
}
|
||||
holder.tvTakeOverReason.text = "原因:$reason"
|
||||
}
|
||||
if(recordEntity.reportStatus){
|
||||
//已上报
|
||||
|
||||
@@ -128,6 +128,30 @@
|
||||
android:textColor="@color/white"
|
||||
android:paddingStart="@dimen/dp_21"
|
||||
android:paddingEnd="@dimen/dp_21"
|
||||
android:visibility="invisible"
|
||||
/>
|
||||
|
||||
<View
|
||||
android:id="@+id/viewFaultReason"
|
||||
android:layout_width="@dimen/dp_781"
|
||||
android:layout_height="@dimen/dp_70"
|
||||
android:background="@drawable/bg_fault_type"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_374"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivFaultReason"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/viewFaultReason"
|
||||
app:layout_constraintBottom_toBottomOf="@id/viewFaultReason"
|
||||
app:layout_constraintRight_toRightOf="@id/viewFaultReason"
|
||||
android:src="@drawable/icon_fault_expand"
|
||||
android:contentDescription="@string/fault_reason_select"
|
||||
android:layout_marginRight="@dimen/dp_21"
|
||||
/>
|
||||
|
||||
<View
|
||||
@@ -327,10 +351,11 @@
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:constraint_referenced_ids="viewFaultTypeLabel,tvTypeTitle,tbFaultType,
|
||||
viewFaultReasonLabel,tvFaultReasonTitle,tbFaultReason,viewFaultTimeLabel,
|
||||
viewFaultReasonLabel,tvFaultReasonTitle,viewFaultTimeLabel,
|
||||
tvFaultTimeTitle,ivTimeReduce,tvOccurrenceTime,ivTimeAdd,
|
||||
viewFaultNoteLabel,tvFaultNoteTitle,tvFaultNoteSupplement,
|
||||
etNoteInput,ivNoteAudio,tvFaultReport,tvFaultCancel"
|
||||
etNoteInput,ivNoteAudio,tvFaultReport,tvFaultCancel,
|
||||
viewFaultReason,ivFaultReason"
|
||||
/>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
@@ -128,6 +128,30 @@
|
||||
android:textColor="@color/white"
|
||||
android:paddingStart="@dimen/dp_21"
|
||||
android:paddingEnd="@dimen/dp_21"
|
||||
android:visibility="invisible"
|
||||
/>
|
||||
|
||||
<View
|
||||
android:id="@+id/viewTakeOverReason"
|
||||
android:layout_width="@dimen/dp_781"
|
||||
android:layout_height="@dimen/dp_70"
|
||||
android:background="@drawable/bg_fault_type"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
android:layout_marginTop="@dimen/dp_374"
|
||||
/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/ivTakeOverReason"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
app:layout_constraintTop_toTopOf="@id/viewTakeOverReason"
|
||||
app:layout_constraintBottom_toBottomOf="@id/viewTakeOverReason"
|
||||
app:layout_constraintRight_toRightOf="@id/viewTakeOverReason"
|
||||
android:src="@drawable/icon_fault_expand"
|
||||
android:contentDescription="@string/take_over_reason"
|
||||
android:layout_marginRight="@dimen/dp_21"
|
||||
/>
|
||||
|
||||
|
||||
@@ -269,7 +293,7 @@
|
||||
android:layout_height="wrap_content"
|
||||
app:constraint_referenced_ids="viewTakeOverTypeLabel,tvTypeTitle,
|
||||
tbTakeOverType,viewTakeOverReasonLabel,tvTakeOverReasonTitle,
|
||||
tbTakeOverReason,viewTakeOverNoteLabel,tvTakeOverNoteTitle,
|
||||
viewTakeOverReason,ivTakeOverReason,viewTakeOverNoteLabel,tvTakeOverNoteTitle,
|
||||
tvTakeOverNoteSupplement,etNoteInput,ivNoteAudio,
|
||||
tvTakeOverReport,tvTakeOverCancel"
|
||||
/>
|
||||
|
||||
@@ -7,6 +7,9 @@ package com.mogo.eagle.core.data.deva.report
|
||||
* @param level1Id 一级分类ID
|
||||
* @param level2Id 二级分类ID
|
||||
* @param level3Id 三级分类ID
|
||||
* @param level1Name 一级分类名称
|
||||
* @param level2Name 二级分类名称
|
||||
* @param level3Name 三级分类名称
|
||||
* @param lineName 行驶路线
|
||||
* @param reportNote 上报描述
|
||||
* @param reportStatus 上传状态 false:未上传,可编辑 true:已上传,不可编辑
|
||||
@@ -14,5 +17,6 @@ package com.mogo.eagle.core.data.deva.report
|
||||
*/
|
||||
data class TakeOverRecordInfo(var faultStartTime: Long, var address:String,
|
||||
var level1Id: Int, var level2Id: Int, var level3Id: Int,
|
||||
var level1Name: String,var level2Name: String,var level3Name: String,
|
||||
var lineName: String, var reportNote: String,
|
||||
var reportStatus: Boolean,var selectStatus: Boolean)
|
||||
Reference in New Issue
Block a user