Test.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/1/15
  6. * Time: 13:56
  7. */
  8. namespace app\index\controller;
  9. use app\index\model\daycheckinfo;
  10. use app\index\logic\workermanger;
  11. use app\index\logic\checkmanger;
  12. use app\index\logic\prjmanger;
  13. use app\index\model\ginfomodel;
  14. use app\index\model\wheadmodel;
  15. use app\index\model\gworkermodel;
  16. use app\index\logic\contactlogic;
  17. use app\index\logic\recuitlogic;
  18. use app\index\logic\workercheck;
  19. use app\index\logic\paylogic;
  20. use think\Controller;
  21. use think\File;
  22. class Test extends Controller{
  23. public function testtime(){
  24. echo date('Y-m-d',strtotime('-1 day'));
  25. }
  26. public function testgetdays(){
  27. echo date('t', strtotime("2020-01-1"));
  28. }
  29. public function teststrvla(){
  30. echo $fieldname=strval(1);
  31. echo $fieldname=strval(11);
  32. for ($i=0;$i<31;$i++){
  33. $k=strval($i);
  34. if (strlen($k)<2){
  35. $k='0'.$k;
  36. }
  37. echo $k;
  38. echo '<br>';
  39. }
  40. }
  41. public function testexeclclass(){
  42. vendor('PHPExcel.PHPExcel');
  43. //$fcell=new \PHPExcel_Cell();
  44. for ($j=1;$j<=31;$j++){
  45. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  46. echo $fcolumnstr;
  47. }
  48. }
  49. public function testsumbymonth(){
  50. $wid=101;
  51. $table=new daycheckinfo();
  52. $rlist=$table->totalcheckbymonthwithwid($wid);
  53. var_dump($rlist);
  54. }
  55. public function testworkover(){
  56. $l_check=new checkmanger();
  57. $rlist=$l_check->getworkovertime(1,10);
  58. return json_encode($rlist,320);
  59. }
  60. public function t_prj_getglist(){
  61. echo 'test start ok!';
  62. echo '<br>';
  63. $g_talbe=new ginfomodel();
  64. $gheadinfo=new wheadmodel();
  65. $work_table=new gworkermodel();
  66. //获取所有班组
  67. $res=$g_talbe->getglistbypid(1);
  68. echo 'res for start';
  69. foreach ($res as &$gitem) {
  70. //取班组长名称
  71. $gid=$gitem['id'];
  72. echo '[gid:';
  73. echo $gid;
  74. echo "],";
  75. $gheader=$gheadinfo->getwidbygid($gid);
  76. if ($gheader){
  77. $wid=$gheader['gwid'];
  78. $winfo=$work_table->getinfobyid($wid);
  79. echo $winfo['wname'];
  80. echo '<br>';
  81. $gitem['wname']=$winfo['wname'];
  82. }else{
  83. $gitem['wname']='';
  84. }
  85. }
  86. return json_encode($res,320);
  87. }
  88. public function testjson11(){
  89. $date='2020-03-11';
  90. $daystr=substr($date,-2);
  91. // $v["11"]=20;
  92. $v[$daystr]=20;
  93. echo json_encode($v);
  94. print_r($v);
  95. }
  96. public function testdaycount(){
  97. $dc=20;
  98. $strdc=strval($dc+2);
  99. echo $strdc;
  100. $strparam='-'.$strdc.' day';
  101. echo 'strparm='.$strparam;
  102. echo '<bc>';
  103. $datestart=date('Y-m-d',strtotime($strparam));
  104. echo 'datsstart='.$datestart;
  105. }
  106. public function testnewsumgroupworkerinfo(){
  107. $arr['cid']=1;
  108. $arr['yearinfo']='2020';
  109. $arr['monthinfo']='03';
  110. $l_c=new contactlogic();
  111. $list=$l_c->getworkersumbycid($arr);
  112. // foreach($list as $k){
  113. // $k_list=array_keys($k['detail']);
  114. // // var_dump($k_list);
  115. // foreach($k_list as $kv){
  116. // echo $kv;
  117. // }
  118. //
  119. //// foreach($k['detail'] as $v){
  120. //// var_dump($v);
  121. //// };
  122. //// $alen=count($k['detail']);
  123. //// for ($i=0;$i<$alen;$i++){
  124. //// var_dump($k['detail'][$i]);
  125. //// }
  126. // }
  127. return json_encode($list,320);
  128. }
  129. //考勤按合同汇总信息导出execl
  130. public function workersumtoexecl(){
  131. //获取数据
  132. // $queryinfo=request() -> param();
  133. $queryinfo['cid']=6;
  134. $queryinfo['yearinfo']='2020';
  135. $queryinfo['monthinfo']='03';
  136. $yearinfo=$queryinfo['yearinfo'];
  137. $monthinfo=$queryinfo['monthinfo'];
  138. $l_contact=new contactlogic();
  139. //获取当用天数
  140. $daysofm=date('t', strtotime( $yearinfo.'-'.$monthinfo.'-1'));
  141. $gsumlist=$l_contact->getworkersumbycid($queryinfo);
  142. //加载类库
  143. vendor('PHPExcel.PHPExcel');
  144. $objPHPExcel = new \PHPExcel();
  145. //4.激活当前的sheet表
  146. $objPHPExcel->setActiveSheetIndex(0);
  147. //5.设置表格头(即excel表格的第一行)
  148. $objPHPExcel->setActiveSheetIndex(0)
  149. ->setCellValue('A1', '班组/工人')
  150. ->setCellValue('B1', '当月总记分');
  151. for ($j=1; $j<=$daysofm;$j++){
  152. $columnname=strval($j);
  153. if (strlen($columnname)<2){
  154. $columnname='0'.$columnname;
  155. }
  156. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  157. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
  158. }
  159. //设置A列水平居中
  160. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  161. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  162. //设置单元格宽度
  163. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(20);
  164. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(15);
  165. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  166. $rowindex=0;
  167. for($i=0;$i<count($gsumlist);$i++){
  168. //班组汇总信息
  169. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['gname']);//ID
  170. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['summonth']);//名称
  171. // $a_keys=array_keys($gsumlist[$i]);
  172. // var_dump($a_keys);
  173. for ($j=1; $j<=$daysofm;$j++){
  174. // for ($j=13; $j<=16;$j++){//测试临时
  175. $daystr=strval($j);
  176. if (strlen($daystr)<2){
  177. $daystr='0'.$daystr;
  178. }
  179. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  180. //$eecll=new \PHPExcel_Cell()
  181. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  182. echo $fname;
  183. //echo true;
  184. // echo '<br>';
  185. echo (array_key_exists($fname,$gsumlist[$i]));
  186. echo '<br>';
  187. // echo (in_array($fname,$a_keys));
  188. // echo '<br>';
  189. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i])?$gsumlist[$i][$fname]:'-'));//说明
  190. // $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),$gsumlist[$i][$fname]);//说明
  191. }
  192. $rowindex++;//行控制
  193. //员工数据
  194. for($workerindex=0;$workerindex<count($gsumlist[$i]['detail']);$workerindex++){
  195. $objPHPExcel->getActiveSheet()->setCellValue('A'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['gname']);//
  196. $objPHPExcel->getActiveSheet()->setCellValue('B'.($rowindex+2),$gsumlist[$i]['detail'][$workerindex]['summonth']);//
  197. for ($j=1; $j<=$daysofm;$j++){
  198. $daystr=strval($j);
  199. if (strlen($daystr)<2){
  200. $daystr='0'.$daystr;
  201. }
  202. $fname=$yearinfo.'-'.$monthinfo.'-'.$daystr;
  203. //$eecll=new \PHPExcel_Cell()
  204. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+2);
  205. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($rowindex+2),(array_key_exists($fname,$gsumlist[$i]['detail'][$workerindex])?$gsumlist[$i]['detail'][$workerindex][$fname]:'-'));//说明
  206. }
  207. $rowindex++;//行控制
  208. }
  209. }
  210. //7.设置保存的Excel表格名称
  211. $filename = '考勤汇总'.date('ymd',time()).'.xls';
  212. //8.设置当前激活的sheet表格名称;
  213. $objPHPExcel->getActiveSheet()->setTitle('考勤汇总');
  214. //9.设置浏览器窗口下载表格
  215. header("Content-Type: application/force-download");
  216. header("Content-Type: application/octet-stream");
  217. header("Content-Type: application/download");
  218. header('Content-Disposition:inline;filename="'.$filename.'"');
  219. //生成excel文件
  220. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  221. //下载文件在浏览器窗口
  222. $objWriter->save('php://output');
  223. //原代码没有返回
  224. $res_r['code']=200;
  225. $res_r['resultData']=$filename;
  226. return json_encode($res_r,320);
  227. }
  228. public function testouttoexecl(){
  229. //获取传入参数
  230. set_time_limit(0);
  231. $queryinfo['monthinfo']='03';
  232. $queryinfo['yearinfo']='2020';
  233. $queryinfo['pageNum']=1;
  234. $queryinfo['pageSize']=0;
  235. $month=$queryinfo['monthinfo'];
  236. $year=$queryinfo['yearinfo'];
  237. //获取数据
  238. $l_check=new checkmanger();
  239. $r_list=$l_check->getsumcheckinfo($queryinfo);
  240. //获取当用天数
  241. $daysofm=date('t', strtotime($year.'-'.$month.'-1'));
  242. //加载类库
  243. vendor('PHPExcel.PHPExcel');
  244. $objPHPExcel = new \PHPExcel();
  245. //4.激活当前的sheet表
  246. $objPHPExcel->setActiveSheetIndex(0);
  247. //5.设置表格头(即excel表格的第一行)
  248. $objPHPExcel->setActiveSheetIndex(0)
  249. ->setCellValue('A1', 'ID')
  250. ->setCellValue('B1', '姓名')
  251. ->setCellValue('C1', '记工天数')
  252. ->setCellValue('D1','当月计分')
  253. ->setCellValue('E1','身份证号');
  254. for ($j=1; $j<=$daysofm;$j++){
  255. $columnname=strval($j);
  256. if (strlen($columnname)<2){
  257. $columnname='0'.$columnname;
  258. }
  259. $fcolumnchar=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  260. $objPHPExcel->setActiveSheetIndex(0)->setCellValue($fcolumnchar.'1',$columnname);
  261. }
  262. //设置A列水平居中
  263. $objPHPExcel->setActiveSheetIndex(0)->getStyle('A')->getAlignment()
  264. ->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
  265. //设置单元格宽度
  266. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(8);
  267. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(12);
  268. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(12);
  269. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(12);
  270. $objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(18);
  271. //6.循环刚取出来的数组,将数据逐一添加到excel表格。
  272. for($i=0;$i<count($r_list);$i++){
  273. $objPHPExcel->getActiveSheet()->setCellValue('A'.($i+2),$r_list[$i]['wid']);//ID
  274. $objPHPExcel->getActiveSheet()->setCellValue('B'.($i+2),$r_list[$i]['wname']);//名称
  275. $objPHPExcel->getActiveSheet()->setCellValue('C'.($i+2),$r_list[$i]['daycount']);//说明
  276. $objPHPExcel->getActiveSheet()->setCellValue('D'.($i+2),$r_list[$i]['monthsum']);//说明
  277. $objPHPExcel->getActiveSheet()->setCellValue('E'.($i+2),$r_list[$i]['sfz']);//说明
  278. for ($j=1; $j<=$daysofm;$j++){
  279. $fname=strval($j);
  280. if (strlen($fname)<2){
  281. $fname='0'.$fname;
  282. }
  283. //$eecll=new \PHPExcel_Cell()
  284. $fcolumnstr=\PHPExcel_Cell::stringFromColumnIndex($j+4);
  285. $objPHPExcel->getActiveSheet()->setCellValue($fcolumnstr.($i+2),(array_key_exists($fname,$r_list[$i])?$r_list[$i][$fname]:'-'));//说明
  286. }
  287. }
  288. //7.设置保存的Excel表格名称
  289. $filename = $year.'年'.$month.'月考勤统计表'.date('ymd',time()).'.xls';
  290. //8.设置当前激活的sheet表格名称;
  291. $objPHPExcel->getActiveSheet()->setTitle('考勤信息'.$year.'年'.$month.'月');
  292. //9.设置浏览器窗口下载表格
  293. header("Content-Type: application/force-download");
  294. header("Content-Type: application/octet-stream");
  295. header("Content-Type: application/download");
  296. header('Content-Disposition:inline;filename="'.$filename.'"');
  297. //生成excel文件
  298. $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
  299. //下载文件在浏览器窗口
  300. $objWriter->save('php://output');
  301. //原代码没有返回
  302. $res_r['code']=200;
  303. $res_r['resultData']=$filename;
  304. return json_encode($res_r,320);
  305. }
  306. public function testheadoprlist(){
  307. // $queryinfo=request() -> param();
  308. $queryinfo['hid']=102;
  309. $l_opr=new checkmanger();
  310. $rlist=$l_opr->getoprinfobyhid($queryinfo);
  311. if (empty($rlist)){
  312. $res_r['code']=0;
  313. $res_r['msg']='无考勤数据';
  314. }else{
  315. $res_r['code']=200;
  316. $res_r['resultData']=$rlist;
  317. }
  318. return json_encode($res_r,320);
  319. }
  320. public function testcountaward(){
  321. $queryinfo['uid']=101;
  322. $l_r=new recuitlogic();
  323. $rec=$l_r->getawardbyrid($queryinfo);
  324. return json_encode($rec,320);
  325. }
  326. public function testexcelinput(){
  327. vendor('PHPExcel.PHPExcel');
  328. //$phpExcel = new \PHPExcel();
  329. $objRender = \PHPExcel_IOFactory::createReader('excel2007');
  330. $filename = '.'.'/'.'Uploads'.'/'.'test1.xlsx';
  331. $filename2 = '.'.'/'.'Uploads'.'/'.'test2.xlsx';
  332. $ExcelObj = $objRender->load($filename);
  333. $ExcelObj->setActiveSheetIndex(0);
  334. $ExcelObj->getActiveSheet()->setCellValue('C6',4);
  335. $ExcelObj->getActiveSheet()->setCellValue('D6',5);
  336. $ExcelObj->getActiveSheet()->setCellValue('E6',20);
  337. $flag = $ExcelObj->getActiveSheet()->getCell("B1")->getValue();
  338. $objWriter = \PHPExcel_IOFactory::createWriter($ExcelObj, 'excel2007');
  339. $objWriter->save($filename2);
  340. echo $flag;
  341. }
  342. public function testupcheck(){
  343. $queryinfo['pid']=14;
  344. $queryinfo['checkdate']='2020-05-04';
  345. $queryinfo['checkshift']=1;
  346. $logicworker=new workercheck();
  347. $wlist=$logicworker->getunchecklist($queryinfo);
  348. var_dump($wlist);
  349. }
  350. public function testnewchout(){
  351. $arr['cid']=4;
  352. $arr['yearinfo']='2020';
  353. $arr['monthinfo']='08';
  354. $logic=new contactlogic();
  355. $llist=$logic->getworkersumbycid($arr);
  356. var_dump($llist);
  357. }
  358. public function testexcelinputdb(){
  359. vendor('PHPExcel.PHPExcel');
  360. //$phpExcel = new \PHPExcel();
  361. $objRender = \PHPExcel_IOFactory::createReader('excel2007');
  362. $filename = '.'.'/'.'Uploads'.'/'.'payrecord.xlsx';
  363. $ExcelObj = $objRender->load($filename);
  364. $ExcelObj->setActiveSheetIndex(0);
  365. $l_p=new paylogic();
  366. $plist=array();
  367. for($i=2;$i<10;$i++){
  368. $paydetail=array();
  369. $paydetail['paymoney']=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
  370. $paydetail['sfzid']=$ExcelObj->getActiveSheet()->getCell("F".$i)->getValue();
  371. $paydetail['wname']=$ExcelObj->getActiveSheet()->getCell("G".$i)->getValue();
  372. $paydetail['payclass']=$ExcelObj->getActiveSheet()->getCell("E".$i)->getValue();
  373. $daynumber=$ExcelObj->getActiveSheet()->getCell("D".$i)->getValue();
  374. $paydetail['paydate']=gmdate('Y-m-d',($daynumber-25569)*1440*60);
  375. $paydetail['indate']=date('Y-m-d');
  376. $l_p->savepaydetail($paydetail);
  377. array_push($plist,$paydetail);
  378. }
  379. echo count($plist);
  380. var_dump($plist);
  381. }
  382. public function testdatastrtrans(){
  383. $i=44302-25569;
  384. $j=$i*1440*60;
  385. echo $j."</br>";
  386. echo gmdate('Y-m-d',$j);
  387. //date_format($j,"YYYY-mm-dd");
  388. //var_dump(strtotime('1900-01-01','+'.$i.' days'));
  389. }
  390. }