Fileoper.php 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: sicilon_IT
  5. * Date: 2020/1/5
  6. * Time: 9:49
  7. */
  8. namespace app\index\controller;
  9. use think\Controller;
  10. use think\Request;
  11. use app\index\logic\paylogic;
  12. class Fileoper extends Controller
  13. {
  14. public function upQuestionsWrite()
  15. {
  16. // 获取表单上传文件
  17. $file = request()->file('file');
  18. $domainpath = 'https://' . $_SERVER['HTTP_HOST'] . '/Uploads/';
  19. if (empty($file)) {
  20. $this->error('请选择上传文件');
  21. }
  22. // 移动到框架应用根目录/public/uploads/ 目录下
  23. $info = $file->move(ROOT_PATH . 'public' . DS . 'Uploads');
  24. //如果不清楚文件上传的具体键名,可以直接打印$info来查看
  25. //获取文件(文件名),$info->getFilename() ***********不同之处,笔记笔记哦
  26. //获取文件(日期/文件名),$info->getSaveName() **********不同之处,笔记笔记哦
  27. $filename = $info->getSaveName(); //在测试的时候也可以直接打印文件名称来查看
  28. if ($filename) {
  29. //$this->success('文件上传成功!');
  30. $imageUrl = $domainpath . $filename;
  31. $r_upload['code'] = '200';
  32. $r_upload['resultData'] = $imageUrl;
  33. //不转义反斜杠
  34. return json_encode($r_upload, 320);
  35. } else {
  36. // 上传失败获取错误信息
  37. $this->error($file->getError());
  38. }
  39. }
  40. /*
  41. * 20210502
  42. * 导入支侍文件
  43. * 20210509edit
  44. * 存入日志
  45. * 20210509 再次修改,应将uplog主表存入放在子过程中
  46. * @todo 上传前获取文件名,以防止重复导入
  47. */
  48. public function uploadexcelinputdata()
  49. {
  50. // 获取表单上传文件
  51. $file = request()->file('file');
  52. $domainpath = 'https://app.tjzhxx.cn:1443/Uploads/';
  53. //echo $file['name'];
  54. // echo $file->getFilename();
  55. $inputfilename = $_FILES['file']['name'];
  56. // $upinfo['upfilename']=$file['name'];
  57. if (empty($file)) {
  58. $this->error('请选择上传文件');
  59. }
  60. //验证重复上传
  61. $l_p = new paylogic();
  62. $upfile['upfilename'] = $inputfilename;
  63. $isfile = $l_p->getinfobyfname($upfile);
  64. if (!empty($isfile)) {
  65. // $this->error('文件已上传过');
  66. $r_upload['code'] = 0;
  67. $r_upload['errmsg'] = '文件已上传过';
  68. return json_encode($r_upload, 320);
  69. }
  70. // 移动到框架应用根目录/public/uploads/ 目录下
  71. $info = $file->move(ROOT_PATH . 'public' . DS . 'Uploads');
  72. //如果不清楚文件上传的具体键名,可以直接打印$info来查看
  73. //获取文件(文件名),$info->getFilename() ***********不同之处,笔记笔记哦
  74. //获取文件(日期/文件名),$info->getSaveName() **********不同之处,笔记笔记哦
  75. $filename = $info->getSaveName(); //在测试的时候也可以直接打印文件名称来查看
  76. if ($filename) {
  77. //$this->success('文件上传成功!');
  78. $icount = $this->testexcelinputdb($filename, $inputfilename);
  79. $imageUrl = $domainpath . $filename;
  80. $r_upload['code'] = '200';
  81. $r_upload['resultData']['url'] = $imageUrl;
  82. $r_upload['resultData']['inputcount'] = $icount;
  83. return json_encode($r_upload, 320);
  84. } else {
  85. // 上传失败获取错误信息
  86. $this->error($file->getError());
  87. }
  88. }
  89. /*
  90. * 202100502
  91. * edit
  92. * 20210509
  93. * 增加返回总金额
  94. */
  95. private function testexcelinputdb($infilename, $inputfilename)
  96. {
  97. vendor('PHPExcel.PHPExcel');
  98. //$phpExcel = new \PHPExcel();
  99. $objRender = \PHPExcel_IOFactory::createReader('Excel2007');
  100. $filename = '.' . '/' . 'Uploads' . '/' . $infilename;
  101. $ExcelObj = $objRender->load($filename);
  102. $ExcelObj->setActiveSheetIndex(0);
  103. $l_p = new paylogic();
  104. $plist = array();
  105. $i = 2;
  106. $input_arr = array();
  107. $sum_input = 0;
  108. $sum_record = 0;
  109. $upinfo = array();
  110. $upinfo['upfilename'] = $inputfilename;
  111. $upinfo['updatetime'] = date('Y-m-d H:i:s');
  112. // $inputmoney=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
  113. $inputsfzid = $ExcelObj->getActiveSheet()->getCell("F" . $i)->getValue();
  114. while ($inputsfzid > '') {
  115. $paydetail = array();
  116. $paydetail['paymoney'] = $ExcelObj->getActiveSheet()->getCell("H" . $i)->getValue();
  117. $paydetail['sfzid'] = $ExcelObj->getActiveSheet()->getCell("F" . $i)->getValue();
  118. $paydetail['wname'] = $ExcelObj->getActiveSheet()->getCell("G" . $i)->getValue();
  119. $paydetail['payclass'] = $ExcelObj->getActiveSheet()->getCell("E" . $i)->getValue();
  120. $daynumber = $ExcelObj->getActiveSheet()->getCell("D" . $i)->getValue();
  121. $paydetail['paydate'] = gmdate('Y-m-d', ($daynumber - 25569) * 1440 * 60);
  122. $paydetail['indate'] = date('Y-m-d');
  123. //$l_p->savepaydetail($paydetail);
  124. $sum_input += $paydetail['paymoney'];
  125. $sum_record += 1;
  126. array_push($plist, $paydetail);
  127. $i++;
  128. // $inputmoney=$ExcelObj->getActiveSheet()->getCell("H".$i)->getValue();
  129. $inputsfzid = $ExcelObj->getActiveSheet()->getCell("F" . $i)->getValue();
  130. };
  131. $upinfo['upcount'] = $sum_record;
  132. $upinfo['upsummoney'] = $sum_input;
  133. $rid = $l_p->savenewuplog($upinfo);
  134. foreach ($plist as &$row) {
  135. $row['uplogid'] = $rid;
  136. }
  137. $icount = $l_p->savepayredetaillist($plist);
  138. return $icount;
  139. // echo count($plist);
  140. // var_dump($plist);
  141. }
  142. /**
  143. * 指定文件位置上传
  144. *
  145. * @return void
  146. */
  147. public function uploadfilebydir()
  148. {
  149. // 获取表单上传文件
  150. $file = request()->file('file');
  151. if (empty($file)) {
  152. $this->error('请选择上传文件');
  153. }
  154. $dir = request()->param('dir');
  155. if (!preg_match("/^[a-z]{5,10}$/", $dir)) {
  156. $this->error('请求错误');
  157. }
  158. $dir = 'Uploads' . '/' . $dir;
  159. $domainpath = 'https://' . $_SERVER['HTTP_HOST'] . '/' . $dir.'/';
  160. // 移动到框架应用根目录/public/uploads/ 目录下
  161. $info = $file->move(ROOT_PATH . 'public' . '/' . $dir);
  162. //如果不清楚文件上传的具体键名,可以直接打印$info来查看
  163. //获取文件(文件名),$info->getFilename() ***********不同之处,笔记笔记哦
  164. //获取文件(日期/文件名),$info->getSaveName() **********不同之处,笔记笔记哦
  165. $filename = $info->getSaveName(); //在测试的时候也可以直接打印文件名称来查看
  166. $filename = str_replace(DS,"/",$filename);
  167. if ($filename) {
  168. //$this->success('文件上传成功!');
  169. $imageUrl = $domainpath . $filename;
  170. $r_upload['code'] = '200';
  171. $r_upload['resultData'] = $imageUrl;
  172. //不转义反斜杠
  173. return json_encode($r_upload, 320);
  174. } else {
  175. // 上传失败获取错误信息
  176. $this->error($file->getError());
  177. }
  178. }
  179. }