riku
2022-01-20 5a0fff8095cd5356f57c181b7e7b820e0f7efacf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
package com.flightfeather.ducha.module.task
 
import android.annotation.SuppressLint
import android.app.Activity
import android.app.AlertDialog
import android.app.DatePickerDialog
import android.arch.lifecycle.Observer
import android.arch.lifecycle.ViewModelProviders
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.support.annotation.RequiresApi
import android.view.MenuItem
import android.view.View
import android.widget.AdapterView
import cn.flightfeather.thirdappmodule.CommonApplication
import cn.flightfeather.thirdappmodule.adapter.AllListViewAdapter
import cn.flightfeather.thirdappmodule.bean.*
import cn.flightfeather.thirdappmodule.bean.entity.*
import cn.flightfeather.thirdappmodule.bean.vo.TaskVo
import cn.flightfeather.thirdappmodule.common.net.ResultCallBack
import cn.flightfeather.thirdappmodule.module.base.BaseActivity
import cn.flightfeather.thirdappmodule.module.common.MapLocationActivity
import cn.flightfeather.thirdappmodule.module.common.UserInfoViewModel
import cn.flightfeather.thirdappmodule.module.task.NO_CHOICE
import cn.flightfeather.thirdappmodule.module.task.START_LOCATION
import cn.flightfeather.thirdappmodule.module.task.SceneDetailViewModel
import cn.flightfeather.thirdappmodule.module.task.TaskViewModel
import cn.flightfeather.thirdappmodule.util.Constant
import cn.flightfeather.thirdappmodule.util.DateFormatter
import cn.flightfeather.thirdappmodule.util.Domain
import cn.flightfeather.thirdappmodule.util.UUIDGenerator
import com.flightfeather.ducha.R
import kotlinx.android.synthetic.main.dc_activity_new_temp_task.*
import org.jetbrains.anko.toast
import java.text.DecimalFormat
import java.util.*
 
/**
 * @author riku
 * Date: 2020/6/4
 * 新建临时子任务activity
 *
 * 临时子任务即不通过总任务下已有的监测点进行选择制订,而是直接生成一个子任务,
 * 再可选择对应的场景信息(可以是已有场景,也可以是随时通过获取定位信息及其他一些必要信息生成的新的场景),
 * 再选择所属的总任务
 *
 * 用于应对巡查时的突发巡查
 */
class DCNewTempTaskActivity : BaseActivity(), View.OnClickListener {
 
    companion object {
        const val DEFAULT_DISTRICT = "金山区"
        const val DEFAULT_TASK_TYPE = "督查"
        const val DEFAULT_SCENE_TYPE = "全部"
        const val DEFAULT_TEMP = "临时"
        const val DEFAULT_TASK = "任务"
        const val LEADER = "0"
        const val MEMBER = "1"
    }
 
    private lateinit var taskViewModel: TaskViewModel
    private lateinit var sceneViewModel: SceneDetailViewModel
    private lateinit var userInfoViewModel: UserInfoViewModel
    private lateinit var newTempTaskViewModel: DCNewTempTaskViewModel
 
    private val calS = Calendar.getInstance()
    private  var calE:Calendar = Calendar.getInstance()
 
    private lateinit var provinceAdapter: AllListViewAdapter<Province>
    private lateinit var cityAdapter: AllListViewAdapter<City>
    private lateinit var districtAdapter: AllListViewAdapter<District>
 
    private lateinit var taskTypeAdapter: AllListViewAdapter<Domainitem>
    private lateinit var sceneTypeAdapter: AllListViewAdapter<Domainitem>
 
    private lateinit var topTaskAdapter: AllListViewAdapter<TaskVo>
 
    private lateinit var mCurrentTask: Subtask
 
    private var sceneLocation: MapLocationActivity.Location? = null
 
    private var tempTaskCount = 0//今日已有临时任务数
 
