Checkinfo.php 49 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999
  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. /**
  833. * 导出5天类有记工人员的清单
  834. * 用户名,身份证号,手机号,工地名
  835. *
  836. * @return void
  837. * @author wj
  838. * @date 2025-02-17
  839. */
  840. public function hasreocdeuserlistexport() {
  841. $m_cm = new checkmanger();
  842. // $ispost = request()->isPost();
  843. $queryinfo = request()->param();
  844. $isexport = !isset($queryinfo['isexport']) || empty($queryinfo['isexport']) ? 0 : 1;
  845. $count = $m_cm->hasreocdeuserlist(true);
  846. if (!$isexport) {
  847. $pageNum = !isset($queryinfo['pageNum']) || empty($queryinfo['pageNum']) ? 1 : $queryinfo['pageNum'];
  848. $pageSize = !isset($queryinfo['pageSize']) || empty($queryinfo['pageSize']) ? 10 : $queryinfo['pageSize'];
  849. if (empty($count)) {
  850. $res_r['code'] = 0;
  851. $res_r['msg'] = '无数据';
  852. $res_r['data'] = [];
  853. return json_encode($res_r, 320);
  854. }
  855. $list = $m_cm->hasreocdeuserlist(false, $pageNum, $pageSize);
  856. $res_r['code'] = 200;
  857. $res_r['msg'] = '查询成功';
  858. $data = [
  859. 'count' => $count,
  860. 'pageNum' => $pageNum,
  861. 'pageSize' => $pageSize,
  862. 'list' => $list,
  863. ];
  864. $res_r['data'] = $data;
  865. return json_encode($res_r, 320);
  866. } else {
  867. if (empty($count)) {
  868. $this->error('无数据');
  869. }
  870. $size = 100;
  871. $totalpage = ceil($count / $size);
  872. vendor('PHPExcel.PHPExcel');
  873. $objPHPExcel = new \PHPExcel();
  874. $pageindex = 0;
  875. $objPHPExcel->setActiveSheetIndex($pageindex);
  876. //5.设置表格头(即excel表格的第一行)
  877. $objPHPExcel->setActiveSheetIndex($pageindex)
  878. ->setCellValue('A1', '用户名')
  879. ->setCellValue('B1', '身份证号')
  880. ->setCellValue('C1', '手机号')
  881. ->setCellValue('D1', '工地名');
  882. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('A')->getAlignment()
  883. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  884. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('B')->getAlignment()
  885. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  886. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('C')->getAlignment()
  887. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  888. $objPHPExcel->setActiveSheetIndex($pageindex)->getStyle('D')->getAlignment()
  889. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  890. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('A')->setWidth(20);
  891. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('B')->setWidth(50);
  892. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('C')->setWidth(20);
  893. $objPHPExcel->setActiveSheetIndex($pageindex)->getColumnDimension('D')->setWidth(50);
  894. $rowindex = 2;
  895. for ($page = 1; $page <= $totalpage; $page++) {
  896. $list = $m_cm->hasreocdeuserlist(false, $page, $size);
  897. foreach ($list as $key => $value) {
  898. $wname = $value['wname'];
  899. $shengfengid = " " . $value['shengfengid'];
  900. $telno = $value['telno'];
  901. $pname = $value['pname'];
  902. $objPHPExcel->getActiveSheet()->setCellValue('A' . $rowindex, $wname);
  903. $objPHPExcel->getActiveSheet()->setCellValue('B' . $rowindex, $shengfengid);
  904. $objPHPExcel->getActiveSheet()->setCellValue('C' . $rowindex, $telno);
  905. $objPHPExcel->getActiveSheet()->setCellValue('D' . $rowindex, $pname);
  906. $rowindex += 1;
  907. }
  908. unset($list);
  909. }
  910. $title = '记工清单';
  911. $objPHPExcel->getActiveSheet()->setTitle($title);
  912. $filename = $title . "_" . date('ymd', time()) . '.xls';
  913. $filename = urlencode($filename);
  914. //9.设置浏览器窗口下载表格
  915. header("Content-Type: application/force-download");
  916. header("Content-Type: application/octet-stream");
  917. header("Content-Type: application/download");
  918. header('Content-Type: text/html; charset=utf-8');
  919. header('Content-Disposition:inline;filename="' . $filename . '"');
  920. //生成excel文件
  921. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  922. //下载文件在浏览器窗口
  923. $objWriter->save('php://output');
  924. }
  925. }
  926. }