[未上传任、页面]
This commit is contained in:
yangyakun
2024-08-27 13:15:55 +08:00
parent 7693bc2696
commit 35d33f3488
13 changed files with 289 additions and 29 deletions

View File

@@ -7,12 +7,30 @@ data class WaitUploadLine(var lineName:String ,var lineId:Long,var task:MutableL
other as WaitUploadLine
return lineId == other.lineId
if (lineId != other.lineId) return false
if (task != other.task) return false
return true
}
override fun hashCode(): Int {
return lineId.hashCode()
var result = lineId.hashCode()
result = 31 * result + task.hashCode()
return result
}
}
data class WaitUploadTask(val taskStartTime:Long,val taskId:Long)
data class WaitUploadTask(val taskStartTime:Long,val taskId:Long){
override fun equals(other: Any?): Boolean {
if (this === other) return true
if (javaClass != other?.javaClass) return false
other as WaitUploadTask
return taskId == other.taskId
}
override fun hashCode(): Int {
return taskId.hashCode()
}
}

View File

@@ -27,7 +27,7 @@ interface EventDataDao {
@Query("SELECT * FROM ${EventDataBean.evnetDataTable} WHERE update_status = ${EventDataBean.notUpdate} LIMIT 10 OFFSET 0")
fun queryEventByStatusWithPage():List<EventDataBean>?
@Query("SELECT * FROM ${EventDataBean.evnetDataTable} WHERE update_status = ${EventDataBean.updated} and event_save_time > :zeroTime GROUP by task_start_time")
@Query("SELECT * FROM ${EventDataBean.evnetDataTable} WHERE update_status = ${EventDataBean.notUpdate} and event_save_time > :zeroTime GROUP by task_start_time")
fun queryWaitUploadInfo(zeroTime: Long = DateTimeUtil.getCurrentDateZero()): Observable<List<EventDataBean>?>
}

View File

