param(); //预处理奖励数据 $l_r = new recuitlogic(); $l_r->oprrecuitaward(); $l_check = new checkmanger(); $r_list = $l_check->getsumcheckinfo($queryinfo); if (empty($r_list)) { $res_r['code'] = 0; $res_r['errmsg'] = '无汇总数据'; } else { $res_r['code'] = 200; $res_r['resultData'] = $r_list; } return json_encode($res_r, 320); } /* * 20230215 * 统计本公司考勤 */ public function sumcompanymonthcheckinfo() { $queryinfo = request()->param(); //预处理奖励数据 $l_r = new recuitlogic(); $l_r->oprrecuitaward(); $l_check = new checkmanger(); $r_list = $l_check->getsumcompanycheckinfo($queryinfo); if (empty($r_list)) { $res_r['code'] = 0; $res_r['errmsg'] = '无汇总数据'; } else { $res_r['code'] = 200; $res_r['resultData'] = $r_list; } return json_encode($res_r, 320); } /* * 考勤汇总信息导出execl * 20200210 * steelxu * 20203005 * 加身份证号 */ // public function outtoexecl() { //获取传入参数 $queryinfo = $queryinfo = request()->param(); //预处理奖励数据 $l_r = new recuitlogic(); $l_r->oprrecuitaward(); $month = $queryinfo['monthinfo']; $year = $queryinfo['yearinfo']; //获取数据 $l_check = new checkmanger(); $r_list = $l_check->getsumcheckinfo($queryinfo); //获取当用天数 $daysofm = date('t', strtotime($year . '-' . $month . '-1')); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '姓名') ->setCellValue('C1', '记工天数') ->setCellValue('D1', '当月计分') ->setCellValue('E1', '身份证号'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar . '1', $columnname); } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar . '1', '推荐奖励'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 for ($i = 0; $i < count($r_list); $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $r_list[$i]['wid']); //ID $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $r_list[$i]['wname']); //名称 $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $r_list[$i]['daycount']); //说明 $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $r_list[$i]['monthsum']); //说明 $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), "'" . $r_list[$i]['sfz']); //说明 for ($j = 1; $j <= $daysofm; $j++) { $fname = strval($j); if (strlen($fname) < 2) { $fname = '0' . $fname; } //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($i + 2), (array_key_exists($fname, $r_list[$i]) ? $r_list[$i][$fname] : '-')); //说明 } $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($i + 2), $r_list[$i]['sumaward']); //说明 } //7.设置保存的Excel表格名称 $filename = $year . '年' . $month . '月考勤统计表' . date('ymd', time()) . '.xls'; //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle('考勤信息' . $year . '年' . $month . '月'); //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } /* * 20230215 */ public function outcompanytoexecl() { //获取传入参数 $queryinfo = $queryinfo = request()->param(); //预处理奖励数据 $l_r = new recuitlogic(); $l_r->oprrecuitaward(); $month = $queryinfo['monthinfo']; $year = $queryinfo['yearinfo']; $cid = $queryinfo['companyid']; //获取数据 $l_check = new checkmanger(); $r_list = $l_check->getsumcompanycheckinfo($queryinfo); //获取当用天数 $daysofm = date('t', strtotime($year . '-' . $month . '-1')); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', 'ID') ->setCellValue('B1', '姓名') ->setCellValue('C1', '记工天数') ->setCellValue('D1', '当月计分') ->setCellValue('E1', '身份证号'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar . '1', $columnname); } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar . '1', '推荐奖励'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 for ($i = 0; $i < count($r_list); $i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($i + 2), $r_list[$i]['wid']); //ID $objPHPExcel->getActiveSheet()->setCellValue('B' . ($i + 2), $r_list[$i]['wname']); //名称 $objPHPExcel->getActiveSheet()->setCellValue('C' . ($i + 2), $r_list[$i]['daycount']); //说明 $objPHPExcel->getActiveSheet()->setCellValue('D' . ($i + 2), $r_list[$i]['monthsum']); //说明 if (array_key_exists('sfz', $r_list[$i])) { $objPHPExcel->getActiveSheet()->setCellValue('E' . ($i + 2), "'" . $r_list[$i]['sfz']); //说明 } for ($j = 1; $j <= $daysofm; $j++) { $fname = strval($j); if (strlen($fname) < 2) { $fname = '0' . $fname; } //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($i + 2), (array_key_exists($fname, $r_list[$i]) ? $r_list[$i][$fname] : '-')); //说明 } $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($i + 2), $r_list[$i]['sumaward']); //说明 } //7.设置保存的Excel表格名称 $filename = $year . '年' . $month . '月考勤统计表' . date('ymd', time()) . '.xls'; //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle('考勤信息' . $year . '年' . $month . '月'); //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } /* * 20200307 * 做一个加班请求 */ public function queryworkovertime() { $queryinfo = request()->param(); $pagenum = $queryinfo['pageNum']; $pagesize = $queryinfo['pageSize']; $l_check = new checkmanger(); $rlist = $l_check->getworkovertime($pagenum, $pagesize); return json_encode($this->stdout($rlist), 320); } /* * * 20230215 * 修改请求加班记录的功能 * 只能请求本公司的数据 */ public function querycompanyworkovertime() { $queryinfo = request()->param(); $pagenum = $queryinfo['pageNum']; $pagesize = $queryinfo['pageSize']; $cid = $queryinfo['companyid']; $l_check = new checkmanger(); $rlist = $l_check->getworkovertimebycid($pagenum, $pagesize, $cid); return json_encode($this->stdout($rlist), 320); } /* * 20200310 * 请求各合同下各班组的月度统计 */ public function queryglistmonthsum() { $queryinfo = request()->param(); $l_contact = new contactlogic(); $gsumlist = $l_contact->getgroupsumbycid($queryinfo); // print_r($gsumlist); // var_dump($gsumlist); // if (array_key_exists('0',$gsumlist)){ // $r_list=$gsumlist[0]->data; // }else{ // $r_list=$gsumlist; // } // var_dump($r_list); return json_encode($this->stdout($gsumlist), 320); } /* * 20200316 * w合同下班组统计,到个人 * getworkersumbycid */ public function querywlistsummonth() { $queryinfo = request()->param(); $l_contact = new contactlogic(); $gsumlist = $l_contact->getworkersumbycid($queryinfo); return json_encode($this->stdout($gsumlist), 320); } /* * 20200318 * 导出按合同汇总考勤数据 */ public function workersumtoexecl() { //获取数据 $queryinfo = request()->param(); $yearinfo = $queryinfo['yearinfo']; $monthinfo = $queryinfo['monthinfo']; $cname = $queryinfo['cname']; $l_contact = new contactlogic(); //获取当用天数 $daysofm = date('t', strtotime($yearinfo . '-' . $monthinfo . '-1')); $gsumlist = $l_contact->getworkersumbycid($queryinfo); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex(0); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '班组/工人') ->setCellValue('B1', '当月总记分'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 2); $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar . '1', $columnname); } //设置A列水平居中 $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(20); $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 $rowindex = 0; for ($i = 0; $i < count($gsumlist); $i++) { //班组汇总信息 $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $gsumlist[$i]['gname']); //ID $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['summonth']); //名称 for ($j = 1; $j <= $daysofm; $j++) { // for ($j=13; $j<=16;$j++){//测试临时 $daystr = strval($j); if (strlen($daystr) < 2) { $daystr = '0' . $daystr; } $fname = $yearinfo . '-' . $monthinfo . '-' . $daystr; //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 2); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists($fname, $gsumlist[$i]) ? $gsumlist[$i][$fname] : '-')); //说明 // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明 } $rowindex++; //行控制 //员工数据 for ($workerindex = 0; $workerindex < count($gsumlist[$i]['detail']); $workerindex++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['gname']); // $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['summonth']); // for ($j = 1; $j <= $daysofm; $j++) { $daystr = strval($j); if (strlen($daystr) < 2) { $daystr = '0' . $daystr; } $fname = $yearinfo . '-' . $monthinfo . '-' . $daystr; //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 2); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists($fname, $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex][$fname] : '-')); //说明 } $rowindex++; //行控制 } } //7.设置保存的Excel表格名称 $filename = $cname . '考勤汇总' . date('ymd', time()) . '.xls'; //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle($cname . '考勤汇总'); //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } /* * 20200320 * 自动导出所有的项目合同考勤,分页 * */ public function allworkersumtoexecl() { /* * 准备 */ //获取数据 $queryinfo = request()->param(); $yearinfo = $queryinfo['yearinfo']; $monthinfo = $queryinfo['monthinfo']; //获取所有导出的合同 $l_contact = new contactlogic(); $list_contact = $l_contact->getclist(); //获取当用天数 $daysofm = date('t', strtotime($yearinfo . '-' . $monthinfo . '-1')); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); $pageindex = 0; //初始化页数 /* * 循环处理所有合同 */ foreach ($list_contact as $contact) { $queryinfo['cid'] = $contact['id']; $cname = $contact['contactname']; //获取合同的数据 $gsumlist = $l_contact->getworkersumbycid($queryinfo); //4.激活当前的sheet表 if ($pageindex > 0) { $objPHPExcel->createSheet(); } $objPHPExcel->setActiveSheetIndex($pageindex); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex($pageindex) ->setCellValue('A1', '班组') ->setCellValue('B1', '总分') ->setCellValue('C1', '班组') ->setCellValue('D1', '工人') ->setCellValue('E1', '当月总记分'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', $columnname); // $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle($fcolumnchar)->getAlignment() // ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); // $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension($fcolumnchar)->setWidth(6); } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', '招工成本'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(11); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(10); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(13); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 $rowindex = 0; for ($i = 0; $i < count($gsumlist); $i++) { // //班组汇总信息 // // var_dump($gsumlist[$i]); // $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID // $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称 // for ($j=1; $j<=$daysofm;$j++){ // // for ($j=13; $j<=16;$j++){//测试临时 // $daystr=strval($j); // if (strlen($daystr)<2){ // $daystr='0'.$daystr; // } // $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr; // //$eecll=new \PHPExcel_Cell() // $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2); // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明 // // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明 // } // $rowindex++;//行控制 //员工数据 $firstworker = $rowindex + 2; $workercounts = count($gsumlist[$i]['detail']); for ($workerindex = 0; $workerindex < $workercounts; $workerindex++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('C' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('D' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['gname']); // $objPHPExcel->getActiveSheet()->setCellValue('E' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['summonth']); // for ($j = 1; $j <= $daysofm; $j++) { $daystr = strval($j); if (strlen($daystr) < 2) { $daystr = '0' . $daystr; } $fname = $yearinfo . '-' . $monthinfo . '-' . $daystr; //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 4); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists($fname, $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex][$fname] : '-')); //说明 } //招工成本处理 $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 5); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists('recuitcost', $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex]['recuitcost'] : '-')); $rowindex++; //行控制 } if ($workercounts > 0) { $endworker = $rowindex + 1; //最后一行 $objPHPExcel->getActiveSheet()->mergeCells('A' . $firstworker . ':A' . $endworker); $objPHPExcel->getActiveSheet()->getstyle('A' . $firstworker . ':A' . $endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->mergeCells('B' . $firstworker . ':B' . $endworker); $objPHPExcel->getActiveSheet()->getstyle('B' . $firstworker . ':B' . $endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->setCellValue('B' . $firstworker, $gsumlist[$i]['summonth']); } else { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), 0); $rowindex++; } } //8.设置当前激活的sheet表格名称; $objPHPExcel->getActiveSheet()->setTitle($cname . '考勤汇总'); $pageindex++; } //7.设置保存的Excel表格名称 $filename = '考勤汇总' . date('ymd', time()) . '.xls'; //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } /* * 20201029 * 自动导出所有的项目合同考勤,分页 * 并且合并成一个表 * 在allworkersumtoexecl()方法基础上修改 * * */ public function allworkersumuniontoexecl() { /* * 准备 */ //获取数据 $queryinfo = request()->param(); $yearinfo = $queryinfo['yearinfo']; $monthinfo = $queryinfo['monthinfo']; $strmonth = $yearinfo . '-' . $monthinfo; //获取所有导出的合同 $l_contact = new contactlogic(); $list_contact = $l_contact->getclist(); //获取当用天数 $daysofm = date('t', strtotime($yearinfo . '-' . $monthinfo . '-1')); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); $pageindex = 0; //初始化页数,后面不再循环 todo 去掉此变理 /* * 循环处理所有合同 */ $rowindex = 0; //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex($pageindex); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex($pageindex) ->setCellValue('A1', '合同') ->setCellValue('B1', '班组') ->setCellValue('C1', '总分') ->setCellValue('D1', '月度') ->setCellValue('E1', '工人') ->setCellValue('F1', '身份证') ->setCellValue('G1', '当月总记分'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 6); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', $columnname); } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 7); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', '招工成本'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置F列为文本列 $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat() ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT); // $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 foreach ($list_contact as $contact) { $queryinfo['cid'] = $contact['id']; $cname = $contact['contactname']; //获取合同的数据 $gsumlist = $l_contact->getworkersumbycid($queryinfo); for ($i = 0; $i < count($gsumlist); $i++) { $firstworker = $rowindex + 2; $workercounts = count($gsumlist[$i]['detail']); for ($workerindex = 0; $workerindex < $workercounts; $workerindex++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $cname); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('D' . ($rowindex + 2), $strmonth); $objPHPExcel->getActiveSheet()->setCellValue('E' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['gname']); // $objPHPExcel->getActiveSheet()->setCellValue('F' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['sfz']); // $objPHPExcel->getActiveSheet()->setCellValue('G' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['summonth']); // for ($j = 1; $j <= $daysofm; $j++) { $daystr = strval($j); if (strlen($daystr) < 2) { $daystr = '0' . $daystr; } $fname = $yearinfo . '-' . $monthinfo . '-' . $daystr; //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 6); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists($fname, $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex][$fname] : '-')); //说明 } //招工成本处理 $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 7); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists('recuitcost', $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex]['recuitcost'] : '-')); $rowindex++; //行控制 } if ($workercounts > 0) { $endworker = $rowindex + 1; //最后一行 //根据客户要求,不再分隔,20201106 // $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker); // $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); // $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker); // $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->mergeCells('C' . $firstworker . ':C' . $endworker); $objPHPExcel->getActiveSheet()->getstyle('C' . $firstworker . ':C' . $endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->setCellValue('C' . $firstworker, $gsumlist[$i]['summonth']); } else { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $cname); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('C' . ($rowindex + 2), 0); $rowindex++; } } //8.设置当前激活的sheet表格名称; // $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总'); // $pageindex++; } $objPHPExcel->getActiveSheet()->setTitle($strmonth . '考勤汇总'); //7.设置保存的Excel表格名称 $filename = '考勤汇总' . date('ymd', time()) . '.xls'; //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } /* * 20230215 * 获取本公司的项目合同汇总 */ public function companyworkersumuniontoexecl() { /* * 准备 */ //获取数据 $queryinfo = request()->param(); $yearinfo = $queryinfo['yearinfo']; $monthinfo = $queryinfo['monthinfo']; $cid = $queryinfo['companyid']; //公司id $strmonth = $yearinfo . '-' . $monthinfo; //获取所有导出的合同 $l_contact = new contactlogic(); $list_contact = $l_contact->getcompanyclist($cid); //获取当用天数 $daysofm = date('t', strtotime($yearinfo . '-' . $monthinfo . '-1')); //加载类库 vendor('PHPExcel.PHPExcel'); $objPHPExcel = new \PHPExcel(); $pageindex = 0; //初始化页数,后面不再循环 todo 去掉此变理 /* * 循环处理所有合同 */ $rowindex = 0; //4.激活当前的sheet表 $objPHPExcel->setActiveSheetIndex($pageindex); //5.设置表格头(即excel表格的第一行) $objPHPExcel->setActiveSheetIndex($pageindex) ->setCellValue('A1', '合同') ->setCellValue('B1', '班组') ->setCellValue('C1', '总分') ->setCellValue('D1', '月度') ->setCellValue('E1', '工人') ->setCellValue('F1', '身份证') ->setCellValue('G1', '当月总记分'); for ($j = 1; $j <= $daysofm; $j++) { $columnname = strval($j); if (strlen($columnname) < 2) { $columnname = '0' . $columnname; } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($j + 6); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', $columnname); } $fcolumnchar = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 7); $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar . '1', '招工成本'); //设置A列水平居中 $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置F列为文本列 $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat() ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT); // $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment() ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); //设置单元格宽度 $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18); $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13); //6.循环刚取出来的数组,将数据逐一添加到excel表格。 foreach ($list_contact as $contact) { $queryinfo['cid'] = $contact['id']; $cname = $contact['contactname']; //获取合同的数据 $gsumlist = $l_contact->getworkersumbycid($queryinfo); for ($i = 0; $i < count($gsumlist); $i++) { $firstworker = $rowindex + 2; $workercounts = count($gsumlist[$i]['detail']); for ($workerindex = 0; $workerindex < $workercounts; $workerindex++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $cname); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('D' . ($rowindex + 2), $strmonth); $objPHPExcel->getActiveSheet()->setCellValue('E' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['gname']); // $objPHPExcel->getActiveSheet()->setCellValue('F' . ($rowindex + 2), "'" . $gsumlist[$i]['detail'][$workerindex]['sfz']); // $objPHPExcel->getActiveSheet()->setCellValue('G' . ($rowindex + 2), $gsumlist[$i]['detail'][$workerindex]['summonth']); // for ($j = 1; $j <= $daysofm; $j++) { $daystr = strval($j); if (strlen($daystr) < 2) { $daystr = '0' . $daystr; } $fname = $yearinfo . '-' . $monthinfo . '-' . $daystr; //$eecll=new \PHPExcel_Cell() $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($j + 6); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists($fname, $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex][$fname] : '-')); //说明 } //招工成本处理 $fcolumnstr = \PHPExcel_Cell::stringFromColumnIndex($daysofm + 7); $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr . ($rowindex + 2), (array_key_exists('recuitcost', $gsumlist[$i]['detail'][$workerindex]) ? $gsumlist[$i]['detail'][$workerindex]['recuitcost'] : '-')); $rowindex++; //行控制 } if ($workercounts > 0) { $endworker = $rowindex + 1; //最后一行 //根据客户要求,不再分隔,20201106 // $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker); // $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); // $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker); // $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->mergeCells('C' . $firstworker . ':C' . $endworker); $objPHPExcel->getActiveSheet()->getstyle('C' . $firstworker . ':C' . $endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); $objPHPExcel->getActiveSheet()->setCellValue('C' . $firstworker, $gsumlist[$i]['summonth']); } else { $objPHPExcel->getActiveSheet()->setCellValue('A' . ($rowindex + 2), $cname); $objPHPExcel->getActiveSheet()->setCellValue('B' . ($rowindex + 2), $gsumlist[$i]['gname']); $objPHPExcel->getActiveSheet()->setCellValue('C' . ($rowindex + 2), 0); $rowindex++; } } //8.设置当前激活的sheet表格名称; // $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总'); // $pageindex++; } $objPHPExcel->getActiveSheet()->setTitle($strmonth . '考勤汇总'); //7.设置保存的Excel表格名称 $filename = '考勤汇总' . date('ymd', time()) . '.xls'; //9.设置浏览器窗口下载表格 header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header('Content-Disposition:inline;filename="' . $filename . '"'); //生成excel文件 $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); //下载文件在浏览器窗口 $objWriter->save('php://output'); //原代码没有返回 $res_r['code'] = 200; $res_r['resultData'] = $filename; return json_encode($res_r, 320); } }