ApiService.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: qiuzijian
  5. * Date: 6/22/24
  6. * Time: 12:34 PM
  7. */
  8. namespace Modules\Admin\Services;
  9. use App\Enum\ApiEnum;
  10. use Illuminate\Support\Facades\Cache;
  11. use Illuminate\Support\Facades\DB;
  12. use Illuminate\Support\Facades\Log;
  13. use Modules\Admin\Entities\Menu;
  14. class ApiService{
  15. public function __construct()
  16. {
  17. }
  18. //网格化整改
  19. public static function editConition($params)
  20. {
  21. $result['status'] = true;
  22. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  23. $result['data'] = [];
  24. $update = [
  25. 'zgzp' => $params['zgpz'],
  26. 'jcwt' => '无'
  27. ];
  28. DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')->where('id',$params['id'])->update($update);
  29. return $result;
  30. }
  31. //网格化录入
  32. public static function addConition($params)
  33. {
  34. $result['status'] = true;
  35. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  36. $result['data'] = [];
  37. //区域字典录入
  38. $area = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcqyzd')->where('szxmc',$params['xjdw'])->orderBy('areaid','desc')->get();
  39. $is_insert = true;
  40. if(count($area) > 0){
  41. for($i=0;$i<count($area);$i++){
  42. if($params['jcqy'] == $area[$i]->qymc){
  43. $is_insert = false;
  44. }
  45. }
  46. }
  47. if($is_insert){
  48. $data['ID'] = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  49. $data['FORM_DATA_ID'] = $data['ID'];
  50. $data['DATA_INDEX'] = 0.0;
  51. $data['CREATE_TIME'] = date('Y-m-d H:i:s');
  52. $data['TENANT_KEY'] = 't1zz9w8165';
  53. $data['IS_DELETE'] = 0;
  54. $data['DELETE_TYPE'] = 0;
  55. $data['FT_STATUS'] = 0;
  56. if(count($area) > 0){
  57. preg_match_all('/[0-9]+/', $area[0]->areaid, $matches);
  58. $data['areaid'] = $params['xjdw'].($matches[0] + 1);
  59. }else{
  60. $data['areaid'] = $params['xjdw'].'1';
  61. }
  62. $data['qymc'] = $params['jcqy'];
  63. $data['szxmc'] = $params['xjdw'];
  64. DB::connection('mysql_fwe10')->table('uf_zhxx_qlcqyzd')->insert($data);
  65. }
  66. //巡检记录录入
  67. $id = mt_rand(pow(10, 18), pow(10, 18) + 999999999);
  68. $insert = [
  69. 'ID' => $id,
  70. 'FORM_DATA_ID' => $id,
  71. 'DATA_INDEX' => 0.0,
  72. 'CREATE_TIME' => date('Y-m-d H:i:s'),
  73. 'TENANT_KEY' => 't1zz9w8165',
  74. 'IS_DELETE' => 0,
  75. 'DELETE_TYPE' => 0,
  76. 'FT_STATUS' => 0,
  77. 'xjqy' => $params['jcqy'],
  78. 'dkpz' => $params['dkpz'],
  79. 'lrr' => $params['lrmc'].'|'.$params['lrr'],
  80. 'jclx' => $params['jclx'],
  81. 'lrsj' => $params['lrsj'],
  82. 'dwmc' => $params['dwmc'],
  83. 'jcwt' => $params['jcwt'],
  84. 'xjdw' => $params['xjdw'],
  85. 'wtms' => $params['wtms'],
  86. 'sjr' => $params['sjr']
  87. ];
  88. if($params['jcwt'] == '有'){
  89. $insert['zgr'] = $params['zgr'];
  90. }
  91. DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')->insert($insert);
  92. return $result;
  93. }
  94. //网格化人员轨迹查询条件
  95. public static function getQueryConitions($date = '')
  96. {
  97. $result['status'] = true;
  98. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  99. $result['data'] = [];
  100. if (!$date) {
  101. $date = date('Y-m-d', time());
  102. }
  103. $depart = DB::connection('mysql_fwe10_eteams')->table('department')
  104. ->where('parent', '100001980000000049')
  105. ->where('name', 'like', '%' . '洗煤厂')
  106. ->where('id','!=','100001590000001602')
  107. ->get();
  108. $depart_arr = [];
  109. foreach ($depart as $key => $val) {
  110. $depart_name = str_replace('洗选中心', '', $val->fullname);
  111. $depart_arr[$key] = [
  112. 'name' => $depart_name,
  113. ];
  114. $query = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')
  115. ->where('xjdw', $depart_name)
  116. ->where('lrsj', 'like', '%' . $date . '%')
  117. ->groupBy('lrr')->select(
  118. [
  119. 'lrr'
  120. ]
  121. )->get();
  122. if(count($query) > 0){
  123. for($i=0;$i<count($query);$i++){
  124. $lrr = explode('|',$query[$i]->lrr);
  125. $query[$i]->person_name = $lrr[0];
  126. $query[$i]->person_id = $lrr[1];
  127. }
  128. }
  129. $query = json_decode($query);
  130. $depart_arr[$key]['person_list'] = $query;
  131. }
  132. $result['data'] = $depart_arr;
  133. return $result;
  134. }
  135. //网格化人员轨迹
  136. public static function getPersonTravel($person_id, $depart, $date = '')
  137. {
  138. $result['status'] = true;
  139. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  140. $result['data'] = [];
  141. if (!$date) {
  142. $date = date('Y-m-d', time());
  143. }
  144. $res = [];
  145. $area_arr = [];
  146. $query = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')
  147. ->where('lrr', $person_id)
  148. ->where('lrsj', 'like', '%' . $date . '%')
  149. ->where('xjdw', $depart)
  150. ->orderBy('lrsj', 'asc')->get();
  151. $query = json_decode($query);
  152. if ($query) {
  153. foreach ($query as $key => $val) {
  154. // dd($val);
  155. $area_arr[] = $val->xjqy;
  156. $res[] = [
  157. 'area' => $val->xjqy,
  158. 'date' => $val->lrsj,
  159. 'data_id' => $val->ID,
  160. 'url' => 'http://anstatic.nxmy.com:8011/assets/html/xixuan/pages/detail.html?id='.$val->ID,
  161. ];
  162. }
  163. $area_list = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcqyzd')
  164. ->whereNotIn('qymc', $area_arr)
  165. ->where('szxmc', $depart)->orderBy('areaid', 'asc')->get();
  166. foreach ($area_list as $area) {
  167. $res[] = [
  168. 'area' => $area->qymc,
  169. 'date' => '',
  170. 'data_id' => '',
  171. 'url' => '',
  172. ];
  173. }
  174. $result['data'] = $res;
  175. }
  176. return $result;
  177. }
  178. //网格化巡检记录查询条件
  179. public static function getResultConition()
  180. {
  181. $result['status'] = true;
  182. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  183. $result['data'] = [];
  184. $depart = DB::connection('mysql_fwe10_eteams')->table('department')
  185. ->where('parent', '100001980000000049')
  186. ->where('name', 'like', '%' . '洗煤厂')
  187. ->where('id','!=','100001590000001602')
  188. ->get();
  189. $depart_arr = [];
  190. foreach ($depart as $key => $val) {
  191. $depart_name = str_replace('洗选中心', '', $val->fullname);
  192. $depart_arr[$key] = $depart_name;
  193. }
  194. $result['data'] = $depart_arr;
  195. return $result;
  196. }
  197. //网格化巡检记录查询
  198. public static function getResultRecord($depart = 'all', $date_type = 'week')
  199. {
  200. $result['status'] = true;
  201. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  202. $result['data'] = [];
  203. $query = DB::connection('mysql_fwview')->table('uf_wghgl_new');
  204. if ($depart != 'all') {
  205. $query = $query->where('xjdw', $depart);
  206. }
  207. if ($date_type == 'month') {
  208. $query = $query->where(DB::raw('MONTH(lrsj)'), DB::raw('MONTH(CURDATE())'));
  209. } else if ($date_type == 'quarter') {
  210. $query = $query->where(DB::raw('QUARTER(lrsj)'), DB::raw('QUARTER(CURDATE())'));
  211. } else {
  212. $query = $query->where(DB::raw('WEEK(lrsj)'), DB::raw('WEEK(CURDATE())'));
  213. }
  214. $query = $query->groupBy('lrdate', 'xjdw', 'lrr', 'dwmc')
  215. ->select(
  216. [
  217. DB::raw('DATE(lrsj) as lrdate'),
  218. 'xjdw',
  219. 'lrr',
  220. 'dwmc'
  221. ]
  222. )
  223. ->get();
  224. $data = [];
  225. $pie = [];
  226. foreach ($query as $key => $val) {
  227. $lastname = DB::connection('mysql_fwview')->table('hrmresource')
  228. ->where('id', $val->lrr)->value('lastname');
  229. $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
  230. ->where('szxmc', $val->xjdw)->count();
  231. $detail = DB::connection('mysql_fwview')->table('uf_wghgl_new')
  232. ->where('xjdw', $val->xjdw)
  233. ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
  234. ->where('lrr', $val->lrr)->count();
  235. if ($allcount <= 0) {
  236. continue;
  237. }
  238. // if ($detail >= $allcount) {
  239. $data[$val->lrr] = [
  240. 'department' => $val->dwmc,
  241. 'lastname' => $lastname,
  242. 'person_id' => $val->lrr,
  243. 'count' => isset($data[$val->lrr]['count']) ? $data[$val->lrr]['count'] + 1 : 1,
  244. ];
  245. $pie[$val->lrr] = [
  246. 'name' => $lastname,
  247. 'value' => isset($data[$val->lrr]['value']) ? $data[$val->lrr]['value'] + 1 : 1,
  248. ];
  249. // } else {
  250. // continue;
  251. // }
  252. }
  253. $data_arr = array_column($data, 'count');
  254. array_multisort($data_arr, SORT_DESC, $data);
  255. $pie_arr = array_column($pie, 'value');
  256. array_multisort($pie_arr, SORT_DESC, $pie);
  257. $result['data']['list'] = $data;
  258. $result['data']['pie'] = $pie;
  259. return $result;
  260. }
  261. //网格化巡检记录列表
  262. public static function getResultList($person_id, $depart = 'all', $date_type = 'week')
  263. {
  264. $result['status'] = true;
  265. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  266. $result['data'] = [];
  267. $query = DB::connection('mysql_fwview')->table('uf_wghgl_new')->where('lrr', $person_id);
  268. if ($depart != 'all') {
  269. $query = $query->where('xjdw', $depart);
  270. }
  271. if ($date_type == 'month') {
  272. $query = $query->where(DB::raw('MONTH(lrsj)'), DB::raw('MONTH(CURDATE())'));
  273. } else if ($date_type == 'quarter') {
  274. $query = $query->where(DB::raw('QUARTER(lrsj)'), DB::raw('QUARTER(CURDATE())'));
  275. } else {
  276. $query = $query->where(DB::raw('WEEK(lrsj)'), DB::raw('WEEK(CURDATE())'));
  277. }
  278. $query = $query->groupBy('lrdate', 'xjdw')
  279. ->select(
  280. [
  281. 'xjdw',
  282. DB::raw('DATE(lrsj) as lrdate'),
  283. ]
  284. )
  285. ->get();
  286. $data = [];
  287. foreach ($query as $key => $val) {
  288. $lastname = DB::connection('mysql_fwview')->table('hrmresource')
  289. ->where('id', $person_id)->value('lastname');
  290. $allcount = DB::connection('mysql_fwview')->table('formtable_main_974')
  291. ->where('szxmc', $val->xjdw)->count();
  292. $detail = DB::connection('mysql_fwview')->table('uf_wghgl_new')
  293. ->where('xjdw', $val->xjdw)
  294. ->where(DB::raw('DATE(lrsj)'), $val->lrdate)
  295. ->where('lrr', $person_id)->count();
  296. if ($allcount <= 0) {
  297. continue;
  298. }
  299. if ($detail >= $allcount) {
  300. $data[] = [
  301. 'lastname' => $lastname,
  302. 'person_id' => $person_id,
  303. 'depart' => $val->xjdw,
  304. 'date' => $val->lrdate
  305. ];
  306. } else {
  307. continue;
  308. }
  309. }
  310. $data_arr = array_column($data, 'date');
  311. array_multisort($data_arr, SORT_DESC, $data);
  312. $result['data']['list'] = $data;
  313. return $result;
  314. }
  315. //网格化巡检记录列表明细
  316. public static function getResultDlist($person_id, $depart, $date)
  317. {
  318. $result['status'] = true;
  319. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  320. $result['data'] = [];
  321. $query = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')
  322. ->where('lrr', $person_id)
  323. ->where('xjdw', $depart)
  324. ->where('lrsj', 'like', $date . '%')
  325. ->orderBy('lrsj', 'desc')
  326. ->select([
  327. 'ID',
  328. 'lrr',
  329. 'xjqy',
  330. 'lrsj',
  331. ])->get();
  332. if(count($query) > 0){
  333. for($i=0;$i<count($query);$i++){
  334. $lrr = explode('|',$query[$i]->lrr);
  335. $query[$i]->lrr_name = $lrr[0];
  336. }
  337. }
  338. $query = json_decode($query);
  339. $result['data'] = $query;
  340. return $result;
  341. }
  342. //网格化巡检记录明细
  343. public static function getResultDetails($id)
  344. {
  345. $result['status'] = true;
  346. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  347. $result['data'] = [];
  348. $query = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl')
  349. ->where('id', $id)
  350. ->select(
  351. [
  352. 'lrr',
  353. 'dwmc',
  354. 'xjdw',
  355. 'xjqy',
  356. 'jclx',
  357. 'lrsj',
  358. 'jcwt',
  359. 'wtms',
  360. 'dkpz',
  361. 'zgzp'
  362. ]
  363. )->get();
  364. if(count($query) > 0){
  365. for($i=0;$i<count($query);$i++){
  366. $lrr = explode('|',$query[$i]->lrr);
  367. $query[$i]->lrr_name = $lrr[0];
  368. }
  369. }
  370. $query = json_decode($query);
  371. $result['data'] = $query;
  372. return $result;
  373. }
  374. //网格化巡检记录
  375. public static function getFinalList($start_date, $end_date, $depart = '', $person = '')
  376. {
  377. $result['status'] = true;
  378. $result['msg'] = ApiEnum::RETURN_SUCCESS;
  379. $result['data'] = [];
  380. $query = DB::connection('mysql_fwe10')->table('uf_zhxx_qlcxjjl');
  381. if ($start_date == $end_date) {
  382. $query = $query->where('lrsj', 'like', $start_date . '%');
  383. } else {
  384. $query = $query->where('lrsj', '>=', $start_date . ' 00:00:00')->where('lrsj', '<=', $end_date . ' 23:59:59');
  385. }
  386. if ($depart) {
  387. $query = $query->where('xjdw', $depart);
  388. }
  389. if ($person) {
  390. // $person_id = DB::connection('mysql_fwview')->table('hrmresource')
  391. // ->where('lastname', 'like', '%' . $person . '%')->pluck('id')->all();1
  392. $query = $query->whereIn('lrr', 'like','%'.$person_id.'%');
  393. }
  394. $query = $query->orderBy('lrdate', 'desc')->groupBy('lrsj', 'xjdw', 'lrr','jcwt','id','zgr')
  395. ->select(
  396. [
  397. DB::raw('DATE(lrsj) as lrdate'),
  398. 'xjdw',
  399. 'lrr',
  400. 'jcwt',
  401. 'id',
  402. 'zgr'
  403. ]
  404. )
  405. ->get();
  406. $data = [];
  407. foreach ($query as $key => $val) {
  408. $lastname = explode('|',$val->lrr)[0];
  409. if($val->jcwt == '有'){
  410. $is_complete = 0;
  411. }else{
  412. $is_complete = 1;
  413. }
  414. $zgr = explode('|',$val->zgr);
  415. $zgr_id = '';
  416. if(count($zgr) > 1){
  417. $zgr_id = $zgr[1];
  418. }
  419. $data[] = [
  420. 'depart' => $val->xjdw,
  421. 'lastname' => $lastname,
  422. 'person_id' => $val->lrr,
  423. 'date' => $val->lrdate,
  424. 'is_complete' => $is_complete,
  425. 'id' => $val->id,
  426. 'zgr_id' => $zgr_id
  427. ];
  428. }
  429. $result['data'] = $data;
  430. return $result;
  431. }
  432. }