20], [['run_date'], 'string', 'max' => 10], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'ID' => 'ID', 'create_user_id' => 'Create User ID', 'create_time' => 'Create Time', 'update_user_id' => 'Update User ID', 'update_time' => 'Update Time', 'cancel_flag' => 'Cancel Flag', 'bus_number' => '出车单号', 'use_bus_org_id' => '用车单位', 'run_date' => '出车日期', 'bus_res_id' => '车辆res_id', 'bus_driver_res_id' => '司机res_id', 'expense_subject_id' => '支出科目 对应dict_type.id', 'expense_type' => '支出方式 对应dict_type.id', 'expense_value' => '支出金额', 'start_value' => '科目为邮电费时对应开始时的里程数,为路桥费时对应ETC充值卡开始时的金额', 'end_value' => '科目为邮电费时对应结束时的里程数,为路桥费时对应ETC充值卡结束时的金额', 'doc_log_id' => '对应bus_doc_log 表中的id', ]; } /** * Function Description:获取司机的总里程数 * Function Name: getTotalMileageByDriver * @param int $driver_id 司机id * * @return array|int|mixed|null|ActiveRecord * * @author 张帅 */ public function getTotalMileageByDriver($driver_id) { $result = self::find() ->select("sum(end_value-start_value) as total_mileage") ->where([ 'and', ['=', 'bus_driver_res_id', $driver_id], ['=', 'expense_subject_id', 462], ['=', 'cancel_flag', 0], ['!=', 'end_value', 0], ]) ->asArray()->one(); $result = ($result['total_mileage'] == null ? 0 : $result['total_mileage']); return $result; } /** * Function Description:出行开始 * Function Name: runStart * @param $bus_number * @param $postage * @param $toll_charge * * @return bool * * @author 张帅 */ public function runStart($bus_number, $postage, $toll_charge) { #region 1.通过出车单号获取行程详情 $bus_order_info = BusOrder::find() ->select([ 'bus_number',//出车单号 'use_bus_org_id',//用车单位 'run_date',//出车日期 'bus_res_id' => 'send_bus_res_id',//所用车辆 'bus_driver_res_id' => 'send_bus_driver_res_id',//出车司机 ]) ->where([ 'bus_number' => $bus_number, 'cancel_flag' => 0, ]) ->asArray()->one(); #endregion #region 2.获取要添加的出行任务费用数据 $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 462, 'expense_type' => 0, 'expense_value' => 0, 'start_value' => $postage, ]; $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 463, 'expense_type' => 473, 'expense_value' => 0, 'start_value' => $toll_charge, ]; #endregion #region 3.修改数据 $transaction = Yii::$app->db->beginTransaction(); try { //插入添加的出行任务费用 $res = Yii::$app->db->createCommand()->batchInsert(self::tableName(), ['bus_number', 'use_bus_org_id', 'run_date', 'bus_res_id', 'bus_driver_res_id', 'create_user_id', 'create_time', 'update_user_id', 'update_time', 'cancel_flag', 'expense_subject_id', 'expense_type', 'expense_value', 'start_value'], $expenses_value)->execute(); if (!$res) { throw new Exception('输入数据不符合格式'); } //修改出车状态 $bus_order_one = BusOrder::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0]); $bus_order_one->attributes = ['update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'run_status' => 437]; $res = $bus_order_one->update(); if (!$res) { throw new Exception('输入数据不符合格式'); } $transaction->commit(); $result = true; } catch (Exception $e) { # 回滚事务 $result = false; } return $result; #endregion } /** * Function Description:任务结束 * Function Name: runEnd * @param $bus_number * @param $postage * @param $toll_charge * * @return bool * * @author 张帅 */ public function runEnd($bus_number, $postage, $toll_charge, $diff_distance = 0) { #region 1.通过出车单号获取行程详情 $bus_order_info = BusOrder::find() ->select([ 'bus_number',//出车单号 'use_bus_org_id',//用车单位 'run_date',//出车日期 'bus_res_id' => 'send_bus_res_id',//所用车辆 'bus_driver_res_id' => 'send_bus_driver_res_id',//出车司机 ]) ->where([ 'bus_number' => $bus_number, 'cancel_flag' => 0, ]) ->asArray()->one(); #endregion #region 2.修改数据 $transaction = Yii::$app->db->beginTransaction(); try { //(1)修改邮电费 $postage_one = self::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0, 'expense_subject_id' => 462]); $postage_start_value = $postage_one->start_value; if ($postage < $postage_start_value) { throw new Exception('请认真填写'); } #region 获取参考油价 $bus_postage = BaseBus::find()->select('mpg,oil_price,fuel_form')->where(['bus_id' => $bus_order_info['bus_res_id']])->asArray()->one(); if (count($bus_postage) == 0 || empty($bus_postage['mpg']) || $bus_postage['mpg'] == 0) {//升/百公里 度/百公里 $mpg = $bus_postage['fuel_form'] == 487 ? 82 : 25; } else { $mpg = $bus_postage['mpg']; } if (count($bus_postage) == 0 || empty($bus_postage['oil_price']) || $bus_postage['oil_price'] == 0) {// 元/升 元/度 $oil_price = $bus_postage['fuel_form'] == 487 ? 2.2 : 6.11; } else { $oil_price = $bus_postage['oil_price']; } #endregion $expense_value = round((($postage - $postage_start_value) / 100 * $mpg * $oil_price), 2);//油耗费或者电耗费用 $postage_value = [ 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'expense_value' => $expense_value, 'end_value' => $postage, ]; $postage_one->attributes = $postage_value; $res = $postage_one->update(); if (!$res) { throw new Exception('输入数据不符合格式'); } //(2)修改路桥费 $toll_charge_one = self::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0, 'expense_subject_id' => 463]); $toll_charge_start_value = $toll_charge_one->start_value; $expense_value = $toll_charge_start_value - $toll_charge; //插入ETC记录 $doc_log_id = 0; $bus_oil_doc_info = BusOilDoc::findOne(['BIND_BUS' => $bus_order_info['bus_res_id'], 'CARD_TYPE' => 2]); if (false != $bus_oil_doc_info && isset($bus_oil_doc_info["ID"])) { $card_balance = $bus_oil_doc_info["CARD_BALANCE"] - $expense_value; $bus_doc_log = new BusDocLog(); $bus_doc_log->attributes = [ 'CREATE_USER_ID' => $bus_order_info['bus_driver_res_id'], 'CREATE_TIME' => date("Y-m-d H:i:s"), 'UPDATE_USER_ID' => $bus_order_info['bus_driver_res_id'], 'UPDATE_TIME' => date("Y-m-d H:i:s"), 'CARD_ID' => $bus_oil_doc_info["ID"], 'BUS_ID' => $bus_oil_doc_info['BIND_BUS'], 'OPERATION_TYPE' => 601, 'OPERATION_DRIVER' => $bus_order_info['bus_driver_res_id'], 'OPERATION_DATE' => date("Y-m-d"), 'VALUE' => $expense_value, 'VALUE_OLD' => $bus_oil_doc_info["CARD_BALANCE"], 'NOTE' => "APP司机出车报账" ]; $bus_doc_log->save(); $doc_log_id = $bus_doc_log->attributes['ID']; if ($expense_value > 0) { $bus_oil_doc_info->attributes = ['CARD_BALANCE' => $card_balance, 'UPDATE_TIME' => date('Y-m-d H:i:s', time()), 'UPDATE_USER_ID' => $bus_order_info['bus_driver_res_id']]; $res = $bus_oil_doc_info->update(); } } $toll_charge_value = [ 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'expense_value' => $expense_value, 'end_value' => $toll_charge, 'doc_log_id' => $doc_log_id, ]; $toll_charge_one->attributes = $toll_charge_value; $res = $toll_charge_one->update(); if (!$res) { throw new Exception('输入数据不符合格式'); } //修改出车状态 $bus_order_one = BusOrder::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0]); $bus_order_one->attributes = ['update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'run_status' => 438]; $res = $bus_order_one->update(); if (!$res) { throw new Exception('输入数据不符合格式'); } //以下为给乘客发送短信 // $bus_order = new BusOrder(); // $order_send_message = new OrderSendMessage(); // $order_check_ticket = new OrderCheckTickets(); // // 根据bus_number查询到run_id,为了进一步查询到检票的乘客作准备 // $result = $bus_order->getRunIdByBusNumber($bus_number); // $customer_phone_list = $order_check_ticket->getCustomerMobile($result['run_id'],$result['bus_order_id']); // if(!empty($customer_phone_list)){ // foreach($customer_phone_list as $k => $customer_phone){ // $res_send_message = $order_send_message->sendTelMessage($customer_phone['customer_mobile'], '感谢您乘坐蜘蛛出行巴士旅游专线,祝您游玩愉快,如有门票、旅游直通车预订需求,请关注(蜘蛛行)公众号,有返佣哦!如对这次乘坐有任何建议,请拨打021-33280519进行反馈'); // //短信记录插入order_send_message表 // $current_time = date("Y-m-d H:i:s"); // $send_msg_values = [ // 'ORDER_ID' => $customer_phone['order_id'], // 'SEND_MOBILE' => $customer_phone['customer_mobile'], // 'SEND_MESSAGE' => '【蜘蛛行】感谢您乘坐蜘蛛出行巴士旅游专线,祝您游玩愉快,如有门票、旅游直通车预订需求,请关注(蜘蛛行)公众号,有返佣哦!如对这次乘坐有任何建议,请拨打021-33280519进行反馈', // 'SEND_TIME' => $current_time, // 'SEND_ERROR' => $res_send_message, // 'CREATE_USER_ID' => 2, // 'CREATE_TIME' => $current_time, // 'UPDATE_USER_ID' => 2, // 'UPDATE_TIME' => $current_time, // ]; // $msgRecord = new OrderSendMessage(); // $msgRecord->attributes = $send_msg_values; // $res = $msgRecord->insert(); //// if (!$res) { //// throw new Exception('插入失败'); //// } // } // } //司贴 // $expenses_value[] = $bus_order_info + [ // 'create_user_id' => $bus_order_info['bus_driver_res_id'], // 'create_time' => date('Y-m-d H:i:s', time()), // 'update_user_id' => $bus_order_info['bus_driver_res_id'], // 'update_time' => date('Y-m-d H:i:s', time()), // 'cancel_flag' => 0, // 'expense_subject_id' => 464, // 'expense_type' => 474, // 'expense_value' => $diff_distance*0.6, // ]; // $res = Yii::$app->db->createCommand()->batchInsert(self::tableName(), // ['bus_number', 'use_bus_org_id', 'run_date', 'bus_res_id', 'bus_driver_res_id', 'create_user_id', 'create_time', 'update_user_id', 'update_time', 'cancel_flag', 'expense_subject_id', 'expense_type', 'expense_value'], // $expenses_value)->execute(); $transaction->commit(); $result = true; } catch (Exception $e) { # 回滚事务 $result = false; } #endregion return $result; } /** * Function Description:获取邮电费和路桥费 * Function Name: getRunOrderExpenses * @param $bus_number * * @return array * * @author 张帅 */ public function getRunOrderExpenses($bus_number) { #region 1.从数据库获取任务邮电费和路桥费费用 $expenses_list = self::find() ->select([ 'e.bus_number', 'e.expense_subject_id',//支出科目 'e.expense_value',//支出金额 'e.start_value', 'e.end_value', 'e.run_date',//报账日期 'task_name' => 'o.itinerary_name', ]) ->from(self::tableName() . ' as e') ->leftJoin(BusOrder::tableName() . ' as o', 'o.bus_number = e.bus_number') ->where([ 'and', ['=', 'e.cancel_flag', 0], ['=', 'o.cancel_flag', 0], ['in', 'e.expense_subject_id', [462, 463]], ['in', 'e.bus_number', $bus_number], ]) ->asArray() ->all(); #endregion #region 2.整理数据 $result = []; foreach ($expenses_list as $key => $vel) { if (count($result) == 0) { $result['bus_number'] = $vel['bus_number'];//出行单号 $result['run_date'] = $vel['run_date'];//出行日期 $result['task_name'] = $vel['task_name'];//任务名称 } if ($vel['expense_subject_id'] == 462) { $result['mileage'] = $vel['end_value'] - $vel['start_value'];//行驶里程 } if ($vel['expense_subject_id'] == 463) { $result['toll_charge'] = $vel['expense_value'];//路桥费 } } #endregion return $result; } /** * Function Description:提交报账 * Function Name: getSubmitFinance * @param $bus_number * @param $food_expense * @param $hotel_expense * @param $park_expense * * @return bool * * @author 张帅 */ public function getSubmitFinance($bus_number, $food_expense, $hotel_expense, $park_expense) { #region 1.通过出车单号获取行程详情 $bus_order_info = BusOrder::find() ->select([ 'bus_number',//出车单号 'use_bus_org_id',//用车单位 'run_date',//出车日期 'bus_res_id' => 'send_bus_res_id',//所用车辆 'bus_driver_res_id' => 'send_bus_driver_res_id',//出车司机 ]) ->where([ 'bus_number' => $bus_number, 'cancel_flag' => 0, ]) ->asArray()->one(); #endregion #region 2.获取要添加的出行任务费用数据 //(1)餐饮费 $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 466, 'expense_type' => 475, 'expense_value' => $food_expense, ]; //(2)住宿费 $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 467, 'expense_type' => 475, 'expense_value' => $hotel_expense, ]; //(3)停车费 $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 465, 'expense_type' => 475, 'expense_value' => $park_expense, ]; #endregion //(4)司贴 $expenses_value[] = $bus_order_info + [ 'create_user_id' => $bus_order_info['bus_driver_res_id'], 'create_time' => date('Y-m-d H:i:s', time()), 'update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'cancel_flag' => 0, 'expense_subject_id' => 464, 'expense_type' => 474, 'expense_value' => 0, ]; #endregion #region 3.修改数据 $transaction = Yii::$app->db->beginTransaction(); try { //插入添加的出行任务费用 $res = Yii::$app->db->createCommand()->batchInsert(self::tableName(), ['bus_number', 'use_bus_org_id', 'run_date', 'bus_res_id', 'bus_driver_res_id', 'create_user_id', 'create_time', 'update_user_id', 'update_time', 'cancel_flag', 'expense_subject_id', 'expense_type', 'expense_value'], $expenses_value)->execute(); if (!$res) { throw new Exception('输入数据不符合格式'); } //修改报账状态 $bus_order_one = BusOrder::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0]); $bus_order_one->attributes = ['update_user_id' => $bus_order_info['bus_driver_res_id'], 'update_time' => date('Y-m-d H:i:s', time()), 'finance_status' => 445]; $res = $bus_order_one->update(); if (!$res) { throw new Exception('输入数据不符合格式'); } $transaction->commit(); $result = true; } catch (Exception $e) { # 回滚事务 $result = false; } #endregion return $result; } /** * Function Description:获取费用详情 * Function Name: getFinanceDetail * @param string $bus_number 出行单号 * * @return array * * @author 张帅 */ public function getFinanceDetail($bus_number) { #region 1.从数据库获取任务费用 $expenses_list = self::find() ->select([ 'e.bus_number', 'e.expense_subject_id',//支出科目 'e.expense_value',//支出金额 'e.start_value', 'e.end_value', 'e.run_date',//报账日期 'task_name' => 'o.itinerary_name', ]) ->from(self::tableName() . ' as e') ->leftJoin(BusOrder::tableName() . ' as o', 'o.bus_number = e.bus_number') ->where([ 'and', ['=', 'e.cancel_flag', 0], ['=', 'o.cancel_flag', 0], ['in', 'e.expense_subject_id', [462, 463, 465, 466, 467]], ['in', 'e.bus_number', $bus_number], ]) ->asArray() ->all(); #endregion #region 2.整理数据 $result = []; foreach ($expenses_list as $key => $vel) { if (count($result) == 0) { $result['bus_number'] = $vel['bus_number'];//出行单号 $result['run_date'] = $vel['run_date'];//出行日期 $result['task_name'] = $vel['task_name'];//任务名称 } if ($vel['expense_subject_id'] == 462) { $result['mileage'] = $vel['end_value'] - $vel['start_value'];//行驶里程 } if ($vel['expense_subject_id'] == 463) { $result['toll_charge'] = $vel['expense_value'];//路桥费 } if ($vel['expense_subject_id'] == 465) { $result['food_expense'] = $vel['expense_value'];//餐饮费 } if ($vel['expense_subject_id'] == 466) { $result['hotel_expense'] = $vel['expense_value'];//住宿费 } if ($vel['expense_subject_id'] == 467) { $result['park_expense'] = $vel['expense_value'];//停车费 } } #endregion return $result; } /** * Function Description:重新报账 * Function Name: getResubmitFinance * @param $bus_number * @param $food_expense * @param $hotel_expense * @param $park_expense * * @return bool * * @author 张帅 */ public function getResubmitFinance($bus_number, $food_expense, $hotel_expense, $park_expense) { #region 1.修改数据 $transaction = Yii::$app->db->beginTransaction(); try { //(1)修改餐饮费 $food_one = self::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0, 'expense_subject_id' => 465]); $food_one->attributes = ['update_time' => date('Y-m-d H:i:s', time()), 'expense_value' => $food_expense,]; $res = $food_one->update(); if (!$res) { throw new Exception('输入数据不符合格式1'); } //(2)修改住宿费 $hotel_one = self::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0, 'expense_subject_id' => 466]); $hotel_one->attributes = ['update_time' => date('Y-m-d H:i:s', time()), 'expense_value' => $hotel_expense,]; $res = $hotel_one->update(); if (!$res) { throw new Exception('输入数据不符合格式2'); } //(3)修改停车费 $park_one = self::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0, 'expense_subject_id' => 467]); $park_one->attributes = ['update_time' => date('Y-m-d H:i:s', time()), 'expense_value' => $park_expense,]; $res = $park_one->update(); if (!$res) { throw new Exception('输入数据不符合格式3'); } //(4)修改报账状态 $bus_order_one = BusOrder::findOne(['bus_number' => $bus_number, 'cancel_flag' => 0]); $bus_order_one->attributes = ['update_time' => date('Y-m-d H:i:s', time()), 'finance_status' => 445]; $res = $bus_order_one->update(); if (!$res) { throw new Exception('输入数据不符合格式4'); } $transaction->commit(); $result = true; } catch (Exception $e) { # 回滚事务 $result = false; } #endregion return $result; } /** * Function Description:获取结束最大值 * Function Name: getExpenseMaxEndValue * @param int $bus_res_id 巴士资源id * @param int $expense_subject_id 费用类型id * * @return mixed * * @author 邱颂 */ public function getExpenseMaxEndValue($bus_res_id, $expense_subject_id) { // $expense_info = self::find() // ->select([ // 'MAX(end_value) as max_value' // ]) // ->where([ // 'and', // ['=', 'bus_res_id', $bus_res_id], // ['=', 'expense_subject_id', $expense_subject_id], // ]) // ->groupBy(['bus_res_id', 'expense_subject_id']) // ->asArray() // ->one(); // return $expense_info["max_value"]; $end_milege = self::find() ->select('rbe.end_value') ->from(RunBusExpenses::tableName() . ' as rbe') ->innerJoin(BusOrder::tableName() . ' as bo', 'rbe.bus_number = bo.bus_number') ->where(['and', ['=', 'rbe.cancel_flag', '0'], ['=', 'bo.cancel_flag', '0'], ['=', 'rbe.bus_res_id', $bus_res_id], ['=', 'rbe.expense_subject_id', $expense_subject_id], ['=', 'bo.run_status', '438']]) ->orderBy(['bo.run_date' => SORT_DESC, 'bo.start_time' => SORT_DESC]) ->asArray() ->one(); return ($end_milege == false || !isset($end_milege['end_value'])) ? false : intval($end_milege['end_value']); } /** * Function Description:获取上个月与本月的司贴列表 * Function Name: getDriverSubsidyList * @param int $driver_id 司机id * * @return array * * @author 张帅 */ public function getDriverSubsidyList($driver_id) { #region 要返回的数组 $result = [ 'pre' => [ 'day_name' => date('n', strtotime("-1 month")) . '月', 'total_expense_value' => 0, 'subsidy_list' => [], ], 'now' => [ 'day_name' => date('n') . '月', 'total_expense_value' => 0, 'subsidy_list' => [], ], ]; #endregion #region 获取司贴列表 $driver_subsidy_list = self::find() ->select([ 'run_date', 'bus_number', 'task_name' => BusOrder::find()->select('itinerary_name')->where('bus_number = e.bus_number')->limit(1),//任务名称 'expense_value', ]) ->where([ 'and', ['=', 'bus_driver_res_id', $driver_id], ['=', 'cancel_flag', 0], ['=', 'expense_subject_id', 464], ['>=', 'run_date', date('Y-m-d', strtotime("-1 month"))], ]) ->from(self::tableName() . ' as e') ->orderBy(['run_date' => SORT_DESC]) ->asArray()->all(); #endregion #region 分组装入 if (count($driver_subsidy_list) > 0) { foreach ($driver_subsidy_list as $key => $vel) { $vel_month = date('n', strtotime($vel['run_date'])); $vel_day = date('j', strtotime($vel['run_date'])); $vel['run_day'] = $vel_day . '日'; $arr_key = $vel_month != date('n') ? 'pre' : 'now'; $result[$arr_key]['subsidy_list'][] = $vel; $result[$arr_key]['total_expense_value'] += $vel['expense_value']; } } #endregion return $result; } /** * 通过车辆的资源id获取到结束的最大公里数 * @param $bus_res_id 司机资源id * @author 傅冬荣 */ public function getLastMilegeByBusResId($bus_res_id) { // $end_milege = self::find() // ->select('MAX(end_value) as end_value') // ->where(['and',['=','cancel_flag',0],['=','bus_res_id',$bus_res_id],['=','expense_subject_id',462]]) // ->asArray() // ->one(); $end_milege = self::find() ->select('rbe.end_value') ->from(RunBusExpenses::tableName() . ' as rbe') ->innerJoin(BusOrder::tableName() . ' as bo', 'rbe.bus_number = bo.bus_number') ->where(['and', ['=', 'rbe.cancel_flag', '0'], ['=', 'bo.cancel_flag', '0'], ['=', 'rbe.bus_res_id', $bus_res_id], ['=', 'rbe.expense_subject_id', '462'], ['=', 'bo.run_status', '438']]) ->orderBy(['bo.run_date' => SORT_DESC, 'TIME_FORMAT(bo.start_time,"%H:%i")' => SORT_DESC]) ->asArray() ->all(); return !$end_milege ? 0 : intval($end_milege[0]['end_value']); } /** * 通过bus_number获取到该行程的开始里程数 * @author 傅冬荣 */ public function getStartMilegeByBusNumber($bus_number) { $start_value = self::find() ->select('start_value') ->where(['and', ['=', 'cancel_flag', 0], ['=', 'bus_number', $bus_number], ['=', 'expense_subject_id', 462]]) ->asArray() ->one(); return intval($start_value['start_value']); } /** * 通过司机姓名或者日期来获取报账列表 * @param $driver_name 司机姓名 * @param $bus_no 车牌号 * @param $run_date 开车日期 * * @author 傅冬荣 */ public function getExpensesListByBusNumber($bus_number) { $filter = ['and', ['=', 'rbe.cancel_flag', 0]]; $filter[] = ['=', 'rbe.bus_number', $bus_number]; $expenses_list = self::find() ->select(['rbe.update_time', 'rbe.update_user_id', 'rbe.run_date', 'rbe.bus_number', 'rbe.bus_res_id', 'rbe.bus_driver_res_id', 'dt.type_name', 'expense_subject_id', 'expense_value', 'start_value', 'end_value']) ->from(RunBusExpenses::tableName() . ' as rbe') ->innerJoin(DictType::tableName() . ' as dt', 'rbe.expense_subject_id = dt.id') ->filterWhere($filter) ->orderBy(['run_date' => SORT_DESC]) ->asArray()->all(); // ->createCommand()->getRawSql(); return $expenses_list; } }