Orders.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. <?php
  2. namespace app\api\controller\v1;
  3. use app\api\controller\Base;
  4. use app\common\model\Config;
  5. use app\hander\HelpHander;
  6. use think\App;
  7. use think\Db;
  8. use think\Exception;
  9. use think\exception\Handle;
  10. class Orders extends Base {
  11. public function __construct(App $app = null) {
  12. parent::__construct($app);
  13. $this->model = new \app\common\model\Orders();
  14. }
  15. public function lists() {
  16. $page = input('page', 1);
  17. $size = input('size', 10);
  18. $type = input('curOrderMode', 0);
  19. $list = $this->model->lists($page, $size, $type, $this->userId, $this->orgId);
  20. HelpHander::success($list);
  21. }
  22. public function detail() {
  23. $orderId = input('orderId', 0);
  24. $info = $this->model->detail($orderId);
  25. HelpHander::success($info);
  26. }
  27. //获取部门
  28. public function getDep() {
  29. $list = model('dep')->getList($this->orgId);
  30. HelpHander::success($list);
  31. }
  32. //发起订单
  33. public function add() {
  34. $json = [
  35. 'user_id'=>$this->userId,
  36. 'org_id'=>$this->orgId,
  37. 'dep_id'=>input('depId/d',0),
  38. 'images'=>input('images',''),
  39. 'videos'=>input('videos',''),
  40. 'voices'=>input('voices',''),
  41. 'content'=>input('content',''),
  42. 'work_type_mode'=>input('workTypeMode/d',1),
  43. 'source_type'=>input('sourceType/d',1),
  44. 'type_id'=>input('typeId/d',0),
  45. 'address_id'=>input('addressId/d',0),
  46. 'start'=>input('start',''),
  47. 'end'=>input('end',''),
  48. 'xq_time'=>input('xqTime',''),
  49. 'ywc_time'=>input('ywcTime',''),
  50. 'type'=>input('type',''),
  51. 'device_id'=>input('deviceId',''),
  52. 'priority'=>input('priority',''),
  53. 'bed_number'=>input('bedNumber',''),
  54. 'ba_number'=>input('baNumber',''),
  55. 'p_name'=>input('pName',''),
  56. 'gender'=>input('gender',''),
  57. 'back'=>input('back',''),
  58. 'name'=>input('name',''),
  59. 'phone'=>input('phone',''),
  60. 'isSpontaneous'=>input('isSpontaneous',0),
  61. 'repair_priority'=>input('repairPriority',2),
  62. ];
  63. $res = $this->model->addSave($json);
  64. if (!$res) {
  65. HelpHander::error($this->model->getError());
  66. }
  67. HelpHander::success('操作成功');
  68. }
  69. //调度发单
  70. public function dispatchAdd() {
  71. $json = [
  72. 'user_id'=>$this->userId,
  73. 'org_id'=>$this->orgId,
  74. 'dep_id'=>input('depId/d',0),
  75. 'images'=>input('images',''),
  76. 'videos'=>input('videos',''),
  77. 'voices'=>input('voices',''),
  78. 'content'=>input('content',''),
  79. 'work_type_mode'=>input('workTypeMode/d',1),
  80. 'userType'=>input('userType/d',0),
  81. 'to_user_id'=>input('toUserId',''),
  82. 'to_roles_id'=>input('toRolesId/d',0),
  83. 'type_id'=>input('typeId/d',0),
  84. 'address_id'=>input('addressId/d',0),
  85. 'source_type'=>input('sourceType/d',1),
  86. 'todo_content'=>input('todoContent',''),
  87. 'start'=>input('start',''),
  88. 'end'=>input('end',''),
  89. 'xq_time'=>input('xqTime',''),
  90. 'ywc_time'=>input('ywcTime',''),
  91. 'type'=>input('type',''),
  92. 'device_id'=>input('deviceId',''),
  93. 'priority'=>input('priority',''),
  94. 'bed_number'=>input('bedNumber',''),
  95. 'ba_number'=>input('baNumber',''),
  96. 'p_name'=>input('pName',''),
  97. 'gender'=>input('gender',''),
  98. 'back'=>input('back',''),
  99. 'name'=>input('name',''),
  100. 'phone'=>input('phone',''),
  101. 'daily_record_id'=>input('dailyRecordId/d',0), // 品质整改,日常工作记录id
  102. 'repair_priority'=>input('repairPriority',1),
  103. 'quality_type'=>input('qualityType/d',0),
  104. 'quality_cate'=>input('qualityCate/d',0),
  105. 'informer_user'=>input('informerUser/d',0),
  106. ];
  107. $res = $this->model->addSave($json, 1);
  108. if (!$res) {
  109. HelpHander::error($this->model->getError());
  110. }
  111. HelpHander::success('操作成功');
  112. }
  113. //分配订单
  114. public function send(){
  115. $json = [
  116. 'org_id'=>$this->orgId,
  117. 'id'=>input('id/d',0),
  118. 'userType'=>input('userType/d',0),
  119. 'to_user_id'=>input('toUserId',''),
  120. 'to_roles_id'=>input('toRolesId/d',0),
  121. 'type_id'=>input('typeId/d',0),
  122. 'address_id'=>input('addressId/d',0),
  123. 'todo_content'=>input('todoContent',''),
  124. 'work_type_mode'=>input('workTypeMode/d',-1),
  125. 'ba_number'=>input('baNumber','','trim'),
  126. 'back'=>input('back/d',0),
  127. 'bed_number'=>input('bedNumber','','trim'),
  128. 'device_id'=>input('deviceId/d',0),
  129. 'start'=>input('start/d',0),
  130. 'end'=>input('end/d',0),
  131. 'gender'=>input('gender/d',0),
  132. 'name'=>input('name','','trim'),
  133. 'phone'=>input('phone','','trim'),
  134. 'p_name'=>input('pName','','trim'),
  135. 'priority'=>input('priority/d',0),
  136. 'type'=>input('type/d',0),
  137. 'xq_time'=>input('xqTime','','trim'),
  138. 'ywc_time'=>input('ywcTime','','trim'),
  139. 'repair_priority'=>input('repairPriority','','trim'),
  140. ];
  141. $res = model('orders')->send($json['id'],$this->userId,$json);
  142. if(!$res){
  143. HelpHander::error(model('orders')->getError());
  144. }
  145. HelpHander::success('操作成功');
  146. }
  147. //转单分配订单
  148. public function zdSend(){
  149. $json = [
  150. 'org_id'=>$this->orgId,
  151. 'id'=>input('id/d',0),
  152. 'type_id'=>input('typeId/d',0),
  153. 'address_id'=>input('addressId/d',0),
  154. 'todo_content'=>input('todoContent',''),
  155. 'work_type_mode'=>input('workTypeMode/d',-1),
  156. 'ba_number'=>input('baNumber','','trim'),
  157. 'back'=>input('back/d',0),
  158. 'bed_number'=>input('bedNumber','','trim'),
  159. 'device_id'=>input('deviceId/d',0),
  160. 'start'=>input('start/d',0),
  161. 'end'=>input('end/d',0),
  162. 'gender'=>input('gender/d',0),
  163. 'name'=>input('name','','trim'),
  164. 'phone'=>input('phone','','trim'),
  165. 'p_name'=>input('pName','','trim'),
  166. 'priority'=>input('priority/d',0),
  167. 'type'=>input('type/d',0),
  168. 'xq_time'=>input('xqTime','','trim'),
  169. 'ywc_time'=>input('ywcTime','','trim'),
  170. 'repair_priority'=>input('repairPriority','','trim'),
  171. ];
  172. $res = model('orders')->zd_send($json['id'],$json);
  173. if(!$res){
  174. HelpHander::error(model('orders')->getError());
  175. }
  176. HelpHander::success('操作成功');
  177. }
  178. //任务栏工单列表
  179. public function queryOrderList() {
  180. $page = input('page', 1);
  181. $size = input('size', 10);
  182. $offset = ($page-1)*$size;
  183. $task = Db::name('task')
  184. ->where('user_id', $this->userId)
  185. ->where('org_id', $this->orgId)
  186. ->where('type', 1)
  187. ->limit($offset,$size)
  188. ->order(['priority'=>'desc','id'=>'desc'])
  189. ->select();
  190. $workType = [
  191. 1 => '报修工单',
  192. 2 => '保洁工单',
  193. 3 => '运送工单',
  194. 4 => '安保工单',
  195. 15 => '品质整改',
  196. 0 => '一键呼叫',
  197. ];
  198. $patrolStatus = [
  199. 0 => '未执行',
  200. 1 => '执行中',
  201. 2 => '已完成',
  202. 3 => '未完成',
  203. 5 => '中断',
  204. ];
  205. $list = [];
  206. foreach ($task as $k => $value) {
  207. if ($value['type'] == 1) {//工单
  208. $todoInfo = Db::name('todo')
  209. ->where('id', $value['bus_id'])
  210. ->where('del',0)
  211. ->find();
  212. if (!empty($todoInfo)) {
  213. $data['title'] = $workType[$todoInfo['work_type_mode']];
  214. $data['realName'] = Db::name('user')
  215. ->where('id', $todoInfo['create_user_id'])
  216. ->value('real_name');
  217. $data['create_time'] = $todoInfo['create_time'];
  218. $data['status_txt'] = Db::name('todo_mode')
  219. ->where('id', $todoInfo['todo_mode'])
  220. ->value('out_content');
  221. $data['start_time'] = "";
  222. $data['end_time'] = "";
  223. $data['type'] = 1;
  224. $data['bus_id'] = $value['bus_id'];
  225. $orderInfo = Db::name('orders')
  226. ->where('id',$todoInfo['order_id'])
  227. ->find();
  228. if($orderInfo['from'] > 0){
  229. $from = '';
  230. if($orderInfo['from'] == 1){
  231. $from = '一键呼叫';
  232. }else if($orderInfo['from'] == 2){
  233. $from = '隐患预警';
  234. }else if($orderInfo['from'] == 3){
  235. $from = '投诉';
  236. }
  237. $data['title'] = $data['title'].'('.$from.')';
  238. }
  239. $data['patrol_mode'] = 0;
  240. $data['status'] = $todoInfo['todo_mode'];
  241. $data['work_type_mode'] = $orderInfo['work_type_mode'];
  242. if($data['work_type_mode'] == 1 && $todoInfo['todo_mode'] == 2 && $todoInfo['pause'] == 1){ //维修,检查是否挂起
  243. $data['status_txt'] = '已挂起';
  244. }
  245. $data['addressTitle'] = "";
  246. $data['typeName'] = "";
  247. $data['content'] = $orderInfo['content']?$orderInfo['content']:'';
  248. $data['startName'] = "";
  249. $data['endName'] = "";
  250. if($orderInfo['work_type_mode']==1){
  251. $typeInfo = (new \app\common\model\OrderType())
  252. ->getTypeByOrderId($orderInfo['id']);
  253. if($typeInfo){
  254. $order_type = $typeInfo && isset($typeInfo['title']) ? $typeInfo['title'] : '';
  255. $order_type_matter = $typeInfo && isset($typeInfo['child_title']) ? $typeInfo['child_title'] : '';
  256. $data['typeName'] = $order_type.'/'.$order_type_matter;
  257. $data['addressTitle'] = $typeInfo ? $typeInfo['address_title'] : '';
  258. }
  259. }
  260. if($orderInfo['work_type_mode']==3){
  261. $oc = Db::name('order_convey')
  262. ->where('order_id', $orderInfo['id'])
  263. ->find();
  264. if($oc){
  265. $start_name = Db::name('address')->where('id',$oc['start'])
  266. ->value('title');
  267. $end_name = Db::name('address')->where('id',$oc['end'])
  268. ->value('title');
  269. $data['startName'] = $start_name?$start_name:"";
  270. $data['endName'] = $end_name?$end_name:"";
  271. }
  272. }
  273. $data['priority'] = $value['priority'];
  274. $list[] = $data;
  275. }
  276. } elseif($value['type'] == 2) {//巡更巡检
  277. $patrolInfo = Db::name('patrol_task')
  278. ->where('id', $value['bus_id'])
  279. ->find();
  280. if (!empty($patrolInfo)) {
  281. $title = Db::name('patrol_mode')
  282. ->where('id', $patrolInfo['patrol_mode'])
  283. ->value('name');
  284. $data['title'] = $patrolInfo['title']?$title.'-'.$patrolInfo['title']:$title;
  285. $data['realName'] = "";
  286. $data['create_time'] = $patrolInfo['create_time'];
  287. $data['status_txt'] = $patrolStatus[$patrolInfo['status']];
  288. $data['start_time'] = $patrolInfo['start_time'];
  289. $data['end_time'] = $patrolInfo['end_time'];
  290. $data['bus_id'] = $value['bus_id'];
  291. $data['type'] = 2;
  292. $data['work_type_mode'] = 0;
  293. $data['patrol_mode'] = $patrolInfo['patrol_mode'];
  294. $data['status'] = $patrolInfo['status'];
  295. $data['addressTitle'] = "";
  296. $data['typeName'] = "";
  297. $data['content'] = '';
  298. $data['startName'] = "";
  299. $data['endName'] = "";
  300. $data['priority'] = $value['priority'];
  301. $list[] = $data;
  302. }
  303. }elseif ($value['type'] == 3){ // 日常工作
  304. $dailyInfo = Db::name('daily_task')
  305. ->where('id', $value['bus_id'])
  306. ->find();
  307. if (!empty($dailyInfo)) {
  308. $data['title'] = '日常工作';
  309. $data['realName'] = "";
  310. $data['create_time'] = $dailyInfo['create_time'];
  311. $data['status_txt'] = $patrolStatus[$dailyInfo['status']];
  312. $data['start_time'] = $dailyInfo['start_time'];
  313. $data['end_time'] = $dailyInfo['end_time'];
  314. $data['bus_id'] = $value['bus_id'];
  315. $data['type'] = 3;
  316. $data['work_type_mode'] = 0;
  317. $data['patrol_mode'] = 0;
  318. $data['status'] = $dailyInfo['status'];
  319. $data['addressTitle'] = "";
  320. $data['typeName'] = "";
  321. $data['content'] = '';
  322. $data['startName'] = "";
  323. $data['endName'] = "";
  324. $data['priority'] = $value['priority'];
  325. $list[] = $data;
  326. }
  327. }elseif ($value['type'] == 4){ // 设备台账
  328. $deviceInfo = Db::name('device_task')
  329. ->where('id', $value['bus_id'])
  330. ->find();
  331. if (!empty($deviceInfo)) {
  332. $data['title'] = $deviceInfo['title']? '设备维保'.'-'.$deviceInfo['title']:'设备维保';
  333. $data['realName'] = "";
  334. $data['create_time'] = $deviceInfo['create_time'];
  335. $data['status_txt'] = $patrolStatus[$deviceInfo['status']];
  336. $data['start_time'] = $deviceInfo['start_time'];
  337. $data['end_time'] = $deviceInfo['end_time'];
  338. $data['bus_id'] = $value['bus_id'];
  339. $data['type'] = 4;
  340. $data['work_type_mode'] = 0;
  341. $data['patrol_mode'] = 0;
  342. $data['status'] = $deviceInfo['status'];
  343. $data['addressTitle'] = "";
  344. $data['typeName'] = "";
  345. $data['content'] = '';
  346. $data['startName'] = "";
  347. $data['endName'] = "";
  348. $data['priority'] = $value['priority'];
  349. $list[] = $data;
  350. }
  351. }
  352. }
  353. $orgGrabOrder = getOrgGrabOrder($this->userId,$this->orgId);
  354. $r = [
  355. 'list' => $list,
  356. 'count' => count($list),
  357. 'org_grab_order'=>$orgGrabOrder?(int)$orgGrabOrder:0
  358. ];
  359. HelpHander::success($r);
  360. }
  361. //抢单列表
  362. public function queryGrabOrders(){
  363. $page = input('page', 1);
  364. $size = input('size', 10);
  365. $list = $this->model->queryGrabOrders($page,$size,$this->userId,$this->orgId);
  366. HelpHander::success($list);
  367. }
  368. // 抢单
  369. public function grabOrders(){
  370. $orderId = input('orderId');
  371. $orderType = input('orderType/d',0);
  372. $addressId = input('addressId/d',0);
  373. $order = Db::name('orders')
  374. ->where('id',$orderId)
  375. ->where('org_id',$this->orgId)
  376. ->find();
  377. if($order['work_type_mode']==1 && empty($orderType)){
  378. HelpHander::error('报修事项不能为空');
  379. }
  380. if(!$order || $order['del'] == 1){
  381. HelpHander::error('订单不存在');
  382. }
  383. if($order['order_mode'] != 1){
  384. HelpHander::error('订单已被处理');
  385. }
  386. $off = (new Config())->getConfig('org_grab_order'.$order['work_type_mode'],$this->orgId);
  387. if($off !=1){
  388. HelpHander::error('抢单模式未开启');
  389. }
  390. $ret = $this->model->grabOrdersEdit($order,$this->userId,$orderType,$addressId);
  391. if(!$ret){
  392. HelpHander::error($this->model->getError());
  393. }
  394. HelpHander::success([],'操作成功');
  395. }
  396. // 扫标本
  397. public function scanSample(){
  398. $orderId = input('orderId/d',0);
  399. $barcode = input('barcode');
  400. $addrId = input('addrId/d',0);
  401. if(!$barcode ){
  402. HelpHander::error('未传标本码');
  403. }
  404. if(!$orderId&&!$addrId){
  405. HelpHander::error('参数错误');
  406. }
  407. if($orderId > 0){
  408. $orderConvey = Db::name('order_convey')
  409. ->where('order_id',$orderId)
  410. ->find();
  411. $addrId = $orderConvey['start'];
  412. }
  413. $res = Db::name('order_convey_lis')
  414. ->where('org_id',$this->orgId)
  415. ->where('order_id',$orderId)
  416. ->where('barcode',$barcode)
  417. ->where('user_id',$this->userId)
  418. ->where('addr_id',$addrId)
  419. ->find();
  420. Db::startTrans();
  421. try{
  422. if($res){
  423. $res = Db::name('order_convey_lis')
  424. ->where('id',$res['id'])->update([
  425. 'create_time' => date('Y-m-d H:i:s')
  426. ]);
  427. }else{
  428. $res = Db::name('order_convey_lis')
  429. ->insert([
  430. 'order_id' => $orderId,
  431. 'barcode' => $barcode,
  432. 'user_id' => $this->userId,
  433. 'create_time' => date('Y-m-d H:i:s'),
  434. 'org_id' => $this->orgId,
  435. 'addr_id' => $addrId
  436. ]);
  437. }
  438. if(!$res){
  439. exception('操作失败');
  440. }
  441. Db::commit();
  442. HelpHander::success([],'操作成功');
  443. }catch (Exception $e){
  444. Db::rollback();
  445. HelpHander::error($e->getMessage());
  446. }
  447. }
  448. //用户订单列表
  449. public function queryUserOrdersByMode(){
  450. $page = input('page', 1);
  451. $size = input('size', 10);
  452. $mode = input('mode', 0);
  453. $type = input('type', 0);
  454. $ret=$this->model->userOrdersByMode($page,$size,$this->userId,$mode,$type,$this->orgId);
  455. HelpHander::success($ret);
  456. }
  457. //用户取消订单
  458. public function updateOrderModeByUser(){
  459. $orderId = input('orderId', 0);
  460. $reason = input('reason', '','trim');
  461. $ret=$this->model->cancel($orderId,$this->userId,1,$reason);
  462. $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());
  463. }
  464. //调度取消订单
  465. public function updateOrderModeByDispatch(){
  466. $orderId = input('orderId', 0);
  467. $reason = input('reason', '');
  468. if(!$reason){
  469. HelpHander::error('请填写取消原因');
  470. }
  471. $ret=$this->model->cancel($orderId,$this->userId,2,$reason);
  472. $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());
  473. }
  474. //调度完成订单
  475. public function finishOrder(){
  476. $orderId = input('orderId', 0);
  477. $ret=$this->model->finish($orderId);
  478. $ret?HelpHander::success([],'操作成功'):HelpHander::error($this->model->getError());
  479. }
  480. //所有订单
  481. public function queryAllOrder(){
  482. $page = input('page', 1);
  483. $size = input('size', 10);
  484. $workTypeMode = input('workTypeMode/d',-1);
  485. $currOrderMode = input('currOrderMode');
  486. $beginTime = input('beginTime');
  487. $endTime = input('endTime');
  488. $list = $this->model->queryAllOrder($this->orgId,$page,$size,$workTypeMode,$currOrderMode,$beginTime,$endTime);
  489. HelpHander::success($list);
  490. }
  491. // 工人添加下一站地址
  492. public function addConveyEnd(){
  493. $orderId = input('orderId/d',0);
  494. $addrId = input('addrId/d',0);
  495. $ret = $this->model->addConveyEnd($this->orgId,$orderId,$addrId);
  496. if(!$ret){
  497. HelpHander::error($this->model->getError());
  498. }
  499. HelpHander::success([],'成功');
  500. }
  501. // 支付运送病人
  502. public function pay(){
  503. $id = input('id/d',0);
  504. $remark = input('remark','','trim');
  505. $info = Db::name('order_convey_pay')->where('id',$id)->find();
  506. if(!$info){
  507. HelpHander::error('订单不存在');
  508. }
  509. if($info['status'] == 1){
  510. HelpHander::error('订单已支付');
  511. }
  512. $res = Db::name('order_convey_pay')->where('id',$id)->update([
  513. 'type' => 1,
  514. 'status' => 1,
  515. 'remark' => $remark,
  516. 'pay_time' => date('Y-m-d H:i:s')
  517. ]);
  518. if($res){
  519. HelpHander::success([],'操作成功');
  520. }else{
  521. HelpHander::error('操作失败');
  522. }
  523. }
  524. // 扫途径地点
  525. public function sweepCode(){
  526. $code = input('code');
  527. $id = input('id/d',0);
  528. $ret = model('Orders')->sweepCode($code,$id);
  529. if(!$ret){
  530. HelpHander::error(model('Orders')->getError());
  531. }
  532. HelpHander::success([],'操作成功');
  533. }
  534. //获取可转单类型
  535. public function orderTransferType(){
  536. $user = Db::name('user')->where('id',$this->userId)->find();
  537. $config = model('Config')->getConfig('web_order_transfer_type');
  538. $modes = $config?explode('|',$config):[];
  539. if($user['type'] != 1){ // 不是总公司人员
  540. $roles = Db::name('user_roles')
  541. ->alias('a')
  542. ->join('roles b','b.id = a.roles_id')
  543. ->where('a.user_id',$this->userId)
  544. ->value('work_type_mode');
  545. if($roles){
  546. $modes = explode(',',$roles);
  547. }
  548. }
  549. $map[] = ['type','=',1];
  550. if($modes){
  551. $map[] = ['id','in',$modes];
  552. }else{
  553. $map[] = ['id','=',-1];
  554. }
  555. $workType = Db::name('work_type_mode')
  556. ->where($map)
  557. ->field('id,name as title')
  558. ->select();
  559. HelpHander::success($workType?$workType:[]);
  560. }
  561. //获取待处理已完成已评价订单数量
  562. public function getOrdersCount(){
  563. $map[] = ['user_id','=',$this->userId];
  564. $map[] = ['org_id','=',$this->orgId];
  565. $map[] = ['del','=',0];
  566. $a1 = Db::name('orders')
  567. ->where($map)
  568. ->where('order_mode',1)
  569. ->count();
  570. $dcl = $a1?$a1:0;
  571. $a2 = Db::name('orders')
  572. ->where($map)
  573. ->where('order_mode',5)
  574. ->count();
  575. $ywc = $a2?$a2:0;
  576. $a3 = Db::name('orders')
  577. ->where($map)
  578. ->where('order_mode',6)
  579. ->count();
  580. $ypj = $a3?$a3:0;
  581. $data = [
  582. 'dcl'=>$dcl,
  583. 'ywc'=>$ywc,
  584. 'ypj'=>$ypj,
  585. ];
  586. HelpHander::success($data);
  587. }
  588. //被驳回的数量
  589. public function rejectCount(){
  590. $map[] = ['org_id', '=', $this->orgId];
  591. $map[] = ['del', '=', 0];
  592. $map2[] = ['todo_mode', '=', 4];
  593. $auth = get_dispatch_auth($this->userId);
  594. if (empty($auth)) {
  595. $map[] = ['work_type_mode', '=', -1];
  596. }
  597. else {
  598. $map[] = ['work_type_mode', 'in', $auth];
  599. }
  600. $org_two_dispatch = (new Config())->getConfig('org_two_dispatch',$this->orgId);
  601. if($org_two_dispatch==0){//二级调度开关关闭
  602. }else{
  603. if (check_two_dispatch($this->userId) == 1) {//二级调度角色
  604. $roles_id = Db::name('user_roles')
  605. ->where('user_id',$this->userId)
  606. ->value('roles_id');
  607. $ids = Db::name('dispatch_log')
  608. ->where('roles_id', $roles_id)
  609. ->whereOr('to_user_id', $this->userId)
  610. ->column('order_id');
  611. if (empty($ids)) {
  612. $map2[] = ['order_id', '=', -1];
  613. }else {
  614. $map2[] = ['order_id', 'in', $ids];
  615. }
  616. }
  617. }
  618. $count = Db::name('todo_view')
  619. ->where($map)
  620. ->where($map2)
  621. ->count();
  622. HelpHander::success($count);
  623. }
  624. //优先级
  625. public function repair_priority(){
  626. $a = [
  627. ['id'=>1,'title'=>"可延缓的"],
  628. ['id'=>2,'title'=>"普通"],
  629. ['id'=>3,'title'=>"紧急"],
  630. ];
  631. HelpHander::success($a);
  632. }
  633. public function userQualityLists() {
  634. $page = input('page', 1);
  635. $size = input('size', 10);
  636. $list = $this->model->userQualityLists($page, $size, $this->userId, $this->orgId);
  637. HelpHander::success($list);
  638. }
  639. public function informerQualityLists() {
  640. $page = input('page', 1);
  641. $size = input('size', 10);
  642. $list = $this->model->informerQualityLists($page, $size, $this->userId, $this->orgId);
  643. HelpHander::success($list);
  644. }
  645. //巡更巡视..一键呼叫发送给自己转成报修单;
  646. public function addBxOrders(){
  647. $data = [
  648. 'user_id'=>$this->userId,
  649. 'org_id'=>$this->orgId,
  650. 'dep_id'=>input('depId/d',0),
  651. 'images'=>input('images',''),
  652. 'videos'=>input('videos',''),
  653. 'voices'=>input('voices',''),
  654. 'content'=>input('content',''),
  655. 'work_type_mode'=>input('workTypeMode/d',1),
  656. 'source_type'=>input('sourceType/d',4),
  657. 'type_id'=>input('typeId',0),
  658. 'address_id'=>input('addressId',0),
  659. 'repair_priority'=>input('repairPriority',0),
  660. ];
  661. $res = model('Orders')->addBxOrders($data);
  662. if (!$res) {
  663. HelpHander::error(model('Orders')->getError());
  664. }
  665. HelpHander::success([],'操作成功');
  666. }
  667. public function withdraw(){
  668. $id = input('id');
  669. $info = Db::name('orders')
  670. ->where('id',$id)
  671. ->where('del',0)
  672. ->where('order_mode',4)
  673. ->find();
  674. if(!$info){
  675. HelpHander::error('参数错误');
  676. }
  677. $saveOrder = Db::name('orders')
  678. ->where('id',$id)
  679. ->update(['order_mode'=>1,'withdraw_time'=>getTime()]);
  680. Db::name('todo')->where('order_id',$id)->update(['del'=>1]);
  681. $todoIds = Db::name('todo')
  682. ->where('order_id',$id)
  683. ->where('todo_mode',1)
  684. ->column('id');
  685. Db::name('task')
  686. ->where('type',1)
  687. ->whereIn('bus_id',$todoIds)
  688. ->delete();
  689. if(!$saveOrder){
  690. HelpHander::error('操作失败');
  691. }
  692. HelpHander::success('操作成功');
  693. }
  694. }