ExcelLogic.php 14KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  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_num'],
  178. '3' => ['name' => '负责人', 'field' => 'realname'],
  179. '4' => ['name' => '客户名称', 'field' => 'contract_name'],
  180. '5' => ['name' => '销售单价', 'field' => 'price'],
  181. '6' => ['name' => '数量', 'field' => 'num'],
  182. '7' => ['name' => '订单产品小计', 'field' => 'subtotal'],
  183. ];
  184. $type = '产品销售情况统计';
  185. $excelModel = new \app\admin\model\Excel();
  186. return $excelModel->biExportExcel($file_name, $field_list, $type, $param);
  187. }
  188. /**
  189. * 排行榜
  190. * @param $type
  191. * @param $param
  192. * @return mixed
  193. */
  194. public function rankingExcle($type, $param)
  195. {
  196. $excelModel = new \app\admin\model\Excel();
  197. switch ($type['excel_types']) {
  198. case 'contract':
  199. $file_name = 'contractRanKing';
  200. $field_list = [
  201. '0' => ['name' => '公司总排名', 'field' => 'id'],
  202. '1' => ['name' => '签订人', 'field' => 'user_name'],
  203. '2' => ['name' => '部门', 'field' => 'structure_name'],
  204. '3' => ['name' => '合同金额(元)', 'field' => 'money'],
  205. ];
  206. break;
  207. case 'receivablesRanKingExport':
  208. $file_name = 'receivablesRanKing';
  209. $field_list = [
  210. '0' => ['name' => '公司总排名', 'field' => 'id'],
  211. '1' => ['name' => '签订人', 'field' => 'user_name'],
  212. '2' => ['name' => '部门', 'field' => 'structure_name'],
  213. '3' => ['name' => '回款金额(元)', 'field' => 'money'],
  214. ];
  215. break;
  216. case 'signing':
  217. $file_name = 'signingRanKing';
  218. $field_list = [
  219. '0' => ['name' => '公司总排名', 'field' => 'id'],
  220. '1' => ['name' => '签订人', 'field' => 'user_name'],
  221. '2' => ['name' => '部门', 'field' => 'structure_name'],
  222. '3' => ['name' => '签约合同', 'field' => 'count'],
  223. ];
  224. break;
  225. case 'product':
  226. $file_name = 'productCountRanKing';
  227. $field_list = [
  228. '0' => ['name' => '公司总排名', 'field' => 'id'],
  229. '1' => ['name' => '签订人', 'field' => 'user_name'],
  230. '2' => ['name' => '部门', 'field' => 'structure_name'],
  231. '3' => ['name' => '产品销量', 'field' => 'num'],
  232. ];
  233. break;
  234. case 'addCustomer':
  235. $file_name = 'customerCountRanKing';
  236. $field_list = [
  237. '0' => ['name' => '公司总排名', 'field' => 'id'],
  238. '1' => ['name' => '签订人', 'field' => 'user_name'],
  239. '2' => ['name' => '部门', 'field' => 'structure_name'],
  240. '3' => ['name' => '新增客户数(个)', 'field' => 'count'],
  241. ];
  242. break;
  243. case 'addContacts':
  244. $file_name = 'contactsCountRanKing';
  245. $field_list = [
  246. '0' => ['name' => '公司总排名', 'field' => 'id'],
  247. '1' => ['name' => '签订人', 'field' => 'user_name'],
  248. '2' => ['name' => '部门', 'field' => 'structure_name'],
  249. '3' => ['name' => '新增联系人数(个)', 'field' => 'count'],
  250. ];
  251. break;
  252. case 'recordNun':
  253. $file_name = 'FollowupRecordCountRanKing';
  254. $field_list = [
  255. '0' => ['name' => '公司总排名', 'field' => 'id'],
  256. '1' => ['name' => '签订人', 'field' => 'user_name'],
  257. '2' => ['name' => '部门', 'field' => 'structure_name'],
  258. '3' => ['name' => '跟进次数(个)', 'field' => 'count'],
  259. ];
  260. break;
  261. case 'recordCustomer':
  262. $file_name = 'customerFollowupCountRanKing';
  263. $field_list = [
  264. '0' => ['name' => '公司总排名', 'field' => 'id'],
  265. '1' => ['name' => '签订人', 'field' => 'user_name'],
  266. '2' => ['name' => '部门', 'field' => 'structure_name'],
  267. '3' => ['name' => '跟进客户数(个)', 'field' => 'count'],
  268. ];
  269. break;
  270. case 'examine':
  271. $file_name = 'travelCountRanKing';
  272. $field_list = [
  273. '0' => ['name' => '公司总排名', 'field' => 'id'],
  274. '1' => ['name' => '签订人', 'field' => 'user_name'],
  275. '2' => ['name' => '部门', 'field' => 'structure_name'],
  276. '3' => ['name' => '出差次数(次)', 'field' => 'count'],
  277. ];
  278. break;
  279. }
  280. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  281. }
  282. /**
  283. * 业绩目标完成情况
  284. * @param $type
  285. * @param $param
  286. * @return mixed
  287. */
  288. public function achienementExcel($param)
  289. {
  290. $file_name = 'contractNumStats';
  291. $field_list = [
  292. '0' => ['name' => '名称', 'field' => 'name'],
  293. '1' => ['name' => '月份', 'field' => 'month'],
  294. '2' => ['name' => '目标', 'field' => 'achievement'],
  295. '3' => ['name' => '完成', 'field' => 'money'],
  296. '4' => ['name' => '完成率', 'field' => 'rate'],
  297. ];
  298. $type = '业绩目标完成情况';
  299. $excelModel = new \app\admin\model\Excel();
  300. $item=[];
  301. foreach ($param as $value) {
  302. foreach ($value as $v) {
  303. $item[] = $v;
  304. }
  305. }
  306. return $excelModel->biExportExcel($file_name, $field_list, $type, $item);
  307. }
  308. }