POrderController.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346
  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. if (!empty($order_time)) {
  82. $porder->order_time = intval($order_time);
  83. }
  84. $porder->service_standards = intval($package);
  85. $porder->service_employer = $employer->_id;
  86. if (intval($status) != 100) {
  87. $porder->status = intval($status);
  88. } else {
  89. CommonFn::requestAjax(false, '请选择正确状态');exit;
  90. }
  91. $result = $porder->save();
  92. CommonFn::requestAjax($result, '修改成功');exit;
  93. }
  94. public function actionAdd () {
  95. $order_time = Yii::app()->request->getParam('order_time','');
  96. $floor = Yii::app()->request->getParam('floor','');
  97. $room = Yii::app()->request->getParam('room','');
  98. $service_employer = Yii::app()->request->getParam('service_employer','');
  99. $package = Yii::app()->request->getParam('package','');
  100. $order = new POrder();
  101. $criteria = new EMongoCriteria();
  102. $criteria->user_name('==',$service_employer);
  103. $userInfo = Employe::model()->find($criteria);
  104. //获取服务人员信息
  105. if ($userInfo) {
  106. $order->service_employer = $userInfo->_id;//服务人员Id
  107. } else {
  108. CommonFn::requestAjax(false, '服务人员信息不存在');exit;
  109. }
  110. $order->order_time = intval($order_time);//服务日期
  111. $order->address['floor'] = $floor;//楼号
  112. $order->address['room'] = $room;//房号
  113. $order->service_standards = $package;//服务标准
  114. $order->status = 0;//已派单
  115. $order->in_room_time = 0;
  116. $order->out_room_time = 0;
  117. $result = $order->save();
  118. CommonFn::requestAjax($result, '', array());
  119. }
  120. // 根据手机号 获取对应用户的地址信息
  121. public function actionGetUserInfo(){
  122. $user_name = Yii::app()->request->getParam('user_name', '');
  123. $criteria = new EMongoCriteria();
  124. $criteria->addCond('user_name', 'or', new MongoRegex('/'.$user_name.'/'));
  125. $criteria->addCond('auth','==',6);
  126. $userInfos = Employe::model()->findAll($criteria);
  127. $result = array();
  128. $index = 0;
  129. foreach ($userInfos as $k => $v) {
  130. $result[] = array(
  131. 'id' => $index++,
  132. 'data' => $v->user_name,
  133. 'description' => $v->mobile,
  134. );
  135. }
  136. echo json_encode($result);exit;
  137. }
  138. public function actionAddComplaintsInfo()
  139. {
  140. $order_id = Yii::app()->request->getParam('id','');
  141. $user_name = Yii::app()->request->getParam('user_name','');
  142. $c_info = Yii::app()->request->getParam('c_info','');
  143. $desc = Yii::app()->request->getParam('desc','');
  144. if (!CommonFn::isMongoId($order_id)) {
  145. CommonFn::requestAjax(false, 'id_not_exits');exit;
  146. }
  147. $porder = POrder::get(new MongoId($order_id));
  148. $complaints = new Complaints();
  149. $complaints->com_time = time();
  150. $complaints->address = $porder->address;
  151. $complaints->user_name = $user_name;
  152. $complaints->p_id = $order_id;
  153. $complaints->c_info = $c_info;
  154. $complaints->employer = Employe::get(new MOngoId($porder->service_employer))->user_name;
  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. $beginYesterday = Yii::app()->request->getParam('export_start_book').' 00:00:00';
  168. $endYesterday = Yii::app()->request->getParam('export_end_book').' 23:59:59';
  169. $name="$beginYesterday-$endYesterday 出房记录汇总 ";
  170. $beginYesterday = strtotime($beginYesterday);
  171. $endYesterday = strtotime($endYesterday);
  172. $criteria = new EMongoCriteria();
  173. //$criteria->booking_time('>=',$beginYesterday);//开始时间
  174. //$criteria->booking_time('<=',$endYesterday);//结束时间
  175. $criteria->auth('==',6);
  176. $employes = Employe::model()->findAll($criteria);
  177. $data = array();
  178. $i = 0;
  179. foreach ($employes as $k => $v) {
  180. $criteria = new EMongoCriteria();
  181. $criteria->order_time('>=',$beginYesterday);//开始时间
  182. $criteria->order_time('<=',$endYesterday);//结束时间
  183. $criteria->service_employer('==',new MOngoId($v->_id));//结束时间
  184. $p_orders = POrder::model()->findAll($criteria);
  185. foreach ($p_orders as $order ) {
  186. $times = 0;
  187. if ($order->out_room_time != 0 && $order->in_room_time != 0)
  188. $times = ($order->out_room_time - $order->in_room_time)/3600;//小时
  189. $data[$i]['out_room_time'] = $order->out_room_time?date('Y-m-d H:i:s',$order->out_room_time):'暂未完成';
  190. $data[$i]['in_room_time'] = date('Y-m-d H:i:s',$order->in_room_time);
  191. $data[$i]['time'] = $times;//工作时长
  192. $data[$i]['order_time'] = date('Y-m-d H:i:s',$order->order_time);
  193. $data[$i]['user_name'] = $v->user_name;//人员
  194. $data[$i]['service_standards'] = POrder::$standards_options[intval($order->service_standards)]['name'];//服务内容
  195. $data[$i]['status'] = POrder::$status_options[intval($order->status)]['name'];//订单状态 防止有人不点 sb
  196. $data[$i]['floor'] = $order->address['floor'];
  197. $data[$i++]['room'] = $order->address['room'];
  198. }
  199. }
  200. $res=Service::factory('ExcelToArrayService')->push($data,$name,'porder');
  201. echo "导出成功";
  202. }
  203. public function actionOutputExcel1()
  204. {
  205. $beginYesterday = Yii::app()->request->getParam('export_start_book').' 00:00:00';
  206. $endYesterday = Yii::app()->request->getParam('export_end_book').' 23:59:59';
  207. $name="$beginYesterday-$endYesterday 服务明细汇总";
  208. $beginYesterday = strtotime(Yii::app()->request->getParam('export_start_book').' 00:00:00');
  209. $endYesterday = strtotime(Yii::app()->request->getParam('export_end_book').' 23:59:59');
  210. $criteria = new EMongoCriteria();
  211. $criteria->order_time('>=',$beginYesterday);//开始时间
  212. $criteria->order_time('<=',$endYesterday);//结束时间
  213. $p_orders = POrder::model()->findAll($criteria);
  214. $i =0;
  215. $data = array();
  216. $address = array();
  217. foreach ($p_orders as $k => $order ) {
  218. $times = 0;
  219. $floor = intval($order->address['floor']);
  220. $room = intval($order->address['room']);
  221. //判断地址是否重复
  222. if (!in_array($floor.'-'.$room,$address)) {
  223. $address[] = $floor.'-'.$room;//不重复加入数组 然后计算 这个地址被服务过的总数和时长
  224. $data[$i]['floor'] = $floor;
  225. $data[$i]['room'] = $room;
  226. $data[$i]['total'] =0;
  227. $data[$i]['times'] =0;
  228. //计算 一个房间的数据
  229. $tmp = POrder::model()->findAll($criteria);
  230. foreach ($tmp as $k => $v) {
  231. if (intval($floor) == intval($v->address['floor']) && intval($room) == intval($v->address['room'])) {
  232. $data[$i]['total'] += 1;
  233. if (!empty($v->out_room_time) && !empty($v->in_room_time))//只有当进房时间和出房时间都不为空时计算时长
  234. $times = ($v->out_room_time - $v->in_room_time)/3600;//小时
  235. $data[$i]['times'] += $times;
  236. }
  237. }
  238. $i++;
  239. }
  240. }
  241. $res=Service::factory('ExcelToArrayService')->push($data,$name,'total');
  242. echo "导出成功";
  243. }
  244. public function actionImportExcel()
  245. {
  246. $excelFile = __DIR__.'/1.xlsx';//获取文件名
  247. Yii::$enableIncludePath = false;
  248. Yii::import('application.extensions.PHPExcel.PHPExcel', 1);
  249. $phpexcel = new PHPExcel;
  250. $excelReader = PHPExcel_IOFactory::createReader('Excel2007');
  251. $phpexcel = $excelReader->load($excelFile)->getSheet(0);//载入文件并获取第一个sheet
  252. $total_line = $phpexcel->getHighestRow();
  253. $total_column = $phpexcel->getHighestColumn();
  254. for ($row = 2; $row <= $total_line; $row++) {
  255. $data = array();
  256. for ($column = 'A'; $column <= $total_column; $column++) {
  257. $data[] = trim($phpexcel->getCell($column . $row)->getValue());
  258. }
  259. var_dump($data);
  260. echo '<br/>';
  261. $order = new POrder();
  262. $criteria = new EMongoCriteria();
  263. $criteria->user_name('==',$service_employer);
  264. $userInfo = Employe::model()->find($criteria);
  265. //获取服务人员信息
  266. if ($userInfo) {
  267. $order->service_employer = $userInfo->_id;//服务人员Id
  268. } else {
  269. CommonFn::requestAjax(false, '服务人员信息不存在');exit;
  270. }
  271. $order->order_time = intval($order_time);//服务日期
  272. $order->address['floor'] = $floor;//楼号
  273. $order->address['room'] = $room;//房号
  274. $order->service_standards = $package;//服务标准
  275. $order->status = 0;//已派单
  276. $order->in_room_time = 0;
  277. $order->out_room_time = 0;
  278. $result = $order->save();
  279. }
  280. }
  281. }