PatrolStatistics.php 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538
  1. <?php
  2. namespace app\admin\controller;
  3. use function PHPSTORM_META\map;
  4. use think\App;
  5. use think\Db;
  6. class PatrolStatistics extends Auth {
  7. public function patrol() {
  8. $cur = date('Y-m-d');
  9. $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
  10. $end = input('end', date('Y-m-d'));
  11. $start1 = $start . ' 00:00:00';
  12. $end1 = $end . ' 23:59:59';
  13. $type = input('type', 1);
  14. $list = $this->patrolData($start1, $end1, $type);
  15. $this->assign('type', $type);
  16. $this->assign('list', $list);
  17. $this->assign('start', $start);
  18. $this->assign('end', $end);
  19. return $this->fetch();
  20. }
  21. public function patrolData($start1, $end1, $type) {
  22. $map1[] = ['create_time', '>=', $start1];
  23. $map1[] = ['create_time', '<=', $end1];
  24. $map1[] = ['org_id', '=', $this->orgId];
  25. $list = Db::name('patrol_record')
  26. ->where($map1)
  27. ->where('patrol_mode', $type)
  28. ->group('patrol_addr_id')
  29. ->distinct(true)
  30. ->select();
  31. // foreach ($list as $k => $v) {
  32. // $list[$k]['title'] = Db::name('address')
  33. // ->where('id', $v['patrol_addr_id'])
  34. // ->value('title');
  35. // $c = Db::name('patrol_record')
  36. // ->where($map1)
  37. // ->where('is_normal', 0)
  38. // ->where('patrol_addr_id', $v['patrol_addr_id'])
  39. // ->where('patrol_mode', $type)
  40. // ->count();
  41. // $list[$k]['count'] = $c ? $c : 0;
  42. // $normal = Db::name('patrol_record')
  43. // ->where($map1)
  44. // ->where('is_normal', 1)
  45. // ->where('patrol_addr_id', $v['patrol_addr_id'])
  46. // ->where('patrol_mode', $type)
  47. // ->count();
  48. // $list[$k]['normal'] = $normal ? $normal : 0;
  49. // }
  50. $addrIds = array_unique(array_column($list, 'patrol_addr_id'));
  51. $addrIds = is_array($addrIds) ? array_filter($addrIds) : [];
  52. $addressTitles = [];
  53. if (!empty($addrIds)) {
  54. $addressTitles = Db::name('address')
  55. ->whereIn('id', $addrIds)
  56. ->column('title', 'id');
  57. }
  58. $stats = [];
  59. if (!empty($addrIds)) {
  60. $query = Db::name('patrol_record')
  61. ->field([
  62. 'patrol_addr_id',
  63. 'SUM(CASE WHEN is_normal = 0 THEN 1 ELSE 0 END) as abnormal_count',
  64. 'SUM(CASE WHEN is_normal = 1 THEN 1 ELSE 0 END) as normal_count'
  65. ])
  66. ->whereIn('patrol_addr_id', $addrIds) // 确保 $addrIds 是数组
  67. ->where('patrol_mode', $type)
  68. ->where($map1);
  69. $results = $query->group('patrol_addr_id')->select();
  70. foreach ($results as $row) {
  71. $stats[$row['patrol_addr_id']] = [
  72. 'abnormal_count' => (int)$row['abnormal_count'],
  73. 'normal_count' => (int)$row['normal_count']
  74. ];
  75. }
  76. foreach ($addrIds as $id) {
  77. if (!isset($stats[$id])) {
  78. $stats[$id] = ['abnormal_count' => 0, 'normal_count' => 0];
  79. }
  80. }
  81. }
  82. foreach ($list as $k => $v) {
  83. $addrId = $v['patrol_addr_id'];
  84. $list[$k]['title'] = $addressTitles[$addrId] ?? '';
  85. $list[$k]['count'] = $stats[$addrId]['abnormal_count'] ?? 0;
  86. $list[$k]['normal'] = $stats[$addrId]['normal_count'] ?? 0;
  87. }
  88. return $list;
  89. }
  90. public function patrolExport() {
  91. $cur = date('Y-m-d');
  92. $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
  93. $end = input('end', date('Y-m-d'));
  94. $start1 = $start . ' 00:00:00';
  95. $end1 = $end . ' 23:59:59';
  96. $type = input('type', 1);
  97. $ret = $this->patrolData($start1, $end1, $type);
  98. include_once env('root_path') . '/extend/phpexcel/Classes/PHPExcel.php';
  99. //实例化PHPExcel类
  100. $objPHPExcel = new \PHPExcel();
  101. //激活当前的sheet表
  102. $objPHPExcel->setActiveSheetIndex(0);
  103. //设置表格头(即excel表格的第一行)
  104. $objPHPExcel->setActiveSheetIndex(0)
  105. ->setCellValue('A1', '智慧点')
  106. ->setCellValue('B1', '总数')
  107. ->setCellValue('C1', '总数(异常)');
  108. // 设置表格头水平居中
  109. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
  110. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  111. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
  112. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  113. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
  114. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  115. //设置列水平居中
  116. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  117. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  118. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
  119. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  120. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
  121. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  122. //设置单元格宽度
  123. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
  124. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
  125. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
  126. //循环刚取出来的数组,将数据逐一添加到excel表格。
  127. for ($i = 0; $i < count($ret); $i++) {
  128. $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $ret[$i]['title']);
  129. $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $ret[$i]['count']);
  130. $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $ret[$i]['normal']);
  131. }
  132. $n = Db::name('patrol_mode')
  133. ->where('id', $type)
  134. ->value('name');
  135. //设置保存的Excel表格名称
  136. $filename = $n . '工作量统计分析_' . date('YmdHis', time()) . '.xls';
  137. //设置当前激活的sheet表格名称
  138. $objPHPExcel->getActiveSheet()->setTitle($n . '工作量统计分析');
  139. //设置浏览器窗口下载表格
  140. ob_end_clean();
  141. header("Content-Type: application/force-download");
  142. header("Content-Type: application/octet-stream");
  143. header("Content-Type: application/download");
  144. header('Content-Disposition:inline;filename="' . $filename);
  145. //生成excel文件
  146. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  147. //下载文件在浏览器窗口
  148. return $objWriter->save('php://output');
  149. }
  150. public function work() {
  151. $cur = date('Y-m-d');
  152. $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
  153. $end = input('end', date('Y-m-d'));
  154. $start1 = $start . ' 00:00:00';
  155. $end1 = $end . ' 23:59:59';
  156. $type = input('type', 1);
  157. $list = $this->workData($start1, $end1, $type);
  158. $this->assign('type', $type);
  159. $this->assign('list', $list);
  160. $this->assign('start', $start);
  161. $this->assign('end', $end);
  162. return $this->fetch();
  163. }
  164. public function workData($start1, $end1, $type) {
  165. $map1[] = ['create_time', '>=', $start1];
  166. $map1[] = ['create_time', '<=', $end1];
  167. $map1[] = ['org_id', '=', $this->orgId];
  168. $list = Db::name('patrol_record')
  169. ->where($map1)
  170. ->where('patrol_mode', $type)
  171. ->group('user_id')
  172. ->distinct(true)
  173. ->select();
  174. foreach ($list as $k => $v) {
  175. $list[$k]['title'] = Db::name('user')
  176. ->where('id', $v['user_id'])
  177. ->value('real_name');
  178. $c = Db::name('patrol_record')
  179. ->where($map1)
  180. ->where('user_id', $v['user_id'])
  181. ->where('patrol_mode', $type)
  182. ->count();
  183. $list[$k]['count'] = $c ? $c : 0;
  184. $c1 = Db::name('patrol_record')
  185. ->where($map1)
  186. ->where('user_id', $v['user_id'])
  187. ->where('patrol_mode', $type)
  188. ->where('is_normal', 0)
  189. ->count();
  190. $list[$k]['count1'] = $c1 ? $c1 : 0;
  191. $c2 = Db::name('patrol_record')
  192. ->where($map1)
  193. ->where('user_id', $v['user_id'])
  194. ->where('patrol_mode', $type)
  195. ->where('is_normal', 1)
  196. ->count();
  197. $list[$k]['count2'] = $c2 ? $c2 : 0;
  198. $taskCount = Db::name('patrol_task_user')
  199. ->alias('a')
  200. ->join('patrol_task b','a.patrol_task_id=b.id')
  201. ->where('a.user_id',$v['user_id'])
  202. ->where('b.org_id',$this->orgId)
  203. ->where('b.status','<>',6)
  204. ->where('b.start_time','>=',$start1)
  205. ->where('b.end_time','<=',$end1)
  206. ->where('b.patrol_mode','=',$type)
  207. ->count();
  208. $ywcCount = Db::name('patrol_task_user')
  209. ->alias('a')
  210. ->join('patrol_task b','a.patrol_task_id=b.id')
  211. ->where('a.user_id',$v['user_id'])
  212. ->where('b.org_id',$this->orgId)
  213. ->where('b.status','=',2)
  214. ->where('b.start_time','>=',$start1)
  215. ->where('b.end_time','<=',$end1)
  216. ->where('b.patrol_mode','=',$type)
  217. ->count();
  218. $wcl = $taskCount>0?round($ywcCount/$taskCount,2)*100:0;
  219. $wcl = $wcl.'%';
  220. $list[$k]['wcl'] = $wcl;
  221. $list[$k]['count3'] = $ywcCount;
  222. $list[$k]['count4'] = $taskCount;
  223. }
  224. return $list;
  225. }
  226. public function workList(){
  227. $user_id = input('user_id','','trim');
  228. if($user_id!=''){
  229. $map[] = ['user_id','=',$user_id];
  230. }
  231. $is_normal = input('is_normal','','trim');
  232. if($is_normal!==''){
  233. $map[] = ['is_normal','=',$is_normal];
  234. }
  235. $type = input('type','','trim');
  236. if($type != ''){
  237. $map[] = ['patrol_mode','=',$type];
  238. }
  239. $start = input('start',date('Y-m-d', strtotime('' . date('Y-m-d') . ' -1 week')));
  240. if($start != ''){
  241. $map[] = ['create_time','>=',$start.' 00:00:00'];
  242. }
  243. $end = input('end', date('Y-m-d'));
  244. if($end != ''){
  245. $map[] = ['create_time','<=',$end.' 23:59:59'];
  246. }
  247. if(request()->isAjax()){
  248. //分页参数
  249. $length = input('rows',10,'intval'); //每页条数
  250. $page = input('page',1,'intval'); //第几页
  251. $start = ($page - 1) * $length; //分页开始位置
  252. //排序
  253. $sortRow = input('sidx','sort','trim'); //排序列
  254. $sort = input('sord','asc','trim'); //排序方式
  255. $order = $sortRow.' '.$sort.' ,id desc';
  256. $map[] = ['org_id','=',$this->orgId];
  257. $map= empty($map) ? true: $map;
  258. //数据查询
  259. $lists = Db::name('patrol_record')
  260. ->where($map)
  261. ->limit($start,$length)
  262. ->order($order)
  263. ->select();
  264. foreach ($lists as $k=>$v){
  265. $lists[$k]['address_title'] = Db::name('address')
  266. ->where('id', $v['patrol_addr_id'])
  267. ->value('title');
  268. $lists[$k]['task_user'] = Db::name('user')
  269. ->where('id', $v['user_id'])->value('real_name');
  270. $lists[$k]['task_title'] = Db::name('patrol_task')
  271. ->where('id', $v['patrol_task_id'])
  272. ->value('title');
  273. }
  274. //数据返回
  275. $totalCount = Db::name('patrol_record')->where($map)->count();
  276. $totalPage = ceil($totalCount/$length);
  277. $result['page'] = $page;
  278. $result['total'] = $totalPage;
  279. $result['records'] = $totalCount;
  280. $result['rows'] = $lists;
  281. return json($result);
  282. }else{
  283. $type = input('type',1);
  284. $t = Db::name('patrol_mode')
  285. ->where('id',$type)
  286. ->value('name');
  287. $this->assign('is_normal',$is_normal);
  288. $this->assign('type',$type);
  289. $this->assign('start',$start);
  290. $this->assign('end',$end);
  291. $this->assign('user_id',$user_id);
  292. $this->assign('meta_title',$t.'人员工作量统计');
  293. return $this->fetch();
  294. }
  295. }
  296. public function workList1(){
  297. $user_id = input('user_id','','trim');
  298. if($user_id!=''){
  299. $map[] = ['a.user_id','=',$user_id];
  300. }
  301. $is_normal = input('is_normal','','trim');
  302. if($is_normal!==''){
  303. if($is_normal==1){//总数
  304. $map[] = ['b.status','<>',6];
  305. }
  306. if($is_normal==2){//已完成
  307. $map[] = ['b.status','=',2];
  308. }
  309. }
  310. $type = input('type','','trim');
  311. if($type != ''){
  312. $map[] = ['b.patrol_mode','=',$type];
  313. }
  314. $start = input('start',date('Y-m-d', strtotime('' . date('Y-m-d') . ' -1 week')));
  315. if($start != ''){
  316. $map[] = ['b.start_time','>=',$start.' 00:00:00'];
  317. }
  318. $end = input('end', date('Y-m-d'));
  319. if($end != ''){
  320. $map[] = ['b.end_time','<=',$end.' 23:59:59'];
  321. }
  322. if(request()->isAjax()){
  323. //分页参数
  324. $length = input('rows',10,'intval'); //每页条数
  325. $page = input('page',1,'intval'); //第几页
  326. $start = ($page - 1) * $length; //分页开始位置
  327. $map[] = ['b.org_id','=',$this->orgId];
  328. $map= empty($map) ? true: $map;
  329. //数据查询
  330. $lists = Db::name('patrol_task_user')
  331. ->alias('a')
  332. ->join('patrol_task b','a.patrol_task_id=b.id')
  333. ->field('b.*,a.user_id')
  334. ->where($map)
  335. ->limit($start,$length)
  336. ->order('b.id','desc')
  337. ->select();
  338. foreach ($lists as $k=>$v){
  339. $lists[$k]['task_user'] = Db::name('user')
  340. ->where('id', $v['user_id'])->value('real_name');
  341. }
  342. //数据返回
  343. $totalCount = Db::name('patrol_task_user')
  344. ->alias('a')
  345. ->join('patrol_task b','a.patrol_task_id=b.id')->where($map)->count();
  346. $totalPage = ceil($totalCount/$length);
  347. $result['page'] = $page;
  348. $result['total'] = $totalPage;
  349. $result['records'] = $totalCount;
  350. $result['rows'] = $lists;
  351. return json($result);
  352. }else{
  353. $type = input('type',1);
  354. $t = Db::name('patrol_mode')
  355. ->where('id',$type)
  356. ->value('name');
  357. $this->assign('is_normal',$is_normal);
  358. $this->assign('type',$type);
  359. $this->assign('start',$start);
  360. $this->assign('end',$end);
  361. $this->assign('user_id',$user_id);
  362. $this->assign('meta_title',$t.'人员工作量统计');
  363. return $this->fetch();
  364. }
  365. }
  366. public function workExport() {
  367. $cur = date('Y-m-d');
  368. $start = input('start', date('Y-m-d', strtotime('' . $cur . ' -1 week')));
  369. $end = input('end', date('Y-m-d'));
  370. $start1 = $start . ' 00:00:00';
  371. $end1 = $end . ' 23:59:59';
  372. $type = input('type', 1);
  373. $ret = $this->workData($start1, $end1, $type);
  374. include_once env('root_path') . '/extend/phpexcel/Classes/PHPExcel.php';
  375. //实例化PHPExcel类
  376. $objPHPExcel = new \PHPExcel();
  377. //激活当前的sheet表
  378. $objPHPExcel->setActiveSheetIndex(0);
  379. //设置表格头(即excel表格的第一行)
  380. $objPHPExcel->setActiveSheetIndex(0)
  381. ->setCellValue('A1', 'ID')
  382. ->setCellValue('B1', '姓名')
  383. ->setCellValue('C1', '工作记录(总数)')
  384. ->setCellValue('D1', '工作记录(正常)')
  385. ->setCellValue('E1', '工作记录(异常)')
  386. ->setCellValue('F1', '完成率')
  387. ->setCellValue('G1', '需要完成')
  388. ->setCellValue('H1', '已完成');
  389. // 设置表格头水平居中
  390. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A1')->getAlignment()
  391. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  392. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B1')->getAlignment()
  393. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  394. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C1')->getAlignment()
  395. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  396. //设置列水平居中
  397. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  398. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  399. $objPHPExcel->setActiveSheetIndex(0)->getStyle('B')->getAlignment()
  400. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  401. $objPHPExcel->setActiveSheetIndex(0)->getStyle('C')->getAlignment()
  402. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  403. //设置单元格宽度
  404. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(10);
  405. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
  406. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
  407. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
  408. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
  409. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(20);
  410. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(20);
  411. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(20);
  412. //循环刚取出来的数组,将数据逐一添加到excel表格。
  413. for ($i = 0; $i < count($ret); $i++) {
  414. $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $ret[$i]['id']);
  415. $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $ret[$i]['title']);
  416. $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $ret[$i]['count']);
  417. $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $ret[$i]['count1']);
  418. $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), $ret[$i]['count2']);
  419. $objPHPExcel->getActiveSheet()->setCellValue('F' . ($i + 2), $ret[$i]['wcl']);
  420. $objPHPExcel->getActiveSheet()->setCellValue('G' . ($i + 2), $ret[$i]['count4']);
  421. $objPHPExcel->getActiveSheet()->setCellValue('H' . ($i + 2), $ret[$i]['count3']);
  422. }
  423. $n = Db::name('patrol_mode')
  424. ->where('id', $type)
  425. ->value('name');
  426. //设置保存的Excel表格名称
  427. $filename = $n . '人员工作量统计_' . date('YmdHis', time()) . '.xls';
  428. //设置当前激活的sheet表格名称
  429. $objPHPExcel->getActiveSheet()->setTitle($n . '人员工作量统计');
  430. //设置浏览器窗口下载表格
  431. ob_end_clean();
  432. header("Content-Type: application/force-download");
  433. header("Content-Type: application/octet-stream");
  434. header("Content-Type: application/download");
  435. header('Content-Disposition:inline;filename="' . $filename);
  436. //生成excel文件
  437. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  438. //下载文件在浏览器窗口
  439. return $objWriter->save('php://output');
  440. }
  441. public function patrolList(){
  442. $patrol_addr_id = input('patrol_addr_id','','trim');
  443. if($patrol_addr_id!=''){
  444. $map[] = ['patrol_addr_id','=',$patrol_addr_id];
  445. }
  446. $is_normal = input('is_normal','','trim');
  447. if($is_normal!==''){
  448. $map[] = ['is_normal','=',$is_normal];
  449. }
  450. $type = input('type','','trim');
  451. if($type != ''){
  452. $map[] = ['patrol_mode','=',$type];
  453. }
  454. $start = input('start',date('Y-m-d', strtotime('' . date('Y-m-d') . ' -1 week')));
  455. if($start != ''){
  456. $map[] = ['create_time','>=',$start.' 00:00:00'];
  457. }
  458. $end = input('end', date('Y-m-d'));
  459. if($end != ''){
  460. $map[] = ['create_time','<=',$end.' 23:59:59'];
  461. }
  462. if(request()->isAjax()){
  463. //分页参数
  464. $length = input('rows',10,'intval'); //每页条数
  465. $page = input('page',1,'intval'); //第几页
  466. $start = ($page - 1) * $length; //分页开始位置
  467. //排序
  468. $sortRow = input('sidx','sort','trim'); //排序列
  469. $sort = input('sord','asc','trim'); //排序方式
  470. $order = $sortRow.' '.$sort.' ,id desc';
  471. $map[] = ['org_id','=',$this->orgId];
  472. $map= empty($map) ? true: $map;
  473. //数据查询
  474. $lists = Db::name('patrol_record')
  475. ->where($map)
  476. ->limit($start,$length)
  477. ->order($order)
  478. ->select();
  479. foreach ($lists as $k=>$v){
  480. $lists[$k]['address_title'] = Db::name('address')
  481. ->where('id', $v['patrol_addr_id'])
  482. ->value('title');
  483. $lists[$k]['task_user'] = Db::name('user')
  484. ->where('id', $v['user_id'])->value('real_name');
  485. $lists[$k]['task_title'] = Db::name('patrol_task')
  486. ->where('id', $v['patrol_task_id'])
  487. ->value('title');
  488. }
  489. //数据返回
  490. $totalCount = Db::name('patrol_record')->where($map)->count();
  491. $totalPage = ceil($totalCount/$length);
  492. $result['page'] = $page;
  493. $result['total'] = $totalPage;
  494. $result['records'] = $totalCount;
  495. $result['rows'] = $lists;
  496. return json($result);
  497. }else{
  498. $type = input('type',1);
  499. $t = Db::name('patrol_mode')
  500. ->where('id',$type)
  501. ->value('name');
  502. $this->assign('is_normal',$is_normal);
  503. $this->assign('type',$type);
  504. $this->assign('start',$start);
  505. $this->assign('end',$end);
  506. $this->assign('patrol_addr_id',$patrol_addr_id);
  507. $this->assign('meta_title',$t.'检查记录');
  508. return $this->fetch();
  509. }
  510. }
  511. }