|
@@ -5,8 +5,19 @@ import com.grkj.iscs.R
|
|
|
import com.grkj.iscs.base.BasePresenter
|
|
import com.grkj.iscs.base.BasePresenter
|
|
|
import com.grkj.iscs.iview.ITicketDetailView
|
|
import com.grkj.iscs.iview.ITicketDetailView
|
|
|
import com.grkj.iscs.modbus.ModBusController
|
|
import com.grkj.iscs.modbus.ModBusController
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_ACQUIRE_KEY
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_ACQUIRE_LOCK
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_NOT_STARTED
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_READY_TO_LOCK
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_READY_TO_UNLOCK
|
|
|
|
|
+import com.grkj.iscs.model.Constants.JOB_STATUS_UNLOCKED
|
|
|
|
|
+import com.grkj.iscs.model.Constants.USER_TYPE_COLOCKER
|
|
|
|
|
+import com.grkj.iscs.model.Constants.USER_TYPE_LOCKER
|
|
|
import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
|
|
import com.grkj.iscs.model.vo.ticket.TicketDetailRespVO
|
|
|
|
|
+import com.grkj.iscs.model.vo.ticket.TicketEquipDetailRespVO
|
|
|
|
|
+import com.grkj.iscs.util.Executor
|
|
|
import com.grkj.iscs.util.NetApi
|
|
import com.grkj.iscs.util.NetApi
|
|
|
|
|
+import com.grkj.iscs.util.SPUtils
|
|
|
import com.grkj.iscs.util.ToastUtils
|
|
import com.grkj.iscs.util.ToastUtils
|
|
|
|
|
|
|
|
class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
|
|
class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
|
|
@@ -19,7 +30,9 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
|
|
|
return
|
|
return
|
|
|
}
|
|
}
|
|
|
NetApi.getTicketDetail(ticketId) {
|
|
NetApi.getTicketDetail(ticketId) {
|
|
|
- callBack.invoke(it)
|
|
|
|
|
|
|
+ Executor.runOnMain {
|
|
|
|
|
+ callBack.invoke(it)
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -42,4 +55,96 @@ class TicketDetailPresenter : BasePresenter<ITicketDetailView>() {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ fun doAction(vo: TicketDetailRespVO?) {
|
|
|
|
|
+ val loginUser = SPUtils.getLoginUser(mContext!!)
|
|
|
|
|
+ if (loginUser == null || loginUser.userId == 0L) {
|
|
|
|
|
+ ToastUtils.tip(R.string.please_login)
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (vo?.ticketId == null) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ val roleList = vo.jobTicketUserList?.filter { it.userId == loginUser.userId }
|
|
|
|
|
+
|
|
|
|
|
+ // 都判断,防止身兼数职
|
|
|
|
|
+ if (roleList?.any { it.userType == USER_TYPE_LOCKER } == true) {
|
|
|
|
|
+ NetApi.getTicketEquipDetail(vo.ticketId) {
|
|
|
|
|
+ if (it == null) {
|
|
|
|
|
+ return@getTicketEquipDetail
|
|
|
|
|
+ }
|
|
|
|
|
+ doLockAction(loginUser.userId!!, vo, it)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if (roleList?.any { it.userType == USER_TYPE_COLOCKER } == true) {
|
|
|
|
|
+ NetApi.getTicketEquipDetail(vo.ticketId) {
|
|
|
|
|
+ if (it == null) {
|
|
|
|
|
+ return@getTicketEquipDetail
|
|
|
|
|
+ }
|
|
|
|
|
+ doCoLockerAction(loginUser.userId!!, vo, it)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 上锁人操作
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun doLockAction(userId: Long, ticketDetail: TicketDetailRespVO, equipDetail: TicketEquipDetailRespVO) {
|
|
|
|
|
+ val role = ticketDetail.jobTicketUserList?.find { it.userId == userId && it.userType == USER_TYPE_LOCKER }
|
|
|
|
|
+ if (role == null) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ when(role.jobStatus) {
|
|
|
|
|
+ JOB_STATUS_NOT_STARTED -> {
|
|
|
|
|
+ // TODO 取锁具、取钥匙
|
|
|
|
|
+ val needLockCount = equipDetail.ticketLockVOList?.filter { it.lockId == null }?.size ?: 0
|
|
|
|
|
+ BusinessManager.checkEquipCount(needLockCount) { keyPair, lockMap ->
|
|
|
|
|
+ // 机柜锁具数量不够
|
|
|
|
|
+ if (keyPair == null) {
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_ACQUIRE_LOCK -> {
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_ACQUIRE_KEY -> {
|
|
|
|
|
+ // TODO
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_READY_TO_LOCK -> {
|
|
|
|
|
+ // TODO 不用做
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_READY_TO_UNLOCK -> {
|
|
|
|
|
+ // TODO 弹框,由钥匙工作票自动更新
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_UNLOCKED -> {
|
|
|
|
|
+ ToastUtils.tip(R.string.ticket_is_locker_part_finished)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * 共锁人操作
|
|
|
|
|
+ */
|
|
|
|
|
+ private fun doCoLockerAction(userId: Long, ticketDetail: TicketDetailRespVO, equipDetail: TicketEquipDetailRespVO) {
|
|
|
|
|
+ val role = ticketDetail.jobTicketUserList?.find { it.userId == userId && it.userType == USER_TYPE_COLOCKER }
|
|
|
|
|
+ if (role == null) {
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+ when(role.jobStatus) {
|
|
|
|
|
+ JOB_STATUS_NOT_STARTED -> {
|
|
|
|
|
+ // TODO 调用更新接口
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_READY_TO_UNLOCK -> {
|
|
|
|
|
+ // TODO 调用更新接口
|
|
|
|
|
+ }
|
|
|
|
|
+ JOB_STATUS_UNLOCKED -> {
|
|
|
|
|
+ ToastUtils.tip(R.string.ticket_is_colocker_part_finished)
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|