You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

714 lines
20 KiB

  1. <?php
  2. require_once __DIR__ . '/../st-xm/Common/Mysql.php';
  3. header("Access-Control-Allow-Origin:*");
  4. //班次信息总体监测(包括run_bus,run_prod,run_stock)
  5. date_default_timezone_set('Asia/Shanghai');
  6. $today = date('Y-m-d');
  7. $tomorrow = date('Y-m-d', strtotime('+1 day'));
  8. $afterTomorrow = date('Y-m-d', strtotime('+2 day'));
  9. $afterTomorrow_x = date('Ym', strtotime('+2 day'));
  10. $nextMonth = date('Y-m-d', strtotime("+1 month"));
  11. $nextWeek = date('Y-m-d', strtotime('+1 week'));
  12. $nextWeek_x = date('Ym', strtotime('+1 week'));
  13. $pdo = conn();
  14. //----run_bus监测
  15. #region 1 run_bus
  16. //把数组key值改为run_id+bus_order_id
  17. function change_key_bus($a)
  18. {
  19. $tmp = array();
  20. foreach ($a as $k => $v) {
  21. $tmpk = $v['run_id'] . '-' . $v['bus_order_id'];
  22. $tmp["$tmpk"] = $v;
  23. $tmp["$tmpk"]['id'] = $k;
  24. }
  25. return $tmp;
  26. }
  27. //合并数组
  28. function multi_merge_bus($a, $b)
  29. {
  30. $arr_bus = array();
  31. foreach ($a as $k => $r) {
  32. if (isset($b[$k])) {
  33. $arr_bus[$k] = array_merge($r, $b[$k]);
  34. } else {
  35. $arr_bus[$k] = $r;
  36. $arr_bus[$k]['num2'] = 0;
  37. }
  38. }
  39. foreach ($b as $k => $r) {
  40. if (!isset($arr_bus[$k])) {
  41. $arr_bus[$k] = $r;
  42. $arr_bus[$k]['num1'] = 0;
  43. }
  44. }
  45. return $arr_bus;
  46. }
  47. //从订单角度得到run_bus表的数据
  48. $sql_bus1 = "SELECT
  49. l.line_id,
  50. m.run_id,
  51. m.RUN_BUS_ORDER_ID bus_order_id,
  52. m.run_date,
  53. count(m.order_id) as num1
  54. FROM
  55. order_main m
  56. LEFT JOIN opera_line l ON m.PARENT_PROD_ID = l.line_id
  57. LEFT JOIN opera_tickets t on m.prod_id=t.TICKET_ID
  58. LEFT JOIN opera_line w on t.line_id=w.line_id
  59. WHERE
  60. m.PARENT_ORDER_ID <> 0
  61. AND m.run_date >= '$today'
  62. AND m.run_date <= '$nextMonth'
  63. AND m.ORDER_VALID_STATUS = 1
  64. AND m.CANCEL_FLAG = 0
  65. AND m.PROD_ID <> 380001
  66. and m.run_bus_order_id<>0
  67. AND w.line_type in (255,256,368)
  68. AND m.ORDER_PROD_TYPE = 82
  69. group by run_id,bus_order_id
  70. order by m.run_date;";
  71. $res1 = $pdo->query($sql_bus1);
  72. $res1->setFetchMode(PDO::FETCH_ASSOC);
  73. $arr_bus1 = $res1->fetchAll();
  74. $res1->closeCursor();
  75. $sql_bus2 = "SELECT
  76. b.prod_id as line_id,
  77. b.run_id,
  78. a.bus_order_id,
  79. b.run_date,
  80. a.SEAT_COUNT,
  81. a.saled_count as num2
  82. FROM
  83. run_bus a
  84. LEFT JOIN run_main b ON a.run_id = b.run_id
  85. WHERE
  86. b.run_date >= '$today'
  87. and b.run_date <= '$nextMonth'
  88. and a.CANCEL_FLAG=0
  89. and a.SALED_COUNT<>0
  90. AND b.PROD_ID <> 0
  91. and b.prod_id<>451479
  92. order by b.run_date;";
  93. $res2 = $pdo->query($sql_bus2);
  94. $res2->setFetchMode(PDO::FETCH_ASSOC);
  95. $arr_bus2 = $res2->fetchAll();
  96. $res2->closeCursor();
  97. //切换key值
  98. $arr_bus1 = change_key_bus($arr_bus1);
  99. $arr_bus2 = change_key_bus($arr_bus2);
  100. $arr_bus = multi_merge_bus($arr_bus1, $arr_bus2);
  101. //得到不对应的数据
  102. $diffarr_bus = array();
  103. $content_bus = '[' . date('Y-m-d H:i:s') . ']run_bus表数据不一致提醒:';
  104. foreach ($arr_bus as $k => $v) {
  105. if ($v['num1'] != $v['num2']) {
  106. $diffarr_bus[] = $v;
  107. }
  108. }
  109. //将数据插入到run_info_check表里
  110. $inset_bus_sql = "INSERT INTO run_check_log (
  111. run_table,
  112. line_id,
  113. run_id,
  114. extra_id,
  115. create_time,
  116. run_date,
  117. real_num,
  118. record_num
  119. )
  120. VALUES";
  121. $value_bus_sql = '';
  122. foreach ($diffarr_bus as $k => $v) {
  123. $value_bus_sql .= "('run_bus'," . $v['line_id'] . "," . $v['run_id'] . "," . $v['bus_order_id'] . ",now(),'" . $v['run_date'] . "'," . $v['num1'] . "," . $v['num2'] . "),";
  124. }
  125. $value_bus_sql = rtrim($value_bus_sql, ',');
  126. $inset_bus_sql .= $value_bus_sql;
  127. if ($value_bus_sql) { //如果有数据,插入到数据表run_check_log
  128. $afr = $pdo->exec($inset_bus_sql);
  129. }
  130. //整合短信发送内容
  131. foreach ($diffarr_bus as $k => $v) {
  132. $content_bus .= '【<' . ($k + 1) . '>,run_id:' . $v['run_id'] . ',bus_order_id:' . $v['bus_order_id'] . ',实际订单数:' . $v['num1'] . ',记录数:' . $v['num2'] . '】';
  133. }
  134. $content_bus .= '. ';
  135. if (empty($diffarr_bus)) {
  136. $content_bus = '';
  137. }
  138. #endregion
  139. //---run_prod监测
  140. #region 2 run_prod
  141. //把数组key值改为run_id+prod_id
  142. function change_key_prod($a)
  143. {
  144. $tmp = array();
  145. foreach ($a as $k => $v) {
  146. $tmpk = $v['run_id'] . '-' . $v['prod_id'];
  147. $tmp["$tmpk"] = $v;
  148. $tmp["$tmpk"]['id'] = $k;
  149. }
  150. return $tmp;
  151. }
  152. //合并数组
  153. function multi_merge_prod($a, $b)
  154. {
  155. $arr_prod = array();
  156. foreach ($a as $k => $r) {
  157. if (isset($b[$k])) {
  158. $arr_prod[$k] = array_merge($r, $b[$k]);
  159. } else {
  160. $arr_prod[$k] = $r;
  161. $arr_prod[$k]['num2'] = 0;
  162. }
  163. }
  164. foreach ($b as $k => $r) {
  165. if (!isset($arr_prod[$k])) {
  166. $arr_prod[$k] = $r;
  167. $arr_prod[$k]['num1'] = 0;
  168. }
  169. }
  170. return $arr_prod;
  171. }
  172. //从订单角度得到run_prod表的数据
  173. $sql_prod1 = "SELECT
  174. l.line_id,
  175. m.run_id,
  176. m.prod_id,
  177. m.run_date,
  178. count(m.order_id) as num1
  179. FROM
  180. order_main m
  181. LEFT JOIN opera_line l ON m.PARENT_PROD_ID = l.line_id
  182. LEFT JOIN opera_tickets t on m.prod_id=t.TICKET_ID
  183. LEFT JOIN opera_line w on t.line_id=w.line_id
  184. WHERE
  185. m.PARENT_ORDER_ID <> 0
  186. AND m.run_date >= '$today'
  187. AND m.run_date <= '$nextMonth'
  188. AND m.ORDER_VALID_STATUS = 1
  189. AND m.CANCEL_FLAG = 0
  190. AND m.PROD_ID <> 380001
  191. AND w.line_type in (255,256,368)
  192. AND m.ORDER_PROD_TYPE = 82
  193. group by run_id,prod_id
  194. order by m.run_date;";
  195. $res1 = $pdo->query($sql_prod1);
  196. $res1->setFetchMode(PDO::FETCH_ASSOC);
  197. $arr_prod1 = $res1->fetchAll();
  198. $res1->closeCursor();
  199. //run_prod表本身的数据
  200. $sql_prod2 = "SELECT
  201. b.prod_id as line_id,
  202. b.run_id,
  203. a.prod_id,
  204. b.run_date,
  205. a.saled_count as num2
  206. FROM
  207. run_prod a
  208. LEFT JOIN run_main b ON a.run_id = b.run_id
  209. WHERE
  210. b.run_date >= '$today'
  211. and b.run_date <= '$nextMonth'
  212. and a.SALED_COUNT<>0
  213. AND b.PROD_ID <> 0
  214. order by b.run_date;";
  215. $res2 = $pdo->query($sql_prod2);
  216. $res2->setFetchMode(PDO::FETCH_ASSOC);
  217. $arr_prod2 = $res2->fetchAll();
  218. $res2->closeCursor();
  219. //切换key值
  220. $arr_prod1 = change_key_prod($arr_prod1);
  221. $arr_prod2 = change_key_prod($arr_prod2);
  222. $arr_prod = multi_merge_prod($arr_prod1, $arr_prod2);
  223. //得到不对应的数据
  224. $diffarr_prod = array();
  225. $content_prod = '[' . date('Y-m-d H:i:s') . ']run_prod表数据不一致提醒:';
  226. foreach ($arr_prod as $k => $v) {
  227. if ($v['num1'] != $v['num2']) {
  228. $diffarr_prod[] = $v;
  229. }
  230. }
  231. //将数据插入到run_info_check表里
  232. $inset_prod_sql = "INSERT INTO run_check_log (
  233. run_table,
  234. line_id,
  235. run_id,
  236. extra_id,
  237. create_time,
  238. run_date,
  239. real_num,
  240. record_num
  241. )
  242. VALUES";
  243. $value_prod_sql = '';
  244. foreach ($diffarr_prod as $k => $v) {
  245. $value_prod_sql .= "('run_prod'," . $v['line_id'] . "," . $v['run_id'] . "," . $v['prod_id'] . ",now(),'" . $v['run_date'] . "'," . $v['num1'] . "," . $v['num2'] . "),";
  246. }
  247. $value_prod_sql = rtrim($value_prod_sql, ',');
  248. $inset_prod_sql .= $value_prod_sql;
  249. if ($value_prod_sql) { //如果有数据,插入到数据表run_check_log
  250. $afr = $pdo->exec($inset_prod_sql);
  251. }
  252. //print_r($diffarr_prod);
  253. //整合短信发送内容
  254. foreach ($diffarr_prod as $k => $v) {
  255. $content_prod .= '【<' . ($k + 1) . '>,run_id:' . $v['run_id'] . ',prod_id:' . $v['prod_id'] . ',实际订单数:' . $v['num1'] . ',记录数:' . $v['num2'] . '】';
  256. }
  257. $content_prod .= '. ';
  258. if (empty($diffarr_prod)) {
  259. $content_prod = '';
  260. }
  261. #endregion
  262. //---run_stock监测
  263. #region 3 run_stock
  264. //二维数组去除重复
  265. function array_unique_fb_stock($array2D)
  266. {
  267. foreach ($array2D as $v) {
  268. $v = join(",", $v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  269. $temp[] = $v;
  270. }
  271. $temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
  272. foreach ($temp as $k => $v) {
  273. $array = explode(",", $v); //再将拆开的数组重新组装
  274. $temp2[$k]['line_id'] = $array[0];
  275. $temp2[$k]['run_id'] = $array[1];
  276. $temp2[$k]['run_date'] = $array[2];
  277. $temp2[$k]['seq_id'] = $array[3];
  278. $temp2[$k]['num1'] = $array[4];
  279. }
  280. return $temp2;
  281. }
  282. //把数组key值改为run_id+seq_id
  283. function change_key_stock($a)
  284. {
  285. $tmp = array();
  286. foreach ($a as $k => $v) {
  287. $tmpk = $v['run_id'] . '-' . $v['seq_id'];
  288. $tmp["$tmpk"] = $v;
  289. $tmp["$tmpk"]['id'] = $k;
  290. }
  291. return $tmp;
  292. }
  293. //合并数组
  294. function multi_merge_stock($a, $b) //$a 实际订单数据,$b记录的数值
  295. {
  296. $arr_stock = array();
  297. foreach ($a as $k => $r) {
  298. if (isset($b[$k])) {
  299. $arr_stock[$k] = array_merge($r, $b[$k]);
  300. } else {
  301. $arr_stock[$k] = $r;
  302. $arr_stock[$k]['num2'] = 0;
  303. }
  304. }
  305. foreach ($b as $k => $r) {
  306. if (!isset($arr_stock[$k])) {
  307. $arr_stock[$k] = $r;
  308. $arr_stock[$k]['num1'] = 0;
  309. }
  310. }
  311. return $arr_stock;
  312. }
  313. //从订单角度得到run_stock表的数据
  314. $sql_stock1 = "SELECT
  315. l.line_id,
  316. m.run_id,
  317. m.prod_start_station_seq_id,
  318. m.prod_end_station_seq_id,
  319. m.run_date,
  320. count(m.order_id) as num1
  321. FROM
  322. order_main m
  323. LEFT JOIN opera_line l ON m.PARENT_PROD_ID = l.line_id
  324. LEFT JOIN opera_tickets t on m.prod_id=t.TICKET_ID
  325. LEFT JOIN opera_line w on t.line_id=w.line_id
  326. WHERE
  327. m.PARENT_ORDER_ID <> 0
  328. AND m.run_date >= '$today'
  329. AND m.run_date <= '$nextMonth'
  330. AND m.ORDER_VALID_STATUS = 1
  331. AND m.CANCEL_FLAG = 0
  332. AND m.PROD_ID <> 380001
  333. AND w.line_type in (255,256,368)
  334. AND m.ORDER_PROD_TYPE = 82
  335. group by run_id,prod_start_station_seq_id,prod_end_station_seq_id
  336. order by m.run_date,m.run_id,m.prod_start_station_seq_id;";
  337. $res1 = $pdo->query($sql_stock1);
  338. $res1->setFetchMode(PDO::FETCH_ASSOC);
  339. $arr_stock1 = $res1->fetchAll();
  340. $res1->closeCursor();
  341. //run_stock表本身的数据
  342. $sql_stock2 = "SELECT
  343. b.prod_id as line_id,
  344. b.run_id,
  345. a.seq_id,
  346. b.run_date,
  347. a.saled_count as num2
  348. FROM
  349. run_stock a
  350. LEFT JOIN run_main b ON a.run_id = b.run_id
  351. WHERE
  352. b.run_date >= '$today'
  353. and b.run_date <= '$nextMonth'
  354. and a.CANCEL_FLAG=0
  355. and a.SEAT_TYPE=72
  356. AND b.PROD_ID <> 0
  357. and (select sum(SALED_COUNT) as co from run_stock where run_id=b.run_id and CANCEL_FLAG=0)>0
  358. order by b.run_date,b.run_id;";
  359. $res2 = $pdo->query($sql_stock2);
  360. $res2->setFetchMode(PDO::FETCH_ASSOC);
  361. $arr_stock2 = $res2->fetchAll();
  362. $res2->closeCursor();
  363. #对arr1做处理,根据分段合并数据
  364. function merge_stock($a, $b)
  365. {
  366. $arr_stock = array();
  367. foreach ($b as $k => $v) {
  368. //$tmp=$v['run_id'].'-'.$v['prod_end_station_seq_id'];
  369. $num = 0;
  370. foreach ($a as $k2 => $v2) {
  371. if ($v['run_id'] == $v2['run_id']) {
  372. if ($v['seq_id'] >= $v2['prod_start_station_seq_id'] && $v['seq_id'] < $v2['prod_end_station_seq_id']) {
  373. $num += $v2['num1'];
  374. }
  375. }
  376. }
  377. $arr_stock[$k]['line_id'] = $v['line_id'];
  378. $arr_stock[$k]['run_id'] = $v['run_id'];
  379. $arr_stock[$k]['run_date'] = $v['run_date'];
  380. $arr_stock[$k]['seq_id'] = $v['seq_id'];
  381. $arr_stock[$k]['num1'] = $num;
  382. }
  383. return array_unique_fb_stock($arr_stock);//二维数组去重
  384. }
  385. $arr_stock1 = merge_stock($arr_stock1, $arr_stock2);
  386. //切换key值
  387. $arr_stock1 = change_key_stock($arr_stock1);
  388. //print_r($arr_stock1);
  389. $arr_stock2 = change_key_stock($arr_stock2);
  390. $arr_stock = multi_merge_stock($arr_stock1, $arr_stock2);//合并二维数组
  391. //得到不对应的数据
  392. $diffarr_stock = array();
  393. $content_stock = '[' . date('Y-m-d H:i:s') . ']run_stock表数据不一致提醒:';
  394. foreach ($arr_stock as $k => $v) {
  395. if ($v['num1'] != $v['num2']) {
  396. $diffarr_stock[] = $v;
  397. }
  398. }
  399. //将数据插入到run_info_check表里
  400. $inset_stock_sql = "INSERT INTO run_check_log (
  401. run_table,
  402. line_id,
  403. run_id,
  404. extra_id,
  405. create_time,
  406. run_date,
  407. real_num,
  408. record_num
  409. )
  410. VALUES";
  411. $value_stock_sql = '';
  412. foreach ($diffarr_stock as $k => $v) {
  413. $value_stock_sql .= "('run_stock'," . $v['line_id'] . "," . $v['run_id'] . "," . $v['seq_id'] . ",now(),'" . $v['run_date'] . "'," . $v['num1'] . "," . $v['num2'] . "),";
  414. }
  415. $value_stock_sql = rtrim($value_stock_sql, ',');
  416. $inset_stock_sql .= $value_stock_sql;
  417. if ($value_stock_sql) { //如果有数据,插入到数据表run_check_log
  418. $afr = $pdo->exec($inset_stock_sql);
  419. }
  420. //print_r($diffarr_stock);
  421. //整合短信发送内容
  422. foreach ($diffarr_stock as $k => $v) {
  423. $content_stock .= '【<' . ($k + 1) . '>,run_id:' . $v['run_id'] . ',排序seq_id:' . $v['seq_id'] . ',实际订单数:' . $v['num1'] . ',记录数:' . $v['num2'] . '】';
  424. }
  425. $content_stock .= '. ';
  426. if (empty($diffarr_stock)) {
  427. $content_stock = '';
  428. }
  429. #endregion
  430. #region 4 run_x 数据检测
  431. $today_x = date('Ym');
  432. $tomorrow_x = date('Ym', strtotime("+1 day"));
  433. //把数组key值改为run_id+bus_order_id+seq_id+order_id
  434. function change_key_x($a)
  435. {
  436. $tmp = array();
  437. foreach ($a as $k => $v) {
  438. $tmpk = $v['run_id'] . '-' . $v['bus_order_id'] . '-' . $v['seq_id'] . '-' . $v['order_id'];
  439. $tmp["$tmpk"] = $v;
  440. $tmp["$tmpk"]['id'] = $k;
  441. }
  442. return $tmp;
  443. }
  444. //合并数组
  445. function multi_merge_x($a, $b) //$a 实际订单数据,$b记录的数值
  446. {
  447. $arr = array();
  448. foreach ($a as $k => $r) {
  449. if (isset($b[$k])) {
  450. $arr[$k] = array_merge($r, $b[$k]);
  451. } else {
  452. $arr[$k] = $r;
  453. $arr[$k]['num2'] = 0;
  454. $arr[$k]['run_seat_seq_id'] = 0;
  455. }
  456. }
  457. foreach ($b as $k => $r) {
  458. if (!isset($arr[$k])) {
  459. $arr[$k] = $r;
  460. $arr[$k]['num1'] = 0;
  461. $arr[$k]['order_seat_seq_id'] = 0;
  462. //$arr[$k]['parent_order_id'] = 0;
  463. }
  464. }
  465. return $arr;
  466. }
  467. //从订单角度得到run_x表的数据
  468. $sql1 = "SELECT
  469. m.order_id,
  470. m.parent_order_id,
  471. l.line_id,
  472. m.run_id,
  473. m.run_bus_order_id as bus_order_id,
  474. m.prod_start_station_seq_id as seq_id,
  475. m.prod_start_station_seq_id as start_seq_id,
  476. m.prod_end_station_seq_id as end_seq_id,
  477. m.run_bus_seat_seq_id as order_seat_seq_id,
  478. m.run_date,
  479. 1 as num1
  480. FROM
  481. order_main m
  482. LEFT JOIN opera_line l ON m.PARENT_PROD_ID = l.line_id
  483. LEFT JOIN opera_tickets t on m.prod_id=t.TICKET_ID
  484. LEFT JOIN opera_line w on t.line_id=w.line_id
  485. WHERE
  486. m.PARENT_ORDER_ID <> 0
  487. AND m.run_date >= '$today'
  488. AND m.run_date <= '$afterTomorrow'
  489. AND m.ORDER_VALID_STATUS = 1
  490. AND m.CANCEL_FLAG = 0
  491. AND m.PROD_ID <> 380001
  492. AND w.line_type in (255,256,368)
  493. AND m.ORDER_PROD_TYPE = 82
  494. order by m.run_date,m.run_id,m.run_bus_order_id,m.prod_start_station_seq_id;";
  495. $res4 = $pdo->query($sql1);
  496. $res4->setFetchMode(PDO::FETCH_ASSOC);
  497. $order_ori = $res4->fetchAll();
  498. //print_r($order_ori);
  499. #处理订单数组,得到订单run_x维度的数据
  500. $order_x = array();
  501. $len = count($order_x);
  502. foreach ($order_ori as $k => $v) {
  503. $num = $v['end_seq_id'] - $v['start_seq_id'];
  504. if ($num >= 1) {
  505. for ($i = 1; $i <= $num; $i++) {
  506. $order_x[] = $v;
  507. $v['start_seq_id'] = $v['start_seq_id'] + 1;
  508. $v['seq_id'] = $v['seq_id'] + 1;
  509. }
  510. }
  511. }
  512. //print_r($order_x);
  513. //run_x表本身的数据
  514. $sql2 = "SELECT
  515. a.order_main_id as order_id,
  516. (select parent_order_id from order_main where order_id=a.order_main_id and order_prod_type=82 limit 1) as parent_order_id,
  517. b.prod_id as line_id,
  518. a.run_id,
  519. a.bus_order_id,
  520. a.order_id as seq_id,
  521. a.seat_seq_id as run_seat_seq_id,
  522. b.run_date,
  523. 1 as num2
  524. FROM
  525. run_$today_x a
  526. LEFT JOIN run_main b ON a.run_id = b.run_id
  527. WHERE
  528. b.run_date >= '$today'
  529. and b.run_date<='$afterTomorrow'
  530. and a.cancel_flag=0
  531. and a.seat_type=72
  532. and b.prod_id <> 0
  533. and a.seat_status=2
  534. UNION
  535. SELECT
  536. a.order_main_id as order_id,
  537. (select parent_order_id from order_main where order_id=a.order_main_id and order_prod_type=82 limit 1) as parent_order_id,
  538. b.prod_id as line_id,
  539. a.run_id,
  540. a.bus_order_id,
  541. a.order_id as seq_id,
  542. a.seat_seq_id as run_seat_seq_id,
  543. b.run_date,
  544. 1 as num2
  545. FROM
  546. run_$afterTomorrow_x a
  547. LEFT JOIN run_main b ON a.run_id = b.run_id
  548. WHERE
  549. b.run_date >= '$today'
  550. and b.run_date<='$afterTomorrow'
  551. and a.cancel_flag=0
  552. and a.seat_type=72
  553. and b.prod_id <> 0
  554. and a.seat_status=2
  555. order by run_date,run_id,bus_order_id,seq_id,run_seat_seq_id;";
  556. $res5 = $pdo->query($sql2);
  557. $res5->setFetchMode(PDO::FETCH_ASSOC);
  558. $arr2 = $res5->fetchAll();
  559. //切换key值
  560. $order_x = change_key_x($order_x);
  561. $run_x = change_key_x($arr2);
  562. $arr_run_x = multi_merge_x($order_x, $run_x);//合并二维数组
  563. //得到不对应的数据并按整合
  564. $diffarr_x = array();
  565. $diff_order =array();
  566. foreach ($arr_run_x as $k => $v) {
  567. if (($v['num1'] != $v['num2']) || ($v['order_seat_seq_id'] != $v['run_seat_seq_id'])) {
  568. $diffarr_x[] = $v;
  569. $unKey=$v['run_id'].'-'.$v['bus_order_id'].'-'.$v['parent_order_id'];
  570. $diff_order[$unKey]=$v;
  571. }
  572. }
  573. //将数据插入到run_info_check表里
  574. $inset_x_sql = "INSERT INTO run_check_log (
  575. run_table,
  576. line_id,
  577. run_id,
  578. extra_id,
  579. create_time,
  580. run_date,
  581. real_num,
  582. record_num
  583. )
  584. VALUES";
  585. $value_x_sql = '';
  586. foreach ($diff_order as $k => $v) {
  587. $value_x_sql .= "('run_x'," . $v['line_id'] . "," . $v['run_id'] . "," . $v['parent_order_id'] . ",now(),'" . $v['run_date'] . "'," . $v['num1'] . "," . $v['num2'] . "),";
  588. }
  589. $value_x_sql = rtrim($value_x_sql, ',');
  590. $inset_x_sql .= $value_x_sql;
  591. if ($value_x_sql) { //如果有数据,插入到数据表run_check_log
  592. $afr = $pdo->exec($inset_x_sql);
  593. }
  594. //整合短信发送内容
  595. $content_run_x = '[' . date('Y-m-d H:i:s') . ']run_x表数据不一致提醒:';
  596. $i=1;
  597. foreach ($diff_order as $k => $v) {
  598. $content_run_x .= '【<' . ($i) . '>,run_id:' . $v['run_id'] . ',bus_order_id:' . $v['bus_order_id'] . ',主订单号:' . $v['parent_order_id'] . '】';
  599. $i++;
  600. }
  601. if (empty($diffarr_x)) {
  602. $content_run_x = '';
  603. }
  604. #endregion
  605. if (empty($diffarr_bus) && empty($diffarr_prod) && empty($diffarr_stock) && empty($diffarr_x)) {
  606. exit('数据一致!');
  607. }
  608. //发送短信sendTelMessage($phones,$user_name,$content_stock,$order_id) qius13816608252 zhangs15203408170 wenyl15753206507
  609. //$phones = '13816608252,15203408170,15753206507';
  610. $phones = '13816608252,15203408170,15753206507';
  611. $show=isset($_GET['show']);
  612. if($show){
  613. print_r($content_bus);
  614. print_r($content_prod);
  615. print_r($content_stock);
  616. print_r($diffarr_x);
  617. print_r($diff_order);
  618. }
  619. //发送短信
  620. if(!$show){
  621. $final_content=$content_bus.$content_prod.$content_stock.$content_run_x;
  622. $response = sendTelMessage($phones, '比特', $final_content, 0);
  623. //print_r($final_content);
  624. var_dump($response);
  625. }