enterpriseId = $enterpriseId; $this->userCenterId = $userCenterId; parent::__construct($this->enterpriseId, $this->userCenterId); $this->obj = new DShopRostering('default'); $this->objDShopTemplate = new DShopTemplate('default'); $this->objStaff = new DStaff('default'); $this->obj->setTable('qianniao_shop_rostering_'.$enterpriseId); $this->objStaff->setTable('qianniao_staff_'.$enterpriseId); } /** * 列表 * @param $where * @return mixed */ public function list($where) { $limit = $where['limit']; unset($where['limit']); $offset = $where['offset']; unset($where['offset']); $file = ' a.*,b.staffName'; $sql = 'SELECT'.$file.' FROM qianniao_shop_rostering'.$this->enterpriseId.' AS a LEFT JOIN qianniao_staff_'.$this->enterpriseId.' AS b ON a.uid = b.userCenterId WHERE a.shop_id = '. $where['shop_id']; if(isset($where['nickname'])) { $sql .= ' AND b.staffName LIKE "%' . $where['nickname'] . '%"'; } if(isset($where['uid'])) { $sql .= ' AND a.uid = '.$where['uid']; } if(isset($where['time'])) { $time_field = ''; foreach ($where['time'] as $item) { $time_field .= '"'.$item.'",'; } $time_field = rtrim($time_field, ','); $sql .= ' AND a.time in ('.$time_field.')'; } $total = count((array) $this->obj->query($sql)); $sql .= ' ORDER BY createTime DESC LIMiT '.$offset.','.$limit; $dbResult = $this->obj->query($sql); if ($dbResult === false) { return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); } foreach ($dbResult as &$item) { $temsql = 'SELECT * FROM qianniao_shop_template WHERE id IN ('.$item['template_id'].')'; $item['template'] = $this->objDShopTemplate->query($temsql); } $return = [ 'data' => $dbResult, 'total' => ($total) ? intval($total) : 0, ]; if($return === false){ return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); }else{ return ResultWrapper::success($return); } } /** * 详情 * @param $where * @return mixed */ public function details($where) { if(empty($where)){ return ResultWrapper::success($where); } $dbResult = $this->obj->get($where); if(empty($dbResult)){ return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); } $temsql = 'SELECT * FROM qianniao_shop_template WHERE id IN ('.$dbResult['template_id'].')'; $dbResult['template'] = $this->objDShopTemplate->query($temsql); return ResultWrapper::success(self::formatInfo($dbResult)); } /** * Doc: (des="添加") * User: XMing * Date: 2020/7/15 * Time: 10:42 上午 * @throws Exception * @param array $params * @return ResultWrapper */ public function insert(array $params) { // $times = $params['times']; // unset($params['times']); // // $this->obj->beginTransaction(); $data = $this->obj->get(['uid' => $params['uid'], 'time' => $params['time']]); if ($data){ $res = $this->obj->update([ 'name' => $params['name'], 'template_id' => $params['template_id'], 'time' => $params['time'], 'time_slot' => $params['time_slot'], ], $data['id']); }else{ $res = $this->obj->insert($params); } if ($res){ $this->obj->commit(); return ResultWrapper::success('添加成功'); }else{ $this->obj->rollBack(); return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); } } public function update($params, $id) { $data = $this->obj->get($id); if (!$data){ return ResultWrapper::fail('数据不存在', ErrorCode::$dberror); } $dbResult = $this->obj->update($params,$id); if($dbResult === false){ return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); } return ResultWrapper::success('修改成功'); } public function select($where = null, $fields = '*', $order = null, $limit = null, $offset = null, $data = array(), $multiple = true, $isExport = false) { if (isset($where['export'])){ unset($where['export']); $data = $this->obj->select($where); foreach ($data as &$item) { $staff = $this->objStaff->get(['id' => $item['uid']]); $item['staffName'] = $staff['staffName']; $item['avatar'] = $staff['avatar']; $item['evaluate'] = $staff['evaluate']; $item['info'] = $staff['info']; } $this->Excel($data); exit; } $data = $this->obj->select($where, $fields, $order, $limit, $offset, $data, $multiple, $isExport); $count = $this->obj->count($where); if($data === false){ return ResultWrapper::success($data); }else{ foreach ($data as &$item) { $staff = $this->objStaff->get(['id' => $item['uid']]); $item['staffName'] = $staff['staffName']; $item['avatar'] = $staff['avatar']; $item['evaluate'] = $staff['evaluate']; $item['info'] = $staff['info']; $item['time_slot'] = json_decode($item['time_slot']); $item['clock'] = json_decode($item['clock']); } $return = [ 'data' => $data, 'total' => $count, ]; return ResultWrapper::success($return); } } /** * 导出 * @param $inventoryOutData * @return void * */ public function Excel($data) { //导出到本地 header("Content-type:application/vnd.ms-excel"); header("Content-Disposition:filename=考情记录.csv"); header('Cache-Control: max-age=0'); $fp = fopen('php://output', 'a'); $head = ['ID', '员工名称','排班日期','排班时间', '打卡记录']; //定义标题 foreach ($head as $i => $v) { $head[$i] = mb_convert_encoding($v, 'GBK', 'utf-8'); //将中文标题转换编码,否则乱码 } fputcsv($fp, $head); $limit = 10000; $num = 0;//计数器 foreach ($data as $value) {//循环数据 $num++; if ($num == $limit) { ob_flush();//释放内存 flush(); } $clockData = []; if (!empty($value['clock'])){ $clock = json_decode($value['clock']); foreach ($clock as $item) { $clockStr = ''; if ($item->timeResult == 'NotSigned') $clockStr = '未打卡'; if ($item->timeResult == 'Late') $clockStr = '迟到'; if ($item->timeResult == 'Early') $clockStr = '早退'; if ($item->timeResult == 'Normal') $clockStr = '正常'; $clockData[] = [ $item->baseCheckTime, $item->userCheckTime, $clockStr, ]; } } $rows['id'] = isset($value['id']) ? $value['id'] : null; // ID $rows['staffName'] = isset($value['staffName']) ? $value['staffName'] : null; // 员工名称 $rows['time'] = isset($value['time']) ? $value['time'] : null; $rows['time_slot'] = isset($value['time_slot']) ? $value['time_slot'] : null; $rows['clock'] = isset($value['clock']) ? json_encode($clockData) : '没有打卡记录'; foreach ($rows as $kk => $vv) { $rs[$kk] = mb_convert_encoding($vv, 'GBK', 'utf-8'); //转译编码 } fputcsv($fp, $rs); $rows = []; } } /** * 格式数据详情 * @param $data * @return mixed */ public function formatInfo($data) { return $data; } public function delete($id) { $res = $this->obj->delete(['id' => $id]); if ($res){ return ResultWrapper::success('删除成功'); } return ResultWrapper::fail($this->obj->error(), ErrorCode::$dberror); } }