123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309 |
- <?php
- /**
- * Created by PhpStorm.
- * User: north
- * Date: 2017/8/31
- * Time: 上午10:00
- */
- class POrderController extends AdminController
- {
- public function actionIndex()
- {
- $status = CommonFn::getComboboxData(POrder::$status_options, 100, true,100);
- $package_product = CommonFn::getComboboxData(POrder::$standards_options, 1);
- $this->render('index', array(
- 'status' => $status,
- 'package_product'=> $package_product,
- ));
- }
- public function actionList(){
- $floor = Yii::app()->request->getParam('floor','');
- $room = Yii::app()->request->getParam('room','');
- $status = Yii::app()->request->getParam('status',100);
- $date_start_book = strtotime(Yii::app()->request->getParam('date_start_book',''));
- $date_end_book = strtotime(Yii::app()->request->getParam('date_end_book',''));
- $params = CommonFn::getPageParams();
- $criteria = new EMongoCriteria($params);
- if ($status != 100) {
- $criteria->status('==',intval($status));
- }
- if ($floor) {
- $criteria->addCond('address.floor','==',$floor);
- }
- if ($room) {
- $criteria->addCond('address.room','==',$room);
- }
- if ($date_end_book < $date_start_book) {
- $tmp = $date_end_book;
- $date_end_book = $date_start_book;
- $date_start_book = $tmp;
- }
- if ($date_start_book) {
- $criteria->addCond('order_time','>=',$date_start_book);
- }
- if ($date_end_book) {
- $criteria->addCond('order_time','<=',$date_end_book);
- }
- $cursor = POrder::model()->findAll($criteria);
- $total = $cursor->count();
- $rows = CommonFn::getRowsFromCursor($cursor);
- $parsedRows = POrder::model()->parse($rows);
- echo CommonFn::composeDatagridData($parsedRows, $total);
- }
- public function actionEdit() {
- $porder_id = Yii::app()->request->getParam('porder_id','');//订单号
- $in_room_time = Yii::app()->request->getParam('in_room_time','');//进房时间
- $out_room_time = Yii::app()->request->getParam('out_room_time','');//出房时间
- $order_time = Yii::app()->request->getParam('edit_order_time','');//下单时间
- $package = Yii::app()->request->getParam('package','');//服务标准
- $service_employer = Yii::app()->request->getParam('service_employer','');//服务人员
- $status = Yii::app()->request->getParam('status_edit','');//状态
- if (empty($service_employer)) {
- CommonFn::requestAjax(false, '服务人员信息不存在');exit;
- } else {
- $criteria = new EMongoCriteria();
- $criteria->user_name('==',$service_employer);
- $employer = Employe::model()->find($criteria);
- if (empty($employer)) {
- CommonFn::requestAjax(false, '服务人员信息不存在');exit;
- }
- }
- if (!CommonFn::isMongoId($porder_id)) {
- CommonFn::requestAjax(false, 'porder_id_is_exits');exit;
- }
- $porder = POrder::get(new MongoId($porder_id));
- if (!empty($in_room_time)) {
- $porder->in_room_time = intval($in_room_time);
- }
- if (!empty($out_room_time)) {
- $porder->out_room_time = intval($out_room_time);
- }
- if (!empty($order_time)) {
- $porder->order_time = intval($order_time);
- }
- $porder->service_standards = intval($package);
- $porder->service_employer = $employer->_id;
- if (intval($status) != 100) {
- $porder->status = intval($status);
- } else {
- CommonFn::requestAjax(false, '请选择正确状态');exit;
- }
- $result = $porder->save();
- CommonFn::requestAjax($result, '修改成功');exit;
- }
- public function actionAdd () {
- $order_time = Yii::app()->request->getParam('order_time','');
- $floor = Yii::app()->request->getParam('floor','');
- $room = Yii::app()->request->getParam('room','');
- $service_employer = Yii::app()->request->getParam('service_employer','');
- $package = Yii::app()->request->getParam('package','');
- $order = new POrder();
- $criteria = new EMongoCriteria();
- $criteria->user_name('==',$service_employer);
- $userInfo = Employe::model()->find($criteria);
- //获取服务人员信息
- if ($userInfo) {
- $order->service_employer = $userInfo->_id;//服务人员Id
- } else {
- CommonFn::requestAjax(false, '服务人员信息不存在');exit;
- }
- $order->order_time = intval($order_time);//服务日期
- $order->address['floor'] = $floor;//楼号
- $order->address['room'] = $room;//房号
- $order->service_standards = $package;//服务标准
- $order->status = 0;//已派单
- $order->in_room_time = 0;
- $order->out_room_time = 0;
- $result = $order->save();
- CommonFn::requestAjax($result, '', array());
- }
- // 根据手机号 获取对应用户的地址信息
- public function actionGetUserInfo(){
- $user_name = Yii::app()->request->getParam('user_name', '');
- $criteria = new EMongoCriteria();
- $criteria->addCond('user_name', 'or', new MongoRegex('/'.$user_name.'/'));
- $criteria->addCond('auth','==',6);
- $userInfos = Employe::model()->findAll($criteria);
- $result = array();
- $index = 0;
- foreach ($userInfos as $k => $v) {
- $result[] = array(
- 'id' => $index++,
- 'data' => $v->user_name,
- 'description' => $v->mobile,
- );
- }
- echo json_encode($result);exit;
- }
- public function actionAddComplaintsInfo()
- {
- $order_id = Yii::app()->request->getParam('id','');
- $user_name = Yii::app()->request->getParam('user_name','');
- $c_info = Yii::app()->request->getParam('c_info','');
- $desc = Yii::app()->request->getParam('desc','');
- if (!CommonFn::isMongoId($order_id)) {
- CommonFn::requestAjax(false, 'id_not_exits');exit;
- }
- $porder = POrder::get(new MongoId($order_id));
- $complaints = new Complaints();
- $complaints->com_time = time();
- $complaints->address = $porder->address;
- $complaints->user_name = $user_name;
- $complaints->p_id = $order_id;
- $complaints->c_info = $c_info;
- $complaints->employer = Employe::get(new MOngoId($porder->service_employer))->user_name;
- $complaints->desc = $desc;
- $res = $complaints->save();
- if ($res) {
- CommonFn::requestAjax(true, '保存成功');exit;
- } else {
- CommonFn::requestAjax(true, '保存失败');exit;
- }
- }
- public function actionOutputExcel()
- {
- //$beginYesterday=mktime(0,0,0,date('m')-1,1,date('Y'));
- //$endYesterday=mktime(0,0,0,date('m'),1,date('Y'))-1;
- $beginYesterday = Yii::app()->request->getParam('export_start_book').' 00:00:00';
- $endYesterday = Yii::app()->request->getParam('export_end_book').' 23:59:59';
- $name="$beginYesterday-$endYesterday 出房记录汇总 ";
- $beginYesterday = strtotime($beginYesterday);
- $endYesterday = strtotime($endYesterday);
- $criteria = new EMongoCriteria();
- //$criteria->booking_time('>=',$beginYesterday);//开始时间
- //$criteria->booking_time('<=',$endYesterday);//结束时间
- $criteria->auth('==',6);
- $employes = Employe::model()->findAll($criteria);
- $data = array();
- $i = 0;
- foreach ($employes as $k => $v) {
- $criteria = new EMongoCriteria();
- $criteria->order_time('>=',$beginYesterday);//开始时间
- $criteria->order_time('<=',$endYesterday);//结束时间
- $criteria->service_employer('==',new MOngoId($v->_id));//结束时间
- $p_orders = POrder::model()->findAll($criteria);
- foreach ($p_orders as $order ) {
- $times = 0;
- if ($order->out_room_time != 0 && $order->in_room_time != 0)
- $times = ($order->out_room_time - $order->in_room_time)/3600;//小时
- $data[$i]['out_room_time'] = $order->out_room_time?date('Y-m-d H:i:s',$order->out_room_time):'暂未完成';
- $data[$i]['in_room_time'] = date('Y-m-d H:i:s',$order->in_room_time);
- $data[$i]['time'] = $times;//工作时长
- $data[$i]['order_time'] = date('Y-m-d H:i:s',$order->order_time);
- $data[$i]['user_name'] = $v->user_name;//人员
- $data[$i]['service_standards'] = POrder::$standards_options[intval($order->service_standards)]['name'];//服务内容
- $data[$i]['status'] = POrder::$status_options[intval($order->status)]['name'];//订单状态 防止有人不点 sb
- $data[$i]['floor'] = $order->address['floor'];
- $data[$i++]['room'] = $order->address['room'];
- }
- }
- $res=Service::factory('ExcelToArrayService')->push($data,$name,'porder');
- echo "导出成功";
- }
- public function actionOutputExcel1()
- {
- $beginYesterday = Yii::app()->request->getParam('export_start_book').' 00:00:00';
- $endYesterday = Yii::app()->request->getParam('export_end_book').' 23:59:59';
- $name="$beginYesterday-$endYesterday 服务明细汇总";
- $beginYesterday = strtotime(Yii::app()->request->getParam('export_start_book').' 00:00:00');
- $endYesterday = strtotime(Yii::app()->request->getParam('export_end_book').' 23:59:59');
- $criteria = new EMongoCriteria();
- $criteria->order_time('>=',$beginYesterday);//开始时间
- $criteria->order_time('<=',$endYesterday);//结束时间
- $p_orders = POrder::model()->findAll($criteria);
- $i =0;
- $data = array();
- $address = array();
- foreach ($p_orders as $k => $order ) {
- $times = 0;
- $floor = intval($order->address['floor']);
- $room = intval($order->address['room']);
- //判断地址是否重复
- if (!in_array($floor.'-'.$room,$address)) {
- $address[] = $floor.'-'.$room;//不重复加入数组 然后计算 这个地址被服务过的总数和时长
- $data[$i]['floor'] = $floor;
- $data[$i]['room'] = $room;
- $data[$i]['total'] =0;
- $data[$i]['times'] =0;
- //计算 一个房间的数据
- $tmp = POrder::model()->findAll($criteria);
- foreach ($tmp as $k => $v) {
- if (intval($floor) == intval($v->address['floor']) && intval($room) == intval($v->address['room'])) {
- $data[$i]['total'] += 1;
- if (!empty($v->out_room_time) && !empty($v->in_room_time))//只有当进房时间和出房时间都不为空时计算时长
- $times = ($v->out_room_time - $v->in_room_time)/3600;//小时
- $data[$i]['times'] += $times;
- }
- }
- $i++;
- }
- }
- $res=Service::factory('ExcelToArrayService')->push($data,$name,'total');
- echo "导出成功";
- }
- public function actionImportExcel()
- {
- $back = Yii::app()->request->urlReferrer;
- $url = Yii::app()->request->getParam('url','');
- $res=Service::factory('ImportExcelService')->push($url);
- $this->redirect($back);
- }
- }
|