ExcelLogic.php 13KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  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' => 'realname'],
  40. '1' => ['name' => '跟进次数', 'field' => 'record_num'],
  41. '2' => ['name' => '跟进客户数', 'field' => 'customer_num'],
  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 'userCycle':
  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 'customerSatisfaction':
  62. $file_name = 'customerSatisfaction';
  63. $field_list = [
  64. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  65. '1' => ['name' => '回访合同总数', 'field' => 'visit'],
  66. '2' => ['name' => '很满意', 'field' => 'satisfaction1'],
  67. '3' => ['name' => '满意', 'field' => 'satisfaction2'],
  68. '4' => ['name' => '一般', 'field' => 'satisfaction3'],
  69. '5' => ['name' => '不满意', 'field' => 'satisfaction4'],
  70. '6' => ['name' => '很不满意', 'field' => 'satisfaction5'],
  71. ];
  72. break;
  73. case 'productSatisfaction':
  74. $file_name = 'productSatisfaction';
  75. $field_list = [
  76. '0' => ['name' => '员工姓名', 'field' => 'realname'],
  77. '1' => ['name' => '回访合同总数', 'field' => 'visit'],
  78. '2' => ['name' => '很满意', 'field' => 'satisfaction1'],
  79. '3' => ['name' => '满意', 'field' => 'satisfaction2'],
  80. '4' => ['name' => '一般', 'field' => 'satisfaction3'],
  81. '5' => ['name' => '不满意', 'field' => 'satisfaction4'],
  82. '6' => ['name' => '很不满意', 'field' => 'satisfaction5'],
  83. ];
  84. break;
  85. }
  86. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  87. }
  88. /**
  89. * 员工业绩分析
  90. * @param $type
  91. * @param $param
  92. * @return mixed
  93. */
  94. public function contractExcel($type, $param)
  95. {
  96. $excelModel = new \app\admin\model\Excel();
  97. if($type['excel_types']=='analysis'){
  98. $file_name = 'contractNumStats';
  99. $field_list = [];
  100. p($excelModel->template_download($file_name, $field_list, $type['type'], $param));
  101. return $excelModel->template_download($file_name, $field_list, $type['type'], $param);
  102. }elseif ($type['excel_types']=='summary'){
  103. $file_name = 'totalContract';
  104. $field_list = [
  105. '0' => ['name' => '日期', 'field' => 'type'],
  106. '1' => ['name' => '签约合同数(个)', 'field' => 'count'],
  107. '2' => ['name' => '签约合同金额(元)', 'field' => 'money'],
  108. '3' => ['name' => '回款金额(元)', 'field' => 'back'],
  109. ];
  110. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param['items']);
  111. }elseif ($type['excel_types']=='invoice'){
  112. $file_name = 'invoiceStats';
  113. $field_list = [
  114. '0' => ['name' => '日期', 'field' => 'type'],
  115. '1' => ['name' => '回款金额(元)', 'field' => 'receivables_money'],
  116. '2' => ['name' => '开票金额(元)', 'field' => 'invoice_money'],
  117. '3' => ['name' => '已回款未开票(元)', 'field' => 'not_invoice'],
  118. '4' => ['name' => '已开票未回款(元)', 'field' => 'not_receivables'],
  119. ];
  120. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  121. }
  122. // switch ($type['excel_types']) {
  123. // case 'analysis':
  124. //
  125. //
  126. // break;
  127. // case 'summary':
  128. // $file_name = 'totalContract';
  129. // $field_list = [
  130. // '0' => ['name' => '日期', 'field' => 'type'],
  131. // '1' => ['name' => '签约合同数(个)', 'field' => 'count'],
  132. // '2' => ['name' => '签约合同金额(元)', 'field' => 'money'],
  133. // '3' => ['name' => '回款金额(元)', 'field' => 'back'],
  134. // ];
  135. // return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param['items']);
  136. // break;
  137. // case 'invoice':
  138. // $file_name = 'invoiceStats';
  139. // $field_list = [
  140. // '0' => ['name' => '日期', 'field' => 'type'],
  141. // '1' => ['name' => '回款金额(元)', 'field' => 'receivables_money'],
  142. // '2' => ['name' => '开票金额(元)', 'field' => 'invoice_money'],
  143. // '3' => ['name' => '已回款未开票(元)', 'field' => 'not_invoice'],
  144. // '4' => ['name' => '已开票未回款(元)', 'field' => 'not_receivables'],
  145. // ];
  146. // return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  147. // break;
  148. // }
  149. }
  150. /**
  151. * 产品分析
  152. * @param $type
  153. * @param $param
  154. * @return mixed
  155. */
  156. public function productExcel($type, $param)
  157. {
  158. $file_name = 'contractNumStats';
  159. $field_list = [
  160. '0' => ['name' => '日期', 'field' => 'type'],
  161. '1' => ['name' => '产品分类', 'field' => 'category_id_info'],
  162. '2' => ['name' => '产品名称', 'field' => 'product_name'],
  163. '3' => ['name' => '合同编号', 'field' => 'contract_name'],
  164. '4' => ['name' => '负责人', 'field' => 'realname'],
  165. '5' => ['name' => '客户名称', 'field' => 'name'],
  166. '6' => ['name' => '销售单价', 'field' => 'price'],
  167. '7' => ['name' => '数量', 'field' => 'num'],
  168. '8' => ['name' => '订单产品小计', 'field' => 'subtotal'],
  169. ];
  170. $type = '产品销售情况统计';
  171. $excelModel = new \app\admin\model\Excel();
  172. return $excelModel->biExportExcel($file_name, $field_list, $type, $param);
  173. }
  174. /**
  175. * 排行榜
  176. * @param $type
  177. * @param $param
  178. * @return mixed
  179. */
  180. public function rankingExcle($type, $param)
  181. {
  182. $excelModel = new \app\admin\model\Excel();
  183. switch ($type['excel_types']) {
  184. case 'contract':
  185. $file_name = 'contractRanKing';
  186. $field_list = [
  187. '0' => ['name' => '公司总排名', 'field' => 'id'],
  188. '1' => ['name' => '签订人', 'field' => 'user_name'],
  189. '2' => ['name' => '部门', 'field' => 'structure_name'],
  190. '3' => ['name' => '合同金额(元)', 'field' => 'money'],
  191. ];
  192. break;
  193. case 'receivables':
  194. $file_name = 'receivablesRanKing';
  195. $field_list = [
  196. '0' => ['name' => '公司总排名', 'field' => 'id'],
  197. '1' => ['name' => '签订人', 'field' => 'user_name'],
  198. '2' => ['name' => '部门', 'field' => 'structure_name'],
  199. '3' => ['name' => '回款金额(元)', 'field' => 'money'],
  200. ];
  201. break;
  202. case 'signing':
  203. $file_name = 'signingRanKing';
  204. $field_list = [
  205. '0' => ['name' => '公司总排名', 'field' => 'id'],
  206. '1' => ['name' => '签订人', 'field' => 'user_name'],
  207. '2' => ['name' => '部门', 'field' => 'structure_name'],
  208. '3' => ['name' => '签约合同', 'field' => 'count'],
  209. ];
  210. break;
  211. case 'product':
  212. $file_name = 'productCountRanKing';
  213. $field_list = [
  214. '0' => ['name' => '公司总排名', 'field' => 'id'],
  215. '1' => ['name' => '签订人', 'field' => 'user_name'],
  216. '2' => ['name' => '部门', 'field' => 'structure_name'],
  217. '3' => ['name' => '产品销量', 'field' => 'num'],
  218. ];
  219. break;
  220. case 'addCustomer':
  221. $file_name = 'customerCountRanKing';
  222. $field_list = [
  223. '0' => ['name' => '公司总排名', 'field' => 'id'],
  224. '1' => ['name' => '签订人', 'field' => 'user_name'],
  225. '2' => ['name' => '部门', 'field' => 'structure_name'],
  226. '3' => ['name' => '新增客户数(个)', 'field' => 'count'],
  227. ];
  228. break;
  229. case 'addContacts':
  230. $file_name = 'contactsCountRanKing';
  231. $field_list = [
  232. '0' => ['name' => '公司总排名', 'field' => 'id'],
  233. '1' => ['name' => '签订人', 'field' => 'user_name'],
  234. '2' => ['name' => '部门', 'field' => 'structure_name'],
  235. '3' => ['name' => '新增联系人数(个)', 'field' => 'count'],
  236. ];
  237. break;
  238. case 'recordNun':
  239. $file_name = 'FollowupRecordCountRanKing';
  240. $field_list = [
  241. '0' => ['name' => '公司总排名', 'field' => 'id'],
  242. '1' => ['name' => '签订人', 'field' => 'user_name'],
  243. '2' => ['name' => '部门', 'field' => 'structure_name'],
  244. '3' => ['name' => '跟进次数(个)', 'field' => 'count'],
  245. ];
  246. break;
  247. case 'recordCustomer':
  248. $file_name = 'customerFollowupCountRanKing';
  249. $field_list = [
  250. '0' => ['name' => '公司总排名', 'field' => 'id'],
  251. '1' => ['name' => '签订人', 'field' => 'user_name'],
  252. '2' => ['name' => '部门', 'field' => 'structure_name'],
  253. '3' => ['name' => '跟进客户数(个)', 'field' => 'count'],
  254. ];
  255. break;
  256. case 'examine':
  257. $file_name = 'travelCountRanKing';
  258. $field_list = [
  259. '0' => ['name' => '公司总排名', 'field' => 'id'],
  260. '1' => ['name' => '签订人', 'field' => 'user_name'],
  261. '2' => ['name' => '部门', 'field' => 'structure_name'],
  262. '3' => ['name' => '出差次数(次)', 'field' => 'count'],
  263. ];
  264. break;
  265. }
  266. return $excelModel->biExportExcel($file_name, $field_list, $type['type'], $param);
  267. }
  268. /**
  269. * 业绩目标完成情况
  270. * @param $type
  271. * @param $param
  272. * @return mixed
  273. */
  274. public function achienementExcel($type, $param)
  275. {
  276. $file_name = 'contractNumStats';
  277. $field_list = [
  278. '0' => ['name' => '名称', 'field' => 'name'],
  279. '1' => ['name' => '月份', 'field' => 'month'],
  280. '2' => ['name' => '目标', 'field' => 'achievement'],
  281. '3' => ['name' => '完成', 'field' => 'money'],
  282. '4' => ['name' => 'rate', 'field' => 'realname'],
  283. ];
  284. $type = '业绩目标完成情况';
  285. $excelModel = new \app\admin\model\Excel();
  286. return $excelModel->biExportExcel($file_name, $field_list, $type, $param);
  287. }
  288. }