ExcelLogic.php 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  1. <?php
  2. namespace app\bi\logic;
  3. class ExcelLogic
  4. {
  5. /**
  6. * 员工客户分析导出
  7. * @param $type
  8. * @param $param
  9. * @return mixed
  10. */
  11. public function biexcle($type, $param)
  12. {
  13. $excelModel = new \app\admin\model\Excel();
  14. $file_name='';
  15. $field_list=[];
  16. switch ($type['excel_types']) {
  17. case 'statistics':
  18. $file_name = 'totalCustomerTable';
  19. $field_list = [
  20. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  21. '1' => ['name' => '新增客户数', 'field' => 'customer_num'],
  22. '2' => ['name' => '成交客户数', 'field' => 'deal_customer_num'],
  23. '3' => ['name' => '客户成交率', 'field' => 'deal_customer_rate'],
  24. '4' => ['name' => '合同总金额', 'field' => 'un_receivables_money'],
  25. '5' => ['name' => '回款金额', 'field' => 'receivables_money'],
  26. ];
  27. break;
  28. case 'recordList':
  29. $file_name = 'customerRecordInfo';
  30. $field_list = [
  31. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  32. '1' => ['name' => '跟进次数', 'field' => 'record_num'],
  33. '2' => ['name' => '跟进客户数', 'field' => 'customer_num'],
  34. ];
  35. break;
  36. case 'recordMode':
  37. $file_name = 'customerRecordCategoryStats';
  38. $field_list = [
  39. '0' => ['name' => '跟进方式', 'field' => 'category'],
  40. '1' => ['name' => '个数', 'field' => 'recordNum'],
  41. '2' => ['name' => '占比', 'field' => 'proportion'],
  42. ];
  43. break;
  44. case 'poolList':
  45. $file_name = 'poolTable';
  46. $field_list = [
  47. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  48. '1' => ['name' => '部门', 'field' => 'username'],
  49. '2' => ['name' => '公海池领取客户数', 'field' => 'receive'],
  50. '3' => ['name' => '进入公海客户数', 'field' => 'put_in'],
  51. ];
  52. break;
  53. case 'userCycleList':
  54. $file_name = 'employeeCycleInfo';
  55. $field_list = [
  56. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  57. '1' => ['name' => '成交周期(天)', 'field' => 'cycle'],
  58. '2' => ['name' => '成交客户数', 'field' => 'customer_num'],
  59. ];
  60. break;
  61. case 'productCycle':
  62. $file_name = 'addressCycleInfo';
  63. $field_list = [
  64. '0' => ['name' => '地区', 'field' => 'address'],
  65. '1' => ['name' => '成交周期(天)', 'field' => 'cycle'],
  66. '2' => ['name' => '成交客户数', 'field' => 'customer_num'],
  67. ];
  68. break;
  69. case 'addressCycle':
  70. $file_name = 'productCycleInfo';
  71. $field_list = [
  72. '0' => ['name' => '产品名称', 'field' => 'product_name'],
  73. '1' => ['name' => '成交周期(天)', 'field' => 'cycle'],
  74. '2' => ['name' => '成交客户数', 'field' => 'customer_num'],
  75. ];
  76. break;
  77. case 'customerSatisfaction':
  78. $file_name = 'customerSatisfaction';
  79. $field_list = [
  80. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  81. '1' => ['name' => '回访合同总数', 'field' => 'visitContractNum'],
  82. '2' => ['name' => '很满意', 'field' => '很满意'],
  83. '3' => ['name' => '满意', 'field' => '满意'],
  84. '4' => ['name' => '一般', 'field' => '一般'],
  85. '5' => ['name' => '不满意', 'field' => '不满意'],
  86. '6' => ['name' => '很不满意', 'field' => '很不满意'],
  87. ];
  88. break;
  89. case 'productSatisfaction':
  90. $file_name = 'productSatisfaction';
  91. $field_list = [
  92. '0' => ['name' => '产品名称', 'field' => 'productName'],
  93. '1' => ['name' => '回访次数', 'field' => 'visitNum'],
  94. '2' => ['name' => '很满意', 'field' => '很满意'],
  95. '3' => ['name' => '满意', 'field' => '满意'],
  96. '4' => ['name' => '一般', 'field' => '一般'],
  97. '5' => ['name' => '不满意', 'field' => '不满意'],
  98. '6' => ['name' => '很不满意', 'field' => '很不满意'],
  99. ];
  100. break;
  101. }
  102. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  103. }
  104. /**
  105. * 员工业绩分析
  106. * @param $type
  107. * @param $param
  108. * @return mixed
  109. */
  110. public function contractExcel($type, $param)
  111. {
  112. $excelModel = new \app\admin\model\Excel();
  113. if($type['excel_types']=='analysis'){
  114. $file_name = 'contractNumStats';
  115. $field_list = [];
  116. return $excelModel->template_download($file_name, $field_list, $type['type'], $param);
  117. }elseif ($type['excel_types']=='summary'){
  118. $file_name = 'totalContract';
  119. $field_list = [
  120. '0' => ['name' => '日期', 'field' => 'type'],
  121. '1' => ['name' => '签约合同数(个)', 'field' => 'count'],
  122. '2' => ['name' => '签约合同金额(元)', 'field' => 'money'],
  123. '3' => ['name' => '回款金额(元)', 'field' => 'back'],
  124. ];
  125. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  126. }elseif ($type['excel_types']=='invoice'){
  127. $file_name = 'invoiceStats';
  128. $field_list = [
  129. '0' => ['name' => '日期', 'field' => 'type'],
  130. '1' => ['name' => '回款金额(元)', 'field' => 'receivables_money'],
  131. '2' => ['name' => '开票金额(元)', 'field' => 'invoice_money'],
  132. '3' => ['name' => '已回款未开票(元)', 'field' => 'not_invoice'],
  133. '4' => ['name' => '已开票未回款(元)', 'field' => 'not_receivables'],
  134. ];
  135. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  136. }
  137. // switch ($type['excel_types']) {
  138. // case 'analysis':
  139. //
  140. //
  141. // break;
  142. // case 'summary':
  143. // $file_name = 'totalContract';
  144. // $field_list = [
  145. // '0' => ['name' => '日期', 'field' => 'type'],
  146. // '1' => ['name' => '签约合同数(个)', 'field' => 'count'],
  147. // '2' => ['name' => '签约合同金额(元)', 'field' => 'money'],
  148. // '3' => ['name' => '回款金额(元)', 'field' => 'back'],
  149. // ];
  150. // return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param['items']);
  151. // break;
  152. // case 'invoice':
  153. // $file_name = 'invoiceStats';
  154. // $field_list = [
  155. // '0' => ['name' => '日期', 'field' => 'type'],
  156. // '1' => ['name' => '回款金额(元)', 'field' => 'receivables_money'],
  157. // '2' => ['name' => '开票金额(元)', 'field' => 'invoice_money'],
  158. // '3' => ['name' => '已回款未开票(元)', 'field' => 'not_invoice'],
  159. // '4' => ['name' => '已开票未回款(元)', 'field' => 'not_receivables'],
  160. // ];
  161. // return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  162. // break;
  163. // }
  164. }
  165. /**
  166. * 产品分析
  167. * @param $type
  168. * @param $param
  169. * @return mixed
  170. */
  171. public function productExcel($type, $param)
  172. {
  173. $file_name = 'contractNumStats';
  174. $field_list = [
  175. '0' => ['name' => '产品分类', 'field' => 'category_id_info'],
  176. '1' => ['name' => '产品名称', 'field' => 'product_name'],
  177. '2' => ['name' => '合同数', 'field' => 'contract_product_sum'],
  178. '3' => ['name' => '数量合计', 'field' => 'product_sum'],
  179. '4' => ['name' => '订单产品小计', 'field' => 'contract_money'],
  180. ];
  181. $type = '产品销售情况统计';
  182. $excelModel = new \app\admin\model\Excel();
  183. return $excelModel->biExportExcel($file_name, $field_list, $type, $param);
  184. }
  185. /**
  186. * 排行榜
  187. * @param $type
  188. * @param $param
  189. * @return mixed
  190. */
  191. public function rankingExcle($type, $param)
  192. {
  193. $excelModel = new \app\admin\model\Excel();
  194. switch ($type['excel_types']) {
  195. case 'contract':
  196. $file_name = 'contractRanKing';
  197. $field_list = [
  198. '0' => ['name' => '公司总排名', 'field' => 'id'],
  199. '1' => ['name' => '签订人', 'field' => 'user_name'],
  200. '2' => ['name' => '部门', 'field' => 'structure_name'],
  201. '3' => ['name' => '合同金额(元)', 'field' => 'money'],
  202. ];
  203. break;
  204. case 'receivablesRanKingExport':
  205. $file_name = 'receivablesRanKing';
  206. $field_list = [
  207. '0' => ['name' => '公司总排名', 'field' => 'id'],
  208. '1' => ['name' => '签订人', 'field' => 'user_name'],
  209. '2' => ['name' => '部门', 'field' => 'structure_name'],
  210. '3' => ['name' => '回款金额(元)', 'field' => 'money'],
  211. ];
  212. break;
  213. case 'signing':
  214. $file_name = 'signingRanKing';
  215. $field_list = [
  216. '0' => ['name' => '公司总排名', 'field' => 'id'],
  217. '1' => ['name' => '签订人', 'field' => 'user_name'],
  218. '2' => ['name' => '部门', 'field' => 'structure_name'],
  219. '3' => ['name' => '签约合同', 'field' => 'count'],
  220. ];
  221. break;
  222. case 'product':
  223. $file_name = 'productCountRanKing';
  224. $field_list = [
  225. '0' => ['name' => '公司总排名', 'field' => 'id'],
  226. '1' => ['name' => '签订人', 'field' => 'user_name'],
  227. '2' => ['name' => '部门', 'field' => 'structure_name'],
  228. '3' => ['name' => '产品销量', 'field' => 'num'],
  229. ];
  230. break;
  231. case 'addCustomer':
  232. $file_name = 'customerCountRanKing';
  233. $field_list = [
  234. '0' => ['name' => '公司总排名', 'field' => 'id'],
  235. '1' => ['name' => '签订人', 'field' => 'user_name'],
  236. '2' => ['name' => '部门', 'field' => 'structure_name'],
  237. '3' => ['name' => '新增客户数(个)', 'field' => 'count'],
  238. ];
  239. break;
  240. case 'addContacts':
  241. $file_name = 'contactsCountRanKing';
  242. $field_list = [
  243. '0' => ['name' => '公司总排名', 'field' => 'id'],
  244. '1' => ['name' => '签订人', 'field' => 'user_name'],
  245. '2' => ['name' => '部门', 'field' => 'structure_name'],
  246. '3' => ['name' => '新增联系人数(个)', 'field' => 'count'],
  247. ];
  248. break;
  249. case 'recordNun':
  250. $file_name = 'FollowupRecordCountRanKing';
  251. $field_list = [
  252. '0' => ['name' => '公司总排名', 'field' => 'id'],
  253. '1' => ['name' => '签订人', 'field' => 'user_name'],
  254. '2' => ['name' => '部门', 'field' => 'structure_name'],
  255. '3' => ['name' => '跟进次数(个)', 'field' => 'count'],
  256. ];
  257. break;
  258. case 'recordCustomer':
  259. $file_name = 'customerFollowupCountRanKing';
  260. $field_list = [
  261. '0' => ['name' => '公司总排名', 'field' => 'id'],
  262. '1' => ['name' => '签订人', 'field' => 'user_name'],
  263. '2' => ['name' => '部门', 'field' => 'structure_name'],
  264. '3' => ['name' => '跟进客户数(个)', 'field' => 'count'],
  265. ];
  266. break;
  267. case 'examine':
  268. $file_name = 'travelCountRanKing';
  269. $field_list = [
  270. '0' => ['name' => '公司总排名', 'field' => 'id'],
  271. '1' => ['name' => '签订人', 'field' => 'user_name'],
  272. '2' => ['name' => '部门', 'field' => 'structure_name'],
  273. '3' => ['name' => '出差次数(次)', 'field' => 'count'],
  274. ];
  275. break;
  276. }
  277. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  278. }
  279. /**
  280. * 业绩目标完成情况
  281. * @param $type
  282. * @param $param
  283. * @return mixed
  284. */
  285. public function achienementExcel($param)
  286. {
  287. $file_name = 'contractNumStats';
  288. $field_list = [
  289. '0' => ['name' => '名称', 'field' => 'name'],
  290. '1' => ['name' => '月份', 'field' => 'month'],
  291. '2' => ['name' => '目标', 'field' => 'achievement'],
  292. '3' => ['name' => '完成', 'field' => 'money'],
  293. '4' => ['name' => '完成率', 'field' => 'rate'],
  294. ];
  295. $type = '业绩目标完成情况';
  296. $excelModel = new \app\admin\model\Excel();
  297. $item=[];
  298. foreach ($param as $value) {
  299. foreach ($value as $v) {
  300. $item[] = $v;
  301. }
  302. }
  303. return $excelModel->biExportExcel($file_name, $field_list, $type, $item);
  304. }
  305. }