feat(task): 添加任务详情获取功能并优化任务列表展示
- 在TaskSearchModel中将aiDescription字段设为可空默认值 - 添加GetTaskInfo相关请求响应模型和API接口 - 在ReviewActivity中增加提交延迟逻辑防止频繁操作 - 新增SprayingActivity用于天镜检验任务处理 - 实现任务详情获取并在界面中动态显示任务信息 - 优化TaskListActivity中的任务跳转逻辑和显示内容 - 修改WelcomeActivity启动页面直接进入任务列表 - 更新任务列表ViewModel中描述字段的处理逻辑 - 配置MyApplication中新增的网络请求组件实例 - 调整spraying界面布局中的任务信息展示内容
这个提交包含在:
父节点
4610076e50
当前提交
42b353c972
@ -18,14 +18,20 @@ public class MyApplication extends App {
|
|||||||
public static String baseUrl = "http://22fs132201.imwork.net";
|
public static String baseUrl = "http://22fs132201.imwork.net";
|
||||||
// public static String baseUrl = "http://192.168.6.20";
|
// public static String baseUrl = "http://192.168.6.20";
|
||||||
|
|
||||||
|
// 意图识别
|
||||||
public static AppComponent appComponent1;
|
public static AppComponent appComponent1;
|
||||||
|
// 喷涂
|
||||||
|
public static AppComponent appComponent2;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreate() {
|
public void onCreate() {
|
||||||
super.onCreate();
|
super.onCreate();
|
||||||
appComponent = HttpManager.getAppComponent(baseUrl, new HeaderInterceptor(getApplicationContext()));
|
appComponent = HttpManager.getAppComponent(baseUrl, new HeaderInterceptor(getApplicationContext()));
|
||||||
appComponent1 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
|
appComponent1 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
|
||||||
|
appComponent2 = HttpManager.getAppComponent("https://22v1322u01.vicp.fun", new HeaderInterceptor(getApplicationContext()));
|
||||||
|
|
||||||
// appComponent1 = HttpManager.getAppComponent("http://192.168.6.20:12119", new HeaderInterceptor(getApplicationContext()));
|
// appComponent1 = HttpManager.getAppComponent("http://192.168.6.20:12119", new HeaderInterceptor(getApplicationContext()));
|
||||||
|
// appComponent2 = HttpManager.getAppComponent("http://192.168.6.156:10085", new HeaderInterceptor(getApplicationContext()));
|
||||||
|
|
||||||
initSdk();
|
initSdk();
|
||||||
|
|
||||||
|
|||||||
@ -20,5 +20,5 @@ data class TaskSearchItem(
|
|||||||
val taskType: String,
|
val taskType: String,
|
||||||
val params: Map<String, String>?,
|
val params: Map<String, String>?,
|
||||||
val processStatus: String,
|
val processStatus: String,
|
||||||
val aiDescription: String
|
val aiDescription: String? = null
|
||||||
)
|
)
|
||||||
|
|||||||
@ -0,0 +1,29 @@
|
|||||||
|
package com.nova.brain.glass.model.data
|
||||||
|
|
||||||
|
data class GetTaskInfoRequest(
|
||||||
|
val id: String
|
||||||
|
)
|
||||||
|
|
||||||
|
data class GetTaskInfoResponse(
|
||||||
|
val code: Int,
|
||||||
|
val message: String,
|
||||||
|
val data: TaskInfoData? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
data class TaskInfoData(
|
||||||
|
val id: String? = null,
|
||||||
|
val aoNumber: String? = null,
|
||||||
|
val productionInfoId: String? = null,
|
||||||
|
val productionId: String? = null,
|
||||||
|
val productionName: String? = null,
|
||||||
|
val frameTime: String? = null,
|
||||||
|
val productionFormDtoList: List<TaskFormItem>? = null
|
||||||
|
)
|
||||||
|
|
||||||
|
data class TaskFormItem(
|
||||||
|
val formId: String? = null,
|
||||||
|
val itemName: String? = null,
|
||||||
|
val toolType: String? = null,
|
||||||
|
val name: String? = null,
|
||||||
|
val type: String? = null
|
||||||
|
)
|
||||||
@ -5,6 +5,8 @@ import com.nova.brain.glass.model.data.ChatData
|
|||||||
import com.nova.brain.glass.model.data.ApiResponse
|
import com.nova.brain.glass.model.data.ApiResponse
|
||||||
import com.nova.brain.glass.model.data.BackToData
|
import com.nova.brain.glass.model.data.BackToData
|
||||||
import com.nova.brain.glass.model.data.BackToRequest
|
import com.nova.brain.glass.model.data.BackToRequest
|
||||||
|
import com.nova.brain.glass.model.data.GetTaskInfoRequest
|
||||||
|
import com.nova.brain.glass.model.data.GetTaskInfoResponse
|
||||||
import com.nova.brain.glass.model.data.RecognizeData
|
import com.nova.brain.glass.model.data.RecognizeData
|
||||||
import com.nova.brain.glass.model.data.PushToNextData
|
import com.nova.brain.glass.model.data.PushToNextData
|
||||||
import com.nova.brain.glass.model.data.PushToNextRequest
|
import com.nova.brain.glass.model.data.PushToNextRequest
|
||||||
@ -58,4 +60,7 @@ interface Service {
|
|||||||
@POST("/cbrain-gateway/cbrain-execute/cbrain-execute/workflow/instance/backTo")
|
@POST("/cbrain-gateway/cbrain-execute/cbrain-execute/workflow/instance/backTo")
|
||||||
fun backTo(@Body body: BackToRequest): Observable<ApiResponse<BackToData>>
|
fun backTo(@Body body: BackToRequest): Observable<ApiResponse<BackToData>>
|
||||||
|
|
||||||
|
@POST("/skyscopicsecond-api/api/aiGlasses/getTaskInfo")
|
||||||
|
fun getTaskInfo(@Body body: GetTaskInfoRequest): Observable<GetTaskInfoResponse>
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@ import io.reactivex.Observable
|
|||||||
import io.reactivex.android.schedulers.AndroidSchedulers
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.disposables.Disposable
|
import io.reactivex.disposables.Disposable
|
||||||
import io.reactivex.schedulers.Schedulers
|
import io.reactivex.schedulers.Schedulers
|
||||||
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, ActivityReviewBinding>() {
|
class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, ActivityReviewBinding>() {
|
||||||
override fun getLayoutId(): Int = R.layout.activity_review
|
override fun getLayoutId(): Int = R.layout.activity_review
|
||||||
@ -100,6 +101,7 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
|
|||||||
isSubmitting = true
|
isSubmitting = true
|
||||||
submitDisposable?.dispose()
|
submitDisposable?.dispose()
|
||||||
val service = HttpManager.getApi(Service::class.java)
|
val service = HttpManager.getApi(Service::class.java)
|
||||||
|
val firstPushToNextAt = System.currentTimeMillis()
|
||||||
submitDisposable = service.pushToNext(
|
submitDisposable = service.pushToNext(
|
||||||
PushToNextRequest(
|
PushToNextRequest(
|
||||||
workProcessInstanceId = workProcessInstanceId,
|
workProcessInstanceId = workProcessInstanceId,
|
||||||
@ -134,16 +136,21 @@ class ReviewActivity : BaseListFormLayoutNormalActivity<ItemItem, ItemListVM, Ac
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}.flatMap { selectedHandler ->
|
}.flatMap { selectedHandler ->
|
||||||
service.pushToNext(
|
val elapsed = System.currentTimeMillis() - firstPushToNextAt
|
||||||
PushToNextRequest(
|
val remainingDelayMs = (600L - elapsed).coerceAtLeast(0L)
|
||||||
workProcessInstanceId = workProcessInstanceId,
|
Observable.timer(remainingDelayMs, TimeUnit.MILLISECONDS)
|
||||||
currentActivityId = currentActivityId,
|
.flatMap {
|
||||||
needHandle = 0,
|
service.pushToNext(
|
||||||
innerRequest = true,
|
PushToNextRequest(
|
||||||
comment = "拟同意",
|
workProcessInstanceId = workProcessInstanceId,
|
||||||
selectedHandler = selectedHandler
|
currentActivityId = currentActivityId,
|
||||||
)
|
needHandle = 0,
|
||||||
)
|
innerRequest = true,
|
||||||
|
comment = "拟同意",
|
||||||
|
selectedHandler = selectedHandler
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
.subscribeOn(Schedulers.io())
|
.subscribeOn(Schedulers.io())
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.nova.brain.glass.ui
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Environment
|
import android.os.Environment
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
|
import com.nova.brain.glass.MyApplication
|
||||||
import com.nova.brain.glass.R
|
import com.nova.brain.glass.R
|
||||||
import com.nova.brain.glass.databinding.ActivitySprayingBinding
|
import com.nova.brain.glass.databinding.ActivitySprayingBinding
|
||||||
import com.nova.brain.glass.helper.GlassMediaServiceHelper
|
import com.nova.brain.glass.helper.GlassMediaServiceHelper
|
||||||
@ -10,6 +11,8 @@ import com.nova.brain.glass.helper.OfflineCmdListener
|
|||||||
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
import com.nova.brain.glass.helper.OfflineCmdServiceHelper
|
||||||
import com.nova.brain.glass.helper.SprayingPhotoManager
|
import com.nova.brain.glass.helper.SprayingPhotoManager
|
||||||
import com.nova.brain.glass.model.ItemItem
|
import com.nova.brain.glass.model.ItemItem
|
||||||
|
import com.nova.brain.glass.model.data.GetTaskInfoRequest
|
||||||
|
import com.nova.brain.glass.repository.Service
|
||||||
import com.nova.brain.glass.viewmodel.SprayingVM
|
import com.nova.brain.glass.viewmodel.SprayingVM
|
||||||
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
|
import com.rokid.security.glass3.sdk.base.data.media.PhotoResolution
|
||||||
import com.rokid.security.system.server.media.callback.PhotoFileCallback
|
import com.rokid.security.system.server.media.callback.PhotoFileCallback
|
||||||
@ -17,8 +20,12 @@ import com.xuqm.base.adapter.BasePagedAdapter
|
|||||||
import com.xuqm.base.adapter.CommonPagedAdapter
|
import com.xuqm.base.adapter.CommonPagedAdapter
|
||||||
import com.xuqm.base.adapter.ViewHolder
|
import com.xuqm.base.adapter.ViewHolder
|
||||||
import com.xuqm.base.common.LogHelper
|
import com.xuqm.base.common.LogHelper
|
||||||
|
import com.xuqm.base.di.manager.HttpManager
|
||||||
import com.xuqm.base.extensions.showMessage
|
import com.xuqm.base.extensions.showMessage
|
||||||
import com.xuqm.base.ui.BaseListFormLayoutNormalActivity
|
import com.xuqm.base.ui.BaseListFormLayoutNormalActivity
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers
|
||||||
|
import io.reactivex.disposables.Disposable
|
||||||
|
import io.reactivex.schedulers.Schedulers
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@ -28,6 +35,12 @@ class SprayingActivity :
|
|||||||
override fun fullscreen(): Boolean = true
|
override fun fullscreen(): Boolean = true
|
||||||
|
|
||||||
override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL
|
override fun getRecyclerOrientation(): Int = RecyclerView.VERTICAL
|
||||||
|
private var taskInfoDisposable: Disposable? = null
|
||||||
|
private val taskId: String by lazy {
|
||||||
|
intent.getStringExtra("taskId")
|
||||||
|
.orEmpty()
|
||||||
|
.ifBlank { "1495087454883938304" }
|
||||||
|
}
|
||||||
|
|
||||||
private val listener = object : OfflineCmdListener {
|
private val listener = object : OfflineCmdListener {
|
||||||
override fun onOfflineCmd(cmd: String) {
|
override fun onOfflineCmd(cmd: String) {
|
||||||
@ -100,6 +113,33 @@ class SprayingActivity :
|
|||||||
override fun initData() {
|
override fun initData() {
|
||||||
super.initData()
|
super.initData()
|
||||||
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
|
binding.tvTaskHeader.text = "您还有10项任务未完成"
|
||||||
|
fetchTaskInfo()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun fetchTaskInfo() {
|
||||||
|
if (taskId.isBlank()) return
|
||||||
|
taskInfoDisposable?.dispose()
|
||||||
|
taskInfoDisposable = HttpManager.getApi(MyApplication.appComponent2, Service::class.java)
|
||||||
|
.getTaskInfo(GetTaskInfoRequest(id = taskId))
|
||||||
|
.subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe({ response ->
|
||||||
|
if (response.code == 200) {
|
||||||
|
val taskInfo = response.data
|
||||||
|
val formList = taskInfo?.productionFormDtoList.orEmpty()
|
||||||
|
binding.tvTaskHeader.text = "您还有${formList.size}项任务未完成"
|
||||||
|
val firstForm = formList.firstOrNull()
|
||||||
|
binding.title.text = "任务1:${firstForm?.itemName.orEmpty()}"
|
||||||
|
binding.content1.text = "AO/AAO:${taskInfo?.aoNumber.orEmpty()}"
|
||||||
|
binding.content2.text = "工序号:${taskInfo?.productionInfoId.orEmpty()}"
|
||||||
|
binding.content3.text = "架次:${taskInfo?.frameTime.orEmpty()}"
|
||||||
|
} else {
|
||||||
|
(if (response.message.isBlank()) "任务信息获取失败" else response.message).showMessage()
|
||||||
|
}
|
||||||
|
}, { e ->
|
||||||
|
(e.message ?: "任务信息获取失败").showMessage()
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
@ -116,6 +156,12 @@ class SprayingActivity :
|
|||||||
GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback)
|
GlassMediaServiceHelper.removePhotoCallback(mPhotoFileCallback)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
taskInfoDisposable?.dispose()
|
||||||
|
super.onDestroy()
|
||||||
|
window.clearFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
|
}
|
||||||
|
|
||||||
private var isPhoto = false
|
private var isPhoto = false
|
||||||
private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_photo) {
|
private val adapter = object : CommonPagedAdapter<ItemItem>(R.layout.item_photo) {
|
||||||
override fun convert(holder: ViewHolder, item: ItemItem, position: Int) {
|
override fun convert(holder: ViewHolder, item: ItemItem, position: Int) {
|
||||||
|
|||||||
@ -126,14 +126,14 @@ class TaskListActivity :
|
|||||||
when (item.taskType) {
|
when (item.taskType) {
|
||||||
"复材MES任务" -> startActivity(
|
"复材MES任务" -> startActivity(
|
||||||
Intent(this, FoActivity::class.java)
|
Intent(this, FoActivity::class.java)
|
||||||
.putExtra("aiDescription", item.aiDescription)
|
.putExtra("aiDescription", item.displayDesc())
|
||||||
.putExtra("taskType", item.taskType)
|
.putExtra("taskType", item.taskType)
|
||||||
)
|
)
|
||||||
"审核任务" -> startActivity(
|
"审核任务" -> startActivity(
|
||||||
Intent(this, ReviewActivity::class.java)
|
Intent(this, ReviewActivity::class.java)
|
||||||
.putExtra("taskId", item.id)
|
.putExtra("taskId", item.id)
|
||||||
.putExtra("taskType", item.taskType)
|
.putExtra("taskType", item.taskType)
|
||||||
.putExtra("content", item.aiDescription)
|
.putExtra("content", item.displayDesc())
|
||||||
.putExtra(
|
.putExtra(
|
||||||
"workProcessInstanceId",
|
"workProcessInstanceId",
|
||||||
item.params.firstNotBlank("processInstanceId", "work_process_instance_id")
|
item.params.firstNotBlank("processInstanceId", "work_process_instance_id")
|
||||||
@ -148,6 +148,12 @@ class TaskListActivity :
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
"天镜检验任务" -> startActivity(
|
||||||
|
Intent(this, SprayingActivity::class.java)
|
||||||
|
.putExtra("taskId", item.params.firstNotBlank("taskId", "task_id", "id"))
|
||||||
|
.putExtra("aiDescription", item.displayDesc())
|
||||||
|
.putExtra("taskType", item.taskType)
|
||||||
|
)
|
||||||
else -> Log.d("TaskListActivity", "unknown taskType: ${item.taskType}")
|
else -> Log.d("TaskListActivity", "unknown taskType: ${item.taskType}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -212,7 +218,7 @@ class TaskListActivity :
|
|||||||
TaskExtraItem(
|
TaskExtraItem(
|
||||||
taskId = item.id,
|
taskId = item.id,
|
||||||
taskType = item.taskType,
|
taskType = item.taskType,
|
||||||
desc = item.aiDescription,
|
desc = item.displayDesc(),
|
||||||
numberNo = index + 1
|
numberNo = index + 1
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -224,11 +230,13 @@ class TaskListActivity :
|
|||||||
override fun convert(holder: ViewHolder, item: TaskItem, position: Int) {
|
override fun convert(holder: ViewHolder, item: TaskItem, position: Int) {
|
||||||
val displayPosition = (position - pageStartPosition + 1).coerceAtLeast(1)
|
val displayPosition = (position - pageStartPosition + 1).coerceAtLeast(1)
|
||||||
holder
|
holder
|
||||||
.setText(R.id.tv_title, "${displayPosition}. ${item.aiDescription}【${item.processStatus}】")
|
.setText(R.id.tv_title, "${displayPosition}. ${item.displayDesc()}【${item.processStatus}】")
|
||||||
.setClickListener(R.id.tv_title) { openTask(position) }
|
.setClickListener(R.id.tv_title) { openTask(position) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun TaskItem.displayDesc(): String = aiDescription.ifBlank { taskType }
|
||||||
|
|
||||||
override fun adapter(): BasePagedAdapter<TaskItem> = adapter
|
override fun adapter(): BasePagedAdapter<TaskItem> = adapter
|
||||||
|
|
||||||
override fun onDestroy() {
|
override fun onDestroy() {
|
||||||
|
|||||||
@ -51,7 +51,7 @@ class WelcomeActivity : BaseActivity<ActivityWelcomeBinding>() {
|
|||||||
vm = ViewModelProvider(this)[WelcomeVM::class.java]
|
vm = ViewModelProvider(this)[WelcomeVM::class.java]
|
||||||
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
window.addFlags(android.view.WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
||||||
binding.tv.setOnClickListener {
|
binding.tv.setOnClickListener {
|
||||||
triggerRecognize()
|
startActivity(Intent(this, TaskListActivity::class.java))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -30,12 +30,13 @@ class TaskListVM : BaseListViewModel<TaskItem>() {
|
|||||||
.observeOn(AndroidSchedulers.mainThread())
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
.subscribe({ response ->
|
.subscribe({ response ->
|
||||||
val items = response.data?.list?.map {
|
val items = response.data?.list?.map {
|
||||||
|
val description = it.aiDescription?.takeIf { text -> text.isNotBlank() } ?: it.taskType
|
||||||
TaskItem(
|
TaskItem(
|
||||||
id = it.id,
|
id = it.id,
|
||||||
taskType = it.taskType,
|
taskType = it.taskType,
|
||||||
params = it.params ?: emptyMap(),
|
params = it.params ?: emptyMap(),
|
||||||
processStatus = it.processStatus,
|
processStatus = it.processStatus,
|
||||||
aiDescription = it.aiDescription
|
aiDescription = description
|
||||||
)
|
)
|
||||||
} ?: emptyList()
|
} ?: emptyList()
|
||||||
currentItems = items
|
currentItems = items
|
||||||
@ -46,4 +47,4 @@ class TaskListVM : BaseListViewModel<TaskItem>() {
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -14,7 +14,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="67dp"
|
android:layout_marginTop="67dp"
|
||||||
android:background="@drawable/bg_item"
|
android:background="@drawable/bg_item"
|
||||||
android:text="装配工序喷涂识别:您还有10项任务未完成!"
|
android:text="您还有10项任务未完成"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="20sp"
|
android:textSize="20sp"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
@ -39,7 +39,7 @@
|
|||||||
android:layout_gravity="center"
|
android:layout_gravity="center"
|
||||||
android:layout_marginVertical="3dp"
|
android:layout_marginVertical="3dp"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
android:text="任务1:管线编号与机身喷码核对"
|
android:text="任务1:itemName"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="18sp"
|
android:textSize="18sp"
|
||||||
android:textStyle="bold" />
|
android:textStyle="bold" />
|
||||||
@ -55,7 +55,7 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="15dp"
|
android:layout_marginStart="15dp"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:text="任务编号:20293989-001"
|
android:text="AO/AAO:aoNumber"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="14sp"/>
|
android:textSize="14sp"/>
|
||||||
|
|
||||||
@ -65,7 +65,7 @@
|
|||||||
android:layout_marginStart="15dp"
|
android:layout_marginStart="15dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="4dp"
|
android:layout_marginTop="4dp"
|
||||||
android:text="制造供应商:中航成飞民用飞机有限责任公司"
|
android:text="工序号:productionInfoId"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="14sp"/>
|
android:textSize="14sp"/>
|
||||||
|
|
||||||
@ -75,7 +75,7 @@
|
|||||||
android:layout_marginStart="15dp"
|
android:layout_marginStart="15dp"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginVertical="4dp"
|
android:layout_marginVertical="4dp"
|
||||||
android:text="任务创建时间:2026-03-09 16:00:00"
|
android:text="架次:frameTime"
|
||||||
android:textColor="#ff40FF5E"
|
android:textColor="#ff40FF5E"
|
||||||
android:textSize="14sp"/>
|
android:textSize="14sp"/>
|
||||||
|
|
||||||
|
|||||||
正在加载...
在新工单中引用
屏蔽一个用户