Checkinfo.php 43 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/2/6
  6. * Time: 23:29
  7. */
  8. namespace app\index\controller;
  9. use app\index\logic\checkmanger;
  10. use app\index\logic\contactlogic;
  11. use app\index\logic\recuitlogic;
  12. use think\Controller;
  13. class Checkinfo extends Controller{
  14. /*
  15. * 20200302
  16. * steelxu
  17. * 标准输出检查找包
  18. * 测试成功后,再看是做到扩展的基础类,还是
  19. */
  20. public function stdout($arr){
  21. $res_r=array();
  22. if (empty($arr)){
  23. $res_r['code']=0;
  24. $res_r['msg']='无数据';
  25. }else{
  26. $res_r['code']=200;
  27. $res_r['resultData']=$arr;
  28. }
  29. return $res_r;
  30. }
  31. /*
  32. * web端获取按月按人统计出勤天数,出勤总分的接口
  33. * 20200206
  34. * steelxu
  35. */
  36. public function summonthcheckinfo(){
  37. $queryinfo=request() -> param();
  38. //预处理奖励数据
  39. $l_r=new recuitlogic();
  40. $l_r->oprrecuitaward();
  41. $l_check=new checkmanger();
  42. $r_list=$l_check->getsumcheckinfo($queryinfo);
  43. if (empty($r_list)){
  44. $res_r['code']=0;
  45. $res_r['errmsg']='无汇总数据';
  46. }else{
  47. $res_r['code']=200;
  48. $res_r['resultData']=$r_list;
  49. }
  50. return json_encode($res_r,320);
  51. }
  52. /*
  53. * 20230215
  54. * 统计本公司考勤
  55. */
  56. public function sumcompanymonthcheckinfo(){
  57. $queryinfo=request() -> param();
  58. //预处理奖励数据
  59. $l_r=new recuitlogic();
  60. $l_r->oprrecuitaward();
  61. $l_check=new checkmanger();
  62. $r_list=$l_check->getsumcompanycheckinfo($queryinfo);
  63. if (empty($r_list)){
  64. $res_r['code']=0;
  65. $res_r['errmsg']='无汇总数据';
  66. }else{
  67. $res_r['code']=200;
  68. $res_r['resultData']=$r_list;
  69. }
  70. return json_encode($res_r,320);
  71. }
  72. /*
  73. * 考勤汇总信息导出execl
  74. * 20200210
  75. * steelxu
  76. * 20203005
  77. * 加身份证号
  78. */
  79. //
  80. public function outtoexecl(){
  81. //获取传入参数
  82. $queryinfo=$queryinfo=request() -> param();
  83. //预处理奖励数据
  84. $l_r=new recuitlogic();
  85. $l_r->oprrecuitaward();
  86. $month=$queryinfo['monthinfo'];
  87. $year=$queryinfo['yearinfo'];
  88. //获取数据
  89. $l_check=new checkmanger();
  90. $r_list=$l_check->getsumcheckinfo($queryinfo);
  91. //获取当用天数
  92. $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
  93. //加载类库
  94. vendor('PHPExcel.PHPExcel');
  95. $objPHPExcel = new \PHPExcel();
  96. //4.激活当前的sheet表
  97. $objPHPExcel->setActiveSheetIndex(0);
  98. //5.设置表格头(即excel表格的第一行)
  99. $objPHPExcel->setActiveSheetIndex(0)
  100. ->setCellValue('A1', 'ID')
  101. ->setCellValue('B1', '姓名')
  102. ->setCellValue('C1', '记工天数')
  103. ->setCellValue('D1','当月计分')
  104. ->setCellValue('E1','身份证号');
  105. for ($j=1; $j<=$daysofm;$j++){
  106. $columnname=strval($j);
  107. if (strlen($columnname)<2){
  108. $columnname='0'.$columnname;
  109. }
  110. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  111. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
  112. }
  113. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  114. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1','推荐奖励');
  115. //设置A列水平居中
  116. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  117. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  118. //设置单元格宽度
  119. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
  120. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
  121. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
  122. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
  123. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
  124. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  125. for($i=0;$i<count($r_list);$i++){
  126. $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
  127. $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
  128. $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
  129. $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
  130. $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),"'".$r_list[$i]['sfz']);//说明
  131. for ($j=1; $j<=$daysofm;$j++){
  132. $fname=strval($j);
  133. if (strlen($fname)<2){
  134. $fname='0'.$fname;
  135. }
  136. //$eecll=new \PHPExcel_Cell()
  137. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  138. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
  139. }
  140. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  141. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),$r_list[$i]['sumaward']);//说明
  142. }
  143. //7.设置保存的Excel表格名称
  144. $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
  145. //8.设置当前激活的sheet表格名称;
  146. $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
  147. //9.设置浏览器窗口下载表格
  148. header("Content-Type: application/force-download");
  149. header("Content-Type: application/octet-stream");
  150. header("Content-Type: application/download");
  151. header('Content-Disposition:inline;filename="'.$filename.'"');
  152. //生成excel文件
  153. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  154. //下载文件在浏览器窗口
  155. $objWriter->save('php://output');
  156. //原代码没有返回
  157. $res_r['code']=200;
  158. $res_r['resultData']=$filename;
  159. return json_encode($res_r,320);
  160. }
  161. /*
  162. * 20230215
  163. */
  164. public function outcompanytoexecl(){
  165. //获取传入参数
  166. $queryinfo=$queryinfo=request() -> param();
  167. //预处理奖励数据
  168. $l_r=new recuitlogic();
  169. $l_r->oprrecuitaward();
  170. $month=$queryinfo['monthinfo'];
  171. $year=$queryinfo['yearinfo'];
  172. $cid=$queryinfo['companyid'];
  173. //获取数据
  174. $l_check=new checkmanger();
  175. $r_list=$l_check->getsumcompanycheckinfo($queryinfo);
  176. //获取当用天数
  177. $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
  178. //加载类库
  179. vendor('PHPExcel.PHPExcel');
  180. $objPHPExcel = new \PHPExcel();
  181. //4.激活当前的sheet表
  182. $objPHPExcel->setActiveSheetIndex(0);
  183. //5.设置表格头(即excel表格的第一行)
  184. $objPHPExcel->setActiveSheetIndex(0)
  185. ->setCellValue('A1', 'ID')
  186. ->setCellValue('B1', '姓名')
  187. ->setCellValue('C1', '记工天数')
  188. ->setCellValue('D1','当月计分')
  189. ->setCellValue('E1','身份证号');
  190. for ($j=1; $j<=$daysofm;$j++){
  191. $columnname=strval($j);
  192. if (strlen($columnname)<2){
  193. $columnname='0'.$columnname;
  194. }
  195. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  196. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
  197. }
  198. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  199. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1','推荐奖励');
  200. //设置A列水平居中
  201. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  202. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  203. //设置单元格宽度
  204. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
  205. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
  206. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
  207. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
  208. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(20);
  209. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  210. for($i=0;$i<count($r_list);$i++){
  211. $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
  212. $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
  213. $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
  214. $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
  215. if(array_key_exists('sfz',$r_list[$i])){
  216. $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),"'".$r_list[$i]['sfz']);//说明
  217. }
  218. for ($j=1; $j<=$daysofm;$j++){
  219. $fname=strval($j);
  220. if (strlen($fname)<2){
  221. $fname='0'.$fname;
  222. }
  223. //$eecll=new \PHPExcel_Cell()
  224. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  225. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
  226. }
  227. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  228. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),$r_list[$i]['sumaward']);//说明
  229. }
  230. //7.设置保存的Excel表格名称
  231. $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
  232. //8.设置当前激活的sheet表格名称;
  233. $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
  234. //9.设置浏览器窗口下载表格
  235. header("Content-Type: application/force-download");
  236. header("Content-Type: application/octet-stream");
  237. header("Content-Type: application/download");
  238. header('Content-Disposition:inline;filename="'.$filename.'"');
  239. //生成excel文件
  240. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  241. //下载文件在浏览器窗口
  242. $objWriter->save('php://output');
  243. //原代码没有返回
  244. $res_r['code']=200;
  245. $res_r['resultData']=$filename;
  246. return json_encode($res_r,320);
  247. }
  248. /*
  249. * 20200307
  250. * 做一个加班请求
  251. */
  252. public function queryworkovertime(){
  253. $queryinfo=request() -> param();
  254. $pagenum=$queryinfo['pageNum'];
  255. $pagesize=$queryinfo['pageSize'];
  256. $l_check=new checkmanger();
  257. $rlist=$l_check->getworkovertime($pagenum,$pagesize);
  258. return json_encode($this->stdout($rlist),320);
  259. }
  260. /*
  261. *
  262. * 20230215
  263. * 修改请求加班记录的功能
  264. * 只能请求本公司的数据
  265. */
  266. public function querycompanyworkovertime(){
  267. $queryinfo=request() -> param();
  268. $pagenum=$queryinfo['pageNum'];
  269. $pagesize=$queryinfo['pageSize'];
  270. $cid=$queryinfo['companyid'];
  271. $l_check=new checkmanger();
  272. $rlist=$l_check->getworkovertimebycid($pagenum,$pagesize,$cid);
  273. return json_encode($this->stdout($rlist),320);
  274. }
  275. /*
  276. * 20200310
  277. * 请求各合同下各班组的月度统计
  278. */
  279. public function queryglistmonthsum(){
  280. $queryinfo=request() -> param();
  281. $l_contact=new contactlogic();
  282. $gsumlist=$l_contact->getgroupsumbycid($queryinfo);
  283. // print_r($gsumlist);
  284. // var_dump($gsumlist);
  285. // if (array_key_exists('0',$gsumlist)){
  286. // $r_list=$gsumlist[0]->data;
  287. // }else{
  288. // $r_list=$gsumlist;
  289. // }
  290. // var_dump($r_list);
  291. return json_encode($this->stdout($gsumlist),320);
  292. }
  293. /*
  294. * 20200316
  295. * w合同下班组统计,到个人
  296. * getworkersumbycid
  297. */
  298. public function querywlistsummonth(){
  299. $queryinfo=request() -> param();
  300. $l_contact=new contactlogic();
  301. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  302. return json_encode($this->stdout($gsumlist),320);
  303. }
  304. /*
  305. * 20200318
  306. * 导出按合同汇总考勤数据
  307. */
  308. public function workersumtoexecl(){
  309. //获取数据
  310. $queryinfo=request() -> param();
  311. $yearinfo=$queryinfo['yearinfo'];
  312. $monthinfo=$queryinfo['monthinfo'];
  313. $cname=$queryinfo['cname'];
  314. $l_contact=new contactlogic();
  315. //获取当用天数
  316. $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
  317. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  318. //加载类库
  319. vendor('PHPExcel.PHPExcel');
  320. $objPHPExcel = new \PHPExcel();
  321. //4.激活当前的sheet表
  322. $objPHPExcel->setActiveSheetIndex(0);
  323. //5.设置表格头(即excel表格的第一行)
  324. $objPHPExcel->setActiveSheetIndex(0)
  325. ->setCellValue('A1', '班组/工人')
  326. ->setCellValue('B1', '当月总记分');
  327. for ($j=1; $j<=$daysofm;$j++){
  328. $columnname=strval($j);
  329. if (strlen($columnname)<2){
  330. $columnname='0'.$columnname;
  331. }
  332. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  333. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
  334. }
  335. //设置A列水平居中
  336. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  337. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  338. //设置单元格宽度
  339. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(20);
  340. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15);
  341. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  342. $rowindex=0;
  343. for($i=0;$i<count($gsumlist);$i++){
  344. //班组汇总信息
  345. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
  346. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
  347. for ($j=1; $j<=$daysofm;$j++){
  348. // for ($j=13; $j<=16;$j++){//测试临时
  349. $daystr=strval($j);
  350. if (strlen($daystr)<2){
  351. $daystr='0'.$daystr;
  352. }
  353. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  354. //$eecll=new \PHPExcel_Cell()
  355. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  356. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
  357. // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
  358. }
  359. $rowindex++;//行控制
  360. //员工数据
  361. for($workerindex=0;$workerindex<count($gsumlist[$i]['detail']);$workerindex++){
  362. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
  363. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
  364. for ($j=1; $j<=$daysofm;$j++){
  365. $daystr=strval($j);
  366. if (strlen($daystr)<2){
  367. $daystr='0'.$daystr;
  368. }
  369. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  370. //$eecll=new \PHPExcel_Cell()
  371. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  372. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
  373. }
  374. $rowindex++;//行控制
  375. }
  376. }
  377. //7.设置保存的Excel表格名称
  378. $filename =$cname.'考勤汇总'.date('ymd',time()).'.xls';
  379. //8.设置当前激活的sheet表格名称;
  380. $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
  381. //9.设置浏览器窗口下载表格
  382. header("Content-Type: application/force-download");
  383. header("Content-Type: application/octet-stream");
  384. header("Content-Type: application/download");
  385. header('Content-Disposition:inline;filename="'.$filename.'"');
  386. //生成excel文件
  387. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  388. //下载文件在浏览器窗口
  389. $objWriter->save('php://output');
  390. //原代码没有返回
  391. $res_r['code']=200;
  392. $res_r['resultData']=$filename;
  393. return json_encode($res_r,320);
  394. }
  395. /*
  396. * 20200320
  397. * 自动导出所有的项目合同考勤,分页
  398. *
  399. */
  400. public function allworkersumtoexecl(){
  401. /*
  402. * 准备
  403. */
  404. //获取数据
  405. $queryinfo=request() -> param();
  406. $yearinfo=$queryinfo['yearinfo'];
  407. $monthinfo=$queryinfo['monthinfo'];
  408. //获取所有导出的合同
  409. $l_contact=new contactlogic();
  410. $list_contact=$l_contact->getclist();
  411. //获取当用天数
  412. $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
  413. //加载类库
  414. vendor('PHPExcel.PHPExcel');
  415. $objPHPExcel = new \PHPExcel();
  416. $pageindex=0;//初始化页数
  417. /*
  418. * 循环处理所有合同
  419. */
  420. foreach($list_contact as $contact){
  421. $queryinfo['cid']=$contact['id'];
  422. $cname=$contact['contactname'];
  423. //获取合同的数据
  424. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  425. //4.激活当前的sheet表
  426. if($pageindex>0){
  427. $objPHPExcel->createSheet();
  428. }
  429. $objPHPExcel->setActiveSheetIndex($pageindex);
  430. //5.设置表格头(即excel表格的第一行)
  431. $objPHPExcel->setActiveSheetIndex($pageindex)
  432. ->setCellValue('A1', '班组')
  433. ->setCellValue('B1', '总分')
  434. ->setCellValue('C1', '班组')
  435. ->setCellValue('D1', '工人')
  436. ->setCellValue('E1', '当月总记分');
  437. for ($j=1; $j<=$daysofm;$j++){
  438. $columnname=strval($j);
  439. if (strlen($columnname)<2){
  440. $columnname='0'.$columnname;
  441. }
  442. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  443. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
  444. // $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle($fcolumnchar)->getAlignment()
  445. // ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  446. // $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension($fcolumnchar)->setWidth(6);
  447. }
  448. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  449. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
  450. //设置A列水平居中
  451. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
  452. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  453. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
  454. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  455. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
  456. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  457. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
  458. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  459. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
  460. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  461. //设置单元格宽度
  462. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
  463. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(11);
  464. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(20);
  465. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(10);
  466. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(13);
  467. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  468. $rowindex=0;
  469. for($i=0;$i<count($gsumlist);$i++){
  470. // //班组汇总信息
  471. // // var_dump($gsumlist[$i]);
  472. // $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
  473. // $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
  474. // for ($j=1; $j<=$daysofm;$j++){
  475. // // for ($j=13; $j<=16;$j++){//测试临时
  476. // $daystr=strval($j);
  477. // if (strlen($daystr)<2){
  478. // $daystr='0'.$daystr;
  479. // }
  480. // $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  481. // //$eecll=new \PHPExcel_Cell()
  482. // $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  483. // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
  484. // // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
  485. // }
  486. // $rowindex++;//行控制
  487. //员工数据
  488. $firstworker=$rowindex+2;
  489. $workercounts=count($gsumlist[$i]['detail']);
  490. for($workerindex=0;$workerindex<$workercounts;$workerindex++){
  491. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);
  492. $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),$gsumlist[$i]['gname']);
  493. $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
  494. $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
  495. for ($j=1; $j<=$daysofm;$j++){
  496. $daystr=strval($j);
  497. if (strlen($daystr)<2){
  498. $daystr='0'.$daystr;
  499. }
  500. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  501. //$eecll=new \PHPExcel_Cell()
  502. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  503. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
  504. }
  505. //招工成本处理
  506. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+5);
  507. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
  508. $rowindex++;//行控制
  509. }
  510. if ($workercounts>0){
  511. $endworker=$rowindex+1;//最后一行
  512. $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
  513. $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  514. $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
  515. $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  516. $objPHPExcel->getActiveSheet()->setCellValue('B'.$firstworker,$gsumlist[$i]['summonth']);
  517. }else{
  518. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);
  519. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),0);
  520. $rowindex++;
  521. }
  522. }
  523. //8.设置当前激活的sheet表格名称;
  524. $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
  525. $pageindex++;
  526. }
  527. //7.设置保存的Excel表格名称
  528. $filename ='考勤汇总'.date('ymd',time()).'.xls';
  529. //9.设置浏览器窗口下载表格
  530. header("Content-Type: application/force-download");
  531. header("Content-Type: application/octet-stream");
  532. header("Content-Type: application/download");
  533. header('Content-Disposition:inline;filename="'.$filename.'"');
  534. //生成excel文件
  535. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  536. //下载文件在浏览器窗口
  537. $objWriter->save('php://output');
  538. //原代码没有返回
  539. $res_r['code']=200;
  540. $res_r['resultData']=$filename;
  541. return json_encode($res_r,320);
  542. }
  543. /*
  544. * 20201029
  545. * 自动导出所有的项目合同考勤,分页
  546. * 并且合并成一个表
  547. * 在allworkersumtoexecl()方法基础上修改
  548. *
  549. *
  550. */
  551. public function allworkersumuniontoexecl(){
  552. /*
  553. * 准备
  554. */
  555. //获取数据
  556. $queryinfo=request() -> param();
  557. $yearinfo=$queryinfo['yearinfo'];
  558. $monthinfo=$queryinfo['monthinfo'];
  559. $strmonth=$yearinfo.'-'.$monthinfo;
  560. //获取所有导出的合同
  561. $l_contact=new contactlogic();
  562. $list_contact=$l_contact->getclist();
  563. //获取当用天数
  564. $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
  565. //加载类库
  566. vendor('PHPExcel.PHPExcel');
  567. $objPHPExcel = new \PHPExcel();
  568. $pageindex=0;//初始化页数,后面不再循环 todo 去掉此变理
  569. /*
  570. * 循环处理所有合同
  571. */
  572. $rowindex=0;
  573. //4.激活当前的sheet表
  574. $objPHPExcel->setActiveSheetIndex($pageindex);
  575. //5.设置表格头(即excel表格的第一行)
  576. $objPHPExcel->setActiveSheetIndex($pageindex)
  577. ->setCellValue('A1', '合同')
  578. ->setCellValue('B1', '班组')
  579. ->setCellValue('C1', '总分')
  580. ->setCellValue('D1', '月度')
  581. ->setCellValue('E1', '工人')
  582. ->setCellValue('F1', '身份证')
  583. ->setCellValue('G1', '当月总记分');
  584. for ($j=1; $j<=$daysofm;$j++){
  585. $columnname=strval($j);
  586. if (strlen($columnname)<2){
  587. $columnname='0'.$columnname;
  588. }
  589. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+6);
  590. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
  591. }
  592. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
  593. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
  594. //设置A列水平居中
  595. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
  596. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  597. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
  598. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  599. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
  600. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  601. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
  602. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  603. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
  604. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  605. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment()
  606. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  607. //设置F列为文本列
  608. $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat()
  609. ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//
  610. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment()
  611. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  612. //设置单元格宽度
  613. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
  614. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20);
  615. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11);
  616. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20);
  617. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10);
  618. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18);
  619. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13);
  620. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  621. foreach($list_contact as $contact){
  622. $queryinfo['cid']=$contact['id'];
  623. $cname=$contact['contactname'];
  624. //获取合同的数据
  625. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  626. for($i=0;$i<count($gsumlist);$i++){
  627. $firstworker=$rowindex+2;
  628. $workercounts=count($gsumlist[$i]['detail']);
  629. for($workerindex=0;$workerindex<$workercounts;$workerindex++){
  630. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
  631. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
  632. $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$strmonth);
  633. $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
  634. $objPHPExcel->getActiveSheet()->setCellValue('F'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['sfz']);//
  635. $objPHPExcel->getActiveSheet()->setCellValue('G'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
  636. for ($j=1; $j<=$daysofm;$j++){
  637. $daystr=strval($j);
  638. if (strlen($daystr)<2){
  639. $daystr='0'.$daystr;
  640. }
  641. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  642. //$eecll=new \PHPExcel_Cell()
  643. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+6);
  644. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
  645. }
  646. //招工成本处理
  647. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
  648. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
  649. $rowindex++;//行控制
  650. }
  651. if ($workercounts>0){
  652. $endworker=$rowindex+1;//最后一行
  653. //根据客户要求,不再分隔,20201106
  654. // $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
  655. // $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  656. // $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
  657. // $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  658. $objPHPExcel->getActiveSheet()->mergeCells('C'.$firstworker.':C'.$endworker);
  659. $objPHPExcel->getActiveSheet()->getstyle('C'.$firstworker.':C'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  660. $objPHPExcel->getActiveSheet()->setCellValue('C'.$firstworker,$gsumlist[$i]['summonth']);
  661. }else{
  662. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
  663. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
  664. $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),0);
  665. $rowindex++;
  666. }
  667. }
  668. //8.设置当前激活的sheet表格名称;
  669. // $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
  670. // $pageindex++;
  671. }
  672. $objPHPExcel->getActiveSheet()->setTitle($strmonth .'考勤汇总');
  673. //7.设置保存的Excel表格名称
  674. $filename ='考勤汇总'.date('ymd',time()).'.xls';
  675. //9.设置浏览器窗口下载表格
  676. header("Content-Type: application/force-download");
  677. header("Content-Type: application/octet-stream");
  678. header("Content-Type: application/download");
  679. header('Content-Disposition:inline;filename="'.$filename.'"');
  680. //生成excel文件
  681. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  682. //下载文件在浏览器窗口
  683. $objWriter->save('php://output');
  684. //原代码没有返回
  685. $res_r['code']=200;
  686. $res_r['resultData']=$filename;
  687. return json_encode($res_r,320);
  688. }
  689. /*
  690. * 20230215
  691. * 获取本公司的项目合同汇总
  692. */
  693. public function companyworkersumuniontoexecl(){
  694. /*
  695. * 准备
  696. */
  697. //获取数据
  698. $queryinfo=request() -> param();
  699. $yearinfo=$queryinfo['yearinfo'];
  700. $monthinfo=$queryinfo['monthinfo'];
  701. $cid=$queryinfo['companyid'];//公司id
  702. $strmonth=$yearinfo.'-'.$monthinfo;
  703. //获取所有导出的合同
  704. $l_contact=new contactlogic();
  705. $list_contact=$l_contact->getcompanyclist($cid);
  706. //获取当用天数
  707. $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
  708. //加载类库
  709. vendor('PHPExcel.PHPExcel');
  710. $objPHPExcel = new \PHPExcel();
  711. $pageindex=0;//初始化页数,后面不再循环 todo 去掉此变理
  712. /*
  713. * 循环处理所有合同
  714. */
  715. $rowindex=0;
  716. //4.激活当前的sheet表
  717. $objPHPExcel->setActiveSheetIndex($pageindex);
  718. //5.设置表格头(即excel表格的第一行)
  719. $objPHPExcel->setActiveSheetIndex($pageindex)
  720. ->setCellValue('A1', '合同')
  721. ->setCellValue('B1', '班组')
  722. ->setCellValue('C1', '总分')
  723. ->setCellValue('D1', '月度')
  724. ->setCellValue('E1', '工人')
  725. ->setCellValue('F1', '身份证')
  726. ->setCellValue('G1', '当月总记分');
  727. for ($j=1; $j<=$daysofm;$j++){
  728. $columnname=strval($j);
  729. if (strlen($columnname)<2){
  730. $columnname='0'.$columnname;
  731. }
  732. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+6);
  733. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1',$columnname);
  734. }
  735. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
  736. $objPHPExcel->setActiveSheetIndex($pageindex)->setCellValue($fcolumnchar.'1','招工成本');
  737. //设置A列水平居中
  738. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
  739. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  740. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
  741. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  742. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
  743. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  744. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
  745. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  746. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('E')->getAlignment()
  747. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  748. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('F')->getAlignment()
  749. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  750. //设置F列为文本列
  751. $objPHPExcel->getActiveSheet()->getStyle('F')->getNumberFormat()
  752. ->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT);//
  753. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('G')->getAlignment()
  754. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  755. //设置单元格宽度
  756. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
  757. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(20);
  758. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(11);
  759. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(20);
  760. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('E')->setWidth(10);
  761. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('F')->setWidth(18);
  762. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('G')->setWidth(13);
  763. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  764. foreach($list_contact as $contact){
  765. $queryinfo['cid']=$contact['id'];
  766. $cname=$contact['contactname'];
  767. //获取合同的数据
  768. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  769. for($i=0;$i<count($gsumlist);$i++){
  770. $firstworker=$rowindex+2;
  771. $workercounts=count($gsumlist[$i]['detail']);
  772. for($workerindex=0;$workerindex<$workercounts;$workerindex++){
  773. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
  774. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
  775. $objPHPExcel->getActiveSheet()->setCellValue('D'.($rowindex+2),$strmonth);
  776. $objPHPExcel->getActiveSheet()->setCellValue('E'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
  777. $objPHPExcel->getActiveSheet()->setCellValue('F'.($rowindex+2),"'".$gsumlist[$i]['detail'][$workerindex]['sfz']);//
  778. $objPHPExcel->getActiveSheet()->setCellValue('G'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
  779. for ($j=1; $j<=$daysofm;$j++){
  780. $daystr=strval($j);
  781. if (strlen($daystr)<2){
  782. $daystr='0'.$daystr;
  783. }
  784. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  785. //$eecll=new \PHPExcel_Cell()
  786. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+6);
  787. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
  788. }
  789. //招工成本处理
  790. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($daysofm+7);
  791. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists('recuitcost',$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex]['recuitcost']:'-'));
  792. $rowindex++;//行控制
  793. }
  794. if ($workercounts>0){
  795. $endworker=$rowindex+1;//最后一行
  796. //根据客户要求,不再分隔,20201106
  797. // $objPHPExcel->getActiveSheet()->mergeCells('A'.$firstworker.':A'.$endworker);
  798. // $objPHPExcel->getActiveSheet()->getstyle('A'.$firstworker.':A'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  799. // $objPHPExcel->getActiveSheet()->mergeCells('B'.$firstworker.':B'.$endworker);
  800. // $objPHPExcel->getActiveSheet()->getstyle('B'.$firstworker.':B'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  801. $objPHPExcel->getActiveSheet()->mergeCells('C'.$firstworker.':C'.$endworker);
  802. $objPHPExcel->getActiveSheet()->getstyle('C'.$firstworker.':C'.$endworker)->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER);
  803. $objPHPExcel->getActiveSheet()->setCellValue('C'.$firstworker,$gsumlist[$i]['summonth']);
  804. }else{
  805. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$cname);
  806. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['gname']);
  807. $objPHPExcel->getActiveSheet()->setCellValue('C'.($rowindex+2),0);
  808. $rowindex++;
  809. }
  810. }
  811. //8.设置当前激活的sheet表格名称;
  812. // $objPHPExcel->getActiveSheet()->setTitle($cname .'考勤汇总');
  813. // $pageindex++;
  814. }
  815. $objPHPExcel->getActiveSheet()->setTitle($strmonth .'考勤汇总');
  816. //7.设置保存的Excel表格名称
  817. $filename ='考勤汇总'.date('ymd',time()).'.xls';
  818. //9.设置浏览器窗口下载表格
  819. header("Content-Type: application/force-download");
  820. header("Content-Type: application/octet-stream");
  821. header("Content-Type: application/download");
  822. header('Content-Disposition:inline;filename="'.$filename.'"');
  823. //生成excel文件
  824. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  825. //下载文件在浏览器窗口
  826. $objWriter->save('php://output');
  827. //原代码没有返回
  828. $res_r['code']=200;
  829. $res_r['resultData']=$filename;
  830. return json_encode($res_r,320);
  831. }
  832. }