Filing.php 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. <?php
  2. namespace app\abutment\logic;
  3. use think\Exception;
  4. use think\facade\Db;
  5. class Filing
  6. {
  7. //列表
  8. public static function list(array $data = [])
  9. {
  10. $where = [['is_del', '=', '0']];
  11. if ($data['cat_id'] != '') $where[] = ['cat_id', '=', $data['cat_id']];
  12. if ($data['start_date'] != '' && $data['end_date'] != '') $where[] = ['addtime', 'between', [$data['start_date'], $data['end_date']]];
  13. if ($data['filingCode'] != '') $where[] = ['filingCode', 'like', '%' . $data['filingCode'] . '%'];
  14. if ($data['status'] != '') $where[] = ['status', '=', $data['status']];
  15. if ($data['good_name'] != '') $where[] = ['good_name', 'like', '%' . $data['good_name'] . '%'];
  16. if ($data['companyName'] != '') $where[] = ['companyName', 'like', '%' . $data['companyName'] . '%'];
  17. if ($data['companyCode'] != '') $where[] = ['companyCode', 'like', '%' . $data['companyCode'] . '%'];
  18. if ($data['orderCode'] != '') $where[] = ['orderCode', 'like', '%' . $data['orderCode'] . '%'];
  19. if ($data['supplierNo'] != '') $where[] = ['supplierNo', '=', $data['supplierNo']];
  20. $count = Db::name('filing')
  21. ->where($where)
  22. ->count('id');
  23. $list = Db::name('filing')
  24. ->field('id,filingCode,cat_id,good_name,num,good_img,price,expect_service,companyName,companyCode,status,addtime,"" catinfo,orderCode')
  25. ->where($where)
  26. ->page($data['page'], $data['size'])
  27. ->order('id', 'desc')
  28. ->select()
  29. ->toArray();
  30. $all_cat = [];
  31. foreach ($list as &$value) {
  32. if (!isset($all_cat[$value['cat_id']])) {
  33. $value['catinfo'] = $all_cat[$value['cat_id']] = implode('/', array_column(made($value['cat_id']), 'name'));
  34. }
  35. }
  36. return json_show(0, '获取报备单列表成功', ['count' => $count, 'list' => $list]);
  37. }
  38. //添加
  39. public static function add(array $data = [])
  40. {
  41. if ($data['is_determine_price'] == 1) $data['cgd_charge'] = bcadd($data['price'], $data['expect_service'], 2);//确定售价时,采购价=售价+服务费
  42. else $data['price'] = bcsub($data['cgd_charge'], $data['expect_service'], 2);//不确定售价时,售价=采购价-服务费
  43. $customerName = Db::name('business')
  44. ->where(['companyNo' => $data['customerCode']])
  45. ->value('company', '');
  46. if ($customerName == '') return json_show(1004, '该业务公司不存在');
  47. $rs = Db::name('filing')
  48. ->strict(false)
  49. ->insert(array_merge($data, [
  50. 'customerName' => $customerName,
  51. 'filingCode' => makeNo('BM'),
  52. 'service_charge' => $data['expect_service'],//服务费与期望服务费一致
  53. 'specinfo' => json_encode($data['spec_list']),
  54. 'send_way' => 2,
  55. 'cert_fee' => 0,
  56. 'pakge_fee' => 0,
  57. 'cost_fee' => 0,
  58. 'mark_fee' => 0,
  59. 'demo_fee' => 0,
  60. 'open_fee' => 0,
  61. 'delivery_fee' => 0,
  62. 'is_gold_price' => 0,
  63. 'is_diff' => 0,
  64. 'apply_id' => request()->user['uid'],
  65. 'apply_name' => request()->user['nickname'],
  66. 'status' => 0,
  67. 'is_del' => 0,
  68. 'addtime' => date('Y-m-d H:i:s'),
  69. 'updatetime' => date('Y-m-d H:i:s'),
  70. ]));
  71. return $rs ? json_show(0, '创建报备单成功') : json_show(1004, '创建报备单失败');
  72. }
  73. //详情
  74. public static function detail(array $data = [])
  75. {
  76. $rs = Db::name('filing')
  77. ->where(['is_del' => 0])
  78. ->where($data)
  79. ->withAttr('specinfo', function ($val) {
  80. return json_decode($val);
  81. })
  82. ->findOrEmpty();
  83. return json_show(0, '获取报备单详情成功', $rs);
  84. }
  85. //审核
  86. public static function status(array $data = [])
  87. {
  88. $rs = Db::name('filing')
  89. ->field('id,status')
  90. ->where(['is_del' => 0, 'id' => $data['id']])
  91. ->whereIn('status', [0, 2])
  92. ->findOrEmpty();
  93. if (empty($rs)) return json_show(1005, '该报备单不存在或不允许审核');
  94. $companyName = Db::name('customer_info')
  95. ->where(['is_del' => 0, 'companyNo' => $data['companyCode']])
  96. ->value('companyName', '');
  97. if ($companyName == '') return json_show(1005, '该客户不存在');
  98. $res = Db::name('filing')
  99. ->where(['is_del' => 0, 'id' => $data['id']])
  100. ->whereIn('status', [0, 2])
  101. ->update(array_merge($data, [
  102. 'companyName' => $companyName,
  103. 'updatetime' => date('Y-m-d H:i:s')
  104. ]));
  105. return $res ? json_show(0, '操作成功') : json_show(1004, '操作失败');
  106. }
  107. //取消转单
  108. public static function cancel(array $data = [])
  109. {
  110. $rs = Db::name('filing')
  111. ->field('id,status')
  112. ->where(['is_del' => 0, 'id' => $data['id'], 'status' => 2, 'supplierNo' => $data['supplierNo']])
  113. ->findOrEmpty();
  114. if (empty($rs)) return json_show(1005, '该报备单不存在或不是待转单状态');
  115. $res = Db::name('filing')
  116. ->where(['is_del' => 0, 'id' => $data['id'], 'status' => 2])
  117. ->update(['status' => 5, 'updatetime' => date('Y-m-d H:i:s')]);
  118. return $res ? json_show(0, '操作成功') : json_show(1004, '操作失败');
  119. }
  120. //转单
  121. public static function transfer(array $data = [])
  122. {
  123. $rs = Db::name('filing')
  124. ->field(true)
  125. ->where(['is_del' => 0, 'id' => $data['id'], 'supplierNo' => $data['supplierNo'], 'status' => 2])
  126. ->findOrEmpty();
  127. if (empty($rs)) json_show(1005, '该报备单不存在或不允许转单');
  128. $date = date('Y-m-d H:i:s');
  129. Db::startTrans();
  130. try {
  131. Db::name('filing')
  132. ->where(['is_del' => 0, 'id' => $data['id'], 'supplierNo' => $data['supplierNo'], 'status' => 2])
  133. ->update(['status' => 3, 'updatetime' => $date]);
  134. Db::commit();
  135. return json_show(0, '转单成功');
  136. } catch (Exception $exception) {
  137. Db::rollback();
  138. Db::name('filing')
  139. ->where(['is_del' => 0, 'id' => $data['id'], 'supplierNo' => $data['supplierNo'], 'status' => 2])
  140. ->update(['status' => 4, 'updatetime' => $date, 'reason' => $exception->getMessage()]);
  141. return json_show(1005, $exception->getMessage());
  142. }
  143. }
  144. }