getAllList($where,['*'],['id'=>'asc'],['buser','user','role','userOrgs','buserOrgs']); $new_list=[]; foreach($list as $v) { $data=[]; $data['bname']=$v['buser']['name']; $data['bnickname']=$v['buser']['nickname']; $borg=''; foreach($v['buser_orgs'] as $vv) { $borg.=$vv['org']['name'].'/'; } $data['borg']=$borg; $data['name']=$v['user']['name']; $data['nickname']=$v['user']['nickname']; $org=''; foreach($v['user_orgs'] as $vv) { $org.=$vv['org']['name'].'/'; } $data['org']=$org; $data['create_time']=$v['create_time']; $new_list[]=$data; } $title = $manage->name ."培训报名记录"; $exportField = ['报名人-用户名','报名人-昵称','报名人-部门','被报名人-用户名','被报名人-昵称','被报名人-部门','报名时间']; return $this->excelEnrollExport($title,$exportField,$new_list); } private function excelEnrollExport($title="",$headArr = [], $data = []) { $spreadsheet = new Spreadsheet(); $objPHPExcel = $spreadsheet->getActiveSheet(); $objPHPExcel->setTitle($title); $objPHPExcel->setCellValueByColumnAndRow(1, 1, $title); // 设置表头 $key = ord("A"); $objPHPExcel->mergeCells('A1:G1'); $objPHPExcel->setCellValue('A1', $title); $styleArray = [ 'alignment' => [ 'horizontal' => Alignment::HORIZONTAL_CENTER, //水平居中 'vertical' => Alignment::VERTICAL_CENTER, //垂直居中 ], ]; $objPHPExcel->getStyle('A1')->applyFromArray($styleArray); $objPHPExcel->getDefaultColumnDimension()->setWidth(16); $objPHPExcel->getRowDimension('1')->setRowHeight(30); $objPHPExcel->getColumnDimension('A')->setWidth(15); $objPHPExcel->getColumnDimension('B')->setWidth(15); $objPHPExcel->getColumnDimension('C')->setWidth(30); $objPHPExcel->getColumnDimension('D')->setWidth(30); $objPHPExcel->getColumnDimension('E')->setWidth(30); $objPHPExcel->getColumnDimension('F')->setWidth(30); $objPHPExcel->getColumnDimension('G')->setWidth(30); $objPHPExcel->getStyle('A1')->getFont()->setBold(true)->setName('黑体')->setSize(16); foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setCellValue($colum . '2', $v); $objPHPExcel->getStyle($colum . '2')->applyFromArray($styleArray)->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor() ->setARGB('aaaaaa'); $key += 1; } $column = 3; foreach ($data as $key => $row) { // 行写入 $objPHPExcel->setCellValue('A'.$column, $row['bname']); $objPHPExcel->setCellValue('B'.$column, $row['bnickname']); $objPHPExcel->setCellValue('C'.$column, $row['borg']); $objPHPExcel->setCellValue('D'.$column, $row['name']); $objPHPExcel->setCellValue('E'.$column, $row['nickname']); $objPHPExcel->setCellValue('F'.$column, $row['org']); $objPHPExcel->setCellValue('G'.$column, $row['create_time']); $column++; } $objPHPExcel->getStyle('A3:'.'G'.$column)->applyFromArray($styleArray); $writer = new Xlsx($spreadsheet); $path = public_path().'/excel/'.$title.'.xlsx'; $path2 = '/excel/'.$title.'.xlsx'; $writer->save($path); $url = "https://" . request()->host().':37100'; $res['url'] = $url.$path2; $res['name'] = $title; //删除临时的sheet $spreadsheet->disconnectWorksheets(); unset($spreadsheet); return $res; } public function exportSignList($id) { $manage = Manage::find($id); if(!$manage) { throw new ApiException('项目不存在'); } $sign = new Sign(); $where=[]; $where['m_id'] = $id; $list = $sign->getAllList($where,['*'],['id'=>'asc'],['user','role','userOrgs']); $new_list=[]; $sign_num=1; foreach($list as $v) { if(array_key_exists($v['admin_user_id'],$new_list)) { $new_list[$v['admin_user_id']]['sign_list'][]=date('Y-m-d H:i:s',$v['create_time']); if(count($new_list[$v['admin_user_id']]['sign_list']) > $sign_num) { $sign_num = count($new_list[$v['admin_user_id']]['sign_list']); } }else{ $data=[]; $data['name']=$v['user']['name']; $data['nickname']=$v['user']['nickname']; $org=''; foreach($v['user_orgs'] as $vv) { $org.=$vv['org']['name'].'/'; } $data['org']=$org; $data['sign_list']=[]; $data['sign_list'][]=$v['create_time']; $new_list[$v['admin_user_id']]=$data; } } $title = $manage->name ."培训签到记录"; $exportField = ['用户名','昵称','部门']; for($i=1;$i<=$sign_num;$i++) { $exportField[]='第'.$i.'次签到时间'; } return $this->excelSignExport($title,$exportField,$new_list,$sign_num); } private function excelSignExport($title="",$headArr = [], $data = [],$sign_num=1) { $spreadsheet = new Spreadsheet(); $objPHPExcel = $spreadsheet->getActiveSheet(); $objPHPExcel->setTitle($title); $objPHPExcel->setCellValueByColumnAndRow(1, 1, $title); // 设置表头 $ary=['D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP','AQ','AR','AS','AT','AU','AV','AW','AX','AY','AZ']; $key = ord("A"); $objPHPExcel->mergeCells('A1:'.$ary[$sign_num-1].'1'); $objPHPExcel->setCellValue('A1', $title); $styleArray = [ 'alignment' => [ 'horizontal' => Alignment::HORIZONTAL_CENTER, //水平居中 'vertical' => Alignment::VERTICAL_CENTER, //垂直居中 ], ]; $objPHPExcel->getStyle('A1')->applyFromArray($styleArray); $objPHPExcel->getDefaultColumnDimension()->setWidth(16); $objPHPExcel->getRowDimension('1')->setRowHeight(30); $objPHPExcel->getColumnDimension('A')->setWidth(15); $objPHPExcel->getColumnDimension('B')->setWidth(15); $objPHPExcel->getColumnDimension('C')->setWidth(30); for($i=0;$i<$sign_num;$i++) { $objPHPExcel->getColumnDimension($ary[$i])->setWidth(15); } $objPHPExcel->getStyle('A1')->getFont()->setBold(true)->setName('黑体')->setSize(16); foreach ($headArr as $v) { $colum = chr($key); $objPHPExcel->setCellValue($colum . '2', $v); $objPHPExcel->getStyle($colum . '2')->applyFromArray($styleArray)->getFill() ->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID) ->getStartColor() ->setARGB('aaaaaa'); $key += 1; } $column = 3; foreach ($data as $key => $row) { // 行写入 $objPHPExcel->setCellValue('A'.$column, $row['name']); $objPHPExcel->setCellValue('B'.$column, $row['nickname']); $objPHPExcel->setCellValue('C'.$column, $row['org']); foreach($row['sign_list'] as $kk=>$vv) { $objPHPExcel->setCellValue($ary[$kk].$column, $vv); } $column++; } $objPHPExcel->getStyle('A3:'.$ary[$sign_num-1].$column)->applyFromArray($styleArray); $writer = new Xlsx($spreadsheet); $path = public_path().'/excel/'.$title.'.xlsx'; $path2 = '/excel/'.$title.'.xlsx'; $writer->save($path); $url = "https://" . request()->host().':37100'; $res['url'] = $url.$path2; $res['name'] = $title; //删除临时的sheet $spreadsheet->disconnectWorksheets(); unset($spreadsheet); return $res; } /**获取签到记录 */ public function getSignList($data) { $m_id = $data['m_id']; $mobile = $data['mobile']; $sign_time = isset($data['sign_time'])?$data['sign_time']:[]; $where = []; $where[] = ['m_id', '=', $m_id]; if(!empty($sign_time)) { $where[] = ['create_time', '>', strtotime($sign_time[0])]; if(isset($sign_time[1])){ $where[] = ['create_time', '<', strtotime($sign_time[1])]; } } if($mobile) { $where[] = ['mobile', 'like', '%' . $mobile . '%']; } $sign = new Sign(); $list = $sign->getPaginateList($where, ['*'], ['id' => 'asc'], ['user','role','userOrgs'], 10); return dataReturn(0, 'success', $list); } /**获取报名记录 */ public function getEnrollList($data) { $m_id = $data['m_id']; $mobile = $data['mobile']; $enroll_time = isset($data['enroll_time'])?$data['enroll_time']:[]; $where = []; $where[] = ['m_id', '=', $m_id]; if(!empty($enroll_time)) { $where[] = ['create_time', '>', strtotime($enroll_time[0])]; if(isset($enroll_time[1])){ $where[] = ['create_time', '<', strtotime($enroll_time[1])]; } } $enroll = new Enroll(); $list = $enroll->getPaginateList($where, ['*'], ['id' => 'asc'], ['buser','user','role','buserOrgs','userOrgs'], 10); return dataReturn(0, 'success', $list); } /** * 列表 * @param $param * @return array */ public function getList($param) { $limit = $param['limit']; $unit = $param['unit']; $drawup = isset($param['drawup'])?$param['drawup']:''; $location = $param['location']; $where = []; if (!empty($name)) { $where[] = ['name', 'like', '%' . $name . '%']; } if($unit) { $where[] = ['unit', '=', $unit]; } if(!empty($drawup)) { $where[] = ['drawup', '>', $drawup[0]]; if(isset($drawup[1])){ $where[] = ['drawup', '<', $drawup[1]]; } } if($location) { $where[] = ['location', 'like', '%' . $location . '%']; } $where[] = ['org_id','in',getOrgSelfAndChildrenIdsById(get_current_org_id())]; $manage = new Manage(); $list = $manage->getPaginateList($where, ['*'], ['id' => 'asc'], ['org'], $limit); return dataReturn(0, 'success', $list); } /** * 添加 * @param $param */ public function store($param) { $manage = new Manage(); $org_id = $param['unit']; $org_info = getOrg($org_id); if($org_info['level'] == 2) { $param['company_org_id'] = $org_info['id']; $param['company_org_name'] = $org_info['name']; $param['company_org_deptcode'] = $org_info['deptcode']; }elseif($org_info['level'] == 3) { $param['project_org_id'] = $org_info['id']; $param['project_org_name'] = $org_info['name']; $param['project_org_deptcode'] = $org_info['deptcode']; if($org_info['pid']) { $company_org = getOrg($org_info['pid']); $param['company_org_id'] = $company_org['id']; $param['company_org_name'] = $company_org['name']; $param['company_org_deptcode'] = $company_org['deptcode']; } } $param['org_id'] = $org_info['id']; $param['org_name'] = $org_info['name']; $param['org_deptcode'] = $org_info['deptcode']; unset($param['writer_info']); $param['writer'] = isset($param['writer'])?implode(',', $param['writer']):''; $param['created_at'] = date('Y-m-d H:i:s'); $param['files'] = isset($param['files'])?json_encode($param['files']):''; $manage->insertOne($param); return dataReturn(0, '添加成功'); } /** * 编辑 * @param $param * @return array|\think\response\Json */ public function update($param) { $manage = new Manage(); $org_id = $param['unit']; $org_info = getOrg($org_id); if($org_info['level'] == 2) { $param['company_org_id'] = $org_info['id']; $param['company_org_name'] = $org_info['name']; $param['company_org_deptcode'] = $org_info['deptcode']; }elseif($org_info['level'] == 3) { $param['project_org_id'] = $org_info['id']; $param['project_org_name'] = $org_info['name']; $param['project_org_deptcode'] = $org_info['deptcode']; if($org_info['pid']) { $company_org = getOrg($org_info['pid']); $param['company_org_id'] = $company_org['id']; $param['company_org_name'] = $company_org['name']; $param['company_org_deptcode'] = $company_org['deptcode']; } } $param['org_id'] = $org_info['id']; $param['org_name'] = $org_info['name']; $param['org_deptcode'] = $org_info['deptcode']; unset($param['writer_info']); unset($param['org']); $param['files'] = json_encode($param['files']); $param['writer'] = isset($param['writer'])?implode(',', $param['writer']):''; $param['updated_at'] = date('Y-m-d H:i:s'); $manage->updateById($param, $param['id']); return dataReturn(0, '编辑成功'); } public function destroy($id){ $manage = new Manage(); $manage->delById($id); return dataReturn(0, '删除成功'); } }