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.

get.php 8.6 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. <?php
  2. /*
  3. * 添加供应商
  4. * author:张帅
  5. */
  6. class get_supply_list
  7. {
  8. //获取供应商列表主要流程
  9. function execGetSupplyList($supplier_name, $product_type, $is_disabled, $current, $pagesize)
  10. {
  11. //1.获取筛选条件
  12. $sql_where = $this->getWhere($supplier_name, $is_disabled);
  13. //2.获取数据库原始数据
  14. $db_data = $this->getDbData($sql_where, $product_type, $current, $pagesize);
  15. //3.处理数据
  16. $tidyData = $this->tidyData($db_data['supplier_array']);
  17. $tidyData['total_page'] = (string)$db_data['total_page'];
  18. echo json_encode($tidyData);
  19. exit();
  20. }
  21. //获取筛选条件
  22. function getWhere($supplier_name, $is_disabled)
  23. {
  24. $res = array();
  25. if (!empty($is_disabled) && $is_disabled != -1) {
  26. $res[] = " a.is_disabled = " . $is_disabled;
  27. }
  28. if (!empty($supplier_name)) {
  29. $res[] = " a.supplier_name like '%%" . $supplier_name . "%%' ";
  30. }
  31. $main_corp_id = isset($_COOKIE["user_main_corp"]) ? $_COOKIE["user_main_corp"] : 0;
  32. if( $main_corp_id != 0 ) {
  33. $res[] = " main_corp_id IN (0,{$main_corp_id}) ";
  34. }
  35. if (count($res) > 0) {
  36. $res = " and " . implode(" and ", $res);
  37. } else {
  38. $res = '';
  39. }
  40. return $res;
  41. }
  42. //获取数据库原始数据
  43. function getDbData($sql_where, $product_type, $current, $pagesize)
  44. {
  45. global $pdo;
  46. if (!empty($product_type) && $product_type != -1)//如果选了采购类型
  47. {
  48. $purchase_sql = "SELECT
  49. supplier_id
  50. FROM
  51. base_supplier_purchase
  52. WHERE
  53. product_type = " . $product_type . " and cancel_flag = 0
  54. GROUP BY
  55. supplier_id";
  56. writeLog("select base_supplier_purchase:" . $purchase_sql);
  57. $result = $pdo->query($purchase_sql);
  58. $supplier_id_array = $result->fetchAll(PDO::FETCH_ASSOC);//获取有该采购类型的所有supplier_id
  59. //如果没有该采购类型的supplier,返回空数组
  60. if (count($supplier_id_array) == 0) {
  61. $json['code'] = '0';
  62. $json['info'] = '没有符合条件的数据';
  63. $json['list'] = array();
  64. $json['count'] = '0';
  65. $json['total_page'] = '0';
  66. echo json_encode($json);
  67. exit();
  68. }
  69. //如果有该采购类型的supplier
  70. foreach ($supplier_id_array as $k => $v) {
  71. $supplier_id_array[$k] = $v['supplier_id'];
  72. }
  73. $sql_where .= " and a.id in(" . implode(",", $supplier_id_array) . ")" . $sql_where . " ";
  74. }
  75. $supplier_sql = "SELECT
  76. id,
  77. supplier_name,
  78. area_id,
  79. is_disabled,
  80. supplier_type
  81. FROM
  82. base_supplier a
  83. WHERE
  84. cancel_flag = 0
  85. " . $sql_where . "
  86. AND supplier_type = 187
  87. LIMIT " . ($current - 1) * $pagesize . "," . $pagesize;
  88. writeLog("select base_supplier:" . $supplier_sql);
  89. $result = $pdo->query($supplier_sql);
  90. $supplier_array1 = $result->fetchAll(PDO::FETCH_ASSOC);//获取所有数据
  91. if (count($supplier_array1) > 0) {
  92. foreach ($supplier_array1 as $k => $v) {
  93. // $v['product_type'] = explode(",",$v['product_type']);
  94. // $v['product_type'] = array_unique($v['product_type']);
  95. // $v['product_type'] = implode(",",$v['product_type']);
  96. // $supplier_array[$k] = $v;
  97. $id_array[$v['id']] = $v['id'];
  98. $supplier_array[$v['id']] = $v;
  99. }
  100. $sql = "select group_concat(product_type) as product_type,supplier_id from base_supplier_purchase where supplier_id in (" . implode(",", $id_array) . ") and cancel_flag = 0 group by supplier_id";
  101. $result = $pdo->query($sql);
  102. $purchase_array1 = $result->fetchAll(PDO::FETCH_ASSOC);
  103. foreach ($purchase_array1 as $k => $v) {
  104. $purchase_array[$v['supplier_id']] = $v['product_type'];
  105. }
  106. foreach ($supplier_array as $k => $v) {
  107. if (isset($purchase_array[$k])) {
  108. $purchase_array[$k] = explode(",", $purchase_array[$k]);
  109. $purchase_array[$k] = array_unique($purchase_array[$k]);
  110. $purchase_array[$k] = implode(",", $purchase_array[$k]);
  111. $supplier_array[$k]['product_type'] = $purchase_array[$k];
  112. } else {
  113. $supplier_array[$k]['product_type'] = '';
  114. }
  115. }
  116. $count_sql = "SELECT
  117. a.id
  118. FROM
  119. base_supplier AS a,
  120. base_supplier_purchase AS b
  121. WHERE
  122. a.id = b.supplier_id
  123. " . $sql_where . "
  124. AND a.cancel_flag = 0
  125. AND b.cancel_flag = 0
  126. GROUP BY
  127. b.supplier_id";
  128. writeLog("count:" . $count_sql);
  129. $result = $pdo->query($count_sql);
  130. $total_page = $result->fetchAll(PDO::FETCH_ASSOC);//获取所有数据
  131. $res['supplier_array'] = $supplier_array;
  132. $res['total_page'] = ceil(count($total_page) / $pagesize);
  133. return $res;
  134. } else {
  135. $json['code'] = '0';
  136. $json['info'] = '没有符合条件的数据';
  137. $json['list'] = array();
  138. $json['count'] = '0';
  139. $json['total_page'] = '0';
  140. echo json_encode($json);
  141. exit();
  142. }
  143. }
  144. //处理数据
  145. function tidyData($db_data)
  146. {
  147. global $pdo;
  148. $supplier_array = array();
  149. $area_id_array = array();
  150. $type = array(
  151. 0 => '正常',
  152. 1 => '关闭',
  153. 25 => '酒店',
  154. 259 => '车队',
  155. 310 => '巴士',
  156. 311 => '门票'
  157. );
  158. foreach ($db_data as $key => $vel) {
  159. $vel['product_type'] = explode(",", $vel['product_type']);
  160. //获取采购范围的中文
  161. foreach ($vel['product_type'] as $k => $v) {
  162. $vel['product_type'][$k] = $type[$v];
  163. }
  164. $vel['product_type'] = implode(",", $vel['product_type']);
  165. $supplier_array[$vel['id']] = $vel;
  166. //获取所有的area_id
  167. if (!isset($area_id_array[$vel['area_id']])) {
  168. $area_id_array[$vel['area_id']] = $vel['area_id'];
  169. }
  170. }
  171. //查询area_id的中文
  172. $area_sql = "SELECT
  173. id,
  174. area_name
  175. FROM
  176. base_area
  177. WHERE
  178. id in(" . implode(",", $area_id_array) . ")";
  179. writeLog("select base_area:" . $area_sql);
  180. $result = $pdo->query($area_sql);
  181. $area_id_array = $result->fetchAll(PDO::FETCH_ASSOC);//获取area中文
  182. foreach ($area_id_array as $key => $vel) {
  183. $area_array[$vel['id']] = $vel['area_name'];
  184. }
  185. foreach ($supplier_array as $key => $vel) {
  186. $supplier_array[$key]['is_disabled'] = $type[$vel['is_disabled']];
  187. $supplier_array[$key]['area_name'] = $area_array[$vel['area_id']];
  188. unset($supplier_array[$key]['area_id']);
  189. }
  190. $supplier_array = array_values($supplier_array);
  191. $json['code'] = '0';
  192. $json['info'] = '返回供销商列表成功';
  193. $json['list'] = $supplier_array;
  194. $json['count'] = (string)count($supplier_array);
  195. return $json;
  196. }
  197. }
  198. $supplier_name = trim($_POST['supplier_name']);//供应商名称
  199. $product_type = trim($_POST['product_type']);//采购范围
  200. $is_disabled = trim($_POST['is_disabled']);//状态
  201. $pagesize = trim($_POST['pagesize']);//每页的数据量
  202. $current = trim($_POST['current']);//当前页数
  203. $get_supply_list = new get_supply_list();
  204. $get_supply_list->execGetSupplyList($supplier_name, $product_type, $is_disabled, $current, $pagesize);
  205. ?>