    override fun getLayoutId(): Int = R.layout.dc_activity_new_temp_task
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        taskViewModel = ViewModelProviders.of(this).get(TaskViewModel::class.java)
        sceneViewModel = ViewModelProviders.of(this).get(SceneDetailViewModel::class.java)
        userInfoViewModel = ViewModelProviders.of(this).get(UserInfoViewModel::class.java)
        newTempTaskViewModel = ViewModelProviders.of(this).get(DCNewTempTaskViewModel::class.java)
 
        supportActionBar?.apply {
            setDisplayHomeAsUpEnabled(true)
            title = "制订任务"
        }
 
        initSpinner()
        initObserver()
        initData()
 
        txt_start_time.setOnClickListener(this)
        txt_end_time.setOnClickListener(this)
        img_location.setOnClickListener(this)
        sp_team_leader.setOnClickListener(this)
        sp_team_members.setOnClickListener(this)
//        sp_top_task.setOnClickListener(this)
        txt_submit.setOnClickListener(this)
    }
 
    @RequiresApi(api = Build.VERSION_CODES.N)
    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            android.R.id.home -> finish()
            else -> {
            }
        }
        return super.onOptionsItemSelected(item)
    }
 
    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == START_LOCATION && resultCode == Activity.RESULT_OK) {
            data?.let {
                val location = it.getParcelableExtra<MapLocationActivity.Location>(MapLocationActivity.RESULT_CODE_LOCATION)
                sceneLocation = location
                val df = DecimalFormat("0.000000")
                edt_scene_name.setText(location.name)
                edt_scene_address.setText(location.address)
            }
        }
    }
 
    private fun showDatePickerDialog(cal: Calendar, isStartTime: Boolean) {
        val mYear = cal[Calendar.YEAR]
        val mMonth = cal[Calendar.MONTH]
        val mDay = cal[Calendar.DAY_OF_MONTH]
 
        val dpDialog = DatePickerDialog(this, DatePickerDialog.OnDateSetListener { _, year, month, dayOfMonth ->
            if (isStartTime) {
                calS.set(year, month, dayOfMonth, 0, 0, 0)
                val dateString = DateFormatter.dateTimeFormat2.format(calS.time)
                txt_start_time.text = dateString
            }
            calE.set(year, month, dayOfMonth, 23, 59, 59)
            val dateString = DateFormatter.dateTimeFormat2.format(calE.time)
            txt_end_time.text = dateString
 
            refreshTaskName()
            taskViewModel.refreshTopTaskByTime(calS.time)
        }, mYear, mMonth, mDay)
 
        //结束时间的选择不能小于开始时间
        if (!isStartTime) {
            try {
                dpDialog.datePicker.minDate = DateFormatter.dateTimeFormat2.parse(txt_start_time.text.toString()).time
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
        dpDialog.show()
    }
 
    private fun initSpinner() {
        provinceAdapter = object : AllListViewAdapter<Province>(sceneViewModel.provinceList.value, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: Province?) {
                holder?.setText(R.id.tv_item, obj?.provincename)
            }
        }
        cityAdapter = object : AllListViewAdapter<City>(sceneViewModel.cityList, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: City?) {
                holder?.setText(R.id.tv_item, obj?.cityname)
            }
        }
        districtAdapter = object : AllListViewAdapter<District>(sceneViewModel.districtList, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: District?) {
                holder?.setText(R.id.tv_item, obj?.districtname)
            }
        }
        taskTypeAdapter = object : AllListViewAdapter<Domainitem>(taskViewModel.allTaskTypeList.value, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: Domainitem?) {
                holder?.setText(R.id.tv_item, obj?.text)
            }
        }
        sceneTypeAdapter = object : AllListViewAdapter<Domainitem>(sceneViewModel.allSceneTypeList.value, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: Domainitem?) {
                holder?.setText(R.id.tv_item, obj?.text)
            }
        }
        topTaskAdapter = object : AllListViewAdapter<TaskVo>(taskViewModel.topTaskList.value, R.layout.item_scense_detail_list) {
            override fun bindView(holder: ViewHolder?, obj: TaskVo?) {
                holder?.setText(R.id.tv_item, obj?.name)
            }
        }
 
        sp_province.apply {
            adapter = provinceAdapter
            onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
                override fun onNothingSelected(parent: AdapterView<*>?) = Unit
                override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                    sceneViewModel.cityList.apply {
                        clear()
                        val pId = (sp_province.selectedItem as Province).provinceid
                        sceneViewModel.allCityList.forEach {
                            if (it.pronvinceid == pId) {
                                add(it)
                            }
                        }
                    }
 
                    cityAdapter.notifyDataSetChanged()
                }
            }
        }
 
        sp_city.apply {
            adapter = cityAdapter
            onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
                override fun onNothingSelected(parent: AdapterView<*>?) = Unit
                override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                    sceneViewModel.districtList.apply {
                        clear()
                        add(District().apply { districtname = NO_CHOICE })
                        val cId = (sp_city.selectedItem as City).cityId
                        sceneViewModel.allDistrictList.forEach {
                            if (it.cityid == cId) {
                                add(it)
                            }
                        }
                    }
                    var index = 0
                    for (i in sceneViewModel.districtList.indices) {
                        if (sceneViewModel.districtList[i].districtname == DEFAULT_DISTRICT) {
                            index = i
                            break
                        }
                    }
 
                    districtAdapter.notifyDataSetChanged()
                    sp_district.setSelection(index)
                }
            }
        }
 
        sp_district.apply {
            adapter = districtAdapter
            onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
                override fun onNothingSelected(parent: AdapterView<*>?) = Unit
                override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                    val districtCode = sceneViewModel.districtList[position].districtcode ?: ""
                    taskViewModel.refreshTopTaskByDistrict(districtCode)
                    refreshTaskName()
                }
            }
        }
        sp_scene_type.adapter = sceneTypeAdapter
        sp_task_type.apply {
            adapter = taskTypeAdapter
            onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
                override fun onNothingSelected(parent: AdapterView<*>?) = Unit
                override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                    refreshTaskName()
                }
            }
        }
        sp_top_task.adapter = topTaskAdapter
    }
 
    private fun initObserver() {
        sceneViewModel.provinceList.observe(this, Observer {
            provinceAdapter.notifyDataSetChanged()
        })
        taskViewModel.allTaskTypeList.observe(this, Observer {
            taskTypeAdapter.notifyDataSetChanged()
            it?.let {
                var index = 0
                for (i in it.indices) {
                    if (it[i].text == DEFAULT_TASK_TYPE) {
                        index = i
                        break
                    }
                }
                sp_task_type.setSelection(index)
            }
        })
        sceneViewModel.allSceneTypeList.observe(this, Observer {
            sceneTypeAdapter.notifyDataSetChanged()
            it?.let {
                var index = 0
                for (i in it.indices) {
                    if (it[i].text == DEFAULT_SCENE_TYPE) {
                        index = i
                        break
                    }
                }
                sp_scene_type.setSelection(index)
            }
        })
        taskViewModel.topTaskList.observe(this, Observer {
            topTaskAdapter.notifyDataSetChanged()
        })
 
        userInfoViewModel.userList.observe(this, Observer { list ->
            list?.let {
                //获取上次选择的人员信息
                userInfoViewModel.getLastLeaders {
                    //更新任务结构体组长信息
                    mCurrentTask.stAssessorguid = it.first
                    mCurrentTask.assessorusername = it.second
                    mCurrentTask.assessorrealname = it.third
                    //筛选人员中的组长
                    val leaderList = mutableListOf<Userinfo>()
                    list.forEach {user ->
                        if (user.extension2 == LEADER) {
                            leaderList.add(user)
                        }
                    }
                    //初始化组长复选框选择记录
                    if (leaderCheckedArray == null && leaderList.isNotEmpty()) {
                        leaderCheckedArray = BooleanArray(leaderList.size)
                    }
                    //更新复选框选择记录
                    for (i in leaderList.indices) {
                        leaderCheckedArray!![i] = it.first.contains(leaderList[i].guid)
                    }
                    sp_team_leader.text = it.third.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
                }
                userInfoViewModel.getLastMembers {
                    mCurrentTask.executorguids = it.first
                    mCurrentTask.executorusernames = it.second
                    mCurrentTask.executorrealtimes = it.third
 
                    if (memberCheckedArray == null && list.isNotEmpty()) {
                        memberCheckedArray = BooleanArray(list.size)
                    }
                    for (i in list.indices) {
                        memberCheckedArray!![i] = it.first.contains(list[i].guid)
                    }
                    sp_team_members.text = it.third.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
                }
            }
        })
    }
 
    private fun initData() {
 
        taskViewModel.getSubTaskByDate(resultCallBack = object : ResultCallBack<List<Subtask>> {
            override fun onSuccess(result: List<Subtask>?) {
                tempTaskCount = 0
                result?.forEach {
                    if (it.name?.contains(DEFAULT_TEMP) == true) {
                        tempTaskCount++
                    }
                }
                refreshTaskName()
            }
 
            override fun onFailure() {
 
            }
        })
 
        refreshTaskName()
 
        mCurrentTask = Subtask()
 
        calS.apply {
            set(Calendar.HOUR_OF_DAY, 0)
            set(Calendar.MINUTE, 0)
            set(Calendar.SECOND, 0)
        }
        calE.apply {
            set(Calendar.HOUR_OF_DAY, 23)
            set(Calendar.MINUTE, 59)
            set(Calendar.SECOND, 59)
        }
        val dateStart = DateFormatter.dateTimeFormat2.format(calS.time)
        txt_start_time.text = dateStart
        val dateEnd = DateFormatter.dateTimeFormat2.format(calE.time)
        txt_end_time.text = dateEnd
 
        sceneViewModel.getData()
        sceneViewModel.getSceneType()
        // fixme: 2020/6/5 人员类型需要设置为枚举类
        userInfoViewModel.getUsersByType(1)//1: 监管人员
        taskViewModel.getTaskType()
        taskViewModel.getTopTask()
    }
 
    private var leaderCheckedArray: BooleanArray? = null
    private var memberCheckedArray: BooleanArray? = null
 
    /**
     * 显示任务执行者多选对话框
     */
    private fun showExecutorsDialog(mCheckedArray: BooleanArray?, userList: List<Userinfo>, onSelected: (executors: Triple<String, String, String>, firstUserGroupName: String) -> Unit) {
        if (mCheckedArray==null) return
        // 设置默认选中的选项,全为false默认均未选中
        var firstUserGroupName = ""//选择的第一位用户的组名称
 
        val multiChoiceDialog = AlertDialog.Builder(this)
        multiChoiceDialog.setTitle("选择任务执行者")
        val items = arrayOfNulls<String>(userList.size)
        for (i in items.indices) {
            items[i] = userList[i].realname
        }
        multiChoiceDialog.setMultiChoiceItems(items, mCheckedArray
        ) { _, which, isChecked ->
            mCheckedArray[which] = isChecked
        }
        multiChoiceDialog.setPositiveButton("确定"
        ) { _, _ ->
            var i = 0
            val sb = StringBuilder()
            val sb_un = StringBuilder() //用户名字符串
            val sb_rn = StringBuilder() //真实姓名字符串,用于界面显示
            mCheckedArray.forEach { isChecked ->
                if (isChecked) {
                    val user: Userinfo = userList[i]
                    //将第一个选择的用户的组名记录下来
                    if (sb.isEmpty()) {
                        firstUserGroupName = user.extension1
                    }
                    sb.append(user.guid).append(Constant.CONNECTOR)
                    sb_un.append(user.acountname).append(Constant.CONNECTOR)
                    sb_rn.append(user.realname).append(Constant.CONNECTOR)
                }
                i++
            }
            if (sb.isNotEmpty()) {
                val executors = sb.deleteCharAt(sb.length - 1).toString()
                val executors_un = sb_un.deleteCharAt(sb_un.length - 1).toString()
                val executors_rn = sb_rn.deleteCharAt(sb_rn.length - 1).toString()
                onSelected(Triple(executors, executors_un, executors_rn), firstUserGroupName)
            }
        }
        multiChoiceDialog.show()
    }
 
    private fun newScene(): Scense =
            Scense().apply {
                guid = UUIDGenerator.generate16ShortUUID()
                name = edt_scene_name.text.toString()
 
                (sp_scene_type.selectedItem as Domainitem).let {
                    typeid = it.value.toByte()
                    type = it.text
                }
                location = edt_scene_address.text.toString()
                sceneLocation?.let {
                    longitude = it.longitude
                    latitude = it.latitude
                }
                (sp_province.selectedItem as Province).let {
                    provincecode = it.provincecode
                    provincename = it.provincename
                }
                (sp_city.selectedItem as City).let {
                    citycode = it.citycode
                    cityname = it.cityname
                }
                (sp_district.selectedItem as District).let {
                    districtcode = it.districtcode
                    districtname = it.districtname
                }
//                    (sp_town.selectedItem as Town).let {
//                        towncode = it.towncode
//                        townname = it.townname
//                    }
                createdate = Date()
                updatedate = Date()
                extension1 = Domain.SCENSE_AVAILABLE
            }
 
    private fun newSubTask(scene: Scense):Subtask=
            mCurrentTask.apply {
                val topTask = sp_top_task.selectedItem as TaskVo
 
                val startTime = DateFormatter.dateTimeFormat2.parse(txt_start_time.text.toString())
                val endTime = DateFormatter.dateTimeFormat2.parse(txt_end_time.text.toString())
                val todayTask = newTempTaskViewModel.updateDayTask(topTask, startTime, endTime)
 
 
                stguid = UUIDGenerator.generate16ShortUUID()
                tguid = topTask.tguid
                if (topTask.levelnum == Domain.TASK_LEVEL_2) {
                    tsguid = todayTask.tguid
                }
                provincecode = topTask.provincecode
                provincename = topTask.provincename
                citycode = topTask.citycode
                cityname = topTask.cityname
                districtcode = topTask.districtcode
                districtname = topTask.districtname
                towncode = topTask.towncode
                townname = topTask.townname
                typeno = topTask.typeno
                type = topTask.typename
                scenseid = scene.guid
                scensename = scene.name
                planstarttime = todayTask.starttime
                planendtime = todayTask.endtime
                scenseaddress = scene.location
                deployerguid = CommonApplication.getInstance().currentUser.guid
                deployerusername = CommonApplication.getInstance().currentUser.acountname
                deployerrealname = CommonApplication.getInstance().currentUser.realname
                name = if (edt_sub_task_name.text.toString().isBlank()) {
                    scene.name + todayTask.typename
                } else {
                    edt_sub_task_name.text.toString()
                }
                status = Domain.TASK_STATUS_WAITING
            }
 
    private fun editCheck(): Boolean {
        return if (edt_scene_name.text.isNullOrBlank() || edt_scene_address.text.isNullOrBlank()) {
            toast("请填写场景地址")
            false
        }else if (sp_team_leader.text.isNullOrBlank()) {
            toast("请选择任务组长")
            false
        }else if (sp_team_members.text.isNullOrBlank()) {
            toast("请选择任务组员")
            false
        }else if ((sp_top_task.selectedItem as TaskVo).name == TaskViewModel.NO_TOP_TASK) {
            toast("当前条件下无总任务,请先去创建总任务")
            false
        } else {
            true
        }
    }
 
    @SuppressLint("SetTextI18n")
    private fun refreshTaskName(date: Date = calS.time) {
        edt_sub_task_name.setText("${DateFormatter.monthDayFormat.format(date)}${(sp_district.selectedItem as District?)?.districtname ?: ""}" +
                "$DEFAULT_TEMP${(sp_task_type.selectedItem as Domainitem?)?.text ?: ""}$DEFAULT_TASK${tempTaskCount + 1}")
    }
 
    override fun onClick(v: View?) {
        when (v?.id) {
            R.id.txt_start_time -> showDatePickerDialog(calS, true)
            R.id.txt_end_time -> {
//                showDatePickerDialog(calS, false)
            }
            R.id.img_location -> {
                startActivityForResult(Intent(this, MapLocationActivity::class.java), START_LOCATION)
            }
            R.id.sp_team_leader -> {
                userInfoViewModel.userList.value?.let { list ->
                    //筛选人员中的组长
                    val leaderList = mutableListOf<Userinfo>()
                    list.forEach {user ->
                        if (user.extension2 == LEADER) {
                            leaderList.add(user)
                        }
                    }
                    if (leaderCheckedArray == null && leaderList.isNotEmpty()) {
                        leaderCheckedArray = BooleanArray(leaderList.size)
                    }
                    showExecutorsDialog(leaderCheckedArray, leaderList) {t,g ->
                        mCurrentTask.stAssessorguid = t.first
                        mCurrentTask.assessorusername = t.second
                        mCurrentTask.assessorrealname = t.third
                        userInfoViewModel.saveLeaders(t)
                        sp_team_leader.text = t.third.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
 
                        //选择组长之后,自动查找同组的组员,添加至组员选择框中
                        val memberList = mutableListOf<Userinfo>()
                        userInfoViewModel.userList.value?.forEach {
                            if (it.extension1 == g && it.extension2 == MEMBER) {
                                memberList.add(it)
                            }
                        }
                        val userIds = StringBuilder()
                        val userNames = StringBuilder()
                        val userRealNames = StringBuilder()
                        for (i in memberList.indices) {
                            val u = memberList[i]
                            if (i > 0) {
                                userIds.append(Constant.CONNECTOR)
                                userNames.append(Constant.CONNECTOR)
                                userRealNames.append(Constant.CONNECTOR)
                            }
                            userIds.append(u.guid)
                            userNames.append(u.acountname)
                            userRealNames.append(u.realname)
                        }
                        mCurrentTask.executorguids = userIds.toString()
                        mCurrentTask.executorusernames = userNames.toString()
                        mCurrentTask.executorrealtimes = userRealNames.toString()
                        sp_team_members.text = userRealNames.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
                        userInfoViewModel.saveMembers(Triple(mCurrentTask.executorguids, mCurrentTask.executorusernames, mCurrentTask.executorrealtimes))
 
 
                        if (memberCheckedArray == null && list.isNotEmpty()) {
                            memberCheckedArray = BooleanArray(list.size)
                        }
                        for (i in list.indices) {
                            memberCheckedArray!![i] = userIds.contains(list[i].guid)
                        }
                    }
                }
            }
            R.id.sp_team_members -> {
                userInfoViewModel.userList.value?.let { list ->
                    if (memberCheckedArray == null && list.isNotEmpty()) {
                        memberCheckedArray = BooleanArray(list.size)
                    }
                    showExecutorsDialog(memberCheckedArray, list) {t, _ ->
                        mCurrentTask.executorguids = t.first
                        mCurrentTask.executorusernames = t.second
                        mCurrentTask.executorrealtimes = t.third
                        userInfoViewModel.saveMembers(t)
                        sp_team_members.text = t.third.replace(Constant.CONNECTOR.toRegex(), Constant.CONNECTOR_FOR_VIEW)
                    }
                }
            }
            R.id.txt_submit -> {
                if(editCheck()) {
                    txt_submit.isClickable = false
                    val newScene = newScene()
                    val subTask = newSubTask(newScene)
                    newTempTaskViewModel.uploadScene(newScene) {
                        newTempTaskViewModel.uploadSubTask(subTask) {
                            onBackPressed()
                        }
                    }
                }
            }
        }
    }
}