Headquarters.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842
  1. <?php
  2. namespace app\controller;
  3. use app\BaseController;
  4. use app\model\Account;
  5. use app\model\AccountCompany;
  6. use think\Exception;
  7. use think\facade\Db;
  8. use think\facade\Validate;
  9. //【公司汇总】
  10. class Headquarters extends BaseController
  11. {
  12. //列表
  13. public function getList()
  14. {
  15. $post = $this->request->only(['code' => '', 'name' => '', 'status' => '', 'page' => 1, 'size' => 10, 'level' => '', 'account_id' => '','type'=>''], 'post');
  16. $condition = [['is_del', '=', 0]];
  17. if ($post['code'] != '') $condition[] = is_array($post['code']) ? ['code', 'in', $post['code']] : ['code', 'like', "%{$post['code']}%"];
  18. if ($post['name'] != '') $condition[] = ['name', 'like', "%{$post['name']}%"];
  19. if ($post['status'] != '') $condition[] = ['status', '=', $post['status']];
  20. if ($post['level'] != 1) {
  21. $companyCode = Db::name('account_company')
  22. ->where(['account_id' => $post['account_id'], 'is_del' => 0, 'status' => 1])
  23. ->column('companyCode');
  24. $condition[] = ['code', 'in', $companyCode];
  25. }
  26. if ($post['type'] !== '') $condition[] = ['', 'exp', Db::raw("FIND_IN_SET({$post['type']},type)")];
  27. //兼容原有各个接口的筛选
  28. $count = Db::name('headquarters')
  29. ->where($condition)
  30. ->count('id');
  31. $list = Db::name('headquarters')
  32. ->field('id,code,name,type,status,addtime,relation_code')
  33. ->where($condition)
  34. ->page($post['page'], $post['size'])
  35. ->order(['addtime' => 'desc', 'id' => 'desc'])
  36. ->select()
  37. ->toArray();
  38. return json_show(0, '获取成功', ['list' => $list, 'count' => $count]);
  39. }
  40. //添加
  41. public function add()
  42. {
  43. $post = $this->request->filter('trim')->post();
  44. Db::startTrans();
  45. try {
  46. switch ($post['type']) {
  47. case 1:
  48. Db::name('business')->insert($post['data']);
  49. break;
  50. case 2:
  51. Db::name('company_info')->insert($post['data']);
  52. break;
  53. case 3:
  54. Db::name('supplier')->insert($post['data']);
  55. break;
  56. }
  57. Db::name('headquarters')
  58. ->insert([
  59. 'code' => $post['code'],
  60. 'name' => $post['name'],
  61. 'type' => $post['type'],
  62. 'invoice_title' => $post['invoice_title'],
  63. 'invoice_people' => $post['invoice_people'],
  64. 'invoice_addr' => $post['invoice_addr'],
  65. 'invoice_code' => $post['invoice_code'],
  66. 'invoice_bank' => $post['invoice_bank'],
  67. 'invoice_bankNo' => $post['invoice_bankNo'],
  68. 'invoice_img' => $post['invoice_img'],
  69. 'remark' => $post['remark'],
  70. 'status' => $post['status'],
  71. 'is_del' => 0,
  72. 'creater' => $post['creater'],
  73. 'createrid' => $post['createrid'],
  74. 'addtime' => date('Y-m-d H:i:s'),
  75. 'updater' => $post['updater'],
  76. 'updaterid' => $post['updaterid'],
  77. 'updater' => date('Y-m-d H:i:s'),
  78. ]);
  79. Db::commit();
  80. return json_show(0, '添加成功');
  81. } catch (Exception $e) {
  82. Db::rollback();
  83. return json_show(1002, '添加失败,' . $e->getMessage());
  84. }
  85. }
  86. //编辑
  87. public function update()
  88. {
  89. $post = $this->request->filter('trim')->post();
  90. Db::startTrans();
  91. try {
  92. switch ($post['type']) {
  93. case 1:
  94. Db::name('business')->where(['companyNo' => $post['data']['companyNo'], 'is_del' => 0])->update($post['data']);
  95. break;
  96. case 2:
  97. Db::name('company_info')->where(['companyNo' => $post['data']['companyNo'], 'is_del' => 0])->update($post['data']);
  98. break;
  99. case 3:
  100. Db::name('supplier')->where(['code' => $post['data']['code'], 'is_del' => 0])->update($post['data']);
  101. break;
  102. }
  103. Db::name('headquarters')
  104. ->where(['code' => $post['code'], 'is_del' => 0])
  105. ->update([
  106. 'code' => $post['code'],
  107. 'name' => $post['name'],
  108. 'type' => $post['type'],
  109. 'invoice_title' => $post['invoice_title'],
  110. 'invoice_people' => $post['invoice_people'],
  111. 'invoice_addr' => $post['invoice_addr'],
  112. 'invoice_code' => $post['invoice_code'],
  113. 'invoice_bank' => $post['invoice_bank'],
  114. 'invoice_bankNo' => $post['invoice_bankNo'],
  115. 'invoice_img' => $post['invoice_img'],
  116. 'remark' => $post['remark'],
  117. 'updater' => $post['updater'],
  118. 'updaterid' => $post['updaterid'],
  119. 'updater' => date('Y-m-d H:i:s'),
  120. ]);
  121. Db::commit();
  122. return json_show(0, '修改成功');
  123. } catch (Exception $e) {
  124. Db::rollback();
  125. return json_show(1002, '修改失败,' . $e->getMessage());
  126. }
  127. }
  128. //详情
  129. public function info()
  130. {
  131. $code = $this->request->post('code', '', 'trim');
  132. if ($code == '') return json_show(1003, "参数 code 不能为空");
  133. $res = Db::name('headquarters')
  134. ->field(true)
  135. ->where(['code' => $code, 'is_del' => 0])
  136. ->findOrEmpty();
  137. if (empty($res)) return json_show(1004, '未找到相关汇总信息');
  138. switch ($res['type']) {
  139. case 1:
  140. $child = Db::name('business')
  141. ->field(true)
  142. ->where(['companyNo' => $code, 'is_del' => 0])
  143. ->findOrEmpty();
  144. break;
  145. case 2:
  146. $child = Db::name('company_info')
  147. ->where(['companyNo' => $code, 'is_del' => 0])
  148. ->findOrEmpty();
  149. break;
  150. case 3:
  151. $child = Db::name('supplier')
  152. ->where(['code' => $code, 'is_del' => 0])
  153. ->findOrEmpty();
  154. break;
  155. }
  156. $res['child'] = $child;
  157. return json_show(0, '获取成功', $res);
  158. }
  159. //删除
  160. public function delete()
  161. {
  162. $param = $this->request->only(['ids', 'type', 'updater', 'updaterid'], 'post', 'trim');
  163. $val = Validate::rule([
  164. 'ids' => 'require|array|max:100',
  165. 'type|类别' => 'require|number|in:1,2,3',
  166. 'updater|操作人' => 'require|max:255',
  167. 'updaterid|操作人id' => 'require|number|gt:0',
  168. ]);
  169. if (!$val->check($param)) return json_show(1004, $val->getError());
  170. Db::startTrans();
  171. try {
  172. $date = date('Y-m-d H:i:s');
  173. $codes = [];
  174. switch ($param['type']) {
  175. case 1:
  176. $where = [['is_del', '=', 0], ['id', 'in', $param['ids']]];
  177. $codes = Db::name('business')->where($where)->column('companyNo');
  178. Db::name('business')->where($where)->update(['is_del' => 1, 'updatetime' => $date]);
  179. break;
  180. case 2:
  181. Db::name('company_info')
  182. ->where('is_del', 0)
  183. ->whereIn('companyNo', $param['codes'])
  184. ->update(['is_del' => 1, 'updatetime' => $date]);
  185. break;
  186. case 3:
  187. $where = [['is_del', '=', 0], ['id', 'in', $param['ids']]];
  188. $codes = Db::name('supplier')->where($where)->column('code');
  189. Db::name('supplier')->where($where)->update(['is_del' => 1, 'updatetime' => $date]);
  190. break;
  191. }
  192. Db::name('headquarters')
  193. ->where('is_del', 0)
  194. ->whereIn('code', $codes)
  195. ->update([
  196. 'is_del' => 1,
  197. 'updater' => $param['updater'],
  198. 'updaterid' => $param['updaterid'],
  199. 'updatetime' => date('Y-m-d H:i:s')
  200. ]);
  201. Db::commit();
  202. return json_show(0, '删除成功');
  203. } catch (Exception $exception) {
  204. Db::rollback();
  205. return json_show(1005, '删除失败,' . $exception->getMessage());
  206. }
  207. }
  208. //启禁用
  209. public function status()
  210. {
  211. $param = $this->request->only(['id', 'type', 'status', 'updater', 'updaterid'], 'post', 'trim');
  212. $val = Validate::rule([
  213. 'id' => 'require|number|gt:0',
  214. 'type|类别' => 'require|number|in:1,2,3',
  215. 'status|状态' => 'require|number|in:0,1',
  216. 'updater|操作人' => 'require|max:255',
  217. 'updaterid|操作人id' => 'require|number|gt:0',
  218. ]);
  219. if (!$val->check($param)) return json_show(1004, $val->getError());
  220. Db::startTrans();
  221. try {
  222. $date = date('Y-m-d H:i:s');
  223. $code = '';
  224. switch ($param['type']) {
  225. case 1:
  226. $tmp = Db::name('business')
  227. ->field('id,companyNo code,status')
  228. ->where(['id' => $param['id'], 'is_del' => 0])
  229. ->findOrEmpty();
  230. if (empty($tmp)) throw new Exception('未找到对应数据');
  231. if ($tmp['status'] == $param['status']) throw new Exception('操作重复');
  232. Db::name('business')
  233. ->where(['id' => $param['id'], 'is_del' => 0])
  234. ->where('status', '<>', $param['status'])
  235. ->update([
  236. 'status' => $param['status'],
  237. 'updatetime' => $date
  238. ]);
  239. break;
  240. case 2:
  241. Db::name('company_info')
  242. ->where(['companyNo' => $param['data']['companyNo'], 'is_del' => 0])
  243. ->where('status', '<>', $param['status'])
  244. ->update([
  245. 'status' => $param['status'],
  246. 'updatetime' => $date
  247. ]);
  248. break;
  249. case 3:
  250. $tmp = Db::name('supplier')
  251. ->where(['id' => $param['id'], 'is_del' => 0])
  252. ->field('id,code,status')
  253. ->findOrEmpty();
  254. if (empty($tmp)) throw new Exception('该供应商不存在');
  255. if ($tmp['status'] == $param['status']) throw new Exception('操作重复');
  256. Db::name('supplier')
  257. ->where(['id' => $param['id'], 'is_del' => 0])
  258. ->where('status', '<>', $param['status'])
  259. ->update([
  260. 'status' => $param['status'],
  261. 'updatetime' => $date
  262. ]);
  263. break;
  264. }
  265. Db::name('headquarters')
  266. ->where(['code' => $tmp['code'], 'is_del' => 0])
  267. ->where('status', '<>', $param['status'])
  268. ->update([
  269. 'status' => $param['status'],
  270. 'updater' => $param['updater'],
  271. 'updaterid' => $param['updaterid'],
  272. 'updatetime' => $date
  273. ]);
  274. Db::commit();
  275. return json_show(0, '操作成功');
  276. } catch (Exception $exception) {
  277. Db::rollback();
  278. return json_show(1005, '操作失败,' . $exception->getMessage());
  279. }
  280. }
  281. //获取指定编码和名称
  282. public function getCodeAndName()
  283. {
  284. $companyNo = $this->request->filter('trim')->post('code');
  285. $res = Db::name('headquarters')
  286. ->where('is_del', 0)
  287. ->whereIn('code', $companyNo)
  288. ->column('name', 'code');
  289. return json_show(0, '请求成功', $res);
  290. }
  291. //业务公司
  292. public function bGetList()
  293. {
  294. $param = $this->request->only([
  295. 'page' => 1,
  296. 'size' => 10,
  297. 'company' => '',
  298. 'status' => '',
  299. 'creater' => '',
  300. 'start' => '',
  301. 'end' => '',
  302. 'company_name' => '',
  303. ], 'post', 'trim');
  304. $where = [['a.is_del', "=", 0]];
  305. if ($param['company'] !== "") $where[] = ["a.company", "like", '%' . $param['company'] . '%'];
  306. if ($param['status'] !== "") $where[] = ["a.status", '=', $param['status']];
  307. if ($param['creater'] !== "") $where[] = ["a.creater", "like", '%' . $param['creater'] . '%'];
  308. if ($param['start'] !== "") $where[] = ["a.addtime", '>=', $param['start']];
  309. if ($param['end'] !== "") $where[] = ["a.addtime", '<=', $param['end'] . ' 23:59:59'];
  310. // if ($param['company_name'] !== "") $where[] = ["a.createrid", 'in', $param['company_name']];
  311. $count = Db::name('business')
  312. ->alias('a')
  313. // ->leftJoin("depart_user u", "u.uid=a.createrid AND u.is_del=0")
  314. ->where($where)
  315. ->count('a.id');
  316. $list = Db::name('business')
  317. ->alias('a')
  318. ->field(true)
  319. // ->field('a.*,u.itemid')
  320. // ->leftJoin("depart_user u", "u.uid=a.createrid AND u.is_del=0")
  321. ->where($where)
  322. ->page($param['page'], $param['size'])
  323. ->order(['addtime' => 'desc', 'id' => 'desc'])
  324. ->select()
  325. ->toArray();
  326. // $all_codes = Db::name('supplier_contact')
  327. // ->whereIn('code', array_column($list, 'code'))
  328. // ->column("id,contactor,mobile", 'code');
  329. //获取开通账号的供应商
  330. // $account = checkHasAccountBySupplierNos(array_column($list,'code'));
  331. foreach ($list as &$value) {
  332. $value['company_name'] = '';
  333. }
  334. return json_show("0", "获取成功", ['list' => $list, 'count' => $count]);
  335. }
  336. public function bCreate()
  337. {
  338. $param = $this->request->filter('trim')->post('');
  339. Db::startTrans();
  340. try {
  341. $tmp = Db::name('business')
  342. ->field('id')
  343. ->where(['company' => $param['company'], 'is_del' => 0])
  344. ->findOrEmpty();
  345. if (!empty($tmp)) throw new Exception('该公司名称已存在');
  346. Db::name('business')->insert($param);
  347. Db::name('headquarters')->insert([
  348. 'code' => $param['companyNo'],
  349. 'name' => $param['company'],
  350. 'type' => 1,
  351. 'invoice_title' => '',
  352. 'invoice_people' => '',
  353. 'invoice_addr' => $param['inv_addr'],
  354. 'invoice_mobile' => $param['mobile'],
  355. 'invoice_code' => $param['inv_code'],
  356. 'invoice_bank' => $param['inv_bank'],
  357. 'invoice_bankNo' => $param['inv_bankNo'],
  358. 'invoice_img' => $param['license_img'],
  359. 'remark' => '',
  360. 'status' => $param['status'],
  361. 'is_del' => $param['is_del'],
  362. 'creater' => $param['creater'],
  363. 'createrid' => $param['createrid'],
  364. 'addtime' => $param['addtime'],
  365. 'updater' => $param['creater'],
  366. 'updaterid' => $param['createrid'],
  367. 'updatetime' => $param['updatetime'],
  368. ]);
  369. Db::commit();
  370. return json_show(0, '添加成功');
  371. } catch (Exception $exception) {
  372. Db::rollback();
  373. return json_show(1003, $exception->getMessage());
  374. }
  375. }
  376. public function bInfo()
  377. {
  378. $companyNo = $this->request->post('companyNo', '', 'trim');
  379. if ($companyNo == "") return json_show(1004, "参数ompanyNo不能为空");
  380. $info = Db::name('business')
  381. ->alias('a')
  382. ->field('a.*,b.company_type')
  383. ->leftJoin('company_type b', 'b.id=a.type AND b.is_del=0')
  384. ->where(['a.companyNo' => $companyNo, 'a.is_del' => 0])
  385. ->findOrEmpty();
  386. if (empty($info)) return json_show(1002, "未找到数据");
  387. return json_show(0, '获取成功', $info);
  388. }
  389. public function bEdit()
  390. {
  391. $param = $this->request->filter('trim')->post('');
  392. Db::startTrans();
  393. try {
  394. $info = Db::name('business')
  395. ->field('id,companyNo')
  396. ->where(['id' => $param['id'], 'is_del' => 0])
  397. ->findOrEmpty();
  398. if (empty($info)) throw new Exception('未找到数据');
  399. Db::name('business')
  400. ->where(['id' => $param['id'], 'is_del' => 0])
  401. ->update($param);
  402. Db::name('headquarters')
  403. ->where(['code' => $info['companyNo'], 'is_del' => 0])
  404. ->update([
  405. 'invoice_addr' => $param['inv_addr'],
  406. 'invoice_mobile' => $param['mobile'],
  407. 'invoice_bank' => $param['inv_bank'],
  408. 'invoice_bankNo' => $param['inv_bankNo'],
  409. 'updatetime' => date("Y-m-d H:i:s"),
  410. ]);
  411. Db::commit();
  412. return json_show(0, '修改成功');
  413. } catch (Exception $exception) {
  414. Db::rollback();
  415. return json_show(1003, $exception->getMessage());
  416. }
  417. }
  418. public function bTitle()
  419. {
  420. $param = $this->request->only(['company_type' => '', 'status' => ''], 'post', 'trim');
  421. $rs = Db::name('company_type')->where('is_del', 0);
  422. if ($param['company_type'] != '') $rs->whereLike('company_type', '%' . $param['company_type'] . '%');
  423. if ($param['status'] != '') $rs->where('status', $param['status']);
  424. $list = $rs->select()->toArray();
  425. return json_show(0, '获取成功', $list);
  426. }
  427. //供应商
  428. public function sGetList()
  429. {
  430. $param = $this->request->only(['page' => 1, 'size' => 10, 'name' => '', 'code' => '', 'creater' => '', 'person' => '', 'status' => '', 'ocr_status' => '', 'start' => '', 'end' => '', 'company_name' => '', 'is_platform' => ''], 'post', 'trim');
  431. $where = [['s.is_del', "=", 0]];
  432. if ($param['name'] !== "") $where[] = ["s.name", "like", '%' . $param['name'] . '%'];
  433. if ($param['code'] !== "") $where[] = ["s.code", "like", '%' . $param['code'] . '%'];
  434. if ($param['creater'] !== "") $where[] = ["s.creater", "like", '%' . $param['creater'] . '%'];
  435. if ($param['person'] !== "") $where[] = ["s.person", "like", '%' . $param['person'] . '%'];
  436. if ($param['status'] !== "") $where[] = ["s.status", '=', $param['status']];
  437. if ($param['ocr_status'] !== "") $where[] = ["s.ocr_status", '=', $param['ocr_status']];
  438. if ($param['start'] !== "") $where[] = ["s.addtime", '>=', $param['start']];
  439. if ($param['end'] !== "") $where[] = ["s.addtime", '<=', $param['end'] . ' 23:59:59'];
  440. if ($param['is_platform'] !== "") $where[] = ["s.is_platform", '=', $param['is_platform']];
  441. // if ($param['company_name'] !== "") $where[] = ["s.createrid", 'in', $param['company_name']];
  442. $count = Db::name('supplier')
  443. ->alias('s')
  444. // ->leftJoin("depart_user u", "u.uid=s.createrid AND u.is_del=0")
  445. ->where($where)
  446. ->count('s.id');
  447. $list = Db::name('supplier')
  448. ->alias('s')
  449. ->field(true)
  450. // ->field('s.*,u.itemid')
  451. // ->leftJoin("depart_user u", "u.uid=s.createrid AND u.is_del=0")
  452. ->where($where)
  453. ->page($param['page'], $param['size'])
  454. ->order("addtime desc")
  455. ->select()
  456. ->toArray();
  457. // $all_codes = Db::name('supplier_contact')
  458. // ->whereIn('code', array_column($list, 'code'))
  459. // ->column("id,contactor,mobile", 'code');
  460. //获取开通账号的供应商
  461. // $account = checkHasAccountBySupplierNos(array_column($list,'code'));
  462. foreach ($list as &$value) {
  463. $value['company_name'] = '';
  464. }
  465. return json_show("0", "获取成功", ['list' => $list, 'count' => $count]);
  466. }
  467. public function sCreate()
  468. {
  469. $param = $this->request->only(['data', 'contact'], 'post', 'trim');
  470. $val = Validate::rule([
  471. 'data|供应商数据' => 'require|array',
  472. 'contact|联系人' => 'require|array',
  473. ]);
  474. if ($val->check($param) == false) return json_show(1004, $val->getError());
  475. Db::startTrans();
  476. try {
  477. $tmp = Db::name('supplier')
  478. ->field('id')
  479. ->where(['name' => $param['data']['name'], 'is_del' => 0])
  480. ->findOrEmpty();
  481. if (!empty($tmp)) throw new Exception('该供应商名称已存在');
  482. $id = Db::name('supplier')->insertGetId($param['data']);
  483. Db::name('supplier_contact')->insert($param['contact']);
  484. Db::name('headquarters')->insert([
  485. 'code' => $param['data']['code'],
  486. 'name' => $param['data']['name'],
  487. 'type' => 3,
  488. 'invoice_title' => '',
  489. 'invoice_people' => '',
  490. 'invoice_addr' => '',
  491. 'invoice_mobile' => $param['contact']['mobile'],
  492. 'invoice_code' => '',
  493. 'invoice_bank' => '',
  494. 'invoice_bankNo' => '',
  495. 'invoice_img' => $param['data']['license_img'],
  496. 'remark' => $param['data']['remark'],
  497. 'status' => $param['data']['status'],
  498. 'is_del' => $param['data']['is_del'],
  499. 'creater' => $param['data']['creater'],
  500. 'createrid' => $param['data']['createrid'],
  501. 'addtime' => $param['data']['addtime'],
  502. 'updater' => $param['data']['creater'],
  503. 'updaterid' => $param['data']['createrid'],
  504. 'updatetime' => $param['data']['updatetime'],
  505. ]);
  506. Db::commit();
  507. return json_show(0, '添加成功', ['id' => $id]);
  508. } catch (Exception $exception) {
  509. Db::rollback();
  510. return json_show(1003, $exception->getMessage());
  511. }
  512. }
  513. public function sInfo()
  514. {
  515. $code = $this->request->post('code', '', 'trim');
  516. if ($code == "") return json_show(1004, "参数code不能为空");
  517. $info = Db::name('supplier')
  518. ->alias('a')
  519. ->field('a.*,b.contactor,b.mobile,b.position,b.email,b.telephone')
  520. ->leftJoin('supplier_contact b', 'b.code=a.code AND b.is_del=0')
  521. ->where(['a.code' => $code, 'a.is_del' => 0])
  522. ->findOrEmpty();
  523. if (empty($info)) return json_show(1002, "未找到数据");
  524. return json_show(0, '获取成功', $info);
  525. }
  526. public function sEdit()
  527. {
  528. $param = $this->request->only(['data', 'contact'], 'post', 'trim');
  529. $val = Validate::rule([
  530. 'data|供应商数据' => 'require|array',
  531. 'contact|联系人' => 'require|array',
  532. ]);
  533. if ($val->check($param) == false) return json_show(1004, $val->getError());
  534. Db::startTrans();
  535. try {
  536. $tmp = Db::name('supplier')
  537. ->field('id')
  538. ->where(['name' => $param['data']['name'], 'is_del' => 0])
  539. ->where('id', '<>', $param['data']['id'])
  540. ->findOrEmpty();
  541. if (!empty($tmp)) throw new Exception('该供应商名称已存在');
  542. $id = Db::name('supplier')
  543. ->where(['id' => $param['data']['id'], 'is_del' => 0])
  544. ->update($param['data']);
  545. $tmp = Db::name('supplier_contact')
  546. ->field('id')
  547. ->where(['code' => $param['contact']['code'], 'is_del' => 0])
  548. ->findOrEmpty();
  549. if (empty($tmp)) Db::name('supplier_contact')->insert(array_merge($param['contact'], ['addtime' => $param['contact']['updatetime']]));
  550. else Db::name('supplier_contact')->where(['id' => $tmp['id'], 'is_del' => 0])->update($param['contact']);
  551. Db::name('headquarters')
  552. ->where(['code' => $param['data']['code'], 'is_del' => 0])
  553. ->update([
  554. 'name' => $param['data']['name'],
  555. 'type' => 3,
  556. 'invoice_title' => '',
  557. 'invoice_people' => '',
  558. 'invoice_addr' => '',
  559. 'invoice_mobile' => $param['contact']['mobile'],
  560. 'invoice_code' => '',
  561. 'invoice_bank' => '',
  562. 'invoice_bankNo' => '',
  563. 'invoice_img' => $param['data']['license_img'],
  564. 'remark' => $param['data']['remark'],
  565. 'is_del' => $param['data']['is_del'],
  566. 'updater' => $param['data']['creater'],
  567. 'updaterid' => $param['data']['createrid'],
  568. 'updatetime' => $param['data']['updatetime'],
  569. ]);
  570. Db::commit();
  571. return json_show(0, '修改成功', ['id' => $id]);
  572. } catch (Exception $exception) {
  573. Db::rollback();
  574. return json_show(1003, $exception->getMessage());
  575. }
  576. }
  577. public function cTitle()
  578. {
  579. $param = $this->request->only([
  580. 'page' => 1,
  581. 'size' => 10,
  582. 'companyNo' => '',
  583. 'companyName' => '',
  584. 'itemid' => '',
  585. ], 'post', 'trim');
  586. $where [] = ['is_del', "=", 0];
  587. if ($param['companyNo'] != '') $where[] = ['companyNo', 'like', '%' . $param['companyNo'] . '%'];
  588. if ($param['companyName'] != '') $where[] = ['companyName', 'like', '%' . $param['companyName'] . '%'];
  589. if ($param['itemid'] != '') $where[] = ['itemid', '=', $param['itemid']];
  590. $count = Db::name('customer_info')
  591. ->where($where)
  592. ->count('id');
  593. $item = Db::name('customer_info')
  594. ->where($where)
  595. ->field("id,companyNo,companyName,LENGTH(companyName) as weight")
  596. ->order(['weight' => 'asc', 'id' => 'desc'])
  597. ->page($param['page'], $param['size'])
  598. ->select()
  599. ->toArray();
  600. return json_show(0, "获取成功", ['item' => $item, 'count' => $count]);
  601. }
  602. //供应商升级成业务公司
  603. public function supplerUpgrade()
  604. {
  605. $post = $this->request->only(['code', 'inv_bank', 'inv_bankNo', 'inv_addr', 'mobile', 'uid', 'uname'], 'post', 'trim');
  606. $val = Validate::rule([
  607. 'code|供应商编码' => 'require',
  608. 'inv_bank|银行名称' => 'require|max:255',
  609. 'inv_bankNo|银行卡号' => 'require|number',
  610. 'inv_addr|联系地址' => 'require|max:255',
  611. 'mobile|联系电话' => 'require',
  612. ]);
  613. if ($val->check($post) == false) return json_show(1004, $val->getError());
  614. $res = Db::name('supplier')
  615. ->alias('a')
  616. ->field('a.id,a.status,a.nature,b.contactor,b.mobile,a.name,a.code,a.registercode,a.legaler,a.registertime,a.addr,a.scope,a.license_img,a.is_upgrade')
  617. ->leftJoin('supplier_contact b', 'b.code=a.code')
  618. ->where(['a.code' => $post['code'], 'a.is_del' => 0])
  619. ->findOrEmpty();
  620. if (empty($res)) return json_show(1004, '该供应商不存在');
  621. if ($res['status'] != 1) return json_show(1004, '该供应商已禁用');
  622. if ($res['is_upgrade'] == 1) return json_show(1004, '不能重复升级');
  623. $temp = Db::name('company_type')
  624. ->field('id')
  625. ->where(['company_type' => $res['nature'], 'is_del' => 0])
  626. ->findOrEmpty();
  627. // if (empty($temp)) return json_show(1004, '对应公司类型不存在');
  628. Db::startTrans();
  629. try {
  630. $date = date('Y-m-d H:i:s');
  631. $business_code = makeNo('GS');
  632. //原业务公司列表
  633. Db::name('business')
  634. ->insert([
  635. 'company' => $res['name'],
  636. 'companyNo' =>$business_code,
  637. 'inv_code' => $res['registercode'],
  638. 'company_type' => $res['nature'],
  639. 'type' => $temp['id'] ?? 0,
  640. 'creater' => $post['uname'],
  641. 'createrid' => $post['uid'],
  642. 'inv_legaler' => $res['legaler'],
  643. 'inv_time' => $res['registertime'],
  644. 'inv_addr' => $post['inv_addr'],
  645. 'inv_bank' => $post['inv_bank'],
  646. 'inv_bankNo' => $post['inv_bankNo'],
  647. 'contactor' => $res['contactor'],
  648. 'mobile' => $res['mobile'],
  649. 'addr' => $res['addr'],
  650. 'inv_scope' => $res['scope'],
  651. 'license_img' => $res['license_img'],
  652. 'status' => 1,
  653. 'is_del' => 0,
  654. 'addtime' => $date,
  655. 'updatetime' => $date,
  656. ]);
  657. //汇总表
  658. Db::name('headquarters')
  659. ->where(['code' => $post['code'], 'type' => 3])
  660. ->update([
  661. 'type' => '1,3',//既是供应商,也是业务公司
  662. 'company_type' => $temp['id'] ?? 0,
  663. 'invoice_addr' => $post['inv_addr'],
  664. 'invoice_mobile' => $post['mobile'],
  665. 'invoice_bank' => $post['inv_bank'],
  666. 'invoice_bankNo' => $post['inv_bankNo'],
  667. 'updater' => $post['uname'],
  668. 'updaterid' => $post['uid'],
  669. 'updatetime' => $date,
  670. 'relation_code'=>$business_code
  671. ]);
  672. //供应商
  673. Db::name('supplier')
  674. ->where(['code' => $post['code'], 'is_upgrade' => 0, 'is_del' => 0])
  675. ->update(['is_upgrade' => 1, 'updatetime' => $date]);
  676. //账号与公司的关联关系
  677. Db::name('account_company')
  678. ->where(['companyCode' => $post['code'], 'company_type' => 1])
  679. ->update(['company_type' => 2]);
  680. Db::commit();
  681. return json_show(0, '升级成功');
  682. } catch (Exception $exception) {
  683. Db::rollback();
  684. return json_show(1004, '升级失败,' . $exception->getMessage());
  685. }
  686. }
  687. //获取业务公司列表(为了采销临时脚本同步数据到结算平台使用,正式上线要删除)
  688. public function getBusinessListTmp(){
  689. $where = $this->request->filter('trim')->post('where',[]);
  690. $list = Db::name('business')
  691. ->where($where)
  692. ->select()
  693. ->toArray();
  694. return json_show(0,'获取成功',$list);
  695. }
  696. }