@@ -16,11 +16,12 @@ import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.atomic.AtomicBoolean
import kotlin.properties.Delegates
object EventModel : EventRepository.EventCallback {
private val isUpdating = AtomicBoolean(false)
private val isUpdating by lazy { AtomicBoolean(false) }
fun load(){
EventRepository.eventCallback = this
@@ -97,14 +98,13 @@ object EventModel : EventRepository.EventCallback {
if(wait.lineId!=null&&wait.lineName!=null&&wait.taskId!=null&&wait.taskStartTime!=null) {
val tempTask = WaitUploadTask(wait.taskStartTime!!,wait.taskId!!)
val tempLine = WaitUploadLine(wait.lineName!!, wait.lineId!!, mutableListOf(tempTask))
if(result.contains(tempLine)){
result.forEach{
if(it.lineId == tempLine.lineId){
it.task.add(tempTask)
}
}
}else{
val haveSave = result.filter {
it.lineId==tempLine.lineId
}
if(haveSave.isNullOrEmpty()){
result.add(tempLine)
}else{
haveSave.first().task.add(tempTask)
}
}
}

View File

@@ -42,10 +42,15 @@ class SwitchLineAdapter(
override fun onBindViewHolder(holder: SwitchLineViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
val line = mData[currentPosition]
if(line.name!=null&&line.name.length>10){
line.name = line.name.substring(0,10)+""
line.name?.let {
val lineName =if(it.length>10){
it.substring(0,10)+""
}else{
it
}
holder.lineName.text = lineName
}
holder.lineName.text = line.name
val sb = StringBuilder()
if (line.endSiteName!=null&&line.endSiteName.length>10) {
sb.append(line.endSiteName.substring(0,5))

View File

@@ -0,0 +1,39 @@
package com.mogo.och.weaknet.ui.taskrunning;
import android.graphics.Rect;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
public class BottomDecoration extends RecyclerView.ItemDecoration {
/**
* 第一个视图和最后一个视图偏移的距离
*/
public static int distance = 0;
/**
* 设置RecyclerView子视图的边距本示例仅用于定义两个子视图之间的边距为space*2
*/
public BottomDecoration(int distance) {
this.distance = distance;
}
@Override
public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state) {
int pos = parent.getChildAdapterPosition(view);
RecyclerView.LayoutParams layoutParams = (RecyclerView.LayoutParams)view.getLayoutParams();
/**
* 通过设置Item左右边距实现第一个左侧和最后一个右侧设置边距,确保显示的视图位于屏幕中间
*/
int itemCount = parent.getAdapter().getItemCount();
if(pos == itemCount-1){
layoutParams.setMargins(0,0,0,distance);
}else {
layoutParams.setMargins(0,0,0,0);
}
view.setLayoutParams(layoutParams);
super.getItemOffsets(outRect, view, parent, state);
}
}

View File

@@ -0,0 +1,92 @@
package com.mogo.och.weaknet.ui.taskrunning
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.DiffUtil.Callback
import androidx.recyclerview.widget.RecyclerView
import com.mogo.eagle.core.function.business.travelreality.EventDrawBean
import com.mogo.eagle.core.utilcode.util.TimeUtils
import com.mogo.och.weaknet.bean.BusQueryLineTaskResponse
import com.mogo.och.weaknet.ui.adapter.SwitchLineTaskAdapter.SwitchLineTaskViewHolder
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WaitUploadLine
/**
* 路线列表adapter
*/
class RunningTaskAdapter(
private val mContext: Context,
private val dataList: MutableList<WaitUploadLine>,
) : RecyclerView.Adapter<RunningTaskAdapter.RunningTaskViewHolder>() {
fun setDataList(dataList: List<WaitUploadLine>) {
if (this.dataList == dataList) {
// 如果新旧列表一致,则直接返回
return
}
val diffResult = DiffUtil.calculateDiff(MyDiffCallback(this.dataList, dataList))
this.dataList.clear()
this.dataList.addAll(dataList)
diffResult.dispatchUpdatesTo(this)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RunningTaskViewHolder {
val view = LayoutInflater.from(mContext).inflate(
R.layout.shuttle_wadk_task_running_item, parent, false
)
return RunningTaskViewHolder(view)
}
override fun onBindViewHolder(holder: RunningTaskViewHolder, position: Int) {
val currentPosition = holder.bindingAdapterPosition
val lineTasks = dataList!![currentPosition]
val sb = StringBuilder().append("班次:")
lineTasks.task.forEach {
sb.append(TimeUtils.millis2String(it.taskStartTime, "HH:mm")).append(" ")
}
holder.actvLineTaskName.text = lineTasks.lineName
holder.actvWaitUploadItem.text = sb
}
override fun getItemCount(): Int {
return dataList.size
}
class RunningTaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val actvLineTaskName: TextView // 时间
val actvWaitUploadItem: TextView // 时间
init {
actvLineTaskName = itemView.findViewById(R.id.actv_line_task_name)
actvWaitUploadItem = itemView.findViewById(R.id.actv_wait_upload_item)
}
}
inner class MyDiffCallback(private val oldData:List<WaitUploadLine>, private val newData:List<WaitUploadLine>):
Callback(){
override fun getOldListSize(): Int {
return oldData.size
}
override fun getNewListSize(): Int {
return newData.size
}
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem == newItem
}
override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {
val oldItem = oldData[oldItemPosition]
val newItem = newData[newItemPosition]
return oldItem == newItem
}
}
}

View File

@@ -8,11 +8,17 @@ import android.view.LayoutInflater
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.findViewTreeViewModelStoreOwner
import androidx.recyclerview.widget.LinearLayoutManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.wigets.WindowRelativeLayout
import com.mogo.och.shuttle.weaknet.R
import com.mogo.och.weaknet.bean.WaitUploadLine
import com.mogo.och.weaknet.ui.adapter.OpenItemAnimator
import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.actvCurrentDate
import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.clLayout
import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.ivTaskRunningClose
import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.rvDataLiet
import me.jessyan.autosize.utils.AutoSizeUtils
/**
@@ -20,11 +26,17 @@ import kotlinx.android.synthetic.main.shuttle_wadk_task_running.view.ivTaskRunni
* @description BadCase录包管理页面
* @since: 2022/12/15
*/
class RunningTaskManagerView @JvmOverloads constructor(
context: Context,
attrs: AttributeSet? = null,
defStyleAttr: Int = 0
) : ConstraintLayout(context, attrs, defStyleAttr), RunningTastViewModel.RunningTaskViewCallback {
class RunningTaskManagerView: WindowRelativeLayout, RunningTastViewModel.RunningTaskViewCallback {
constructor(context: Context?) : super(context)
constructor(context: Context?, attributeSet: AttributeSet) : super(context, attributeSet)
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int) : super(context, attributeSet, defStyleAttr)
constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes)
companion object {
const val TAG = "BadCaseManagerView"
@@ -33,6 +45,9 @@ class RunningTaskManagerView @JvmOverloads constructor(
private var clickListener:ClickListener?=null
private var viewModel:RunningTastViewModel?=null
private lateinit var mAdapter: RunningTaskAdapter
private lateinit var linearLayoutManager:LinearLayoutManager
init {
LayoutInflater.from(context).inflate(R.layout.shuttle_wadk_task_running, this, true)
initView()
@@ -47,6 +62,17 @@ class RunningTaskManagerView @JvmOverloads constructor(
clickListener?.onClose()
}
linearLayoutManager = LinearLayoutManager(context)
rvDataLiet.setLayoutManager(linearLayoutManager)
rvDataLiet.setItemAnimator(OpenItemAnimator())
mAdapter = RunningTaskAdapter(context, mutableListOf())
rvDataLiet.addItemDecoration(
BottomDecoration(
AutoSizeUtils.dp2px(context, 200f)
)
)
rvDataLiet.setAdapter(mAdapter)
}
fun setOnClickListener(clickListener: ClickListener) {
@@ -60,9 +86,7 @@ class RunningTaskManagerView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
viewModel = findViewTreeViewModelStoreOwner()?.let {
ViewModelProvider(it).get(RunningTastViewModel::class.java)
}
viewModel = ViewModelProvider(this).get(RunningTastViewModel::class.java)
viewModel?.setDistanceCallback(this)
}
@@ -79,8 +103,8 @@ class RunningTaskManagerView @JvmOverloads constructor(
super.onDetachedFromWindow()
}
override fun showData(data: MutableList<WaitUploadLine>) {
mAdapter.setDataList(data)
}
}
interface ClickListener {
fun onClose()
}

View File

@@ -43,14 +43,14 @@ class RunningTastViewModel : ViewModel() {
}
override fun onNext(data: MutableList<WaitUploadLine>) {
this@RunningTastViewModel.viewCallback?.showData(data)
}
})
}
interface RunningTaskViewCallback{
fun showData(data: MutableList<WaitUploadLine>)
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -65,13 +65,31 @@
android:layout_height="61dp"/>
<androidx.recyclerview.widget.RecyclerView
app:layout_constraintTop_toBottomOf="@+id/tvManagerTitle"
android:id="@+id/rvDataLiet"
app:layout_constraintTop_toBottomOf="@+id/actvCurrentDate"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginTop="@dimen/dp_41"
android:layout_width="0dp"
android:layout_height="0dp"/>
<TextView
android:id="@+id/switch_line_btn_commit"
android:layout_width="match_parent"
android:layout_marginStart="@dimen/dp_85"
android:layout_marginEnd="@dimen/dp_85"
android:layout_height="@dimen/dp_126"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:layout_marginBottom="@dimen/dp_73"
android:textSize="@dimen/dp_42"
android:textColor="@android:color/white"
android:text="@string/bus_running_task_upload"
android:gravity="center"
android:background="@drawable/bus_switch_line_btn_commit"/>
<androidx.constraintlayout.widget.ConstraintLayout
app:layout_constraintTop_toBottomOf="@+id/tvManagerTitle"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/clLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_180"
android:background="#F0151D41">
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="@dimen/dp_30"
android:layout_height="@dimen/dp_30"
android:layout_marginStart="@dimen/dp_75"
android:layout_marginTop="@dimen/dp_3"
android:src="@drawable/shuttle_wait_upload_head_title"
app:layout_constraintBottom_toBottomOf="@+id/actv_line_task_name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/actv_line_task_name" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_line_task_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_115"
android:layout_marginTop="@dimen/dp_27"
android:layout_marginEnd="@dimen/dp_80"
android:ellipsize="end"
android:singleLine="true"
android:textColor="@color/shuttle_color_8E9DD4"
android:textSize="@dimen/dp_38"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="任务名称AAAA任务名称AAAA任务名称AAAA任务名称AAAA任务名称AAAA任务名称AAAA任务名称AAAA任务名称AAAA" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_wait_upload_item"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_80"
android:textColor="@color/shuttle_color_D4D4D4"
android:textSize="@dimen/dp_30"
android:ellipsize="end"
android:singleLine="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/actv_line_task_name"
app:layout_constraintTop_toBottomOf="@+id/actv_line_task_name"
tools:text="班次9:10 15:30 17:00 9:10 15:30 17:009:10 15:30 17:009:10 15:30 17:009:10 15:30 17:009:10 15:30 17:009:10 15:30 17:009:10 15:30 17:00" />
<View
android:layout_width="0dp"
android:layout_height="2dp"
android:layout_marginStart="@dimen/dp_80"
android:layout_marginEnd="@dimen/dp_80"
android:background="@color/bus_station_tag_txt_un_color"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -14,6 +14,8 @@
<color name="bus_arrived_dash_color">#3FC281</color>
<color name="shuttle_color_80203076">#80203076</color>
<color name="shuttle_color_8E9DD4">#8E9DD4</color>
<color name="shuttle_color_D4D4D4">#D4D4D4</color>
<color name="bus_autopilot_text_color_normal">#FFFFFF</color>
<color name="bus_autopilot_text_color_disable">#99FFFFFF</color>

View File

@@ -46,6 +46,7 @@
<string name="shuttle_write_off_count_default">本站核销成功0人</string>
<string name="bus_no_running_task">暂无待上传任务</string>
<string name="bus_running_task_upload">一键上传</string>