Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.
 
 
 
 
 
 

482 linhas
19 KiB

  1. <?php
  2. /**
  3. * 财务模块
  4. * Class FinanceController
  5. * @package backend\modules\zzcs\controllers
  6. */
  7. namespace backend\modules\zzcs\controllers;
  8. use backend\modules\zzcs\logic\ProdManage;
  9. use backend\modules\zzcs\models\BaseArea;
  10. use backend\modules\zzcs\logic\Finance;
  11. use yii\web\Controller;
  12. use Yii;
  13. use backend\modules\zzcs\models\OrderMain;
  14. class FinanceController extends Controller
  15. {
  16. public $layout = '@backend/modules/zzcs/views/layouts/zzcs';
  17. public $enableCsrfValidation = false;
  18. public function actionIndex()
  19. {
  20. return 'Hello';
  21. }
  22. /**
  23. * Function Description:巴士成本统计报表
  24. * Function Name: actionBusPostForm
  25. *
  26. * @return string
  27. * @author 温依莅
  28. */
  29. public function actionBusCostForm()
  30. {
  31. return $this->render('bus-cost-form-loading');
  32. }
  33. public function actionBusCostForm1()
  34. {
  35. $finance = new Finance();
  36. $view = Yii::$app->view;
  37. $view->title = '巴士统计报表';
  38. //1,获取参数
  39. $yesterday = date('Y-m-d', strtotime("-1 days"));
  40. $dimensionality_list = ['日期', '线路', '渠道', '运营负责人'];
  41. $dimensionality = Yii::$app->request->get('dimensionality', 2);//维度 0,日期 1,线路 2,渠道 3,运营负责人
  42. $dimensionality2 = Yii::$app->request->get('dimensionality2', 0);//线路类型0,全部 1,市内 2,省际
  43. $start_date = Yii::$app->request->get('start_date', $yesterday);//开始日期
  44. $bus_start_time = Yii::$app->request->get('bus_start_time', '');//发车时间
  45. $line_code = Yii::$app->request->get('line_code', '');//线路代码
  46. $end_date = Yii::$app->request->get('end_date', $yesterday);//结束日期
  47. $page_size = Yii::$app->request->get('page_size', 30);//每页展示条数
  48. $current_page = Yii::$app->request->get('current_page', 1);//当前页
  49. $channel_list = Yii::$app->request->get('channel_list', '');//日期维度下的渠道筛选
  50. /*$start_date = Yii::$app->request->get('start_date','2017-03-22');//开始日期
  51. $end_date = Yii::$app->request->get('end_date','2017-03-25');//结束日期*/
  52. //2,获取数据
  53. $form_list = $finance->getDateCost($dimensionality, $dimensionality2, $start_date, $end_date, $page_size, $current_page, $channel_list, $bus_start_time, $line_code);
  54. //3.每页展示条数
  55. $page_size_arr = [10, 30, 50, 100];
  56. $rows = $form_list['rows'];
  57. $final_amount = $form_list['final_amount'];
  58. $empty_bus_cost = $form_list['empty_bus_cost'];
  59. $page_arr = $form_list['page_arr'];
  60. $page = $form_list['page'];
  61. $data['dimensionality'] = $dimensionality_list;
  62. $data['rows'] = $rows;
  63. $data['search_dimensionality'] = $dimensionality;
  64. $data['final_amount'] = $final_amount;
  65. $data['empty_bus_cost'] = $empty_bus_cost;
  66. $data['page_arr'] = $page_arr;
  67. $data['page'] = $page;
  68. $data['page_size'] = $page_size;
  69. $data['page_size_arr'] = $page_size_arr;
  70. $data['statistical_type'] = $dimensionality_list[$dimensionality];
  71. $data['start_date'] = $start_date;
  72. $data['end_date'] = $end_date;
  73. return $this->render('bus-cost', $data);
  74. }
  75. /**
  76. * Function Description:统计报表
  77. * Function Name: actionOrderStatisticalForm
  78. *
  79. * @return string
  80. *
  81. * @author 张帅
  82. */
  83. public function actionOrderStatisticalForm()
  84. {
  85. $order_main = new OrderMain();
  86. $view = Yii::$app->view;
  87. $view->title = '统计报表';
  88. //1.维度
  89. $dimensionality_list = ['渠道', '产品', '日期'];
  90. #region 2.获取参数
  91. $dimensionality = Yii::$app->request->get('dimensionality');//维度
  92. $dimensionality2 = Yii::$app->request->get('dimensionality2');//维度
  93. $dimensionality3 = Yii::$app->request->get('dimensionality3');//维度
  94. $start_date = Yii::$app->request->get('start_date');//开始日期
  95. $end_date = Yii::$app->request->get('end_date');//结束日期
  96. $page_size = Yii::$app->request->get('page_size');//每页展示条数
  97. $current_page = Yii::$app->request->get('current_page');//当前页
  98. empty($dimensionality) ? $dimensionality = 0 : true;
  99. empty($dimensionality2) ? $dimensionality2 = 2 : true;
  100. empty($dimensionality3) ? $dimensionality3 = 0 : true;
  101. /*
  102. empty($start_date) ? $start_date = date('Y-m',time()) . '-01' : true;
  103. empty($end_date) ? $end_date = date('Y-m-d', time()) : true;
  104. */
  105. empty($start_date) ? $start_date = date('Y-m-d', strtotime("-1 days")) : true;
  106. empty($end_date) ? $end_date = date('Y-m-d', strtotime("-1 days")) : true;
  107. empty($page_size) ? $page_size = 30 : true;
  108. empty($current_page) ? $current_page = 1 : true;
  109. #endregion
  110. //3.获取数据
  111. $form_list = $order_main->getOrderStatisticalForm($dimensionality, $dimensionality2, $dimensionality3, $start_date, $end_date, $page_size, $current_page);
  112. //4.每页展示条数
  113. $page_size_arr = [10, 30, 50, 100];
  114. $statistical_list = $form_list['rows'];
  115. $stat_row = $form_list['stat_row'];
  116. $page_arr = $form_list['page_arr'];
  117. $page = $form_list['page'];
  118. $data['dimensionality'] = $dimensionality_list;
  119. $data['search_dimensionality'] = $dimensionality;
  120. $data['statistical_list'] = $statistical_list;
  121. $data['stat_row'] = $stat_row;
  122. $data['page_arr'] = $page_arr;
  123. $data['page'] = $page;
  124. $data['page_size'] = $page_size;
  125. $data['page_size_arr'] = $page_size_arr;
  126. $data['statistical_type'] = $dimensionality_list[$dimensionality];
  127. $data['start_date'] = $start_date;
  128. $data['end_date'] = $end_date;
  129. return $this->render('statistical-form', $data);
  130. }
  131. /**
  132. * Function Description:导出数据
  133. * Function Name: actionExportOrderStatisticalForm
  134. *
  135. * @return string
  136. *
  137. * @author 张帅
  138. */
  139. public function actionExportBusCost()
  140. {
  141. $finance = new Finance();
  142. $base_area = new BaseArea();
  143. #region 2.获取参数
  144. $yesterday = date('Y-m-d', strtotime("-1 days"));
  145. $dimensionality = Yii::$app->request->post('dimensionality', 2);//维度 0,日期 1,线路 2,渠道
  146. $dimensionality2 = Yii::$app->request->post('dimensionality2', 0);//线路类型0,全部 1,市内 2,省际
  147. $start_date = Yii::$app->request->post('start_date', $yesterday);//开始日期
  148. $bus_start_time = Yii::$app->request->post('bus_start_time', '');//发车时间
  149. $line_code = Yii::$app->request->post('line_code', '');//线路代码
  150. $end_date = Yii::$app->request->post('end_date', $yesterday);//结束日期
  151. $channel_list = Yii::$app->request->get('channel_list', '');//日期维度下的渠道筛选
  152. #endregion
  153. //3.获取数据
  154. $form_list = $finance->getDateCost($dimensionality, $dimensionality2, $start_date, $end_date, 10000, 1, $channel_list, $bus_start_time, $line_code);
  155. $obj_type = ['日期', '线路', '渠道', '运营负责人'];
  156. $cost_list = $form_list['rows'];
  157. $stat_row = $form_list['final_amount'];
  158. $stat_row['no'] = '-';
  159. $stat_row['type_data'] = '合计';
  160. $empty_bus_cost = $form_list['empty_bus_cost'];
  161. $empty_bus_cost['no'] = '-';
  162. $empty_bus_cost['type_data'] = '空车成本';
  163. $table_name = $start_date . '~' . $end_date . '巴士业绩统计';
  164. $data_title = ['编号', $obj_type[$dimensionality], '订单数', '人次', '上座率', 'GMV', '赔入', '赔出', '成本', 'GP', 'GP率'];
  165. $data_list = [];
  166. $index_temp = 0;
  167. foreach ($cost_list as $k => $v) {
  168. $data_list[$index_temp]['no'] = $v['no'];
  169. $data_list[$index_temp]['type_data'] = $v['type_data'];
  170. $data_list[$index_temp]['order_num'] = number_format($v['order_num']);
  171. $data_list[$index_temp]['people_num'] = number_format($v['people_num']);
  172. if ($dimensionality == 2 || $dimensionality == 3 || $v['total_saled_count'] == 0) {
  173. $data_list[$index_temp]['seat_rate'] = "-";
  174. } else {
  175. $seat_rate = ($v['total_saled_count'] == 0) ? 0 : $v['total_saled_count'] / $v['total_seat_count'] * 100;
  176. $data_list[$index_temp]['seat_rate'] = number_format($seat_rate, 2) . "%";
  177. }
  178. $data_list[$index_temp]['total_price'] = number_format($v['total_price'], 2);
  179. $data_list[$index_temp]['peiru'] = number_format($v['peiru'], 2);
  180. $data_list[$index_temp]['peichu'] = number_format($v['peichu'], 2);
  181. $data_list[$index_temp]['cost'] = number_format($v['cost'], 2);
  182. $data_list[$index_temp]['gp'] = number_format($v['gp'], 2);
  183. $data_list[$index_temp]['gp_rate'] = $v['gp_rate'];
  184. $index_temp++;
  185. }
  186. if ($dimensionality == 2 || $dimensionality == 3) {
  187. $new_empty_bus_cost = array();
  188. $new_empty_bus_cost['no'] = count($data_list) + 1;
  189. $new_empty_bus_cost['type_data'] = '空车成本';
  190. $new_empty_bus_cost['order_num'] = 0;
  191. $new_empty_bus_cost['people_num'] = 0;
  192. $new_empty_bus_cost['seat_rate'] = "0%";
  193. $new_empty_bus_cost['total_price'] = number_format(0, 2);
  194. $new_empty_bus_cost['peiru'] = number_format(0, 2);
  195. $new_empty_bus_cost['peichu'] = number_format(0, 2);
  196. $new_empty_bus_cost['cost'] = number_format($empty_bus_cost['cost'], 2);
  197. $new_empty_bus_cost['gp'] = number_format($empty_bus_cost['gp'], 2);
  198. $new_empty_bus_cost['gp_rate'] = $empty_bus_cost['gp_rate'];
  199. $data_list[] = $new_empty_bus_cost;
  200. }
  201. if ($dimensionality == 2 || $dimensionality == 3 || $v['total_saled_count'] == 0) {
  202. $stat_row['seat_rate'] = "-";
  203. } else {
  204. $seat_rate = ($stat_row['total_saled_count'] == 0) ? 0 : $stat_row['total_saled_count'] / $stat_row['total_seat_count'] * 100;
  205. $stat_row['seat_rate'] = number_format($seat_rate, 2) . "%";
  206. }
  207. $data_list[] = [$stat_row['no'], $stat_row['type_data'], number_format($stat_row['order_num']), number_format($stat_row['people_num']), $stat_row['seat_rate'], number_format($stat_row['total_price'], 2), number_format($stat_row['total_peiru'], 2), number_format($stat_row['total_peichu'], 2), number_format($stat_row['cost'], 2), number_format($stat_row['gp'], 2), $stat_row['gp_rate']];
  208. return $base_area->exportExcel($table_name, $data_title, $data_list);
  209. }
  210. /**
  211. * Function Description:门票列表加载
  212. * Function Name: actionTicketCostFormLoading
  213. *
  214. * @return string
  215. *
  216. * @author 李健
  217. */
  218. public function actionTicketCostFormLoading()
  219. {
  220. return $this->render('ticket-cost-form-loading');
  221. }
  222. /**
  223. * Function Description:得到门票业绩列表
  224. * Function Name: actionTicketCostForm
  225. *
  226. * @return string
  227. *
  228. * @author 李健
  229. */
  230. public function actionTicketCostForm()
  231. {
  232. $view = Yii::$app->view;
  233. $view->title = '门票统计报表';
  234. $dimensionality_list = [ '日期','供应商', '产品名','运营负责人'];
  235. $dimensionality = Yii::$app->request->get('dimensionality', 3);//维度 1,日期 2,供应商 3,产品名
  236. $date = date('Y-m-d', strtotime('-1 day'));
  237. $start_date = Yii::$app->request->get('start_date', $date);
  238. $end_date = Yii::$app->request->get('end_date', $date);
  239. $prod_name = Yii::$app->request->get('prod_name', '');
  240. $supplier_name = Yii::$app->request->get('supplier_name', '');
  241. $ticket_type = Yii::$app->request->get('ticket_type', 0);//票种 1 保险 2其他
  242. $current_page = Yii::$app->request->get('current_page', 1);
  243. $size = Yii::$app->request->get('page_size', 30);
  244. $logic = new ProdManage();
  245. $data = $logic->getProdCostList($dimensionality, $start_date, $end_date, $prod_name, $supplier_name, $ticket_type, $current_page, $size);
  246. $data['dimensionality'] = $dimensionality_list;
  247. $data['search_dimensionality'] = $dimensionality;
  248. $data['statistical_type'] = $dimensionality_list[$dimensionality - 1];
  249. $data['start_date'] = $start_date;
  250. $data['end_date'] = $end_date;
  251. return $this->render('ticket-cost', $data);
  252. }
  253. /**
  254. * Function Description:下载
  255. * Function Name: actionGetProdCostDetail
  256. *
  257. *
  258. * @author 李健
  259. */
  260. public function actionGetProdCostDetail()
  261. {
  262. $dimensionality = Yii::$app->request->get('dimensionality', 3);//维度 1,日期 2,供应商 3,产品名
  263. $ticket_type = Yii::$app->request->get('ticket_type', 0);
  264. $date = date('Y-m-d');
  265. $start_date = Yii::$app->request->get('start_date',$date);
  266. $end_date = Yii::$app->request->get('end_date',$date);
  267. $prod_name = Yii::$app->request->get('prod_name','');
  268. $supplier_name = Yii::$app->request->get('supplier_name','');
  269. $org_id = Yii::$app->request->get('org_id','');
  270. $run_duty_id = Yii::$app->request->get('run_duty_id','');
  271. $prod_id = Yii::$app->request->get('prod_id','');
  272. $logic = new ProdManage();
  273. $logic->ExportProdCostDetail($dimensionality,$start_date,$end_date,$prod_name,$supplier_name,$ticket_type,$org_id,$prod_id,$run_duty_id);
  274. }
  275. /**
  276. * Function Description:导出门票业绩列表页
  277. * Function Name: actionExportProdCostList
  278. *
  279. *
  280. * @author 李健
  281. */
  282. public function actionExportProdCostList()
  283. {
  284. $dimensionality = Yii::$app->request->get('dimensionality', 1);//维度 1,日期 2,供应商 3,产品名
  285. $date = date('Y-m-d');
  286. $start_date = Yii::$app->request->get('start_date', $date);
  287. $end_date = Yii::$app->request->get('end_date', $date);
  288. $prod_name = Yii::$app->request->get('prod_name', '');
  289. $supplier_name = Yii::$app->request->get('supplier_name', '');
  290. $ticket_type = Yii::$app->request->get('ticket_type', 0);//票种 1 保险 2其他
  291. $current_page = Yii::$app->request->get('current_page', 1);
  292. $size = Yii::$app->request->get('page_size', 30);
  293. $logic = new ProdManage();
  294. $logic->ExportProdCostList($dimensionality, $start_date, $end_date, $prod_name, $supplier_name, $ticket_type, $current_page, $size);
  295. }
  296. /**
  297. * Function Description:巴士工作业绩加载
  298. * Function Name: actionBusWorkForm
  299. *
  300. * @return string
  301. *
  302. * @author 李健
  303. */
  304. public function actionBusWorkForm()
  305. {
  306. return $this->render('bus-work-form-loading');
  307. }
  308. /**
  309. * Function Description:巴士工作业绩列表
  310. * Function Name: actionGetBusWorkList
  311. *
  312. * @return string
  313. *
  314. * @author 李健
  315. */
  316. public function actionGetBusWorkList()
  317. {
  318. $current_page = Yii::$app->request->get('current_page', '1');
  319. $page_size = Yii::$app->request->get('page_size', '30');
  320. $date = date('Y-m-d');
  321. $start_date = Yii::$app->request->get('start_date', $date);
  322. $end_date = Yii::$app->request->get('end_date', $date);
  323. $line_type = Yii::$app->request->get('line_type', '0');
  324. $logic = new Finance();
  325. $data = $logic->getBusWorkList($start_date, $end_date, $line_type, $current_page, $page_size);
  326. $data['start_date'] = $start_date;
  327. $data['end_date'] = $end_date;
  328. return $this->render('bus-work', $data);
  329. }
  330. /**
  331. * Function Description:巴士工作业绩统计流水导出
  332. * Function Name: actionGetBusWorkDetail
  333. *
  334. *
  335. * @author 李健
  336. */
  337. public function actionGetBusWorkDetail()
  338. {
  339. $date = date('Y-m-d');
  340. $start_date = Yii::$app->request->get('start_date', $date);
  341. $end_date = Yii::$app->request->get('end_date', $date);
  342. $line_type = Yii::$app->request->get('line_type', '0');
  343. $user_id = Yii::$app->request->get('user_id', '0');
  344. $logic = new Finance();
  345. $logic->getBusWorkDetail($start_date, $end_date, $line_type, $user_id);
  346. }
  347. /**
  348. * Function Description:个人巴士工作业绩流水详情
  349. * Function Name: actionExportBusWorkList
  350. *
  351. *
  352. * @author 李健
  353. */
  354. public function actionExportBusWorkList()
  355. {
  356. $logic = new Finance();
  357. $date = date('Y-m-d');
  358. $start_date = Yii::$app->request->get('start_date', $date);
  359. $end_date = Yii::$app->request->get('end_date', $date);
  360. $line_type = Yii::$app->request->get('line_type', '0');
  361. $logic->ExportBusWorkList($start_date, $end_date, $line_type);
  362. }
  363. /**
  364. * Function Description:门票工作业绩列表加载
  365. * Function Name: actionTicketWorkForm
  366. *
  367. * @return string
  368. *
  369. * @author 李健
  370. */
  371. public function actionTicketWorkForm()
  372. {
  373. return $this->render('ticket-work-form-loading');
  374. }
  375. /**
  376. * Function Description:门票工作业绩列表
  377. * Function Name: actionGetTicketWorkList
  378. *
  379. * @return string
  380. *
  381. * @author 李健
  382. */
  383. public function actionGetTicketWorkList()
  384. {
  385. $current_page = Yii::$app->request->get('current_page', '1');
  386. $page_size = Yii::$app->request->get('page_size', '30');
  387. $date = date('Y-m-d');
  388. $start_date = Yii::$app->request->get('start_date', $date);
  389. $end_date = Yii::$app->request->get('end_date', $date);
  390. $ticket_type = Yii::$app->request->get('ticket_type', '0');
  391. $logic = new ProdManage();
  392. $data = $logic->getTicketWorkList($start_date, $end_date, $ticket_type, $current_page, $page_size);
  393. $data['start_date'] = $start_date;
  394. $data['end_date'] = $end_date;
  395. return $this->render('ticket-work', $data);
  396. }
  397. /**
  398. * Function Description:导出门票个人业绩详情
  399. * Function Name: actionGetTicketWorkDetail
  400. *
  401. *
  402. * @author 李健
  403. */
  404. public function actionGetTicketWorkDetail()
  405. {
  406. $date = date('Y-m-d');
  407. $start_date = Yii::$app->request->get('start_date', $date);
  408. $end_date = Yii::$app->request->get('end_date', $date);
  409. $ticket_type = Yii::$app->request->get('ticket_type', '0');
  410. $user_id = Yii::$app->request->get('user_id', '0');
  411. $logic = new ProdManage();
  412. $logic->getTicketWorkDetail($start_date, $end_date, $ticket_type, $user_id);
  413. }
  414. /**
  415. * Function Description:导出门票工作业绩流水
  416. * Function Name: actionExportTicketWorkList
  417. *
  418. *
  419. * @author 李健
  420. */
  421. public function actionExportTicketWorkList()
  422. {
  423. $logic = new ProdManage();
  424. $date = date('Y-m-d');
  425. $start_date = Yii::$app->request->get('start_date', $date);
  426. $end_date = Yii::$app->request->get('end_date', $date);
  427. $ticket_type = Yii::$app->request->get('ticket_type', '0');
  428. $logic->ExportTicketWorkList($start_date, $end_date, $ticket_type);
  429. }
  430. }