LegalController.php 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  1. <?php
  2. namespace app\modules\car\controllers;
  3. use app\common\controllers\BController;
  4. use app\modules\car\models\FDetaIllegalUsingCar;
  5. use app\modules\car\models\FOneCarOneTable;
  6. use Yii;
  7. class LegalController extends BController
  8. {
  9. public $layout = 'main';
  10. public function actionCars()
  11. {
  12. $type = Yii::$app->request->get('type',1);
  13. if($type==1)
  14. {
  15. if (Yii::$app->request->isAjax) {
  16. $params = Yii::$app->request->get();
  17. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  18. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-m');
  19. //日期计算
  20. $startdateInfo = explode('-',$params['start_date']);
  21. $year = $startdateInfo[0];
  22. $startmonth = intval($startdateInfo[1]);
  23. $enddateInfo = explode('-',$params['end_date']);
  24. $endmonth = intval($enddateInfo[1]);
  25. $sql_carsdetail = $this->getCarsDetailData($params,'car_id,illegal_times');
  26. $sql_carinfo = $this->getCarinfo(array_merge($params,['is_special_car'=>0]),'car_id, city, dpt_sec, grid, self_rent, car_type, using_tag');
  27. $table = '(' .$sql_carsdetail. ') cd JOIN (' .$sql_carinfo. ') ci ON ( cd.car_id = ci.car_id ) ';
  28. $field = 'ci.city,
  29. sum(cd.illegal_times) AS times,
  30. '.$year.' AS year,
  31. (SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end) from wz_f_one_car_one_table WHERE year_info = '.$year.' ) AS month';
  32. $data = $this->getPingjiaData($table,$field,$params);
  33. //没有查询地市条件的时候
  34. $dataAll['rows'] = [];
  35. if(empty($params['city_1']))
  36. {
  37. //获取全省数据
  38. $dataAll = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params,1);
  39. $dataAll['rows'][0]['city']='全省';
  40. $dataAll['rows'][0]['hash']= md5('全省');
  41. $dataAll['rows'][0]['parent_hash']= md5('全国');
  42. foreach($data['rows'] as $k=>$u)
  43. {
  44. $data['rows'][$k]['hash'] = md5($u['city']);
  45. $data['rows'][$k]['parent_hash'] = md5('全省');
  46. //获取二级单位数据
  47. $params1 = $params;
  48. $params1['city_name_1']= $u['city'];
  49. $params1['city']= $u['city'];
  50. $sql_carsdetail = $this->getCarsDetailData($params1,'car_id,illegal_times');
  51. $sql_carinfo = $this->getCarinfo(array_merge($params1,['is_special_car'=>0]),'car_id, city, dpt_sec, grid, self_rent, car_type, using_tag');
  52. $table = '(' .$sql_carsdetail. ') cd JOIN (' .$sql_carinfo. ') ci ON ( cd.car_id = ci.car_id ) ';
  53. $tempData = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params1);
  54. if($tempData!='')
  55. {
  56. foreach($tempData['rows'] as $k1=>$u1) {
  57. $tempData['rows'][$k1]['hash'] = '';
  58. $tempData['rows'][$k1]['parent_hash'] = md5($u['city']);
  59. $tempData['rows'][$k1]['city'] = '';
  60. }
  61. $data['rows'] = array_merge($data['rows'],$tempData['rows']);
  62. }
  63. }
  64. //$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  65. }
  66. else
  67. {
  68. foreach($data['rows'] as $k=>$u) {
  69. $data['rows'][$k]['hash'] = md5($u['city']);
  70. $data['rows'][$k]['parent_hash'] = '';
  71. }
  72. }
  73. if(!empty($dataAll['rows']))$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  74. echo_json($data);
  75. }
  76. $this->tableTitle = array(
  77. array('field'=>'city','title'=>'地市','align'=>'center','class'=>'col-md-2'),
  78. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center','class'=>'col-md-2'),
  79. array('field'=>'grid','title'=>'网格','align'=>'center','class'=>'col-md-2'),
  80. array('field'=>'times','title'=>'次数','align'=>'center','class'=>'col-md-2','sortable'=>true),
  81. array('field'=>'year','title'=>'年份','align'=>'center','class'=>'col-md-2','sortable'=>true),
  82. array('field'=>'month','title'=>'截止月份','align'=>'center','class'=>'col-md-2','sortable'=>true),
  83. );
  84. $this->tableConfig = array('table'=>'FStatsIllegalUsingCar','url'=>$this->createRealUrl(['car/legal/cars','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>'hash','checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'tree'=>1,'parentIdField'=>'parent_hash','treeShowField'=>'city','treeColumn'=>0,'expand'=>false,'exportFileName'=>'违规用车统计','height'=>500);
  85. }
  86. if($type==2)
  87. {
  88. $query = FDetaIllegalUsingCar::find()->alias('weigui')->leftJoin('{{%f_car_info}}', 'weigui.car_id = {{%f_car_info}}.car_id');
  89. if (Yii::$app->request->isAjax) {
  90. $data = [];
  91. $params = Yii::$app->request->get();
  92. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  93. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-12');
  94. $where = $this->getWhere($query, $params);
  95. if(!empty($where)){
  96. $sql = join(" and ",$where);
  97. $query->where($sql);
  98. }
  99. $countQuery = clone $query;
  100. if(!empty($where)){
  101. $sql = join(" and ",$where);
  102. $countQuery->where($sql);
  103. }
  104. //分页
  105. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  106. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  107. //排序
  108. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  109. {
  110. $resultList = $query->select('*')->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->asArray()->all();
  111. }
  112. else
  113. {
  114. $resultList = $query->select('*')->orderBy(['weigui.id'=>SORT_DESC])->asArray()->all();
  115. }
  116. foreach($resultList as $result)
  117. {
  118. $data[] = array('card_num'=>$result['card_num'],'city'=>$result['city'],'dpt_sec'=>$result['dpt_sec'],'grid'=>$result['grid'],'car_type'=>$result['car_type'],'using_tag'=>$result['using_tag'],'alarm_area_des'=>$result['alarm_area_des'],'alarm_rule_des'=>$result['alarm_rule_des'],'cross_border_t'=>$result['cross_border_t'],'dest'=>$result['dest'],'reason'=>$result['reason'],'year'=>$result['year'],'month'=>$result['month']);
  119. }
  120. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  121. echo_json($result);
  122. }
  123. $this->tableTitle = array(
  124. array('field'=>'card_num','title'=>'车牌号','align'=>'center'),
  125. array('field'=>'city','title'=>'地市','align'=>'center'),
  126. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  127. array('field'=>'grid','title'=>'网格','align'=>'center'),
  128. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  129. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  130. array('field'=>'alarm_area_des','title'=>'报警区域描述','align'=>'center'),
  131. array('field'=>'alarm_rule_des','title'=>'报警规则描述','align'=>'center'),
  132. array('field'=>'cross_border_t','title'=>'越界时间','align'=>'center','sortable'=>true),
  133. array('field'=>'dest','title'=>'目的地','align'=>'center'),
  134. array('field'=>'reason','title'=>'出车事由','align'=>'center'),
  135. array('field'=>'year','title'=>'年份','align'=>'center'),
  136. array('field'=>'month','title'=>'月份','align'=>'center'),
  137. );
  138. $this->tableConfig = array('table'=>FDetaIllegalUsingCar::shortTableName(),'url'=>$this->createRealUrl(['car/legal/cars','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>FDetaIllegalUsingCar::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'exportFileName'=>'违规用车明细','height'=>500);
  139. }
  140. $koujing = '这里是口径描述';
  141. return $this->render('cars',array('type'=>$type,'koujing'=>$koujing));
  142. }
  143. public function actionRent()
  144. {
  145. $type = Yii::$app->request->get('type',1);
  146. if($type==1)
  147. {
  148. if (Yii::$app->request->isAjax) {
  149. $params = Yii::$app->request->get();
  150. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  151. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-m');
  152. //日期计算
  153. $startdateInfo = explode('-',$params['start_date']);
  154. $year = $startdateInfo[0];
  155. $startmonth = intval($startdateInfo[1]);
  156. $enddateInfo = explode('-',$params['end_date']);
  157. $endmonth = intval($enddateInfo[1]);
  158. $sql_oncaronetable = $this->getOneCarOneTable($params,'car_id, repair_costs, insurance_costs, year_check_costs');
  159. $sql_carinfo = $this->getCarinfo(array_merge($params,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  160. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  161. $field = 'ci.city,
  162. cast(sum(ocot.repair_costs) as decimal(10,2)) AS repair_costs,
  163. cast(sum(ocot.insurance_costs) as decimal(10,2)) AS insurance_costs,
  164. cast(sum(ocot.year_check_costs) as decimal(10,2)) AS year_check_costs,
  165. '.$year.' AS year,
  166. (SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end) from wz_f_one_car_one_table WHERE year_info = '.$year.') AS month';
  167. $data = $this->getPingjiaData($table,$field,$params);
  168. //图标数据
  169. unset($params['city'],$params['dpt_sec'],$params['grid']);
  170. $sql_carinfo = $this->getCarinfo(['is_special_car'=>0, 'self_rent'=>'租赁车辆'],'car_id',false);
  171. $sql = 'SELECT
  172. cast(sum(ocot.repair_costs) as decimal(10,2)) AS repair_costs ,
  173. cast(sum(ocot.insurance_costs) as decimal(10,2)) AS insurance_costs ,
  174. cast(sum(ocot.year_check_costs) as decimal(10,2)) AS year_check_costs
  175. FROM (' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  176. $data['count'] = Yii::$app->db->createCommand($sql)->queryOne();
  177. //没有查询地市条件的时候
  178. $dataAll['rows'] = [];
  179. if(empty($params['city_1']))
  180. {
  181. //获取全省数据
  182. $dataAll = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params,1);
  183. $dataAll['rows'][0]['city']='全省';
  184. $dataAll['rows'][0]['hash']= md5('全省');
  185. $dataAll['rows'][0]['parent_hash']=md5('全国');
  186. foreach($data['rows'] as $k=>$u)
  187. {
  188. $data['rows'][$k]['hash'] = md5($u['city']);
  189. $data['rows'][$k]['parent_hash'] = md5('全省');
  190. //获取二级单位数据
  191. $params1 = $params;
  192. $params1['city_name_1']= $u['city'];
  193. $params1['city']= $u['city'];
  194. $sql_oncaronetable = $this->getOneCarOneTable($params1,'car_id, repair_costs, insurance_costs, year_check_costs');
  195. $sql_carinfo = $this->getCarinfo(array_merge($params1,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  196. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  197. $tempData = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params1);
  198. if($tempData['rows']!='')
  199. {
  200. foreach($tempData['rows'] as $k1=>$u1) {
  201. $tempData['rows'][$k1]['hash'] = '';
  202. $tempData['rows'][$k1]['parent_hash'] = md5($u['city']);
  203. $tempData['rows'][$k1]['city'] = '';
  204. }
  205. $data['rows'] = array_merge($data['rows'],$tempData['rows']);
  206. }
  207. }
  208. //$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  209. }
  210. else
  211. {
  212. foreach($data['rows'] as $k=>$u) {
  213. $data['rows'][$k]['hash'] = md5($u['city']);
  214. $data['rows'][$k]['parent_hash'] = '';
  215. }
  216. }
  217. if(!empty($dataAll['rows']))$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  218. echo_json($data);
  219. }
  220. $this->tableTitle = array(
  221. array('field'=>'city','title'=>'地市','align'=>'center'),
  222. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  223. array('field'=>'grid','title'=>'网格','align'=>'center'),
  224. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  225. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  226. array('field'=>'repair_costs','title'=>'维修费','align'=>'center','sortable'=>true,),
  227. array('field'=>'year','title'=>'年份','align'=>'center','sortable'=>true),
  228. array('field'=>'month','title'=>'截止月份','align'=>'center','sortable'=>true),
  229. );
  230. $this->tableConfig = array('table'=>'FRentCarCost','url'=>$this->createRealUrl(['car/legal/rent','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>'hash','checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'tree'=>1,'parentIdField'=>'parent_hash','treeShowField'=>'city','treeColumn'=>0,'expand'=>false,'exportFileName'=>'租赁车辆维修费统计','height'=>500);
  231. }
  232. if($type==2)
  233. {
  234. $query = FOneCarOneTable::find()->alias('onecar')->leftJoin('{{%f_car_info}}', 'onecar.car_id = {{%f_car_info}}.car_id');
  235. if (Yii::$app->request->isAjax) {
  236. $data = [];
  237. $params = Yii::$app->request->get();
  238. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  239. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-12');
  240. $where = $this->getWhere($query, $params);
  241. if(!empty($where)){
  242. $sql = join(" and ",$where);
  243. $query->where($sql);
  244. }
  245. $countQuery = clone $query;
  246. if(!empty($where)){
  247. $sql = join(" and ",$where);
  248. $countQuery->where($sql);
  249. }
  250. //分页
  251. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  252. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  253. //排序
  254. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  255. {
  256. $resultList = $query->select('*')->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->asArray()->all();
  257. }
  258. else
  259. {
  260. $resultList = $query->select('*')->orderBy(['onecar.id'=>SORT_DESC])->asArray()->all();
  261. }
  262. foreach($resultList as $result)
  263. {
  264. $data[] = array('card_num'=>$result['card_num'],'city'=>$result['city'],'dpt_sec'=>$result['dpt_sec'],'grid'=>$result['grid'],'car_type'=>$result['car_type'],'using_tag'=>$result['using_tag'],'oil_costs'=>round($result['oil_costs'],2),'insurance_costs'=>round($result['insurance_costs'],2),'repair_costs'=>round($result['repair_costs'],2),'road_bridge_costs'=>round($result['road_bridge_costs'],2),'year'=>$result['year_info'],'month'=>$result['month_info']);
  265. }
  266. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  267. echo_json($result);
  268. }
  269. $this->tableTitle = array(
  270. array('field'=>'card_num','title'=>'车牌号','align'=>'center'),
  271. array('field'=>'city','title'=>'地市','align'=>'center'),
  272. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  273. array('field'=>'grid','title'=>'网格','align'=>'center'),
  274. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  275. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  276. array('field'=>'repair_costs','title'=>'维修费用','align'=>'center','sortable'=>true),
  277. array('field'=>'year','title'=>'年份','align'=>'center'),
  278. array('field'=>'month','title'=>'月份','align'=>'center'),
  279. );
  280. $this->tableConfig = array('table'=>FOneCarOneTable::shortTableName(),'url'=>$this->createRealUrl(['car/legal/rent','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>FOneCarOneTable::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'exportFileName'=>'租赁车辆费用明细','height'=>500);
  281. }
  282. if($type==3)
  283. {
  284. if (Yii::$app->request->isAjax) {
  285. $params = Yii::$app->request->get();
  286. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  287. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-m');
  288. //日期计算
  289. $startdateInfo = explode('-',$params['start_date']);
  290. $year = $startdateInfo[0];
  291. $startmonth = intval($startdateInfo[1]);
  292. $enddateInfo = explode('-',$params['end_date']);
  293. $endmonth = intval($enddateInfo[1]);
  294. $sql_oncaronetable = $this->getOneCarOneTable($params,'car_id, repair_costs, insurance_costs, year_check_costs');
  295. $sql_carinfo = $this->getCarinfo(array_merge($params,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  296. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  297. $field = 'ci.city,
  298. cast(sum(ocot.repair_costs) as decimal(10,2)) AS repair_costs,
  299. cast(sum(ocot.insurance_costs) as decimal(10,2)) AS insurance_costs,
  300. cast(sum(ocot.year_check_costs) as decimal(10,2)) AS year_check_costs,
  301. '.$year.' AS year,
  302. (SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end) from wz_f_one_car_one_table WHERE year_info = '.$year.') AS month';
  303. $data = $this->getPingjiaData($table,$field,$params);
  304. /* //图标数据
  305. unset($params['city'],$params['dpt_sec'],$params['grid']);
  306. $sql_carinfo = $this->getCarinfo(['is_special_car'=>0, 'self_rent'=>'租赁车辆'],'car_id',false);
  307. $sql = 'SELECT
  308. round(sum(ocot.repair_costs),2) AS repair_costs ,
  309. round(sum(ocot.insurance_costs),2) AS insurance_costs ,
  310. round(sum(ocot.year_check_costs),2) AS year_check_costs
  311. FROM (' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  312. $data['count'] = Yii::$app->db->createCommand($sql)->queryOne();*/
  313. //没有查询地市条件的时候
  314. $dataAll['rows'] = [];
  315. if(empty($params['city_1']))
  316. {
  317. //获取全省数据
  318. $dataAll = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params,1);
  319. $dataAll['rows'][0]['city']='全省';
  320. $dataAll['rows'][0]['hash']= md5('全省');
  321. $dataAll['rows'][0]['parent_hash']=md5('全国');
  322. foreach($data['rows'] as $k=>$u)
  323. {
  324. $data['rows'][$k]['hash'] = md5($u['city']);
  325. $data['rows'][$k]['parent_hash'] = md5('全省');
  326. //获取二级单位数据
  327. $params1 = $params;
  328. $params1['city_name_1']= $u['city'];
  329. $params1['city']= $u['city'];
  330. $sql_oncaronetable = $this->getOneCarOneTable($params1,'car_id, repair_costs, insurance_costs, year_check_costs');
  331. $sql_carinfo = $this->getCarinfo(array_merge($params1,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  332. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  333. $tempData = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params1);
  334. if($tempData['rows']!='')
  335. {
  336. foreach($tempData['rows'] as $k1=>$u1) {
  337. $tempData['rows'][$k1]['hash'] = '';
  338. $tempData['rows'][$k1]['parent_hash'] = md5($u['city']);
  339. $tempData['rows'][$k1]['city'] = '';
  340. }
  341. $data['rows'] = array_merge($data['rows'],$tempData['rows']);
  342. }
  343. }
  344. //$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  345. }
  346. else
  347. {
  348. foreach($data['rows'] as $k=>$u) {
  349. $data['rows'][$k]['hash'] = md5($u['city']);
  350. $data['rows'][$k]['parent_hash'] = '';
  351. }
  352. }
  353. if(!empty($dataAll['rows']))$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  354. echo_json($data);
  355. }
  356. $this->tableTitle = array(
  357. array('field'=>'city','title'=>'地市','align'=>'center'),
  358. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  359. array('field'=>'grid','title'=>'网格','align'=>'center'),
  360. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  361. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  362. array('field'=>'insurance_costs','title'=>'保险费','align'=>'center','sortable'=>true,),
  363. array('field'=>'year','title'=>'年份','align'=>'center','sortable'=>true),
  364. array('field'=>'month','title'=>'截止月份','align'=>'center','sortable'=>true),
  365. );
  366. $this->tableConfig = array('table'=>'FRentCarCost','url'=>$this->createRealUrl(['car/legal/rent','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>'hash','checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'tree'=>1,'parentIdField'=>'parent_hash','treeShowField'=>'city','treeColumn'=>0,'expand'=>false,'exportFileName'=>'租赁车辆保险费统计','height'=>500);
  367. }
  368. if($type==4)
  369. {
  370. if (Yii::$app->request->isAjax) {
  371. $params = Yii::$app->request->get();
  372. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  373. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-m');
  374. //日期计算
  375. $startdateInfo = explode('-',$params['start_date']);
  376. $year = $startdateInfo[0];
  377. $startmonth = intval($startdateInfo[1]);
  378. $enddateInfo = explode('-',$params['end_date']);
  379. $endmonth = intval($enddateInfo[1]);
  380. $sql_oncaronetable = $this->getOneCarOneTable($params,'car_id, repair_costs, insurance_costs, year_check_costs');
  381. $sql_carinfo = $this->getCarinfo(array_merge($params,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  382. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  383. $field = 'ci.city,
  384. cast(sum(ocot.repair_costs) as decimal(10,2)) AS repair_costs,
  385. cast(sum(ocot.insurance_costs) as decimal(10,2)) AS insurance_costs,
  386. cast(sum(ocot.year_check_costs) as decimal(10,2)) AS year_check_costs,
  387. '.$year.' AS year,
  388. (SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end) from wz_f_one_car_one_table WHERE year_info = '.$year.') AS month';
  389. $data = $this->getPingjiaData($table,$field,$params);
  390. //图标数据
  391. unset($params['city'],$params['dpt_sec'],$params['grid']);
  392. $sql_carinfo = $this->getCarinfo(['is_special_car'=>0, 'self_rent'=>'租赁车辆'],'car_id',false);
  393. $sql = 'SELECT
  394. cast(sum(ocot.repair_costs) as decimal(10,2)) AS repair_costs,
  395. cast(sum(ocot.insurance_costs) as decimal(10,2)) AS insurance_costs,
  396. cast(sum(ocot.year_check_costs) as decimal(10,2)) AS year_check_costs
  397. FROM (' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  398. $data['count'] = Yii::$app->db->createCommand($sql)->queryOne();
  399. //没有查询地市条件的时候
  400. $dataAll['rows'] = [];
  401. if(empty($params['city_1']))
  402. {
  403. //获取全省数据
  404. $dataAll = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params,1);
  405. $dataAll['rows'][0]['city']='全省';
  406. $dataAll['rows'][0]['hash']= md5('全省');
  407. $dataAll['rows'][0]['parent_hash']=md5('全国');
  408. foreach($data['rows'] as $k=>$u)
  409. {
  410. $data['rows'][$k]['hash'] = md5($u['city']);
  411. $data['rows'][$k]['parent_hash'] = md5('全省');
  412. //获取二级单位数据
  413. $params1 = $params;
  414. $params1['city_name_1']= $u['city'];
  415. $params1['city']= $u['city'];
  416. $sql_oncaronetable = $this->getOneCarOneTable($params1,'car_id, repair_costs, insurance_costs, year_check_costs');
  417. $sql_carinfo = $this->getCarinfo(array_merge($params1,['is_special_car'=>0, 'self_rent'=>'租赁车辆']),'car_id, card_num, city, dpt_sec, grid, self_rent, car_type, using_tag');
  418. $table = '(' .$sql_oncaronetable. ') ocot JOIN (' .$sql_carinfo. ') ci ON ( ocot.car_id = ci.car_id ) ';
  419. $tempData = $this->getPingjiaData($table,str_replace('ci.city,','',$field),$params1);
  420. if($tempData['rows']!='')
  421. {
  422. foreach($tempData['rows'] as $k1=>$u1) {
  423. $tempData['rows'][$k1]['hash'] = '';
  424. $tempData['rows'][$k1]['parent_hash'] = md5($u['city']);
  425. $tempData['rows'][$k1]['city'] = '';
  426. }
  427. $data['rows'] = array_merge($data['rows'],$tempData['rows']);
  428. }
  429. }
  430. //$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  431. }
  432. else
  433. {
  434. foreach($data['rows'] as $k=>$u) {
  435. $data['rows'][$k]['hash'] = md5($u['city']);
  436. $data['rows'][$k]['parent_hash'] = '';
  437. }
  438. }
  439. if(!empty($dataAll['rows']))$data['rows'] = array_merge($dataAll['rows'],$data['rows']);
  440. echo_json($data);
  441. }
  442. $this->tableTitle = array(
  443. array('field'=>'city','title'=>'地市','align'=>'center'),
  444. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  445. array('field'=>'grid','title'=>'网格','align'=>'center'),
  446. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  447. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  448. array('field'=>'year_check_costs','title'=>'年检费','align'=>'center','sortable'=>true,),
  449. array('field'=>'year','title'=>'年份','align'=>'center','sortable'=>true),
  450. array('field'=>'month','title'=>'截止月份','align'=>'center','sortable'=>true),
  451. );
  452. $this->tableConfig = array('table'=>'FRentCarCost','url'=>$this->createRealUrl(['car/legal/rent','type'=>$type]),'setFieldUrl'=>$this->createRealUrl(['car/legal/setfield']),'idField'=>'hash','checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'tree'=>1,'parentIdField'=>'parent_hash','treeShowField'=>'city','treeColumn'=>0,'expand'=>false,'exportFileName'=>'租赁车辆年检费统计','height'=>500);
  453. }
  454. $koujing = '这里是口径描述';
  455. return $this->render('rent',array('type'=>$type,'koujing'=>$koujing));
  456. }
  457. }