ApiService.php 16 KB

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