| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015 | <?phpnamespace app\api\controller\v1;use app\api\controller\Base;use app\common\model\Config;use app\hander\HelpHander;use think\App;use think\Db;use think\Exception;use think\exception\Handle;class Orders extends Base {    public function __construct(App $app = null) {        parent::__construct($app);        $this->model = new \app\common\model\Orders();    }    public function lists() {        $page = input('page', 1);        $size = input('size', 10);        $type = input('curOrderMode', 0);        $list = $this->model->lists($page, $size, $type, $this->userId, $this->orgId);        HelpHander::success($list);    }    public function detail() {        $orderId = input('orderId', 0);        $info = $this->model->detail($orderId);        HelpHander::success($info);    }    //获取部门    public function getDep() {        $list = model('dep')->getList($this->orgId);        HelpHander::success($list);    }    //发起订单    public function add() {        $json = [            'user_id'=>$this->userId,            'org_id'=>$this->orgId,            'dep_id'=>input('depId/d',0),            'images'=>input('images',''),            'videos'=>input('videos',''),            'voices'=>input('voices',''),            'content'=>input('content',''),            'work_type_mode'=>input('workTypeMode/d',1),            'source_type'=>input('sourceType/d',1),            'type_id'=>input('typeId/d',0),            'address_id'=>input('addressId/d',0),            'start'=>input('start',''),            'end'=>input('end',''),            'xq_time'=>input('xqTime',''),            'ywc_time'=>input('ywcTime',''),            'type'=>input('type',''),            'device_id'=>input('deviceId',''),            'priority'=>input('priority',''),            'bed_number'=>input('bedNumber',''),            'ba_number'=>input('baNumber',''),            'p_name'=>input('pName',''),            'gender'=>input('gender',''),            'back'=>input('back',''),            'name'=>input('name',''),            'phone'=>input('phone',''),            'isSpontaneous'=>input('isSpontaneous',0),            'repair_priority'=>input('repairPriority',2),            'way_addr'=>input('wayAddr','','trim'),        ];        $res = $this->model->addSave($json);        if (!$res) {            HelpHander::error($this->model->getError());        }        HelpHander::success('操作成功');    }    //调度发单    public function dispatchAdd() {        $json = [            'user_id'=>$this->userId,            'org_id'=>$this->orgId,            'dep_id'=>input('depId/d',0),            'images'=>input('images',''),            'videos'=>input('videos',''),            'voices'=>input('voices',''),            'content'=>input('content',''),            'work_type_mode'=>input('workTypeMode/d',1),            'userType'=>input('userType/d',0),            'to_user_id'=>input('toUserId',''),            'to_roles_id'=>input('toRolesId/d',0),            'type_id'=>input('typeId/d',0),            'address_id'=>input('addressId/d',0),            'source_type'=>input('sourceType/d',1),            'todo_content'=>input('todoContent',''),            'start'=>input('start',''),            'end'=>input('end',''),            'xq_time'=>input('xqTime',''),            'ywc_time'=>input('ywcTime',''),            'type'=>input('type',''),            'device_id'=>input('deviceId',''),            'priority'=>input('priority',''),            'bed_number'=>input('bedNumber',''),            'ba_number'=>input('baNumber',''),            'p_name'=>input('pName',''),            'gender'=>input('gender',''),            'back'=>input('back',''),            'name'=>input('name',''),            'phone'=>input('phone',''),            'daily_record_id'=>input('dailyRecordId/d',0), // 品质整改,日常工作记录id            'repair_priority'=>input('repairPriority',1),            'quality_type'=>input('qualityType/d',0),            'quality_cate'=>input('qualityCate/d',0),            'informer_user'=>input('informerUser/d',0),            'way_addr'=>input('wayAddr','','trim'),        ];        $res = $this->model->addSave($json, 1);        if (!$res) {            HelpHander::error($this->model->getError());        }        HelpHander::success('操作成功');    }    //分配订单    public function send(){        $json = [            'org_id'=>$this->orgId,            'id'=>input('id/d',0),            'userType'=>input('userType/d',0),            'to_user_id'=>input('toUserId',''),            'to_roles_id'=>input('toRolesId/d',0),            'type_id'=>input('typeId/d',0),            'address_id'=>input('addressId/d',0),            'todo_content'=>input('todoContent',''),            'work_type_mode'=>input('workTypeMode/d',-1),            'ba_number'=>input('baNumber','','trim'),            'back'=>input('back/d',0),            'bed_number'=>input('bedNumber','','trim'),            'device_id'=>input('deviceId/d',0),            'start'=>input('start/d',0),            'end'=>input('end/d',0),            'gender'=>input('gender/d',0),            'name'=>input('name','','trim'),            'phone'=>input('phone','','trim'),            'p_name'=>input('pName','','trim'),            'priority'=>input('priority/d',0),            'type'=>input('type/d',0),            'xq_time'=>input('xqTime','','trim'),            'ywc_time'=>input('ywcTime','','trim'),            'repair_priority'=>input('repairPriority','','trim'),        ];        $res = model('orders')->send($json['id'],$this->userId,$json);        if(!$res){            HelpHander::error(model('orders')->getError());        }        HelpHander::success('操作成功');    }    //转单分配订单    public function zdSend(){        $json = [            'org_id'=>$this->orgId,            'id'=>input('id/d',0),            'type_id'=>input('typeId/d',0),            'address_id'=>input('addressId/d',0),            'todo_content'=>input('todoContent',''),            'work_type_mode'=>input('workTypeMode/d',-1),            'ba_number'=>input('baNumber','','trim'),            'back'=>input('back/d',0),            'bed_number'=>input('bedNumber','','trim'),            'device_id'=>input('deviceId/d',0),            'start'=>input('start/d',0),            'end'=>input('end/d',0),            'gender'=>input('gender/d',0),            'name'=>input('name','','trim'),            'phone'=>input('phone','','trim'),            'p_name'=>input('pName','','trim'),            'priority'=>input('priority/d',0),            'type'=>input('type/d',0),            'xq_time'=>input('xqTime','','trim'),            'ywc_time'=>input('ywcTime','','trim'),            'repair_priority'=>input('repairPriority','','trim'),        ];        $res = model('orders')->zd_send($json['id'],$json);        if(!$res){            HelpHander::error(model('orders')->getError());        }        HelpHander::success('操作成功');    }    //任务栏工单列表    public function queryOrderList() {        $page = input('page', 1);        $size = input('size', 10);        $type = input('type', 0);        $offset = ($page-1)*$size;        $workType = [            1 => '报修工单',            2 => '保洁工单',            3 => '运送工单',            4 => '应急工单',            15 => '品质整改',            0 => '一键呼叫',        ];        $patrolStatus = [            0 => '未执行',            1 => '执行中',            2 => '已完成',            3 => '未完成',            5 => '中断',        ];        $list = [];        $orgGrabOrder = getOrgGrabOrder($this->userId,$this->orgId);        if(in_array($type,[1,2])){            if($type==1){//已完成                $map[] = ['todo_mode','=',3];                $map[] = ['to_user_id','=',$this->userId];                $map[] = ['del','=',0];                $map[] = ['org_id','=',$this->orgId];                $todoList = Db::name('todo')                    ->where($map)                    ->limit($offset,$size)                    ->order('id','desc')                    ->select();             }elseif ($type==2){//已评价                $todoList = Db::name('orders')                    ->alias('a')                    ->join('todo b','a.id=b.order_id')                    ->where('a.order_mode',6)                    ->where('a.del',0)                    ->where('a.org_id',$this->orgId)                    ->where('b.to_user_id',$this->userId)                    ->field('b.*')                    ->group('b.order_id')                    ->limit($offset,$size)                    ->order('b.id','desc')                    ->select();            }            foreach ($todoList as $k=>$todoInfo){                $data['todo_id'] = $todoInfo['id'];                $data['sn'] = $todoInfo['sn'];                $data['title'] = $workType[$todoInfo['work_type_mode']];                $data['realName'] = Db::name('user')                    ->where('id', $todoInfo['create_user_id'])                    ->value('real_name');                $data['create_time'] = $todoInfo['create_time'];                $data['status_txt'] = Db::name('todo_mode')                    ->where('id', $todoInfo['todo_mode'])                    ->value('out_content');                $data['start_time'] = "";                $data['end_time'] = "";                $data['type'] = 1;                $data['bus_id'] = 0;                $orderInfo = Db::name('orders')                    ->where('id',$todoInfo['order_id'])                    ->find();                if($orderInfo['from'] > 0){                    $from = '';                    if($orderInfo['from'] == 1){                        $from = '一键呼叫';                    }else if($orderInfo['from'] == 2){                        $from = '隐患预警';                    }else if($orderInfo['from'] == 3){                        $from = '投诉';                    }                    $data['title'] = $data['title'].'('.$from.')';                }                $data['patrol_mode'] = 0;                $data['status'] = $todoInfo['todo_mode'];                $data['work_type_mode'] = $orderInfo['work_type_mode'];                if($data['work_type_mode'] == 1 && $todoInfo['todo_mode'] == 2 && $todoInfo['pause'] == 1){ //维修,检查是否挂起                    $data['status_txt'] = '已挂起';                }                $data['addressTitle'] = "";                $data['typeName'] = "";                $data['content'] = $orderInfo['content']?$orderInfo['content']:'';                $data['startName'] = "";                $data['endName'] = "";                if($orderInfo['work_type_mode']==1){                    $typeInfo = (new \app\common\model\OrderType())                        ->getTypeByOrderId($orderInfo['id']);                    if($typeInfo){                        $order_type = $typeInfo && isset($typeInfo['title']) ? $typeInfo['title'] : '';                        $order_type_matter = $typeInfo && isset($typeInfo['child_title']) ? $typeInfo['child_title'] : '';                        $data['typeName'] = $order_type.'/'.$order_type_matter;                        $data['addressTitle'] = $typeInfo ? $typeInfo['address_title'] : '';                    }                }                $data['color'] ='';                if($orderInfo['work_type_mode']==3){                    $oc = Db::name('order_convey')                        ->where('order_id', $orderInfo['id'])                        ->find();                    if($oc){                        $start_name = Db::name('address')->where('id',$oc['start'])                            ->value('title');                        $end_name = Db::name('address')->where('id',$oc['end'])                            ->value('title');                        $data['startName'] = $start_name?$start_name:"";                        $data['endName'] = $end_name?$end_name:"";                        $convey = Db::name('convey_cate')                            ->alias('oc')                            ->join('time ot', 'ot.id = oc.time_id')                            ->where('oc.id', $oc['type'])                            ->field('ot.*')                            ->find();                        $createtime = strtotime($orderInfo['create_time']);                        $curtime = time();                        $ct = round(($curtime - $createtime) / 60);                        $ss = 0;                        if ($ct >= $convey['yy_time']) {                            if ($ct >= $convey['yy_time'] && $ct < $convey['bz_time']) {                                $ss = 1;                            } else {                                if ($ct >= $convey['bz_time'] && $ct < $convey['jg_time']) {                                    $ss = 2;                                } else {                                    if ($ct >= $convey['jg_time'] && $ct < $convey['wjjg_time']) {                                        $ss = 3;                                    } else {                                        $ss = 4;                                    }                                }                            }                        }//                            $delay = 0;//                            $delays = Db::name('order_delay')//                                ->where('order_id', $orderInfo['id'])//                                ->select();//                            $delays = $delays ? $delays : [];//                            foreach ($delays as $vv) {//                                if ($vv['status'] == 0) {//                                    $delay = 1;//                                }//                            }//                            if ($delay == 1) {//                                $status = 3;//                            } else {//                                if ($orderInfo['order_mode'] == 1) {//                                    $status = 1;//                                } else {//                                    $status= 2;//                                }//                            }                        if($ss == 1){                            $data['color'] = '#acb3d8';                        }else if($ss == 2){                            $data['color'] = '#fff500';                        }else if($ss == 3){                            $data['color'] = '#ec891a';                        }else if($ss == 4){                            $data['color'] = '#e45946';                        }else{                            $data['color'] = '';                        }                    }                }                $data['priority'] = 0;                $list[] = $data;            }            $r = [                'list' => $list,                'count' => count($list),                'org_grab_order'=>$orgGrabOrder?(int)$orgGrabOrder:0            ];            HelpHander::success($r);        }        $task = Db::name('task')            ->where('user_id', $this->userId)            ->where('org_id', $this->orgId)            ->where('type', 1)            ->limit($offset,$size)            ->order(['priority'=>'desc','id'=>'desc'])            ->select();        foreach ($task as $k => $value) {            if ($value['type'] == 1) {//工单                $todoInfo = Db::name('todo')                    ->where('id', $value['bus_id'])                    ->where('del',0)                    ->find();                if (!empty($todoInfo)) {                    $data['sn'] = $todoInfo['sn'];                    $data['title'] = $workType[$todoInfo['work_type_mode']];                    $data['realName'] = Db::name('user')                        ->where('id', $todoInfo['create_user_id'])                        ->value('real_name');                    $data['create_time'] = $todoInfo['create_time'];                    $data['status_txt'] = Db::name('todo_mode')                        ->where('id', $todoInfo['todo_mode'])                        ->value('out_content');                    $data['start_time'] = "";                    $data['end_time'] = "";                    $data['type'] = 1;                    $data['bus_id'] = $value['bus_id'];                    $orderInfo = Db::name('orders')                        ->where('id',$todoInfo['order_id'])                        ->find();                    if($orderInfo['from'] > 0){                        $from = '';                        if($orderInfo['from'] == 1){                            $from = '一键呼叫';                        }else if($orderInfo['from'] == 2){                            $from = '隐患预警';                        }else if($orderInfo['from'] == 3){                            $from = '投诉';                        }                        $data['title'] = $data['title'].'('.$from.')';                    }                    $data['patrol_mode'] = 0;                    $data['status'] = $todoInfo['todo_mode'];                    $data['work_type_mode'] = $orderInfo['work_type_mode'];                    if($data['work_type_mode'] == 1 && $todoInfo['todo_mode'] == 2 && $todoInfo['pause'] == 1){ //维修,检查是否挂起                        $data['status_txt'] = '已挂起';                    }                    $data['addressTitle'] = "";                    $data['typeName'] = "";                    $data['content'] = $orderInfo['content']?$orderInfo['content']:'';                    $data['startName'] = "";                    $data['endName'] = "";                    if($orderInfo['work_type_mode']==1){                        $typeInfo = (new \app\common\model\OrderType())                            ->getTypeByOrderId($orderInfo['id']);                        if($typeInfo){                            $order_type = $typeInfo && isset($typeInfo['title']) ? $typeInfo['title'] : '';                            $order_type_matter = $typeInfo && isset($typeInfo['child_title']) ? $typeInfo['child_title'] : '';                            $data['typeName'] = $order_type.'/'.$order_type_matter;                            $data['addressTitle'] = $typeInfo ? $typeInfo['address_title'] : '';                        }                    }                    $data['color'] ='';                    $data['start_status'] = 0;                    if($orderInfo['work_type_mode']==3){                        $oc = Db::name('order_convey')                            ->where('order_id', $orderInfo['id'])                            ->find();                        if($oc){                            $start_name = Db::name('address')->where('id',$oc['start'])                                ->value('title');                            $end_name = Db::name('address')->where('id',$oc['end'])                                ->value('title');                            $data['startName'] = $start_name?$start_name:"";                            $data['endName'] = $end_name?$end_name:"";                            $convey = Db::name('convey_cate')                                ->alias('oc')                                ->join('time ot', 'ot.id = oc.time_id')                                ->where('oc.id', $oc['type'])                                ->field('ot.*')                                ->find();                            $createtime = strtotime($orderInfo['create_time']);                            $curtime = time();                            $ct = round(($curtime - $createtime) / 60);                            $ss = 0;                            if ($ct >= $convey['yy_time']) {                                if ($ct >= $convey['yy_time'] && $ct < $convey['bz_time']) {                                    $ss = 1;                                } else {                                    if ($ct >= $convey['bz_time'] && $ct < $convey['jg_time']) {                                        $ss = 2;                                    } else {                                        if ($ct >= $convey['jg_time'] && $ct < $convey['wjjg_time']) {                                            $ss = 3;                                        } else {                                            $ss = 4;                                        }                                    }                                }                            }//                            $delay = 0;//                            $delays = Db::name('order_delay')//                                ->where('order_id', $orderInfo['id'])//                                ->select();//                            $delays = $delays ? $delays : [];//                            foreach ($delays as $vv) {//                                if ($vv['status'] == 0) {//                                    $delay = 1;//                                }//                            }//                            if ($delay == 1) {//                                $status = 3;//                            } else {//                                if ($orderInfo['order_mode'] == 1) {//                                    $status = 1;//                                } else {//                                    $status= 2;//                                }//                            }                            if($ss == 1){                                $data['color'] = '#acb3d8';                            }else if($ss == 2){                                $data['color'] = '#fff500';                            }else if($ss == 3){                                $data['color'] = '#ec891a';                            }else if($ss == 4){                                $data['color'] = '#e45946';                            }else{                                $data['color'] = '';                            }                        }                        $todo_convey = Db::name('todo_convey')                            ->where('todo_id',$todoInfo['id'])                            ->find();                        $start_status = isset($todo_convey['start_time'])&& !empty($todo_convey['start_time'])?1:0;                        $data['start_status'] = $start_status;                    }                    $data['priority'] = $value['priority'];                    $list[] = $data;                }            } elseif($value['type'] == 2) {//巡更巡检                $patrolInfo = Db::name('patrol_task')                    ->where('id', $value['bus_id'])                    ->find();                if (!empty($patrolInfo)) {                    $title = Db::name('patrol_mode')                        ->where('id', $patrolInfo['patrol_mode'])                        ->value('name');                    $data['title']  = $patrolInfo['title']?$title.'-'.$patrolInfo['title']:$title;                    $data['realName'] = "";                    $data['create_time'] = $patrolInfo['create_time'];                    $data['status_txt'] = $patrolStatus[$patrolInfo['status']];                    $data['start_time'] = $patrolInfo['start_time'];                    $data['end_time'] = $patrolInfo['end_time'];                    $data['bus_id'] = $value['bus_id'];                    $data['type'] = 2;                    $data['work_type_mode'] = 0;                    $data['patrol_mode'] = $patrolInfo['patrol_mode'];                    $data['status'] = $patrolInfo['status'];                    $data['addressTitle'] = "";                    $data['typeName'] = "";                    $data['content'] = '';                    $data['startName'] = "";                    $data['endName'] = "";                    $data['priority'] = $value['priority'];                    $list[] = $data;                }            }elseif ($value['type'] == 3){ // 日常工作                $dailyInfo = Db::name('daily_task')                    ->where('id', $value['bus_id'])                    ->find();                if (!empty($dailyInfo)) {                    $data['title'] = '日常工作';                    $data['realName'] = "";                    $data['create_time'] = $dailyInfo['create_time'];                    $data['status_txt'] = $patrolStatus[$dailyInfo['status']];                    $data['start_time'] = $dailyInfo['start_time'];                    $data['end_time'] = $dailyInfo['end_time'];                    $data['bus_id'] = $value['bus_id'];                    $data['type'] = 3;                    $data['work_type_mode'] = 0;                    $data['patrol_mode'] = 0;                    $data['status'] = $dailyInfo['status'];                    $data['addressTitle'] = "";                    $data['typeName'] = "";                    $data['content'] = '';                    $data['startName'] = "";                    $data['endName'] = "";                    $data['priority'] = $value['priority'];                    $list[] = $data;                }            }elseif ($value['type'] == 4){ // 设备台账                $deviceInfo = Db::name('device_task')                    ->where('id', $value['bus_id'])                    ->find();                if (!empty($deviceInfo)) {                    $data['title'] = $deviceInfo['title']? '设备维保'.'-'.$deviceInfo['title']:'设备维保';                    $data['realName'] = "";                    $data['create_time'] = $deviceInfo['create_time'];                    $data['status_txt'] = $patrolStatus[$deviceInfo['status']];                    $data['start_time'] = $deviceInfo['start_time'];                    $data['end_time'] = $deviceInfo['end_time'];                    $data['bus_id'] = $value['bus_id'];                    $data['type'] = 4;                    $data['work_type_mode'] = 0;                    $data['patrol_mode'] = 0;                    $data['status'] = $deviceInfo['status'];                    $data['addressTitle'] = "";                    $data['typeName'] = "";                    $data['content'] = '';                    $data['startName'] = "";                    $data['endName'] = "";                    $data['priority'] = $value['priority'];                    $list[] = $data;                }            }        }        $r = [            'list' => $list,            'count' => count($list),            'org_grab_order'=>$orgGrabOrder?(int)$orgGrabOrder:0        ];        HelpHander::success($r);    }    //抢单列表    public function queryGrabOrders(){        $page = input('page', 1);        $size = input('size', 10);        $list = $this->model->queryGrabOrders($page,$size,$this->userId,$this->orgId);        HelpHander::success($list);    }    // 抢单    public function grabOrders(){        $orderId = input('orderId');        $orderType = input('orderType/d',0);        $addressId = input('addressId/d',0);        $order = Db::name('orders')            ->where('id',$orderId)            ->where('org_id',$this->orgId)            ->find();        if($order['work_type_mode']==1 && empty($orderType)){            HelpHander::error('报修事项不能为空');        }        if(!$order || $order['del'] == 1){            HelpHander::error('订单不存在');        }        if($order['order_mode'] != 1){            HelpHander::error('订单已被处理');        }        $off = (new Config())->getConfig('org_grab_order'.$order['work_type_mode'],$this->orgId);        if($off !=1){            HelpHander::error('抢单模式未开启');        }        $ret = $this->model->grabOrdersEdit($order,$this->userId,$orderType,$addressId);        if(!$ret){            HelpHander::error($this->model->getError());        }        HelpHander::success([],'操作成功');    }    // 扫标本    public function scanSample(){        $orderId = input('orderId/d',0);        $barcode = input('barcode');        $addrId = input('addrId/d',0);        if(!$barcode ){            HelpHander::error('未传标本码');        }        if(!$orderId&&!$addrId){            HelpHander::error('参数错误');        }        if($orderId > 0){            $orderConvey = Db::name('order_convey')                ->where('order_id',$orderId)                ->find();            $addrId = $orderConvey['start'];        }        $res =  Db::name('order_convey_lis')            ->where('org_id',$this->orgId)            ->where('order_id',$orderId)            ->where('barcode',$barcode)            ->where('user_id',$this->userId)            ->where('addr_id',$addrId)           ->find();        Db::startTrans();        try{            if($res){               $res =  Db::name('order_convey_lis')                    ->where('id',$res['id'])->update([                    'create_time' => date('Y-m-d H:i:s')                ]);            }else{                $res = Db::name('order_convey_lis')                    ->insert([                    'order_id' => $orderId,                    'barcode' => $barcode,                    'user_id' => $this->userId,                    'create_time' => date('Y-m-d H:i:s'),                    'org_id' => $this->orgId,                    'addr_id' => $addrId                ]);            }            if(!$res){                exception('操作失败');            }            Db::commit();            HelpHander::success([],'操作成功');        }catch (Exception $e){            Db::rollback();            HelpHander::error($e->getMessage());        }    }    //用户订单列表    public function queryUserOrdersByMode(){        $page = input('page', 1);        $size = input('size', 10);        $mode = input('mode', 0);        $type = input('type', 0);        $ret=$this->model->userOrdersByMode($page,$size,$this->userId,$mode,$type,$this->orgId);        HelpHander::success($ret);    }    //用户取消订单    public function updateOrderModeByUser(){        $orderId = input('orderId', 0);        $reason = input('reason', '','trim');        $ret=$this->model->cancel($orderId,$this->userId,1,$reason);        $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());    }    //调度取消订单    public function updateOrderModeByDispatch(){        $orderId = input('orderId', 0);        $reason = input('reason', '');        if(!$reason){            HelpHander::error('请填写取消原因');        }        $ret=$this->model->cancel($orderId,$this->userId,2,$reason);        $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());    }    //调度完成订单    public function finishOrder(){        $orderId = input('orderId', 0);        $ret=$this->model->finish($orderId);        $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());    }    //所有订单    public function queryAllOrder(){        $page = input('page', 1);        $size = input('size', 10);        $workTypeMode = input('workTypeMode/d',-1);        $currOrderMode = input('currOrderMode');        $beginTime = input('beginTime');        $endTime = input('endTime');        $dept = input('dept/d',0);        $list = $this->model->queryAllOrder($this->orgId,$page,$size,$workTypeMode,$currOrderMode,$beginTime,$endTime,$dept);        HelpHander::success($list);    }    // 工人添加下一站地址    public function addConveyEnd(){        $orderId = input('orderId/d',0);        $addrId = input('addrId/d',0);        $ret = $this->model->addConveyEnd($this->orgId,$orderId,$addrId);        if(!$ret){            HelpHander::error($this->model->getError());        }        HelpHander::success([],'成功');    }    // 支付运送病人    public function pay(){        $id = input('id/d',0);        $remark = input('remark','','trim');        $info = Db::name('order_convey_pay')->where('id',$id)->find();        if(!$info){            HelpHander::error('订单不存在');        }        if($info['status'] == 1){            HelpHander::error('订单已支付');        }        $res = Db::name('order_convey_pay')->where('id',$id)->update([            'type' => 1,            'status' => 1,            'remark' => $remark,            'pay_time' => date('Y-m-d H:i:s')        ]);        if($res){            HelpHander::success([],'操作成功');        }else{            HelpHander::error('操作失败');        }    }    // 扫途径地点    public function sweepCode(){        $code = input('code');        $id = input('id/d',0);        $num = input('num/d',0);        $img = input('img','');        $ret = model('Orders')->sweepCode($code,$id,$num,$img,$this->orgId,$this->userId);        if(!$ret){            HelpHander::error(model('Orders')->getError());        }        HelpHander::success([],'操作成功');    }    //获取可转单类型    public function orderTransferType(){        $user = Db::name('user')->where('id',$this->userId)->find();        $config = model('Config')->getConfig('web_order_transfer_type');        $modes = $config?explode('|',$config):[];        if($user['type'] != 1){ // 不是总公司人员            $roles = Db::name('user_roles')                ->alias('a')                ->join('roles b','b.id = a.roles_id')                ->where('a.user_id',$this->userId)                ->value('work_type_mode');            if($roles){                $modes = explode(',',$roles);            }        }        $map[] = ['type','=',1];        if($modes){            $map[] = ['id','in',$modes];        }else{            $map[] = ['id','=',-1];        }        $workType = Db::name('work_type_mode')            ->where($map)            ->field('id,name as title')            ->select();        HelpHander::success($workType?$workType:[]);    }    //获取待处理已完成已评价订单数量    public function getOrdersCount(){        $map[] = ['user_id','=',$this->userId];        $map[] = ['org_id','=',$this->orgId];        $map[] = ['del','=',0];        $a1 = Db::name('orders')            ->where($map)            ->where('order_mode',1)            ->count();        $dcl = $a1?$a1:0;        $a2 = Db::name('orders')            ->where($map)            ->where('order_mode',5)            ->count();        $ywc = $a2?$a2:0;        $a3 = Db::name('orders')            ->where($map)            ->where('order_mode',6)            ->count();        $ypj = $a3?$a3:0;        $data = [            'dcl'=>$dcl,            'ywc'=>$ywc,            'ypj'=>$ypj,        ];        HelpHander::success($data);    }    //被驳回的数量    public function rejectCount(){        $map[] = ['org_id', '=', $this->orgId];        $map[] = ['del', '=', 0];        $map2[] = ['todo_mode', '=', 4];        $auth = get_dispatch_auth($this->userId);        if (empty($auth)) {            $map[] = ['work_type_mode', '=', -1];        }        else {            $map[] = ['work_type_mode', 'in', $auth];        }        $org_two_dispatch = (new Config())->getConfig('org_two_dispatch',$this->orgId);        if($org_two_dispatch==0){//二级调度开关关闭        }else{            if (check_two_dispatch($this->userId) == 1) {//二级调度角色                $roles_id = Db::name('user_roles')                    ->where('user_id',$this->userId)                    ->value('roles_id');                $ids = Db::name('dispatch_log')                    ->where('roles_id', $roles_id)                    ->whereOr('to_user_id', $this->userId)                    ->column('order_id');                  if (empty($ids)) {                      $map2[] = ['order_id', '=', -1];                  }else {                      $map2[] = ['order_id', 'in', $ids];                  }            }        }        $count = Db::name('todo_view')            ->where($map)            ->where($map2)            ->count();        HelpHander::success($count);    }    //优先级    public function repair_priority(){        $a = [            ['id'=>1,'title'=>"可延缓的"],            ['id'=>2,'title'=>"普通"],            ['id'=>3,'title'=>"紧急"],        ];        HelpHander::success($a);    }    public function userQualityLists() {        $page = input('page', 1);        $size = input('size', 10);        $list = $this->model->userQualityLists($page, $size, $this->userId, $this->orgId);        HelpHander::success($list);    }    public function informerQualityLists() {        $page = input('page', 1);        $size = input('size', 10);        $list = $this->model->informerQualityLists($page, $size, $this->userId, $this->orgId);        HelpHander::success($list);    }    //巡更巡视..一键呼叫发送给自己转成报修单;    public function addBxOrders(){        $data = [            'user_id'=>$this->userId,            'org_id'=>$this->orgId,            'dep_id'=>input('depId/d',0),            'images'=>input('images',''),            'videos'=>input('videos',''),            'voices'=>input('voices',''),            'content'=>input('content',''),            'work_type_mode'=>input('workTypeMode/d',1),            'source_type'=>input('sourceType/d',4),            'type_id'=>input('typeId',0),            'address_id'=>input('addressId',0),            'repair_priority'=>input('repairPriority',0),        ];        $res = model('Orders')->addBxOrders($data);        if (!$res) {            HelpHander::error(model('Orders')->getError());        }        HelpHander::success([],'操作成功');    }    public function withdraw(){        $id = input('id');        $info = Db::name('orders')            ->where('id',$id)            ->where('del',0)            ->where('order_mode',4)            ->find();        if(!$info){            HelpHander::error('参数错误');        }        $saveOrder = Db::name('orders')            ->where('id',$id)            ->update(['order_mode'=>1,'withdraw_time'=>getTime()]);        Db::name('todo')->where('order_id',$id)->update(['del'=>1]);        $todoIds = Db::name('todo')            ->where('order_id',$id)            ->where('todo_mode',1)            ->column('id');         Db::name('task')            ->where('type',1)            ->whereIn('bus_id',$todoIds)            ->delete();        if($info['work_type_mode'] == 3){            Db::name('order_convey_end')->where('order_id',$info['id'])->setField('del',0);        }        if(!$saveOrder){            HelpHander::error('操作失败');        }        HelpHander::success('操作成功');    }    //病人运送订单删除途径地    public function delOrdersConveyEnd(){        $id = input('id/d',0);        $ret =  $ret = Db::name('order_convey_end')            ->where('id',$id)->update([                'del' => 1,                'update_time' => date('Y-m-d H:i:s')            ]);        if(!$ret){            HelpHander::error('删除失败');        }        HelpHander::success([],'操作成功');    }    //病人运送订单删除目的地    public function delConveyEnd(){        $orderId = input('orderId/d',0);        $ret = model('Orders')->delConveyEnd($orderId,$this->orgId);        if(!$ret){            HelpHander::error(model('Orders')->getError());        }        HelpHander::success([],'操作成功');    }    public function orderConveyEndInfo(){        $id = input('id');        $info = Db::name('order_convey_end')            ->where('id',$id)            ->where('del',0)            ->find();        HelpHander::success($info);    }}
 |