Headquarters.php 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891
  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_1 = Db::name('headquarters')
  286. ->where('is_del', 0)
  287. ->whereIn('code', $companyNo)
  288. ->column('name', 'code');
  289. $res_2 = Db::name('headquarters')
  290. ->where('is_del', 0)
  291. ->whereIn('relation_code', $companyNo)
  292. ->column('name', 'relation_code');
  293. return json_show(0, '请求成功', array_merge($res_1, $res_2));
  294. }
  295. //业务公司
  296. public function bGetList()
  297. {
  298. $param = $this->request->only([
  299. 'page' => 1,
  300. 'size' => 10,
  301. 'company' => '',
  302. 'status' => '',
  303. 'creater' => '',
  304. 'start' => '',
  305. 'end' => '',
  306. 'company_name' => '',
  307. ], 'post', 'trim');
  308. $where = [['a.is_del', "=", 0]];
  309. if ($param['company'] !== "") $where[] = ["a.company", "like", '%' . $param['company'] . '%'];
  310. if ($param['status'] !== "") $where[] = ["a.status", '=', $param['status']];
  311. if ($param['creater'] !== "") $where[] = ["a.creater", "like", '%' . $param['creater'] . '%'];
  312. if ($param['start'] !== "") $where[] = ["a.addtime", '>=', $param['start']];
  313. if ($param['end'] !== "") $where[] = ["a.addtime", '<=', $param['end'] . ' 23:59:59'];
  314. // if ($param['company_name'] !== "") $where[] = ["a.createrid", 'in', $param['company_name']];
  315. $count = Db::name('business')
  316. ->alias('a')
  317. // ->leftJoin("depart_user u", "u.uid=a.createrid AND u.is_del=0")
  318. ->where($where)
  319. ->count('a.id');
  320. $list = Db::name('business')
  321. ->alias('a')
  322. ->field(true)
  323. // ->field('a.*,u.itemid')
  324. // ->leftJoin("depart_user u", "u.uid=a.createrid AND u.is_del=0")
  325. ->where($where)
  326. ->page($param['page'], $param['size'])
  327. ->order(['addtime' => 'desc', 'id' => 'desc'])
  328. ->select()
  329. ->toArray();
  330. // $all_codes = Db::name('supplier_contact')
  331. // ->whereIn('code', array_column($list, 'code'))
  332. // ->column("id,contactor,mobile", 'code');
  333. //获取开通账号的供应商
  334. // $account = checkHasAccountBySupplierNos(array_column($list,'code'));
  335. foreach ($list as &$value) {
  336. $value['company_name'] = '';
  337. }
  338. return json_show("0", "获取成功", ['list' => $list, 'count' => $count]);
  339. }
  340. public function bCreate()
  341. {
  342. $param = $this->request->filter('trim')->post('');
  343. Db::startTrans();
  344. try {
  345. $tmp = Db::name('business')
  346. ->field('id')
  347. ->where(['company' => $param['company'], 'is_del' => 0])
  348. ->findOrEmpty();
  349. if (!empty($tmp)) throw new Exception('该公司名称已存在');
  350. Db::name('business')->insert($param);
  351. Db::name('headquarters')->insert([
  352. 'code' => $param['companyNo'],
  353. 'name' => $param['company'],
  354. 'type' => 1,
  355. 'invoice_title' => '',
  356. 'invoice_people' => '',
  357. 'invoice_addr' => $param['inv_addr'],
  358. 'invoice_mobile' => $param['mobile'],
  359. 'invoice_code' => $param['inv_code'],
  360. 'invoice_bank' => $param['inv_bank'],
  361. 'invoice_bankNo' => $param['inv_bankNo'],
  362. 'invoice_img' => $param['license_img'],
  363. 'remark' => '',
  364. 'status' => $param['status'],
  365. 'is_del' => $param['is_del'],
  366. 'creater' => $param['creater'],
  367. 'createrid' => $param['createrid'],
  368. 'addtime' => $param['addtime'],
  369. 'updater' => $param['creater'],
  370. 'updaterid' => $param['createrid'],
  371. 'updatetime' => $param['updatetime'],
  372. ]);
  373. Db::commit();
  374. return json_show(0, '添加成功');
  375. } catch (Exception $exception) {
  376. Db::rollback();
  377. return json_show(1003, $exception->getMessage());
  378. }
  379. }
  380. public function bInfo()
  381. {
  382. $companyNo = $this->request->post('companyNo', '', 'trim');
  383. if ($companyNo == "") return json_show(1004, "参数companyNo不能为空");
  384. $info = Db::name('business')
  385. ->alias('a')
  386. ->field('a.*,b.company_type')
  387. ->leftJoin('company_type b', 'b.id=a.type AND b.is_del=0')
  388. ->where(['a.companyNo' => $companyNo, 'a.is_del' => 0])
  389. ->findOrEmpty();
  390. if (empty($info)) return json_show(1002, "未找到数据");
  391. return json_show(0, '获取成功', $info);
  392. }
  393. public function bEdit()
  394. {
  395. $param = $this->request->filter('trim')->post('');
  396. Db::startTrans();
  397. try {
  398. $info = Db::name('business')
  399. ->field('id,companyNo')
  400. ->where(['id' => $param['id'], 'is_del' => 0])
  401. ->findOrEmpty();
  402. if (empty($info)) throw new Exception('未找到数据');
  403. Db::name('business')
  404. ->where(['id' => $param['id'], 'is_del' => 0])
  405. ->update($param);
  406. Db::name('headquarters')
  407. ->where(['code' => $info['companyNo'], 'is_del' => 0])
  408. ->update([
  409. 'invoice_addr' => $param['inv_addr'],
  410. 'invoice_mobile' => $param['mobile'],
  411. 'invoice_bank' => $param['inv_bank'],
  412. 'invoice_bankNo' => $param['inv_bankNo'],
  413. 'invoice_title' => $param['invoice_title'],
  414. 'updatetime' => date("Y-m-d H:i:s"),
  415. ]);
  416. Db::commit();
  417. return json_show(0, '修改成功');
  418. } catch (Exception $exception) {
  419. Db::rollback();
  420. return json_show(1003, $exception->getMessage());
  421. }
  422. }
  423. public function bTitle()
  424. {
  425. $param = $this->request->only(['company_type' => '', 'status' => ''], 'post', 'trim');
  426. $rs = Db::name('company_type')->where('is_del', 0);
  427. if ($param['company_type'] != '') $rs->whereLike('company_type', '%' . $param['company_type'] . '%');
  428. if ($param['status'] != '') $rs->where('status', $param['status']);
  429. $list = $rs->select()->toArray();
  430. return json_show(0, '获取成功', $list);
  431. }
  432. //供应商
  433. public function sGetList()
  434. {
  435. $param = $this->request->only(['page' => 1, 'size' => 10, 'name' => '', 'code' => '', 'creater' => '', 'person' => '', 'status' => '', 'ocr_status' => '', 'start' => '', 'end' => '', 'company_name' => '', 'is_platform' => '','more_code'=>''], 'post', 'trim');
  436. $where = [['s.is_del', "=", 0]];
  437. if ($param['name'] !== "") $where[] = ["s.name", "like", '%' . $param['name'] . '%'];
  438. if ($param['code'] !== "") $where[] = ["s.code", "like", '%' . $param['code'] . '%'];
  439. if ($param['more_code'] !== "") $where[] = ["s.code", "in", $param['more_code']];
  440. if ($param['creater'] !== "") $where[] = ["s.creater", "like", '%' . $param['creater'] . '%'];
  441. if ($param['person'] !== "") $where[] = ["s.person", "like", '%' . $param['person'] . '%'];
  442. if ($param['status'] !== "") $where[] = ["s.status", '=', $param['status']];
  443. if ($param['ocr_status'] !== "") $where[] = ["s.ocr_status", '=', $param['ocr_status']];
  444. if ($param['start'] !== "") $where[] = ["s.addtime", '>=', $param['start']];
  445. if ($param['end'] !== "") $where[] = ["s.addtime", '<=', $param['end'] . ' 23:59:59'];
  446. if ($param['is_platform'] !== "") $where[] = ["s.is_platform", '=', $param['is_platform']];
  447. // if ($param['company_name'] !== "") $where[] = ["s.createrid", 'in', $param['company_name']];
  448. $count = Db::name('supplier')
  449. ->alias('s')
  450. // ->leftJoin("depart_user u", "u.uid=s.createrid AND u.is_del=0")
  451. ->where($where)
  452. ->count('s.id');
  453. $list = Db::name('supplier')
  454. ->alias('s')
  455. ->field(true)
  456. // ->field('s.*,u.itemid')
  457. // ->leftJoin("depart_user u", "u.uid=s.createrid AND u.is_del=0")
  458. ->where($where)
  459. ->page($param['page'], $param['size'])
  460. ->order("addtime desc")
  461. ->select()
  462. ->toArray();
  463. // $all_codes = Db::name('supplier_contact')
  464. // ->whereIn('code', array_column($list, 'code'))
  465. // ->column("id,contactor,mobile", 'code');
  466. //获取开通账号的供应商
  467. // $account = checkHasAccountBySupplierNos(array_column($list,'code'));
  468. foreach ($list as &$value) {
  469. $value['company_name'] = '';
  470. }
  471. return json_show("0", "获取成功", ['list' => $list, 'count' => $count]);
  472. }
  473. public function sCreate()
  474. {
  475. $param = $this->request->only(['data', 'contact'], 'post', 'trim');
  476. $val = Validate::rule([
  477. 'data|供应商数据' => 'require|array',
  478. 'contact|联系人' => 'require|array',
  479. ]);
  480. if ($val->check($param) == false) return json_show(1004, $val->getError());
  481. Db::startTrans();
  482. try {
  483. $tmp = Db::name('supplier')
  484. ->field('id')
  485. ->where(['name' => $param['data']['name'], 'is_del' => 0])
  486. ->findOrEmpty();
  487. if (!empty($tmp)) throw new Exception('该供应商名称已存在');
  488. $id = Db::name('supplier')->insertGetId($param['data']);
  489. Db::name('supplier_contact')->insert($param['contact']);
  490. Db::name('headquarters')->insert([
  491. 'code' => $param['data']['code'],
  492. 'name' => $param['data']['name'],
  493. 'type' => 3,
  494. 'invoice_title' => '',
  495. 'invoice_people' => '',
  496. 'invoice_addr' => '',
  497. 'invoice_mobile' => $param['contact']['mobile'],
  498. 'invoice_code' => '',
  499. 'invoice_bank' => '',
  500. 'invoice_bankNo' => '',
  501. 'invoice_img' => $param['data']['license_img'],
  502. 'remark' => $param['data']['remark'],
  503. 'status' => $param['data']['status'],
  504. 'is_del' => $param['data']['is_del'],
  505. 'creater' => $param['data']['creater'],
  506. 'createrid' => $param['data']['createrid'],
  507. 'addtime' => $param['data']['addtime'],
  508. 'updater' => $param['data']['creater'],
  509. 'updaterid' => $param['data']['createrid'],
  510. 'updatetime' => $param['data']['updatetime'],
  511. ]);
  512. Db::commit();
  513. return json_show(0, '添加成功', ['id' => $id]);
  514. } catch (Exception $exception) {
  515. Db::rollback();
  516. return json_show(1003, $exception->getMessage());
  517. }
  518. }
  519. public function sInfo()
  520. {
  521. $code = $this->request->post('code', '', 'trim');
  522. if ($code == "") return json_show(1004, "参数code不能为空");
  523. $info = Db::name('supplier')
  524. ->alias('a')
  525. ->field('a.*,b.contactor,b.mobile,b.position,b.email,b.telephone')
  526. ->leftJoin('supplier_contact b', 'b.code=a.code AND b.is_del=0')
  527. ->where(['a.code' => $code, 'a.is_del' => 0])
  528. ->findOrEmpty();
  529. if (empty($info)) return json_show(1002, "未找到供应商数据");
  530. return json_show(0, '获取成功', $info);
  531. }
  532. public function sEdit()
  533. {
  534. $param = $this->request->only(['data', 'contact'], 'post', 'trim');
  535. $val = Validate::rule([
  536. 'data|供应商数据' => 'require|array',
  537. 'contact|联系人' => 'require|array',
  538. ]);
  539. if ($val->check($param) == false) return json_show(1004, $val->getError());
  540. Db::startTrans();
  541. try {
  542. $tmp = Db::name('supplier')
  543. ->field('id')
  544. ->where(['name' => $param['data']['name'], 'is_del' => 0])
  545. ->where('id', '<>', $param['data']['id'])
  546. ->findOrEmpty();
  547. if (!empty($tmp)) throw new Exception('该供应商名称已存在');
  548. $id = Db::name('supplier')
  549. ->where(['id' => $param['data']['id'], 'is_del' => 0])
  550. ->update($param['data']);
  551. $tmp = Db::name('supplier_contact')
  552. ->field('id')
  553. ->where(['code' => $param['contact']['code'], 'is_del' => 0])
  554. ->findOrEmpty();
  555. if (empty($tmp)) Db::name('supplier_contact')->insert(array_merge($param['contact'], ['addtime' => $param['contact']['updatetime']]));
  556. else Db::name('supplier_contact')->where(['id' => $tmp['id'], 'is_del' => 0])->update($param['contact']);
  557. Db::name('headquarters')
  558. ->where(['code' => $param['data']['code'], 'is_del' => 0])
  559. ->update([
  560. 'name' => $param['data']['name'],
  561. 'type' => 3,
  562. 'invoice_title' => '',
  563. 'invoice_people' => '',
  564. 'invoice_addr' => '',
  565. 'invoice_mobile' => $param['contact']['mobile'],
  566. 'invoice_code' => '',
  567. 'invoice_bank' => '',
  568. 'invoice_bankNo' => '',
  569. 'invoice_img' => $param['data']['license_img'],
  570. 'remark' => $param['data']['remark'],
  571. 'is_del' => $param['data']['is_del'],
  572. 'updater' => $param['data']['creater'],
  573. 'updaterid' => $param['data']['createrid'],
  574. 'updatetime' => $param['data']['updatetime'],
  575. ]);
  576. Db::commit();
  577. return json_show(0, '修改成功', ['id' => $id]);
  578. } catch (Exception $exception) {
  579. Db::rollback();
  580. return json_show(1003, $exception->getMessage());
  581. }
  582. }
  583. //客户
  584. public function cInfo()
  585. {
  586. $companyNo = $this->request->post('companyNo','','trim');
  587. $info = Db::name('customer_info')
  588. ->where(['is_del'=>0,'companyNo'=>$companyNo])
  589. ->field(true)
  590. ->findOrEmpty();
  591. return json_show(0, "获取成功", $info);
  592. }
  593. public function cTitle()
  594. {
  595. $param = $this->request->only([
  596. 'page' => 1,
  597. 'size' => 10,
  598. 'companyNo' => '',
  599. 'companyName' => '',
  600. 'itemid' => '',
  601. ], 'post', 'trim');
  602. $where [] = ['is_del', "=", 0];
  603. if ($param['companyNo'] != '') $where[] = ['companyNo', 'like', '%' . $param['companyNo'] . '%'];
  604. if ($param['companyName'] != '') $where[] = ['companyName', 'like', '%' . $param['companyName'] . '%'];
  605. if ($param['itemid'] != '') $where[] = ['itemid', '=', $param['itemid']];
  606. $count = Db::name('customer_info')
  607. ->where($where)
  608. ->count('id');
  609. $item = Db::name('customer_info')
  610. ->where($where)
  611. ->field("id,companyNo,companyName,LENGTH(companyName) as weight")
  612. ->order(['weight' => 'asc', 'id' => 'desc'])
  613. ->page($param['page'], $param['size'])
  614. ->select()
  615. ->toArray();
  616. return json_show(0, "获取成功", ['item' => $item, 'count' => $count]);
  617. }
  618. //供应商升级成业务公司
  619. public function supplerUpgrade()
  620. {
  621. $post = $this->request->only(['code', 'inv_bank', 'inv_bankNo', 'inv_addr', 'mobile', 'uid', 'uname', 'invoice_title'], 'post', 'trim');
  622. $val = Validate::rule([
  623. 'code|供应商编码' => 'require',
  624. 'inv_bank|银行名称' => 'require|max:255',
  625. 'inv_bankNo|银行卡号' => 'require|number',
  626. 'inv_addr|联系地址' => 'require|max:255',
  627. 'mobile|联系电话' => 'require',
  628. 'invoice_title|公司抬头' => 'require',
  629. ]);
  630. if ($val->check($post) == false) return json_show(1004, $val->getError());
  631. $res = Db::name('supplier')
  632. ->alias('a')
  633. ->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')
  634. ->leftJoin('supplier_contact b', 'b.code=a.code')
  635. ->where(['a.code' => $post['code'], 'a.is_del' => 0])
  636. ->findOrEmpty();
  637. if (empty($res)) return json_show(1004, '该供应商不存在');
  638. if ($res['status'] != 1) return json_show(1004, '该供应商已禁用');
  639. if ($res['is_upgrade'] == 1) return json_show(1004, '不能重复升级');
  640. $temp = Db::name('company_type')
  641. ->field('id')
  642. ->where(['company_type' => $res['nature'], 'is_del' => 0])
  643. ->findOrEmpty();
  644. // if (empty($temp)) return json_show(1004, '对应公司类型不存在');
  645. Db::startTrans();
  646. try {
  647. $date = date('Y-m-d H:i:s');
  648. $business_code = makeNo('GS');
  649. //业务公司列表
  650. Db::name('business')
  651. ->insert([
  652. 'company' => $res['name'],
  653. 'companyNo' => $business_code,
  654. 'inv_code' => $res['registercode'],
  655. 'company_type' => $res['nature'],
  656. 'type' => $temp['id'] ?? 0,
  657. 'creater' => $post['uname'],
  658. 'createrid' => $post['uid'],
  659. 'inv_legaler' => $res['legaler'],
  660. 'inv_time' => $res['registertime'],
  661. 'inv_addr' => $post['inv_addr'],
  662. 'inv_bank' => $post['inv_bank'],
  663. 'inv_bankNo' => $post['inv_bankNo'],
  664. 'contactor' => $res['contactor'],
  665. 'mobile' => $res['mobile'],
  666. 'addr' => $res['addr'],
  667. 'inv_scope' => $res['scope'],
  668. 'license_img' => $res['license_img'],
  669. 'invoice_title' => $post['invoice_title'],
  670. 'status' => 1,
  671. 'is_del' => 0,
  672. 'addtime' => $date,
  673. 'updatetime' => $date,
  674. ]);
  675. //汇总表
  676. Db::name('headquarters')
  677. ->where(['code' => $post['code'], 'type' => 3])
  678. ->update([
  679. 'relation_code' => $business_code,
  680. 'updater' => $post['uname'],
  681. 'updaterid' => $post['uid'],
  682. 'updatetime' => $date,
  683. ]);
  684. Db::name('headquarters')
  685. ->insert([
  686. 'code' => $business_code,
  687. 'name' => $res['name'],
  688. 'type' => 1,//业务公司
  689. 'company_type' => $temp['id'] ?? 0,
  690. 'invoice_title' => $res['invoice_title'],
  691. 'invoice_people' => $res['invoice_people'],
  692. 'invoice_addr' => $post['inv_addr'],
  693. 'invoice_mobile' => $post['mobile'],
  694. 'invoice_code' => $res['invoice_code'],
  695. 'invoice_bank' => $post['inv_bank'],
  696. 'invoice_bankNo' => $post['inv_bankNo'],
  697. 'invoice_img' => $res['invoice_img'],
  698. 'status' => $res['status'],
  699. 'is_del' => $res['is_del'],
  700. 'creater' => $post['uname'],
  701. 'createrid' => $post['uid'],
  702. 'addtime' => $date,
  703. 'updater' => $post['uname'],
  704. 'updaterid' => $post['uid'],
  705. 'updatetime' => $date,
  706. 'relation_code' => $post['code']
  707. ]);
  708. //供应商
  709. Db::name('supplier')
  710. ->where(['code' => $post['code'], 'is_upgrade' => 0, 'is_del' => 0])
  711. ->update(['is_upgrade' => 1, 'updatetime' => $date]);
  712. //账号与公司的关联关系
  713. Db::name('account_company')
  714. ->insert([
  715. 'account_id' => $post['uid'],
  716. 'companyCode' => $business_code,
  717. 'companyName' => $res['name'],
  718. 'company_type' => 2,
  719. 'status' => 1,
  720. 'is_del' => 0,
  721. 'addtime' => $date,
  722. 'updatetime' => $date,
  723. ]);
  724. Db::commit();
  725. return json_show(0, '升级成功');
  726. } catch (Exception $exception) {
  727. Db::rollback();
  728. return json_show(1004, '升级失败,' . $exception->getMessage());
  729. }
  730. }
  731. //获取业务公司列表(为了采销临时脚本同步数据到结算平台使用,正式上线要删除)
  732. public function getBusinessListTmp(){
  733. $where = $this->request->filter('trim')->post('where',[]);
  734. $list = Db::name('business')
  735. ->where($where)
  736. ->select()
  737. ->toArray();
  738. return json_show(0,'获取成功',$list);
  739. }
  740. }