model = new \app\common\model\Todo(); } //工单列表 public function lists(){ $page =input('page',1); $size =input('size',10); $type =input('type',0); $list = $this->model->lists($page,$size,$this->userId,$this->orgId,$type); HelpHander::success($list); } //工单详情 public function detail(){ $todoId =input('todoId',0); $info = $this->model->apiDetail($todoId); HelpHander::success($info); } // 处理驳回工单 public function createNtbo(){ $todoId = input('todoId'); $toUserIdArray =input('toUserIdArray'); $todoContent = input('todoContent'); $typeId = input('typeId/d',0); $addressId = input('addressId/d',0); if(!$toUserIdArray){ HelpHander::error('未选择执行人'); } $ret = $this->model->createNtbo($todoId,$toUserIdArray,$todoContent,$this->userId,$typeId,$addressId); if(!$ret){ HelpHander::error($this->model->getError()); } HelpHander::success([],'操作成功'); } // 修改状态 2=员工已经接单 4=被驳回 6=调度取消 public function updateState(){ $todoId = input('todoId/d',0); if($todoId <= 0){ HelpHander::error('参数错误'); } $todoMode =input('todoMode',0); if(!in_array($todoMode,[2,4,6])){ HelpHander::error('参数错误'); } $nodoReason = input('nodoReason',''); if($todoMode == 6 && !$nodoReason){ HelpHander::error('取消原因必需填写'); } $rejectVoice = input('rejectVoice',''); $ret = $this->model->updateState($todoId,$todoMode,$nodoReason,$this->userId,$rejectVoice); if(!$ret){ HelpHander::error($this->model->getError()); } HelpHander::success([],'操作成功'); } //工单完成 public function finishTodo(){ $todoId =input('todoId/d'); if($todoId <= 0){ HelpHander::error('参数错误'); } $todoMode = input('todoMode'); if(!in_array($todoMode,[3,5])){ HelpHander::error('参数错误'); } $content = input('content'); $consItems = input('consItems'); $sign = input('sign'); $images = input('img'); if(!$content){ HelpHander::error('未填写备注'); } $ret = $this->model->finishTodo($todoId,$todoMode,$content,$this->userId,$images,$consItems,$sign); if(!$ret){ HelpHander::error($this->model->getError()); } HelpHander::success([],'操作成功'); } //获取物品列表 public function getMateGoods(){ $page =input('page',1); $size =input('size',10); $title =input('title','','trim'); $list = $this->model->getMateGoods($this->orgId,$this->userId,$title,$page,$size); HelpHander::success($list,'操作成功'); } //收藏/取消收藏物品 public function favGoods(){ $type = input('type/d',0); $goodsId = input('goodsId/d',0); if(empty($goodsId)){ HelpHander::error('物品不能为空'); } $res = $this->model->favGoods($this->userId,$type,$goodsId); $res?HelpHander::success([],'操作成功'):HelpHander::error('操作失败'); } //收藏列表 public function favList(){ $title =input('title','','trim'); $list = $this->model->favList($this->userId,$title); HelpHander::success($list,'操作成功'); } // 工单挂起 public function pause(){ $id = input('id/d',0); $reason = input('reason','','trim'); if($id <= 0){ HelpHander::error('参数错误'); } if(!$reason){ HelpHander::error('未填写挂起原因'); } $todo = Db::name('todo')->where('id',$id)->where('del',0)->find(); if(!$todo||$todo['to_user_id'] != $this->userId){ HelpHander::error('工单不存在'); } if($todo['todo_mode'] != 2){ HelpHander::error('该状态不能挂起'); } if($todo['work_type_mode'] != 1){ HelpHander::error('该订单不能挂起'); } if($todo['pause'] == 1){ HelpHander::error('该订单已挂起'); } $data = [ 'pause' => 1, 'pause_time' => date('Y-m-d H:i:s'), 'pause_reason' => $reason ]; if($todo['pause_time']){ unset($data['pause_time']); } $ret = Db::name('todo')->where('id',$id)->update($data); // Db::name('todo_puase') // ->insert([ // 'todo_id'=>$id, // 'reason'=>$reason, // 'create_time'=>getTime(), // ]); if(!$ret){ HelpHander::error('操作失败'); } HelpHander::success([],'操作成功'); } //添加挂起进度 public function addTodoPuase(){ $id = input('id/d',0); $reason = input('reason','','trim'); if($id <= 0){ HelpHander::error('参数错误'); } if(!$reason){ HelpHander::error('未填写挂起原因'); } $todo = Db::name('todo')->where('id',$id)->where('del',0)->find(); if(!$todo||$todo['to_user_id'] != $this->userId){ HelpHander::error('工单不存在'); } if($todo['work_type_mode'] != 1){ HelpHander::error('该订单不能挂起'); } if($todo['pause'] != 1){ HelpHander::error('该订单未挂起'); } $ret = Db::name('todo_puase') ->insert([ 'todo_id'=>$id, 'reason'=>$reason, 'create_time'=>getTime(), ]); if(!$ret){ HelpHander::error('操作失败'); } HelpHander::success([],'操作成功'); } //获取待处理已完成已评价工单数量 public function getOrdersCount(){ $task = Db::name('task') ->where('user_id', $this->userId) ->where('org_id', $this->orgId) ->where('type',1) ->order('id','desc') ->select(); $list = []; foreach ($task as $k => $value) { if ($value['type'] == 1) {//工单 $todoInfo = Db::name('todo') ->where('id', $value['bus_id']) ->find(); if (!empty($todoInfo)) { $list[] = $todoInfo; } } elseif($value['type'] == 2) {//巡更巡检 $patrolInfo = Db::name('patrol_task') ->where('id', $value['bus_id']) ->find(); if (!empty($patrolInfo)) { $list[] = $patrolInfo; } }elseif ($value['type'] == 3){ // 日常工作 $dailyInfo = Db::name('daily_task') ->where('id', $value['bus_id']) ->find(); if (!empty($dailyInfo)) { $list[] = $dailyInfo; } }elseif ($value['type'] == 4){ // 设备台账 $deviceInfo = Db::name('device_task') ->where('id', $value['bus_id']) ->find(); if (!empty($deviceInfo)) { $list[] = $deviceInfo; } } } $dcl = count($list); $map[] = ['to_user_id','=',$this->userId]; $map[] = ['org_id','=',$this->orgId]; $map[] = ['del','=',0]; $a1 = Db::name('todo') ->where($map) ->where('todo_mode',3) ->count(); $ywc = $a1?$a1:0; $ypj = Db::name('todo') ->alias('a') ->join('orders b','b.id=a.order_id','left') ->where('a.to_user_id',$this->userId) ->where('a.del',0) ->where('b.del',0) ->where('a.org_id',$this->orgId) ->where('b.order_mode',6) ->count(); $data = [ 'dcl'=>$dcl, 'ywc'=>$ywc, 'ypj'=>$ypj, 'pfdd'=>model('Orders')->orderCount($this->userId,$this->orgId,0), 'org_grab_order'=>(int)getOrgGrabOrder($this->userId,$this->orgId), ]; HelpHander::success($data); } //工单挂起结束 public function pauseEnd(){ $id = input('id/d',0); if($id <= 0){ HelpHander::error('参数错误'); } $todo = Db::name('todo')->where('id',$id)->where('del',0)->find(); if(!$todo||$todo['to_user_id'] != $this->userId){ HelpHander::error('工单不存在'); } if($todo['todo_mode'] != 2){ HelpHander::error('该状态不能挂起'); } if($todo['work_type_mode'] != 1){ HelpHander::error('该订单不能挂起'); } if($todo['pause'] != 1){ HelpHander::error('该订单未挂起不能结束'); } $ret = Db::name('todo')->where('id',$id)->update([ 'pause' => 2, 'pause_end' => date('Y-m-d H:i:s'), ]); Db::name('todo_puase') ->insert([ 'todo_id'=>$id, 'reason'=>'挂起结束', 'create_time'=>getTime(), ]); if(!$ret){ HelpHander::error('操作失败'); } HelpHander::success([],'操作成功'); } //报修协同 public function addInviteUser(){ $toUserIds = input('toUserIds','','trim'); $todoId = input('todoId',''); $todo = Db::name('todo')->where('del',0)->where('id',$todoId)->find(); if(!$todo){ HelpHander::error('订单不存在'); } if($todo['work_type_mode'] != 1){ HelpHander::error('其他订单不能协同'); } if(!$toUserIds){ HelpHander::error('协同人不能为空'); } $order = Db::name('orders')->where('id',$todo['order_id'])->where('del',0)->find(); if(!$order){ HelpHander::error('订单不存在'); } $toUserIds = explode(',',$toUserIds); Db::startTrans(); try { $xtUserIds = Db::name('todo') ->where('order_id',$todo['order_id']) ->where('del',0) ->column('to_user_id'); foreach ($toUserIds as $k=>$v){ if(!$v){ continue; } if(in_array($v,$xtUserIds)){ HelpHander::error('无法邀请人员,他已在此任务中'); } $data = [ 'order_id'=>$todo['order_id'], 'to_user_id'=>$v, 'todo_content'=>'', 'org_id'=>$this->orgId, 'create_user_id'=>$this->userId, 'create_time'=>date('Y-m-d H:i:s'), 'confirm_time'=>date('Y-m-d H:i:s'), 'todo_mode'=>2, 'work_type_mode'=>1, 'create_yyyy'=>date('Y'), 'create_yyyymm'=>date('Ym'), 'create_yyyymmdd'=>date('Ymd'), ]; $todoId = Db::name('todo')->insertGetId($data); if(!$todoId){ exception('操作失败'); } $taskData = [ 'org_id'=>$this->orgId, 'user_id'=>$v, 'type'=>1, 'start_time'=>date('Y-m-d H:i:s'), 'create_time'=>date('Y-m-d H:i:s'), 'bus_id'=>$todoId, ]; $res = Db::name('task') ->insert($taskData); if(!$res){ exception('操作失败1'); } send_jpush([$v],AppMsg::PUSH_WORKER_ORDER_SEND,'',['id'=>$todoId]); } Db::commit(); HelpHander::success([],'操作成功'); } catch (Exception $e) { Db::rollback(); HelpHander::error($e->getMessage()); } } }