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.

update.php 17 KiB

3 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. <?php
  2. class update_supply
  3. {
  4. public function execUpdateSupply($supply_id,$supplier_name, $area_id, $company_name,$purchase, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_info)
  5. {
  6. //1.获取采购详情数组
  7. $purchase_array = $this->getPurchase($purchase);
  8. //2.从数据库获取采购详情
  9. $db_purchase_array = $this->getDbPurchase($supply_id);
  10. //3.获取联系人详情数组
  11. $link_array = $this->getLink($link_info);
  12. //4.从数据库获取联系人详情
  13. $db_link_array = $this->getDbLink($supply_id);
  14. //5.比较采购详情
  15. $purchase = $this->compare($purchase_array, $db_purchase_array);
  16. //6,比较联系详情
  17. $link = $this->compare($link_array, $db_link_array);
  18. //7,从数据库获取供应商详情
  19. $db_supply = $this->getDbSupply($supply_id);
  20. //8.操作数据库
  21. $supply_array = array('supplier_name' => $supplier_name,'area_id' => $area_id,'company_name' => $company_name,'sett_type' => $sett_type,'sett_frequency' => $sett_frequency,'account_bank' => $account_bank,'account_num' => $account_num,'account_name' => $account_name);
  22. $res = $this -> updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link);
  23. echo json_encode($res);
  24. exit();
  25. }
  26. //获取采购详情数组
  27. function getPurchase($purchase)
  28. {
  29. if ($purchase == '') {
  30. $purchase_array = array();
  31. return $purchase_array;
  32. }
  33. $purchase = substr($purchase, 1, strlen($purchase) - 2);
  34. $purchase = explode("}{", $purchase);
  35. $i = -1;
  36. foreach ($purchase as $item => $value) {
  37. $value = explode(",", $value);
  38. $status = 0;
  39. foreach ($value as $k => $v) {
  40. if (empty($v)) {
  41. $status = 1;
  42. break;
  43. }
  44. }
  45. if ($status == 0) {
  46. if($value[0] >= 0)
  47. {
  48. $purchase_array[$value[0]]['purchase_id'] = $value[0];
  49. $purchase_array[$value[0]]['product_type'] = $value[1];
  50. $purchase_array[$value[0]]['purchaser_name'] = $value[2];
  51. }
  52. else
  53. {
  54. $purchase_array[$i]['purchase_id'] = $i;
  55. $purchase_array[$i]['product_type'] = $value[1];
  56. $purchase_array[$i]['purchaser_name'] = $value[2];
  57. $i--;
  58. }
  59. }
  60. }
  61. return $purchase_array;
  62. }
  63. //获取联系人详情数组
  64. function getLink($link_info)
  65. {
  66. if ($link_info == '') {
  67. $link_array = array();
  68. return $link_array;
  69. }
  70. $link_info = explode(",", $link_info);
  71. $key = $_COOKIE['memcache'];
  72. $link_memcache = get_memcache('ZHANGS_LINK' . $key);
  73. foreach ($link_info as $item => $value) {
  74. $status = 0;
  75. if (empty($link_memcache[$value]['link_name']) || empty($link_memcache[$value]['contact_name'])) {
  76. $status = 1;
  77. }
  78. if ($status == 0) {
  79. $link_array[$value] = $link_memcache[$value];
  80. }
  81. }
  82. return $link_array;
  83. }
  84. //从数据库获取采购详情数组
  85. function getDbPurchase($supply_id)
  86. {
  87. global $pdo;
  88. $sql = "SELECT
  89. id AS purchase_id,
  90. product_type,
  91. purchaser_name
  92. FROM
  93. base_supplier_purchase
  94. WHERE
  95. cancel_flag = 0
  96. AND supplier_id = " . $supply_id;
  97. writeLog("getDbPurchase base_supplier_purchase:" . $sql);
  98. $result = $pdo->query($sql);
  99. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  100. if(count($res) > 0)
  101. {
  102. foreach($res as $k => $v)
  103. {
  104. $result1[$v['purchase_id']] = $v;
  105. }
  106. }
  107. else
  108. {
  109. $result1= array();
  110. }
  111. return $result1;
  112. }
  113. //从数据库获取联系人详情
  114. function getDbLink($channel_id)
  115. {
  116. global $pdo;
  117. $sql = "SELECT
  118. id as link_id,
  119. link_name,
  120. contact_name,
  121. contact_mobile,
  122. contact_telphone,
  123. fax,
  124. email,
  125. remark
  126. FROM
  127. base_supplier_link
  128. WHERE
  129. cancel_flag = 0
  130. AND supplier_id = " . $channel_id;
  131. writeLog("getDbLink base_supplier_link:" . $sql);
  132. $result = $pdo->query($sql);
  133. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  134. if(count($res) > 0)
  135. {
  136. foreach($res as $k => $v)
  137. {
  138. $result1[$v['link_id']] = $v;
  139. }
  140. }
  141. else
  142. {
  143. $result1= array();
  144. }
  145. return $result1;
  146. }
  147. //从数据库获取供应商详情
  148. function getDbSupply($supply_id)
  149. {
  150. global $pdo;
  151. $sql = "SELECT
  152. supplier_name,
  153. area_id,
  154. company_name,
  155. sett_type,
  156. sett_frequency,
  157. account_bank,
  158. account_num,
  159. account_name
  160. FROM
  161. base_supplier
  162. WHERE
  163. cancel_flag = 0
  164. AND id = " . $supply_id;
  165. writeLog("getDbChannel base_supplier:" . $sql);
  166. $result = $pdo->query($sql);
  167. $res = $result->fetchAll(PDO::FETCH_ASSOC);
  168. $res = $res[0];
  169. return $res;
  170. }
  171. //比较数组(前台数组,数据库数组)
  172. function compare($arr, $db_arr)
  173. {
  174. $result = array();
  175. if(count($db_arr) == 0 && count($arr) == 0)
  176. {
  177. return $result;
  178. }
  179. elseif (count($db_arr) == 0)
  180. {
  181. $result['insert'] = $arr;
  182. return $result;
  183. }
  184. elseif (count($arr) == 0)
  185. {
  186. $result['delete'] = $db_arr;
  187. return $result;
  188. }
  189. else
  190. {
  191. //print_r($arr);print_r($db_arr);die;
  192. foreach ($arr as $key => $value) {
  193. if(isset($db_arr[$key]))
  194. {
  195. if($arr != $db_arr)
  196. {
  197. $result['update'][$key] = $value;
  198. }
  199. }
  200. else
  201. {
  202. $result['insert'][$key] = $value;
  203. }
  204. }
  205. foreach($db_arr as $key => $value)
  206. {
  207. if(!isset($arr[$key]))
  208. {
  209. $result['delete'][$key] = $value;
  210. }
  211. }
  212. return $result;
  213. }
  214. }
  215. //获取update操作中的set数据
  216. function getUpdateSet($arr)
  217. {
  218. $set_array = array();
  219. foreach($arr as $k => $v)
  220. {
  221. if(!empty($v))
  222. {
  223. $set_array[] = $k . " = '" . $v . "'";
  224. }
  225. else
  226. {
  227. if($k == 'account_bank' || $k == 'account_num' || $k == 'account_name' || $k == 'link_name' || $k == 'contact_name' || $k == 'contact_mobile' || $k == 'contact_telphone' || $k == 'fax' || $k == 'email' || $k == 'remark' || $k == 'id_card')
  228. {
  229. $set_array[] = $k . " = ''";
  230. }
  231. else
  232. {
  233. $set_array[] = $k . " = '0'";
  234. }
  235. }
  236. }
  237. $set_str = implode(",",$set_array);
  238. return $set_str;
  239. }
  240. //操作数据库
  241. function updatePdoChannel($supply_id,$supply_array,$db_supply,$purchase,$link)
  242. {
  243. global $pdo;
  244. $user_id = getUserId();
  245. $time = date('Y-m-d H:i:s',time());
  246. try {
  247. $pdo->beginTransaction();
  248. //1.操作base_supplier表
  249. if($supply_array != $db_supply)//修改
  250. {
  251. $set_str = $this->getUpdateSet($supply_array);
  252. $update_supplier_sql = "UPDATE base_supplier
  253. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  254. WHERE
  255. id = " . $supply_id;
  256. writeLog("UPDATE base_supplier:" . $update_supplier_sql);
  257. $result = $pdo->exec($update_supplier_sql);
  258. if (!$result) {
  259. throw new Exception("db die");
  260. }
  261. }
  262. //2.操作base_supplier_sale表
  263. if(count($purchase) > 0)
  264. {
  265. if(count($purchase['update']) > 0)//修改
  266. {
  267. $update_purchase_array = array();
  268. foreach($purchase['update'] as $key => $value)
  269. {
  270. unset($value['purchase_id']);
  271. $set_str = $this->getUpdateSet($value);
  272. $update_purchase_array[] = "UPDATE base_supplier_purchase
  273. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  274. WHERE
  275. id = " . $key;
  276. }
  277. $update_purchase_sql = implode(";",$update_purchase_array);
  278. writeLog("./" . $update_purchase_sql);
  279. $result = $pdo->exec($update_purchase_sql);
  280. if (!$result) {
  281. throw new Exception("db die");
  282. }
  283. }
  284. if(count($purchase['insert']) > 0)//增加
  285. {
  286. $insert_purchase_sql = "INSERT INTO base_supplier_purchase (
  287. create_user_id,
  288. create_time,
  289. supplier_id,
  290. product_type,
  291. purchaser_name
  292. )
  293. VALUES ";
  294. foreach($purchase['insert'] as $key => $value)
  295. {
  296. $purchase_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supply_id . "," . $value['product_type'] . ",'" . $value['purchaser_name'] . "')";
  297. }
  298. $insert_purchase_sql .= implode(",", $purchase_sql_array);
  299. writeLog("INSERT base_supplier_purchase:" . $insert_purchase_sql);
  300. $result = $pdo->exec($insert_purchase_sql);
  301. if (!$result) {
  302. throw new Exception("db die");
  303. }
  304. }
  305. if(count($purchase['delete']) > 0)//删除
  306. {
  307. $delete_purchase_array = array();
  308. foreach($purchase['delete'] as $key => $value)
  309. {
  310. $delete_purchase_array[] = "UPDATE base_supplier_purchase
  311. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  312. WHERE
  313. id = " . $key;
  314. }
  315. $delete_purchase_sql = implode(";",$delete_purchase_array);
  316. writeLog("delete base_supplier_sale:" . $delete_purchase_sql);
  317. $result = $pdo->exec($delete_purchase_sql);
  318. if (!$result) {
  319. throw new Exception("db die");
  320. }
  321. }
  322. }
  323. //3.操作base_supplier_link表
  324. if(count($link) > 0)
  325. {
  326. if(count($link['update']) > 0)//修改
  327. {
  328. $update_link_array = array();
  329. foreach($link['update'] as $key => $value)
  330. {
  331. unset($value['link_id']);
  332. $set_str = $this->getUpdateSet($value);
  333. $update_link_array[] = "UPDATE base_supplier_link
  334. SET update_user_id = " . $user_id . ",update_time = '" . $time . "'," . $set_str . "
  335. WHERE
  336. id = " . $key;
  337. }
  338. $update_link_sql = implode(";",$update_link_array);
  339. writeLog("UPDATE base_supplier_link:" . $update_link_sql);
  340. $result = $pdo->exec($update_link_sql);
  341. if (!$result) {
  342. throw new Exception("db die");
  343. }
  344. }
  345. if(count($link['insert']) > 0)//增加
  346. {
  347. $insert_link_sql = "INSERT INTO base_supplier_link (
  348. create_user_id,
  349. create_time,
  350. supplier_id,
  351. link_name,
  352. contact_name,
  353. contact_mobile,
  354. contact_telphone,
  355. fax,
  356. email,
  357. remark
  358. )
  359. VALUES";
  360. foreach($link['insert'] as $key => $value)
  361. {
  362. $link_sql_array[] = "(" . $user_id . ",'" . $time . "'," . $supply_id . ",'" . $value['link_name'] . "','" . $value['contact_name'] . "','" . $value['contact_mobile'] . "','" . $value['contact_telphone'] . "','" . $value['fax'] . "','" . $value['email'] . "','" . $value['remark'] . "')";
  363. }
  364. $insert_link_sql .= implode(",", $link_sql_array);
  365. writeLog("INSERT base_supplier_purchase:" . $insert_link_sql);
  366. $result = $pdo->exec($insert_link_sql);
  367. if (!$result) {
  368. throw new Exception("db die");
  369. }
  370. }
  371. if(count($link['delete']) > 0)//删除
  372. {
  373. $delete_link_array = array();
  374. foreach($link['delete'] as $key => $value)
  375. {
  376. $delete_link_array[] = "UPDATE base_supplier_link
  377. SET update_user_id = " . $user_id . ",update_time = '" . $time . "',cancel_flag = 1
  378. WHERE
  379. id = " . $key;
  380. }
  381. $delete_link_sql = implode(";",$delete_link_array);
  382. writeLog("delete base_supplier_sale:" . $delete_link_sql);
  383. $result = $pdo->exec($delete_link_sql);
  384. if (!$result) {
  385. throw new Exception("db die");
  386. }
  387. }
  388. }
  389. $pdo->commit();
  390. //4.删除缓存
  391. $key = $_COOKIE['memcache'];
  392. delete_memcache('ZHANGS_LINK' . $key);
  393. delete_memcache('ZHANGS_SALE' . $key);
  394. $json['code'] = '0';
  395. $json['info'] = '修改数据成功';
  396. } catch (PDOException $ex) {
  397. $pdo->rollBack();
  398. $json['code'] = '1';
  399. $json['info'] = '修改失败';
  400. }
  401. return $json;
  402. }
  403. }
  404. $supply_id = trim($_POST['supply_id']);//供应商id
  405. $supplier_name = trim($_POST['supplier_name']);//供应商名称
  406. $area_id = trim($_POST['area_id']);//所属区域市id
  407. $company_name = trim($_POST['company_name']);//公司名称
  408. $purchase = trim($_POST['purchase']);//采购详情
  409. $sett_type = trim($_POST['sett_type']);//结算方式 (授信:275,预付:288,单结:292)
  410. $sett_frequency = trim($_POST['sett_frequency']);//结算周期(日结:293,周结:294,月结:295)
  411. $account_bank = trim($_POST['account_bank']);//开户银行
  412. $account_num = trim($_POST['account_num']);//银行账号
  413. $account_name = trim($_POST['account_name']);//账号名称
  414. $link_info = trim($_POST['link_info']);//联系人详情
  415. $update_supply = new update_supply();
  416. $update_supply -> execUpdateSupply($supply_id,$supplier_name, $area_id, $company_name,$purchase, $sett_type, $sett_frequency, $account_bank, $account_num, $account_name, $link_info)
  417. ?>