DefaultController.php 55 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949
  1. <?php
  2. namespace app\modules\car\controllers;
  3. use app\common\controllers\BController;
  4. use app\models\Linkmenu;
  5. use app\modules\car\models\FCarCondition;
  6. use app\modules\car\models\FCarScrap;
  7. use app\modules\car\models\FOneCarOneTable;
  8. use app\modules\car\models\FCarInfo;
  9. use Yii;
  10. class DefaultController extends BController
  11. {
  12. public $layout = 'main';
  13. public function actionIndex()
  14. {
  15. if (Yii::$app->request->isAjax) {
  16. $date = Yii::$app->request->get('date');
  17. $city = Yii::$app->request->get('city');
  18. $year = get_date(TIMESTAMP,'Y');
  19. $lastyear = $year-1;
  20. //获取城市
  21. if($city)
  22. {
  23. $cityInfo = Linkmenu::getMenuNameRs($city);
  24. $cityName = $cityInfo[0];
  25. }
  26. if(!empty($date))
  27. {
  28. $dateInfo = explode('-',$date);
  29. $year = $dateInfo[0];
  30. $month = intval($dateInfo[1]);
  31. $lastyear = $year-1;
  32. //车辆总数
  33. if(empty($cityName))
  34. {
  35. $sql = "select count(*) from(SELECT a.*,b.city from (select * from wz_f_one_car_one_table where year_info=$year and month_info=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  36. }
  37. else
  38. {
  39. $sql = "select count(*) from(SELECT a.*,b.city from (select * from wz_f_one_car_one_table where year_info=$year and month_info=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c WHERE city='".$cityName."'";
  40. }
  41. $allCarNum = Yii::$app->db->createCommand($sql)->queryScalar();
  42. //租赁车辆
  43. if(empty($cityName))
  44. {
  45. $sql = "select count(*) from(SELECT a.*,b.self_rent,b.city from (select * from wz_f_one_car_one_table where year_info=$year and month_info=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c WHERE self_rent='租赁车辆'";
  46. }
  47. else
  48. {
  49. $sql = "select count(*) from(SELECT a.*,b.self_rent,b.city from (select * from wz_f_one_car_one_table where year_info=$year and month_info=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c WHERE self_rent='租赁车辆' and city='".$cityName."'";
  50. }
  51. $rentCarNum = Yii::$app->db->createCommand($sql)->queryScalar();
  52. //低效车辆
  53. if(empty($cityName))
  54. {
  55. $sql = "select sum(num) from wz_f_fluc_inefficient_car WHERE year=$year and month=$month";
  56. }
  57. else
  58. {
  59. $sql = "select sum(num) from wz_f_fluc_inefficient_car WHERE year=$year and month=$month and city='".$cityName."'";
  60. }
  61. $effCarNum = Yii::$app->db->createCommand($sql)->queryScalar();
  62. //违规车辆
  63. if(empty($cityName))
  64. {
  65. $sql = "select sum(num) from wz_f_fluc_illegal_using_car WHERE year=$year and month=$month";
  66. }
  67. else
  68. {
  69. $sql = "select sum(num) from wz_f_fluc_illegal_using_car WHERE year=$year and month=$month and city='".$cityName."'";
  70. }
  71. $legalCarNum = Yii::$app->db->createCommand($sql)->queryScalar();
  72. //燃油费
  73. if(empty($cityName))
  74. {
  75. $sql = "select sum(oil_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  76. }
  77. else
  78. {
  79. $sql = "select sum(oil_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  80. }
  81. $oilCost = Yii::$app->db->createCommand($sql)->queryScalar();
  82. if(empty($cityName))
  83. {
  84. $sql = "select sum(oil_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c";
  85. }
  86. else
  87. {
  88. $sql = "select sum(oil_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  89. }
  90. $oilMonthCost = Yii::$app->db->createCommand($sql)->queryScalar();
  91. //运行费
  92. if(empty($cityName))
  93. {
  94. $sql = "select sum(oil_costs+repair_costs+insurance_costs+road_bridge_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  95. }
  96. else
  97. {
  98. $sql = "select sum(oil_costs+repair_costs+insurance_costs+road_bridge_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  99. }
  100. $totalCost = Yii::$app->db->createCommand($sql)->queryScalar();
  101. if(empty($cityName))
  102. {
  103. $sql = "select sum(oil_costs+repair_costs+insurance_costs+road_bridge_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  104. }
  105. else
  106. {
  107. $sql = "select sum(oil_costs+repair_costs+insurance_costs+road_bridge_costs) from(select a.*,b.city from (select * from wz_f_one_car_cost where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  108. }
  109. $totalMonthCost = Yii::$app->db->createCommand($sql)->queryScalar();
  110. //车辆基本情况
  111. $sql = "SELECT ci.city as city,ci.car_type as car_type ,count(concat(ci.city,ci.car_type)) as car_num from (SELECT car_id ,year_info,month_info from wz_f_one_car_one_table WHERE year_info=$year and month_info=$month) ocot JOIN wz_f_car_info ci on (ocot.car_id=ci.car_id) WHERE ci.car_type in ('皮卡车','微型面包车','越野车','轿车') GROUP BY ci.city,ci.car_type union SELECT ci.city,'其他',count(ci.city) from (SELECT car_id ,year_info,month_info from wz_f_one_car_one_table WHERE year_info=$year and month_info=$month) ocot JOIN wz_f_car_info ci on (ocot.car_id=ci.car_id) where ci.car_type not in ('皮卡车','微型面包车','越野车','轿车') GROUP BY ci.city ORDER BY city";
  112. $resultList = Yii::$app->db->createCommand($sql)->queryAll();
  113. foreach($this->carTypes as $k=>$carType){
  114. $series1[$k]['name'] = $carType;
  115. $tempDatas = [];
  116. foreach($this->cityOptions as $city)
  117. {
  118. foreach($resultList as $result)
  119. {
  120. if($result['city']==$city&&$result['car_type']==$carType)
  121. {
  122. $tempDatas[] = intval($result['car_num']);
  123. continue;
  124. }
  125. }
  126. }
  127. $series1[$k]['data'] = $tempDatas;
  128. }
  129. //详情表格1
  130. if(!empty($resultList))
  131. {
  132. foreach($this->carTypes as $carType){
  133. foreach($resultList as $result)
  134. {
  135. if($result['car_type']==$carType)
  136. {
  137. $table1ResultTotal[$carType] += intval($result['car_num']);
  138. }
  139. }
  140. }
  141. }
  142. else
  143. {
  144. foreach($this->carTypes as $carType){
  145. $table1ResultTotal[$carType] += 0;
  146. }
  147. }
  148. if(is_array($resultList))foreach($resultList as $result)
  149. {
  150. $table1Result[$result['city'].'_'.$result['car_type']] = intval($result['car_num']);
  151. }
  152. $table1Html = '';
  153. $table1Html .='<table class="table dt-responsive nowrap no-footer dtr-inline table-bordered table-hover">';
  154. $table1Html .= '<thead><tr><th>单位</th>';
  155. foreach($this->carTypes as $k=>$carType){
  156. $table1Html.="<th>".$carType."</th>";
  157. }
  158. $table1Html .="<th>总计</th></tr></thead>";
  159. $table1Html .= "<tr>";
  160. $table1Html .= "<td>全省</td>";
  161. $totalNum = 0;
  162. if(is_array($table1ResultTotal))foreach($table1ResultTotal as $k=>$v)
  163. {
  164. $table1Html .= "<td>".$v."</td>";
  165. $totalNum += $v;
  166. }
  167. $table1Html.="<td>".$totalNum."</td></tr>";
  168. foreach($this->cityOptions as $city)
  169. {
  170. $table1Html .= "<tr>";
  171. $table1Html .= "<td>".$city."</td>";
  172. $totalNum = 0;
  173. foreach($this->carTypes as $carType){
  174. if(isset($table1Result[$city.'_'.$carType]))
  175. {
  176. $table1Html.="<td>".$table1Result[$city.'_'.$carType]."</td>";
  177. }
  178. else
  179. {
  180. $table1Html.="<td>0</td>";
  181. }
  182. $totalNum += $table1Result[$city.'_'.$carType];
  183. }
  184. $table1Html.="<td>".$totalNum."</td></tr>";
  185. }
  186. $table1Html .="</table>";
  187. //北十省份
  188. $provinceResult = Yii::$app->db->createCommand("select distinct(province) from wz_f_ten_northern_provinces_stat")->queryAll();
  189. if(is_array($provinceResult))foreach($provinceResult as $uprovince)
  190. {
  191. $provinceOptions[] = $uprovince['province'];
  192. }
  193. //车辆费用
  194. foreach($provinceOptions as $province)
  195. {
  196. //本年累计
  197. $sql = "select accumulated_expenditure_this_year from wz_f_ten_northern_provinces_stat where year=$year and month=$month and province='".$province."'";
  198. $fee1[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  199. $fee1Province[$province] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  200. //去年累计
  201. $sql = "select accumulated_expenditure_last_year from wz_f_ten_northern_provinces_stat where year=$lastyear and month=$month and province='".$province."'";
  202. $fee2[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  203. $fee2Province[$province] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  204. //本年占收比
  205. $sql = "select avg(ratio_this_year) from wz_f_ten_northern_provinces_stat where year=$year and month=$month and province='".$province."'";
  206. $fee3[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  207. $fee3Province[$province] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  208. //去年占收比
  209. $sql = "select avg(ratio_last_year) from wz_f_ten_northern_provinces_stat where year=$lastyear and month=$month and province='".$province."'";
  210. $fee4[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  211. $fee4Province[$province] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  212. }
  213. //表格2
  214. $table2Html = '';
  215. $table2Html .='<table class="table dt-responsive nowrap no-footer dtr-inline table-bordered table-hover">';
  216. $table2Html .= '<thead><tr><th>省份</th><th>本年累计</th><th>去年累计</th><th>本年占收比</th><th>去年占收比</th></tr></thead>';
  217. foreach($provinceOptions as $province)
  218. {
  219. $table2Html .= "<tr><td>".$province."</td>";
  220. $table2Html .= "<td>".$fee1Province[$province]."</td>";
  221. $table2Html .= "<td>".$fee2Province[$province]."</td>";
  222. $table2Html .= "<td>".$fee3Province[$province]."</td>";
  223. $table2Html .= "<td>".$fee4Province[$province]."</td>";
  224. $table2Html .= "</tr>";
  225. }
  226. $table2Html .= "</table>";
  227. //车辆里程波动
  228. for($i=1;$i<=12;$i++)
  229. {
  230. //本年里程
  231. if(empty($cityName))
  232. {
  233. $sql = "select sum(mileage) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  234. }
  235. else
  236. {
  237. $sql = "select sum(mileage) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  238. }
  239. $miles1[] = round(Yii::$app->db->createCommand($sql)->queryScalar()/10000,2);
  240. //去年里程
  241. if(empty($cityName))
  242. {
  243. $sql = "select sum(mileage) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c ";
  244. }
  245. else
  246. {
  247. $sql = "select sum(mileage) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  248. }
  249. $miles2[] = round(Yii::$app->db->createCommand($sql)->queryScalar()/10000,2);
  250. }
  251. //表格三
  252. $sql = "select sum(mileage) as mileage,city from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !='' group by city";
  253. $table3ResultYearList = Yii::$app->db->createCommand($sql)->queryAll();
  254. $sql = "select sum(mileage) as mileage from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !=''";
  255. $table3ResultYearListTotal = Yii::$app->db->createCommand($sql)->queryAll();
  256. $table3ResultYearListTotal[0]['city'] = '全省';
  257. $table3ResultYearList = array_merge($table3ResultYearListTotal,$table3ResultYearList);
  258. foreach($table3ResultYearList as $table3ResultYearUnit)
  259. {
  260. $table3ResultYearList[$table3ResultYearUnit['city']] = $table3ResultYearUnit;
  261. }
  262. $sql = "select sum(mileage) as mileage,city from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !='' group by city";
  263. $table3ResultLastYearList = Yii::$app->db->createCommand($sql)->queryAll();
  264. $sql = "select sum(mileage) as mileage from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !=''";
  265. $table3ResultLastYearListTotal = Yii::$app->db->createCommand($sql)->queryAll();
  266. $table3ResultLastYearListTotal[0]['city'] = '全省';
  267. $table3ResultLastYearList = array_merge($table3ResultLastYearListTotal,$table3ResultLastYearList);
  268. foreach($table3ResultLastYearList as $table3ResultLastYearUnit)
  269. {
  270. $table3ResultLastYearList[$table3ResultLastYearUnit['city']] = $table3ResultLastYearUnit;
  271. }
  272. $table3ResultList = [];
  273. $table3ResultList['全省'] = array(
  274. 0=>'全省',
  275. 1=> $table3ResultYearListTotal[0]['mileage'],
  276. 2=> $table3ResultLastYearListTotal[0]['mileage'],
  277. 3=> $table3ResultYearListTotal[0]['mileage']-$table3ResultLastYearListTotal[0]['mileage'],
  278. 4=> $table3ResultLastYearListTotal[0]['mileage']?round(((($table3ResultYearListTotal[0]['mileage']-$table3ResultLastYearListTotal[0]['mileage'])/$table3ResultLastYearListTotal[0]['mileage'])*100),2).'%':'--'
  279. );
  280. foreach($this->cityOptions as $city)
  281. {
  282. $table3ResultList[$city] = array(
  283. 0=>$city,
  284. 1=> $table3ResultYearList[$city]['mileage'],
  285. 2=> $table3ResultLastYearList[$city]['mileage'],
  286. 3=> $table3ResultYearList[$city]['mileage']-$table3ResultLastYearList[$city]['mileage'],
  287. 4=> $table3ResultLastYearList[$city]['mileage']>0? round(((($table3ResultYearList[$city]['mileage']-$table3ResultLastYearList[$city]['mileage'])/$table3ResultLastYearList[$city]['mileage'])*100),2).'%':'--'
  288. );
  289. }
  290. $table3Html = '';
  291. $table3Html .='<table class="table dt-responsive nowrap no-footer dtr-inline table-bordered table-hover">';
  292. $table3Html .= '<thead><tr><th>地市</th><th>累计</th><th>去年同期</th><th>同比变动</th><th>同比增幅</th></tr></thead>';
  293. if(is_array($table3ResultList))foreach($table3ResultList as $table3ResultUnit)
  294. {
  295. $table3Html .= '<tr><td>'.$table3ResultUnit[0].'</td><td>'.$table3ResultUnit[1].'</td><td>'.$table3ResultUnit[2].'</td><td>'.$table3ResultUnit[3].'</td><td>'.$table3ResultUnit[4].'</td></tr>';
  296. }
  297. $table3Html .="</table>";
  298. for($i=1;$i<=12;$i++)
  299. {
  300. //本年出勤率
  301. if(empty($cityName))
  302. {
  303. $sql = "select avg(attend_rate) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c";
  304. }
  305. else
  306. {
  307. $sql = "select avg(attend_rate) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  308. }
  309. $attend1[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  310. //去年出勤率
  311. if(empty($cityName))
  312. {
  313. $sql = "select avg(attend_rate) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c";
  314. }
  315. else
  316. {
  317. $sql = "select avg(attend_rate) from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$i) a left join wz_f_car_info b on a.car_id = b.car_id) c where city='".$cityName."'";
  318. }
  319. $attend2[] = round(Yii::$app->db->createCommand($sql)->queryScalar(),2);
  320. }
  321. //表格四
  322. $sql = "select avg(attend_rate) as attend_rate,city from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !='' group by city";
  323. $table4ResultYearList = Yii::$app->db->createCommand($sql)->queryAll();
  324. $sql = "select avg(attend_rate) as attend_rate from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$year and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !=''";
  325. $table4ResultYearListTotal = Yii::$app->db->createCommand($sql)->queryAll();
  326. $table4ResultYearListTotal[0]['city'] = '全省';
  327. $table4ResultYearList = array_merge($table4ResultYearListTotal,$table4ResultYearList);
  328. foreach($table4ResultYearList as $table4ResultYearUnit)
  329. {
  330. $table4ResultYearList[$table4ResultYearUnit['city']] = $table4ResultYearUnit;
  331. }
  332. $sql = "select avg(attend_rate) as attend_rate,city from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !='' group by city";
  333. $table4ResultLastYearList = Yii::$app->db->createCommand($sql)->queryAll();
  334. $sql = "select avg(attend_rate) as attend_rate from (select a.*,b.city from (select * from wz_f_mileage_attend where year=$lastyear and month=$month) a left join wz_f_car_info b on a.car_id = b.car_id) c where city !=''";
  335. $table4ResultLastYearListTotal = Yii::$app->db->createCommand($sql)->queryAll();
  336. $table4ResultLastYearListTotal[0]['city'] = '全省';
  337. $table4ResultLastYearList = array_merge($table4ResultLastYearListTotal,$table4ResultLastYearList);
  338. foreach($table4ResultLastYearList as $table4ResultLastYearUnit)
  339. {
  340. $table4ResultLastYearList[$table4ResultLastYearUnit['city']] = $table4ResultLastYearUnit;
  341. }
  342. $table4ResultList = [];
  343. $table4ResultList['全省'] = array(
  344. 0=>'全省',
  345. 1=> $table4ResultYearListTotal[0]['attend_rate'],
  346. 2=> $table4ResultLastYearListTotal[0]['attend_rate'],
  347. 3=> $table4ResultYearListTotal[0]['attend_rate']-$table4ResultLastYearListTotal[0]['attend_rate'],
  348. 4=> $table4ResultLastYearListTotal[0]['attend_rate']?round(((($table4ResultYearListTotal[0]['attend_rate']-$table4ResultLastYearListTotal[0]['attend_rate'])/$table4ResultLastYearListTotal[0]['attend_rate'])*100),2).'%':'--'
  349. );
  350. foreach($this->cityOptions as $city)
  351. {
  352. $table4ResultList[$city] = array(
  353. 0=>$city,
  354. 1=> $table4ResultYearList[$city]['attend_rate'],
  355. 2=> $table4ResultLastYearList[$city]['attend_rate'],
  356. 3=> $table4ResultYearList[$city]['attend_rate']-$table4ResultLastYearList[$city]['attend_rate'],
  357. 4=> $table4ResultLastYearList[$city]['attend_rate']>0? round(((($table4ResultYearList[$city]['attend_rate']-$table4ResultLastYearList[$city]['attend_rate'])/$table4ResultLastYearList[$city]['attend_rate'])*100),2).'%':'--'
  358. );
  359. }
  360. $table4Html = '';
  361. $table4Html .='<table class="table dt-responsive nowrap no-footer dtr-inline table-bordered table-hover">';
  362. $table4Html .= '<thead><tr><th>地市</th><th>累计</th><th>去年同期</th><th>同比变动</th><th>同比增幅</th></tr></thead>';
  363. if(is_array($table4ResultList))foreach($table4ResultList as $table4ResultUnit)
  364. {
  365. $table4Html .= '<tr><td>'.$table4ResultUnit[0].'</td><td>'.round($table4ResultUnit[1],2).'</td><td>'.round($table4ResultUnit[2],2).'</td><td>'.round($table4ResultUnit[3],2).'</td><td>'.$table4ResultUnit[4].'</td></tr>';
  366. }
  367. $table4Html .="</table>";
  368. echo_json(array(
  369. 'error'=>'0',
  370. 'msg'=>'获取成功',
  371. 'allCarNum'=>$allCarNum>0?$allCarNum:'--',
  372. 'rentCarNum'=>$rentCarNum>0?$rentCarNum:'--',
  373. 'effCarNum'=>$effCarNum>0?$effCarNum:'--',
  374. 'legalCarNum'=>$legalCarNum>0?$legalCarNum:'--',
  375. 'oilCost'=>$oilCost>0?numconvert2($oilCost):'--',
  376. 'oilMonthCost'=>$oilMonthCost>0?numconvert2($oilMonthCost):'--',
  377. 'totalCost'=>$totalCost>0?numconvert2($totalCost):'--',
  378. 'totalMonthCost'=>$totalMonthCost>0?numconvert2($totalMonthCost):'--',
  379. 'series1'=>$series1,
  380. 'fee1'=>$fee1,
  381. 'fee2'=>$fee2,
  382. 'fee3'=>$fee3,
  383. 'fee4'=>$fee4,
  384. 'miles1'=>$miles1,
  385. 'miles2'=>$miles2,
  386. 'attend1'=>$attend1,
  387. 'attend2'=>$attend2,
  388. 'currentYear'=>$year,
  389. 'lastYear'=>$lastyear,
  390. 'carTypes'=>$this->carTypes,
  391. 'cityOptions'=>$this->cityOptions,
  392. 'colors'=>$this->colors,
  393. 'provinceOptions'=>$provinceOptions,
  394. 'table1Html'=>$table1Html,
  395. 'table2Html'=>$table2Html,
  396. 'table3Html'=>$table3Html,
  397. 'table4Html'=>$table4Html
  398. ));
  399. }
  400. else
  401. {
  402. $msgdata = ['error' => 1,'msg' => '系统错误(缺少查询参数)','data'=>array(),'code'=>'200'];
  403. }
  404. echo_json($msgdata);
  405. }
  406. return $this->render('index');
  407. }
  408. //车辆专题报告
  409. public function actionReport()
  410. {
  411. $cacheFlag = 'report';
  412. $cacheData = Yii::$app->cache->get($cacheFlag);
  413. $cacheData = json_decode($cacheData,true);
  414. if($_GET['docache']==1) $cacheData = null;
  415. if(empty($cacheData)) {
  416. //车辆费用
  417. $year = get_date(TIMESTAMP, 'Y');
  418. $lastyear = $year - 1;
  419. $startmonth = 1;
  420. $endmonth = get_date(TIMESTAMP, 'm')-1;
  421. $sql = "select sum(accumulated_expenditure_this_year) from wz_f_ten_northern_provinces_stat
  422. where year=$year and (month>=$startmonth and month<=$endmonth) and province='" . $this->province . "'";
  423. $totalcost = Yii::$app->db->createCommand($sql)->queryScalar();
  424. $sql = "select sum(accumulated_income_this_year) from wz_f_ten_northern_provinces_stat
  425. where year=$year and (month>=$startmonth and month<=$endmonth) and province='" . $this->province . "'";
  426. $totalincome = Yii::$app->db->createCommand($sql)->queryScalar();
  427. $yearRatio = (round($totalcost / ($totalincome * 10000), 2) * 100) . '%';
  428. $sql = "select sum(accumulated_expenditure_last_year) from wz_f_ten_northern_provinces_stat
  429. where year=$year and (month>=$startmonth and month<=$endmonth) and province='" . $this->province . "'";
  430. $totalcostLast = Yii::$app->db->createCommand($sql)->queryScalar();
  431. $sql = "select avg(ratio_this_year) as total,province from wz_f_ten_northern_provinces_stat
  432. where year=$year and (month>=$startmonth and month<=$endmonth) group by province";
  433. $tenCityInfo = Yii::$app->db->createCommand($sql)->queryAll();
  434. $sort_1 = array_column($tenCityInfo, 'total');
  435. array_multisort($sort_1, SORT_DESC, $tenCityInfo);
  436. foreach ($tenCityInfo as $k => $v) {
  437. $provinceOrder[$v['province']] = $k + 1;
  438. }
  439. $sql = "select sum(accumulated_income_this_year) as accumulated_income_this_year, sum(accumulated_income_last_year) as accumulated_income_last_year, sum(accumulated_expenditure_this_year) as accumulated_expenditure_this_year, sum(accumulated_expenditure_last_year) as accumulated_expenditure_last_year, sum(budget_accumulation) as budget_accumulation,city from wz_f_income_and_expenditure_of_hebei_province_stat where year=$year and (month>=$startmonth and month<=$endmonth) group by city";
  440. $cityBudgets = Yii::$app->db->createCommand($sql)->queryAll();
  441. if (is_array($cityBudgets)) foreach ($cityBudgets as $k => $v) {
  442. $cityBudgets[$k]['year_on_year_gap'] = $v['accumulated_expenditure_this_year'] - $v['accumulated_expenditure_last_year'];
  443. $cityBudgets[$k]['tongbi'] = ($v['accumulated_expenditure_this_year'] - $v['accumulated_expenditure_last_year']) / $v['accumulated_expenditure_last_year'] * 100;
  444. $cityBudgets[$k]['budget_deviation'] = $v['accumulated_expenditure_this_year'] - $v['budget_accumulation'];
  445. $cityBudgets[$k]['budget_deviation_percent'] = round(($v['accumulated_expenditure_this_year'] - $v['budget_accumulation']) / $v['budget_accumulation'] * 100, 2);
  446. $cityBudgets[$k]['zhanshoubi'] = $v['accumulated_income_this_year']>0?$v['accumulated_expenditure_this_year'] / $v['accumulated_income_this_year']:'';
  447. }
  448. $sql = "select sum(accumulated_income_this_year) as accumulated_income_this_year, sum(accumulated_income_last_year) as accumulated_income_last_year, sum(accumulated_expenditure_this_year) as accumulated_expenditure_this_year, sum(accumulated_expenditure_last_year) as accumulated_expenditure_last_year, sum(budget_accumulation) as budget_accumulation from wz_f_income_and_expenditure_of_hebei_province_stat where year=$year and (month>=$startmonth and month<=$endmonth)";
  449. $cityBudgets0 = Yii::$app->db->createCommand($sql)->queryOne();
  450. $cityBudgets0['city'] = '全省';
  451. $cityBudgets0['year_on_year_gap'] = $cityBudgets0['accumulated_expenditure_this_year'] - $cityBudgets0['accumulated_expenditure_last_year'];
  452. $cityBudgets0['tongbi'] = ($cityBudgets0['accumulated_expenditure_this_year'] - $cityBudgets0['accumulated_expenditure_last_year']) / $cityBudgets0['accumulated_expenditure_last_year'] * 100;
  453. $cityBudgets0['budget_deviation'] = $cityBudgets0['accumulated_expenditure_this_year'] - $cityBudgets0['budget_accumulation'];
  454. $cityBudgets0['budget_deviation_percent'] = round(($cityBudgets0['accumulated_expenditure_this_year'] - $cityBudgets0['budget_accumulation']) / $cityBudgets0['budget_accumulation'] * 100, 2);
  455. $cityBudgets0['zhanshoubi'] = $cityBudgets0['accumulated_income_this_year']>0?$cityBudgets0['accumulated_expenditure_this_year'] / $cityBudgets0['accumulated_income_this_year']:'';
  456. $cityBudgets = array_merge(array($cityBudgets0), $cityBudgets);
  457. $cityBudgets1 = $cityBudgets;
  458. unset($cityBudgets1[0]);
  459. $sort_1 = array_column($cityBudgets1, 'zhanshoubi');
  460. array_multisort($sort_1, SORT_DESC, $cityBudgets1);
  461. foreach ($cityBudgets1 as $k => $v) {
  462. if ($k > 2) continue;
  463. $budgetsCitys[] = $v['city'];
  464. }
  465. $cityBudgets = array_merge(array($cityBudgets0), $cityBudgets1);
  466. //低效车辆统计
  467. if (empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP, 'Y-m');
  468. if (empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP, 'Y-m');
  469. $lastYear = get_date(TIMESTAMP, 'Y') - 1;
  470. if (empty($params1['start_date'])) $params1['start_date'] = get_date(TIMESTAMP, $lastYear . '-m');
  471. if (empty($params1['end_date'])) $params1['end_date'] = get_date(TIMESTAMP, $lastYear . '-m');
  472. $sql_oncaronetable = $this->getOneCarOneTable($params, 'car_id,
  473. attend_days,
  474. work_days,
  475. sum_mileage,
  476. (CASE WHEN attend_days * 100 / work_days < ( SELECT thd_att FROM wz_f_input_policy WHERE is_active = 1 )
  477. AND sum_mileage / work_days < ( SELECT thd_km_per_day FROM wz_f_input_policy WHERE is_active = 1 ) THEN
  478. 1 ELSE 0
  479. END
  480. ) AS is_ineff');
  481. $sql_carinfo = $this->getCarinfo(array_merge($params, ['is_special_car' => 0]), 'car_id, city, dpt_sec, grid, self_rent, car_type, using_tag');
  482. $table = '(' . $sql_oncaronetable . ') ocot JOIN (' . $sql_carinfo . ') ci ON ( ocot.car_id = ci.car_id ) ';
  483. $field = 'city,
  484. cast(count(ocot.car_id)/(SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end)-1+1 from wz_f_one_car_one_table WHERE year_info = '.$year.') as decimal(16,0)) AS car_num,
  485. sum( ocot.is_ineff ) AS ineff_car,
  486. round( sum( ocot.is_ineff ) * 100 / count( ocot.car_id ), 2 ) AS ineff_per,
  487. round( sum( ocot.sum_mileage ) / sum( work_days ), 2 ) AS av_daily_mileage,
  488. round( sum( attend_days ) * 100 / sum( work_days ), 2 ) AS attend_rate,
  489. '.$year.' AS year,
  490. (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';
  491. $data = $this->getPingjiaData($table, $field, $params);
  492. $dataAll = $this->getPingjiaData($table, $field, $params, 1);
  493. $dataAll['rows'][0]['city'] = '全省';
  494. $data['rows'] = array_merge($dataAll['rows'], $data['rows']);
  495. $data = $data['rows'];
  496. $sql_oncaronetable = $this->getOneCarOneTable($params1, 'car_id,
  497. attend_days,
  498. work_days,
  499. sum_mileage,
  500. (CASE WHEN attend_days * 100 / work_days < ( SELECT thd_att FROM wz_f_input_policy WHERE is_active = 1 )
  501. AND sum_mileage / work_days < ( SELECT thd_km_per_day FROM wz_f_input_policy WHERE is_active = 1 ) THEN
  502. 1 ELSE 0
  503. END
  504. ) AS is_ineff');
  505. $sql_carinfo = $this->getCarinfo(array_merge($params1, ['is_special_car' => 0]), 'car_id, city, dpt_sec, grid, self_rent, car_type, using_tag');
  506. $table = '(' . $sql_oncaronetable . ') ocot JOIN (' . $sql_carinfo . ') ci ON ( ocot.car_id = ci.car_id ) ';
  507. $field = 'city,
  508. cast(count(ocot.car_id)/(SELECT (case when max(month_info)>= '.$endmonth.' then '.$endmonth.' else max(month_info) end)-1+1 from wz_f_one_car_one_table WHERE year_info = '.$year.') as decimal(16,0)) AS car_num,
  509. sum( ocot.is_ineff ) AS ineff_car,
  510. round( sum( ocot.is_ineff ) * 100 / count( ocot.car_id ), 2 ) AS ineff_per,
  511. round( sum( ocot.sum_mileage ) / sum( work_days ), 2 ) AS av_daily_mileage,
  512. round( sum( attend_days ) * 100 / sum( work_days ), 2 ) AS attend_rate,
  513. '.$year.' AS year,
  514. (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';
  515. $data1 = $this->getPingjiaData($table, $field, $params1);
  516. $dataAll1 = $this->getPingjiaData($table, $field, $params1, 1);
  517. $dataAll1['rows'][0]['city'] = '全省';
  518. $data1['rows'] = array_merge($dataAll1['rows'], $data1['rows']);
  519. $data1 = $data1['rows'];
  520. $lowtotal = [];
  521. $lowdata = [];
  522. $lowtotal['car_num'] = $data[0]['car_num'];
  523. $lowtotal['ineff_car'] = $data[0]['ineff_car'];
  524. $lowtotal['ineff_per'] = $data[0]['ineff_per'] . '%';
  525. $lowtotal['lastyear_ineff_per'] = $data1[0]['ineff_per'] . '%';
  526. foreach ($data as $k => $v) {
  527. $lowdata[] = array(
  528. 'city' => $v['city'],
  529. 'car_num' => $v['car_num'],
  530. 'ineff_car' => $v['ineff_car'],
  531. 'lastyear_ineff_per' => $data1[$k]['ineff_per'] . '%',
  532. 'ineff_per' => $v['ineff_per'] . '%',
  533. 'ineff_per_num' => $v['ineff_per'],
  534. 'tongbi' => ($v['ineff_per'] > $data1[$k]['ineff_per'] ? '' : '-') . round((abs($v['ineff_per'] - $data1[$k]['ineff_per']) / $data1[$k]['ineff_per']) * 100, 2) . '%'
  535. );
  536. }
  537. $lowdata1 = $lowdata;
  538. unset($lowdata1[0]);
  539. $sort_1 = array_column($lowdata1, 'ineff_per_num');
  540. array_multisort($sort_1, SORT_ASC, $lowdata1);
  541. foreach ($lowdata1 as $k => $v) {
  542. $cityOrder[$v['city']] = $k + 1;
  543. }
  544. $lowtotal['citys'] = $lowdata1[0]['city'] . ',' . $lowdata1[1]['city'] . ',' . $lowdata1[2]['city'];
  545. foreach ($lowdata as $k => $v) {
  546. $lowdata[$k]['order'] = $cityOrder[$v['city']];
  547. }
  548. //违规车辆统计
  549. $sql = "select sum(illegal_times) as times from wz_f_cars_detail_data a left join wz_f_car_info b on a.car_id=b.car_id where a.year=$year";
  550. $totalegal = Yii::$app->db->createCommand($sql)->queryScalar();
  551. $legaldata = [];
  552. $unitrow['city'] = '全省';
  553. $all = 0;
  554. for ($i = 1; $i <= $endmonth; $i++) {
  555. $sql = "select sum(illegal_times) as times from wz_f_cars_detail_data a left join wz_f_car_info b on a.car_id=b.car_id where a.year=$year and a.month=$i";
  556. $unitrow['datas'][] = Yii::$app->db->createCommand($sql)->queryScalar();
  557. $all += Yii::$app->db->createCommand($sql)->queryScalar();
  558. }
  559. $unitrow['all'] = $all;
  560. $legaldata[] = $unitrow;
  561. foreach ($this->cityOptions as $k => $city) {
  562. $all = 0;
  563. $legaldata[$k + 1]['city'] = $city;
  564. for ($i = 1; $i <= $endmonth; $i++) {
  565. $sql = "select sum(illegal_times) as times from wz_f_cars_detail_data a left join wz_f_car_info b on a.car_id=b.car_id where a.year=$year and a.month=$i and b.city='" . $city . "'";
  566. $legaldata[$k + 1]['datas'][] = Yii::$app->db->createCommand($sql)->queryScalar();
  567. $all += Yii::$app->db->createCommand($sql)->queryScalar();
  568. }
  569. $legaldata[$k + 1]['all'] = $all;
  570. }
  571. $maxcity = '';
  572. $maxnum = 0;
  573. foreach (array_slice($legaldata, 1) as $unitData) {
  574. if ($unitData['all'] > $maxnum) {
  575. $maxnum = $unitData['all'];
  576. $maxcity = $unitData['city'];
  577. }
  578. }
  579. if ($legaldata[0]['all'] > 0) {
  580. $percent = (round($maxnum / $legaldata[0]['all'], 2) * 100) . '%';
  581. }
  582. $result = array('lowdata' => $lowdata, 'lowtotal' => $lowtotal, 'year' => $year, 'startmonth' => $startmonth, 'endmonth' => $endmonth, 'maxcity' => $maxcity, 'maxnum' => $maxnum, 'percent' => $percent, 'legaldata' => $legaldata, 'totalcost' => $totalcost, 'yearRatio' => $yearRatio, 'totalcostLast' => $totalcostLast, 'provinceOrder' => $provinceOrder[$this->province], 'cityBudgets' => $cityBudgets, 'budgetsCitys' => $budgetsCitys);
  583. //生成缓存
  584. if($_GET['docache']==1)
  585. {
  586. Yii::$app->cache->set($cacheFlag, json_encode($result),0);
  587. }
  588. return $this->render('report',$result);
  589. }
  590. else
  591. {
  592. return $this->render('report',$cacheData);
  593. }
  594. }
  595. //一车一表
  596. public function actionTable()
  597. {
  598. //初始条件
  599. //$post = Yii::$app->request->get();
  600. //if(!empty($post))
  601. //{
  602. $statistical_month = Yii::$app->request->get('statistical_month');
  603. $card_num = Yii::$app->request->get('card_num');
  604. $params = Yii::$app->request->get();
  605. $where = $this->getCityWhere($params);
  606. if(empty($card_num)) {
  607. $car = FCarInfo::find()->where($where)->orderBy('random()')->asArray()->one();
  608. $card_num = $car['card_num'];
  609. }
  610. //{
  611. $startdateInfo = explode('-',$statistical_month);
  612. $start_year = $startdateInfo[0]?$startdateInfo[0]:get_date(TIMESTAMP,'Y');
  613. $start_month = 1;
  614. $end_year = $start_year;
  615. $end_month = $startdateInfo[1]?intval($startdateInfo[1]):12;
  616. $year = $start_year;
  617. $sum_field = [
  618. 'sum_costs' => 'cast(sum("sum_costs") as decimal(10,2))',
  619. 'sum_driving' => 'cast(sum("oil_costs"+"repair_costs"+"road_bridge_costs"+"insurance_costs") as decimal(10,2))',
  620. 'sum_oil' => 'cast(sum("oil_costs") as decimal(10,2))',
  621. 'sum_repair' => 'cast(sum("repair_costs") as decimal(10,2))',
  622. 'sum_road_bridge' => 'cast(sum("road_bridge_costs") as decimal(10,2))',
  623. 'sum_rent' => 'cast(sum("rent_costs") as decimal(10,2))',
  624. 'sum_insurance' => 'cast(sum("insurance_costs") as decimal(10,2))',
  625. 'sum_year_check' => 'cast(sum("year_check_costs") as decimal(10,2))',
  626. 'sum_other' => 'cast(sum("other_costs") as decimal(10,2))',
  627. 'sum_mileage' => 'cast(sum("sum_mileage") as decimal(10,2))',
  628. 'violations_times' => 'sum("violations_times")',
  629. 'attend_days' => 'sum("attend_days")',
  630. 'work_days' => 'sum("work_days")'
  631. ];
  632. $monthData = [];
  633. $where['card_num'] = $card_num;
  634. $cars = FCarInfo::find()->where($where)->orderBy('car_id asc')->asArray()->all();
  635. $city = '';
  636. $last_id = 0;
  637. foreach ($cars as $car) {
  638. $car_id = $car['car_id'];
  639. unset($sum_field['month_info']);
  640. $sum_data[$car_id] = FOneCarOneTable::find()->select($sum_field)->where("car_id='" . $car_id . "' and year_info='" . $year . "' and (month_info<=$end_month)")->asArray()->one();
  641. if(!$sum_data[$car_id]) continue;
  642. //当前车辆账期内成本排行
  643. $rankList = Yii::$app->db->createCommand("select sum(sum_costs) as sumcosts,car_id from {{%f_one_car_one_table}} where year_info='" . $year . "' and (month_info>=$start_month and month_info<=$end_month) group by car_id order by sumcosts desc")->queryAll();
  644. foreach ($rankList as $k => $rankInfo) {
  645. if ($car_id == $rankInfo['car_id']) $rank[$car_id] = $k + 1;
  646. }
  647. $sum_field['month_info'] = 'month_info';
  648. $month_data = FOneCarOneTable::find()->select($sum_field)->where("car_id='" . $car['car_id'] . "' and year_info='" . $year . "' and (month_info<=$end_month)")->groupBy('month_info')->orderBy('month_info')->asArray()->all();
  649. foreach ($month_data as $k => $v) {
  650. /*if ($k > 0) {
  651. foreach ($v as $_k => $_v) {
  652. if ($_k != 'month_info') {
  653. $month_data[$k][$_k] += $month_data[$k - 1][$_k];
  654. }
  655. }
  656. }*/
  657. $monthData[$car_id][$v['month_info']] = $month_data[$k];
  658. }
  659. if($car['city']==$city && $last_id>0){
  660. foreach ($sum_data[$car_id] as $k=>$v){
  661. $sum_data[$car_id][$k] = $sum_data[$last_id][$k] + $v;
  662. }
  663. foreach ($monthData[$last_id] as $k => $v) {
  664. foreach ($v as $_k=>$_v){
  665. $monthData[$car_id][$k][$_k] = round($monthData[$car_id][$k][$_k],2) + round($_v,2);
  666. }
  667. }
  668. }
  669. $city = $car['city'];
  670. $last_id = $car_id;
  671. }
  672. $last = [];
  673. ksort($monthData[$car_id]);
  674. foreach ($monthData[$car_id] as $k => $v) {
  675. if(!empty($last)){
  676. foreach ($v as $_k=>$_v){
  677. $monthData[$car_id][$k][$_k] += $last[$_k];
  678. }
  679. }
  680. $last = $monthData[$car_id][$k];
  681. $monthData[$car_id][$k]['attendance'] = $monthData[$car_id][$k]['work_days'] ? $monthData[$car_id][$k]['attend_days'] / $monthData[$car_id][$k]['work_days'] : 0.00;
  682. if($monthData[$car_id][$k]['sum_mileage']>0){
  683. $monthData[$car_id][$k]['oil_per_km'] = $monthData[$car_id][$k]['sum_oil'] / $monthData[$car_id][$k]['sum_mileage'] * 100;
  684. $monthData[$car_id][$k]['repair_per_km'] = $monthData[$car_id][$k]['sum_repair'] / $monthData[$car_id][$k]['sum_mileage'] * 100;
  685. $monthData[$car_id][$k]['sum_costs_per_km'] = $monthData[$car_id][$k]['sum_costs'] / $monthData[$car_id][$k]['sum_mileage'] * 100;
  686. }else{
  687. $monthData[$car_id][$k]['oil_per_km'] = 0.00;
  688. $monthData[$car_id][$k]['repair_per_km'] = 0.00;
  689. $monthData[$car_id][$k]['sum_costs_per_km'] = 0.00;
  690. }
  691. }
  692. //}
  693. //else
  694. //{
  695. //Yii::$app->session->setFlash('error','请输入车牌号');
  696. //}
  697. //}
  698. $koujing = '这里是口径描述';
  699. return $this->render('table',array('searchData'=>$params,'cars'=>$cars,'car'=>$car,'sum_data'=>$sum_data[$car_id],'monthData'=>$monthData[$car_id],'rank'=>$rank[$car_id],'koujing'=>$koujing));
  700. }
  701. //车辆基本信息
  702. public function actionBaseinfo()
  703. {
  704. $type = Yii::$app->request->get('type',1);
  705. //车辆记录
  706. if($type==1)
  707. {
  708. $query = FOneCarOneTable::find()->alias('onecar')->leftJoin('{{%f_car_info}}', 'onecar.car_id = {{%f_car_info}}.car_id');
  709. if (Yii::$app->request->isAjax) {
  710. $data = [];
  711. $params = Yii::$app->request->get();
  712. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  713. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-12');
  714. $where = $this->getWhere($query, $params);
  715. if(!empty($where)){
  716. $sql = join(" and ",$where);
  717. $query->where($sql);
  718. }
  719. $countQuery = clone $query;
  720. //分页
  721. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  722. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  723. //排序
  724. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  725. {
  726. $resultList = $query->select('*')->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->asArray()->all();
  727. }
  728. else
  729. {
  730. $resultList = $query->select('*')->orderBy(['onecar.id'=>SORT_DESC])->asArray()->all();
  731. }
  732. foreach($resultList as $result)
  733. {
  734. $data[] = array('date'=>$result['year_info'].($result['month_info']>=10?$result['month_info']:'0'.$result['month_info']),'card_num'=>$result['card_num'],'city'=>$result['city'],'dpt_sec'=>$result['dpt_sec'],'grid'=>$result['grid'],'self_rent'=>$result['self_rent'],'car_type'=>$result['car_type'],'using_tag'=>$result['using_tag']);
  735. }
  736. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  737. echo_json($result);
  738. }
  739. $this->tableTitle = array(
  740. array('field'=>'date','title'=>'时间','align'=>'center'),
  741. array('field'=>'card_num','title'=>'车牌号','align'=>'center'),
  742. array('field'=>'city','title'=>'地市','align'=>'center'),
  743. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  744. array('field'=>'grid','title'=>'网格','align'=>'center'),
  745. array('field'=>'self_rent','title'=>'车辆来源','align'=>'center'),
  746. array('field'=>'car_type','title'=>'车辆类型','align'=>'center'),
  747. array('field'=>'using_tag','title'=>'车辆使用性质','align'=>'center'),
  748. );
  749. $this->tableConfig = array('table'=>FOneCarOneTable::shortTableName(),'url'=>$this->createRealUrl(['car/default/baseinfo','type'=>1]),'setFieldUrl'=>$this->createRealUrl(['car/default/setfield']),'idField'=>FOneCarOneTable::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'exportFileName'=>'睿行车辆记录','height'=>500);
  750. }
  751. //车况
  752. if($type==2)
  753. {
  754. $query = FCarCondition::find()->alias('chekuang')->leftJoin('{{%f_car_info}}', 'chekuang.car_id = {{%f_car_info}}.car_id');
  755. if (Yii::$app->request->isAjax) {
  756. $data = [];
  757. $params = Yii::$app->request->get();
  758. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  759. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-12');
  760. $where = $this->getWhere($query, $params);
  761. if(!empty($where)){
  762. $sql = join(" and ",$where);
  763. $query->where($sql);
  764. }
  765. $countQuery = clone $query;
  766. //分页
  767. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  768. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  769. //排序
  770. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  771. {
  772. $resultList = $query->select('*')->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->asArray()->all();
  773. }
  774. else
  775. {
  776. $resultList = $query->select('*')->orderBy(['chekuang.id'=>SORT_DESC])->asArray()->all();
  777. }
  778. foreach($resultList as $result)
  779. {
  780. $data[] = array('date'=>$result['year'].($result['month']>=10?$result['month']:'0'.$result['month']),'card_num'=>$result['card_num'],'city'=>$result['city'],'dpt_sec'=>$result['dpt_sec'],'grid'=>$result['grid'],'factory'=>$result['factory'],'enabled_date'=>$result['enabled_date'],'car_age'=>$result['car_age']);
  781. }
  782. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  783. echo_json($result);
  784. }
  785. $this->tableTitle = array(
  786. array('field'=>'date','title'=>'时间','align'=>'center'),
  787. array('field'=>'card_num','title'=>'车牌号','align'=>'center'),
  788. array('field'=>'city','title'=>'地市','align'=>'center'),
  789. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  790. array('field'=>'grid','title'=>'网格','align'=>'center'),
  791. array('field'=>'factory','title'=>'厂家','align'=>'center'),
  792. array('field'=>'enabled_date','title'=>'启用日期','align'=>'center'),
  793. array('field'=>'car_age','title'=>'车龄(年)','align'=>'center','sortable'=>true,'class'=>'bigwidth'),
  794. );
  795. $this->tableConfig = array('table'=>FCarCondition::shortTableName(),'url'=>$this->createRealUrl(['car/default/baseinfo','type'=>2]),'setFieldUrl'=>$this->createRealUrl(['car/default/baseinfo']),'idField'=>FCarCondition::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'exportFileName'=>'车况','height'=>500);
  796. }
  797. //报废
  798. if($type==3)
  799. {
  800. $query = FCarScrap::find()->alias('chekuang')->leftJoin('{{%f_car_info}}', 'chekuang.card_num = {{%f_car_info}}.card_num');
  801. if (Yii::$app->request->isAjax) {
  802. $data = [];
  803. $params = Yii::$app->request->get();
  804. if(empty($params['start_date'])) $params['start_date'] = get_date(TIMESTAMP,'Y-1');
  805. if(empty($params['end_date'])) $params['end_date'] = get_date(TIMESTAMP,'Y-12');
  806. $where = $this->getWhere($query, $params);
  807. if(!empty($where)){
  808. $sql = str_replace('card_num','chekuang.card_num',join(" and ",$where))." and chekuang.card_num!='' and {{%f_car_info}}.card_num!=''";
  809. $query->where($sql);
  810. }
  811. $countQuery = clone $query;
  812. //分页
  813. if(isset($_GET['limit'])){ $query->limit(intval($_GET['limit']));}
  814. if(isset($_GET['offset'])){ $query->offset(intval($_GET['offset']));}
  815. //排序
  816. if(isset($_GET['sort'])&&isset($_GET['sortOrder']))
  817. {
  818. $resultList = $query->select('*')->orderBy([$_GET['sort']=>($_GET['sortOrder']=='asc'?SORT_ASC:SORT_DESC)])->asArray()->all();
  819. }
  820. else
  821. {
  822. $resultList = $query->select('*')->orderBy(['chekuang.id'=>SORT_DESC])->asArray()->all();
  823. }
  824. foreach($resultList as $result)
  825. {
  826. $data[] = array('date'=>$result['year'].($result['month']>=10?$result['month']:'0'.$result['month']),'card_num'=>$result['card_num'],'city'=>$result['city'],'dpt_sec'=>$result['dpt_sec'],'grid'=>$result['grid'],'factory'=>$result['factory'],'enabled_date'=>$result['enabled_date'],'car_age'=>$result['car_age']);
  827. }
  828. $result = ["total"=>$countQuery->count(),"totalNotFiltered"=>$countQuery->count(),"rows"=>$data];
  829. echo_json($result);
  830. }
  831. $this->tableTitle = array(
  832. array('field'=>'date','title'=>'时间','align'=>'center'),
  833. array('field'=>'card_num','title'=>'车牌号','align'=>'center'),
  834. array('field'=>'city','title'=>'地市','align'=>'center'),
  835. array('field'=>'dpt_sec','title'=>'二级单位','align'=>'center'),
  836. array('field'=>'grid','title'=>'网格','align'=>'center'),
  837. array('field'=>'factory','title'=>'厂家','align'=>'center'),
  838. array('field'=>'enabled_date','title'=>'启用日期','align'=>'center'),
  839. array('field'=>'car_age','title'=>'车龄(年)','align'=>'center','sortable'=>true,'class'=>'bigwidth'),
  840. );
  841. $this->tableConfig = array('table'=>FCarCondition::shortTableName(),'url'=>$this->createRealUrl(['car/default/baseinfo','type'=>3]),'setFieldUrl'=>$this->createRealUrl(['car/default/baseinfo']),'idField'=>FCarCondition::modelPrimaryKey(),'checkbox'=>0,'dropmenu'=>1,'pagination'=>true,'pagesize'=>20,'refresh'=>true,'exportFileName'=>'报废','height'=>500);
  842. }
  843. $koujing = '这里是口径描述';
  844. return $this->render('baseinfo',['type'=>$type,'koujing'=>$koujing]);
  845. }
  846. }