POrderController.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: north
  5. * Date: 2017/8/31
  6. * Time: 上午10:00
  7. */
  8. class POrderController extends AdminController
  9. {
  10. public function actionIndex()
  11. {
  12. $status = CommonFn::getComboboxData(POrder::$status_options, 100, true,100);
  13. $package_product = CommonFn::getComboboxData(POrder::$standards_options, 1);
  14. $this->render('index', array(
  15. 'status' => $status,
  16. 'package_product'=> $package_product,
  17. ));
  18. }
  19. public function actionList(){
  20. $floor = Yii::app()->request->getParam('floor','');
  21. $room = Yii::app()->request->getParam('room','');
  22. $status = Yii::app()->request->getParam('status',100);
  23. $date_start_book = strtotime(Yii::app()->request->getParam('date_start_book',''));
  24. $date_end_book = strtotime(Yii::app()->request->getParam('date_end_book',''));
  25. $params = CommonFn::getPageParams();
  26. $criteria = new EMongoCriteria($params);
  27. if ($status != 100) {
  28. $criteria->status('==',intval($status));
  29. }
  30. if ($floor) {
  31. $criteria->addCond('address.floor','==',$floor);
  32. }
  33. if ($room) {
  34. $criteria->addCond('address.room','==',$room);
  35. }
  36. if ($date_end_book < $date_start_book) {
  37. $tmp = $date_end_book;
  38. $date_end_book = $date_start_book;
  39. $date_start_book = $tmp;
  40. }
  41. if ($date_start_book) {
  42. $criteria->addCond('order_time','>=',$date_start_book);
  43. }
  44. if ($date_end_book) {
  45. $criteria->addCond('order_time','<=',$date_end_book);
  46. }
  47. $cursor = POrder::model()->findAll($criteria);
  48. $total = $cursor->count();
  49. $rows = CommonFn::getRowsFromCursor($cursor);
  50. $parsedRows = POrder::model()->parse($rows);
  51. echo CommonFn::composeDatagridData($parsedRows, $total);
  52. }
  53. public function actionEdit() {
  54. $porder_id = Yii::app()->request->getParam('porder_id','');//订单号
  55. $in_room_time = Yii::app()->request->getParam('in_room_time','');//进房时间
  56. $out_room_time = Yii::app()->request->getParam('out_room_time','');//出房时间
  57. $order_time = Yii::app()->request->getParam('edit_order_time','');//下单时间
  58. $package = Yii::app()->request->getParam('package','');//服务标准
  59. $service_employer = Yii::app()->request->getParam('service_employer','');//服务人员
  60. $status = Yii::app()->request->getParam('status_edit','');//状态
  61. if (empty($service_employer)) {
  62. CommonFn::requestAjax(false, '服务人员信息不存在');exit;
  63. } else {
  64. $criteria = new EMongoCriteria();
  65. $criteria->user_name('==',$service_employer);
  66. $employer = Employe::model()->find($criteria);
  67. if (empty($employer)) {
  68. CommonFn::requestAjax(false, '服务人员信息不存在');exit;
  69. }
  70. }
  71. if (!CommonFn::isMongoId($porder_id)) {
  72. CommonFn::requestAjax(false, 'porder_id_is_exits');exit;
  73. }
  74. $porder = POrder::get(new MongoId($porder_id));
  75. if (!empty($in_room_time)) {
  76. $porder->in_room_time = intval($in_room_time);
  77. }
  78. if (!empty($out_room_time)) {
  79. $porder->out_room_time = intval($out_room_time);
  80. }
  81. $porder->order_time = intval($order_time);
  82. $porder->service_standards = intval($package);
  83. $porder->service_employer = $employer->_id;
  84. if (intval($status) != 100) {
  85. $porder->status = intval($status);
  86. } else {
  87. CommonFn::requestAjax(false, '请选择正确状态');exit;
  88. }
  89. $result = $porder->save();
  90. CommonFn::requestAjax($result, '修改成功');exit;
  91. }
  92. public function actionAdd () {
  93. $order_time = Yii::app()->request->getParam('order_time','');
  94. $floor = Yii::app()->request->getParam('floor','');
  95. $room = Yii::app()->request->getParam('room','');
  96. $service_employer = Yii::app()->request->getParam('service_employer','');
  97. $package = Yii::app()->request->getParam('package','');
  98. $order = new POrder();
  99. $criteria = new EMongoCriteria();
  100. $criteria->user_name('==',$service_employer);
  101. $userInfo = Employe::model()->find($criteria);
  102. //获取服务人员信息
  103. if ($userInfo) {
  104. $order->service_employer = $userInfo->_id;//服务人员Id
  105. } else {
  106. CommonFn::requestAjax(false, '服务人员信息不存在');exit;
  107. }
  108. $order->order_time = strtotime($order_time);//服务日期
  109. $order->address['floor'] = $floor;//楼号
  110. $order->address['room'] = $room;//房号
  111. $order->service_standards = $package;//服务标准
  112. $order->status = 0;//已派单
  113. $order->in_room_time = 0;
  114. $order->out_room_time = 0;
  115. $result = $order->save();
  116. CommonFn::requestAjax($result, '', array());
  117. }
  118. // 根据手机号 获取对应用户的地址信息
  119. public function actionGetUserInfo(){
  120. $user_name = Yii::app()->request->getParam('user_name', '');
  121. $criteria = new EMongoCriteria();
  122. $criteria->addCond('user_name', 'or', new MongoRegex('/'.$user_name.'/'));
  123. $criteria->addCond('auth','==',6);
  124. $userInfos = Employe::model()->findAll($criteria);
  125. $result = array();
  126. $index = 0;
  127. foreach ($userInfos as $k => $v) {
  128. $result[] = array(
  129. 'id' => $index++,
  130. 'data' => $v->user_name,
  131. 'description' => $v->mobile,
  132. );
  133. }
  134. echo json_encode($result);exit;
  135. }
  136. public function actionAddComplaintsInfo()
  137. {
  138. $order_id = Yii::app()->request->getParam('id','');
  139. $user_name = Yii::app()->request->getParam('user_name','');
  140. $result = Yii::app()->request->getParam('result','');
  141. $feedback = Yii::app()->request->getParam('feedback','');
  142. $desc = Yii::app()->request->getParam('desc','');
  143. if (!CommonFn::isMongoId($order_id)) {
  144. CommonFn::requestAjax(false, 'id_not_exits');exit;
  145. }
  146. $porder = POrder::get(new MongoId($order_id));
  147. $complaints = new Complaints();
  148. $complaints->com_time = $porder->order_time;
  149. $complaints->address = $porder->address;
  150. $complaints->user_name = $user_name;
  151. $complaints->p_id = $order_id;
  152. $complaints->employer = Employe::get(new MOngoId($porder->service_employer))->user_name;
  153. $complaints->result = $result;
  154. $complaints->feedback = $feedback;
  155. $complaints->desc = $desc;
  156. $res = $complaints->save();
  157. if ($res) {
  158. CommonFn::requestAjax(true, '保存成功');exit;
  159. } else {
  160. CommonFn::requestAjax(true, '保存失败');exit;
  161. }
  162. }
  163. public function actionOutputExcel()
  164. {
  165. $beginYesterday=mktime(0,0,0,date('m')-1,1,date('Y'));
  166. $endYesterday=mktime(0,0,0,date('m'),1,date('Y'))-1;
  167. $name=date("Y-m",strtotime("-1 months",time())).'月考勤明细汇总';
  168. $criteria = new EMongoCriteria();
  169. //$criteria->booking_time('>=',$beginYesterday);//开始时间
  170. //$criteria->booking_time('<=',$endYesterday);//结束时间
  171. $criteria->auth('==',6);
  172. $employes = Employe::model()->findAll($criteria);
  173. $data = array();
  174. $i = 0;
  175. foreach ($employes as $k => $v) {
  176. $criteria = new EMongoCriteria();
  177. $criteria->order_time('>=',$beginYesterday);//开始时间
  178. $criteria->order_time('<=',$endYesterday);//结束时间
  179. $criteria->service_employer('==',new MOngoId($v->_id));//结束时间
  180. $p_orders = POrder::model()->findAll($criteria);
  181. foreach ($p_orders as $order ) {
  182. $times = 0;
  183. if ($order->out_room_time != 0 && $order->in_room_time != 0)
  184. $times = ($order->out_room_time - $order->in_room_time)/3600;//小时
  185. $data[$i]['out_room_time'] = $order->out_room_time?date('Y-m-d H:i:s',$order->out_room_time):'暂未完成';
  186. $data[$i]['in_room_time'] = date('Y-m-d H:i:s',$order->in_room_time);
  187. $data[$i]['time'] = $times;//工作时长
  188. $data[$i]['order_time'] = date('Y-m-d H:i:s',$order->order_time);
  189. $data[$i]['user_name'] = $v->user_name;//人员
  190. $data[$i]['service_standards'] = POrder::$standards_options[intval($order->service_standards)]['name'];//服务内容
  191. $data[$i]['status'] = POrder::$status_options[intval($order->status)]['name'];//订单状态 防止有人不点 sb
  192. $data[$i]['floor'] = $order->address['floor'];
  193. $data[$i++]['room'] = $order->address['room'];
  194. }
  195. }
  196. $res=Service::factory('ExcelToArrayService')->push($data,$name,'porder');
  197. echo "导出成功";
  198. }
  199. }