batchDel(); } public function apply(){ $id = 32884; $content = ''; $userList = ''; $formJson = ''; $userId = 100221; model('ApplyRecord')->audit($id,$userId,$content,$formJson,$userList); } public function index(){ // $day = "2024-01-04"; // $lastmonth = get_lastmonth_by_day($day); // halt($lastmonth); // $day = "1981-11-04"; // halt(calculate_age($day)); //&ipmc_jjzx$.ipmc. // $qxsms = new Qxsms(config('app.sms_config')); // $content = "【基建中心】谢正辉提交的上会文件需要您审批。"; // $phone = '13838379499'; // $ret = $qxsms->send($phone,$content); // dump($qxsms->getError()); // halt($ret); // $str = 'ABCDEFHHIGKLMNOPGRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890'; // $str1 = msubstr(str_shuffle($str), 0, mt_rand(2,6)); // $str2 = msubstr(str_shuffle($str), 0, mt_rand(2,6)); // $str3 = msubstr(str_shuffle($str), 0, mt_rand(2,6)); // $password = $str1.'&'.$str2.'.'.$str3; halt(404); } public function xgsb(){ exit(); // $salaryRecordId = 521; $salaryRecordId = 520; $lists = Db::name('salary_record_special') ->alias('a') ->join('salary_record_log b','b.salary_record_id = a.salary_record_id and b.user_id = a.user_id') ->where('a.salary_record_id',$salaryRecordId) ->field('a.*,b.btjson') ->select(); foreach ($lists as $k=>$v){ $ggj = 0; $qynj = 0; $yla = 0; $yli = 0; $sye = 0; $btjson = json_decode($v['btjson'],true); foreach ($btjson as $kk=>$vv){ // 1=公积金 2=企业年金 3=养老保险 4=医疗保险 5=失业保险 if($vv['sbtype'] == 1){ $ggj += $vv['money']; }else if($vv['sbtype'] == 2){ $qynj += $vv['money']; }else if($vv['sbtype'] == 3){ $yla += $vv['money']; }else if($vv['sbtype'] == 4){ $yli += $vv['money']; }else if($vv['sbtype'] == 5){ $sye += $vv['money']; } } $data = [ 'ljgjj' => $v['ljgjj'] + $ggj*2, 'ljylobx' => $v['ljylobx'] + $yla*2, 'ljsybx' => $v['ljsybx'] + $sye*2, 'ljylibx' => $v['ljylibx'] + $yli*2, 'ljnj' => $v['ljnj'] + $qynj*2, ]; $data['ljsqljxmhj'] = $v['ljsqljxmhj'] + 2*($ggj+$yla+$sye+$yli+$qynj); Db::name('salary_record_special')->where('id',$v['id'])->update($data); } halt(date('Y-m-d H:i:s').'完成'); } public function dinneruser(){ $lists = Db::name('user') ->alias('a') ->join('user_info b','a.id = b.user_id') ->where('a.enable',1) ->where('a.del',0) ->field('a.id,a.phone,a.password,b.name') ->select(); $lists = $lists?$lists:[]; $count = 0; foreach ($lists as $k=>$v){ if(!$v['phone']){ continue; } $id = Db::name('dinner_user')->where('phone',$v['phone'])->where('del',0)->value('id'); if($id){ continue; } Db::name('dinner_user')->insert([ 'phone' => $v['phone'], 'password' => $v['password'], 'name' => $v['name'], 'company_id' => 5, 'create_time' => date('Y-m-d H:i:s'), 'enable' => 1, 'del' => 0 ]); $count++; } halt($count); } public function douser(){ // u1=53 u6=38 u2=40 u3=34 u4=120 exit(); $companyId = input('company/d',0); if(!in_array($companyId,[1,2,3,4,6])){ halt('参数错误'); } $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $spreadsheet = $reader->load('./u'.$companyId.'.xlsx'); $sheet = $spreadsheet->getActiveSheet(); $keys = ['A','B']; $data = []; foreach ($sheet->getRowIterator(2) as $row) { $tmp = array(); foreach ($row->getCellIterator() as $k=>$cell) { if(!in_array($k,$keys)){ continue; } $val = $cell->getFormattedValue(); if(in_array($k,$keys)){ $tmp[$k] = str_ireplace(',','',$val); } } $data[] = $tmp; } dump(count($data)); $count = 0; foreach ($data as $k=>$v){ $id = Db::name('dinner_user')->where('phone',$v['B'])->where('del',0)->value('id'); if($id){ continue; } $ret = Db::name('dinner_user')->insert([ 'phone' => $v['B'], 'password' => password_hash('123456',PASSWORD_DEFAULT), 'name' => $v['A'], 'company_id' => $companyId, 'create_time' => date('Y-m-d H:i:s'), 'enable' => 1, 'del' => 0 ]); if($ret){ $count++; } } halt($count); } public function email(){ exit(); $lists = Db::name('user_email')->where('id','>',161)->order('id asc')->limit(50)->select(); $lists = $lists?$lists:[]; $count = 0; $password = "ipmcoa@2020."; foreach ($lists as $k=>$v){ $ret = $this->editEmail($v['eid'],$v['user_id'],$password); if($ret){ $count++; } } dump($count); halt($lists); } private function editEmail($id,$userId,$password){ $data = [ 'id' => $id, 'password' => $password, 'is_password' => 0, 'uname' => '', 'position' => '', 'tel' => '', 'branch_id' => 0, 'active' => 1, // 启用 'is_imap' => 1, 'limits' => 0, 'limitg' => 0, 'is_convert' => 0, 'login_password' => 0, 'disabled_password' => 1, 'my_spam_mode' => 2, ]; if(!empty($data['password'])){ $data['password'] = $password; $data['is_password'] = 1; } //获取用户最优先的部门 $dep = Db::name('user_job') ->alias('uj') ->join('job j','j.id = uj.job_id') ->join('dep d','d.id = j.dep_id') ->where('uj.user_id',$userId) ->where('j.del',0) ->where('j.enable',1) ->where('d.del',0) ->where('d.enable',1) ->order('d.sorts asc,d.id asc') ->value('d.email_branch'); $data['branch_id'] = $dep?$dep:0; $config = config('app.email'); $param = [ '_key' => $config['key'], '_lang' => 'zh-cn', ]; $name = Db::name('user_info')->where('user_id',$userId)->value('name'); $data['uname'] = $name; $param = array_merge($param,$data); $url = $config['host'].'User/update'; Db::startTrans(); try{ $sdata = [ 'eid' => $data['id'], 'update_time' => date('Y-m-d H:i:s'), 'active' => $data['active'] ]; if(!empty($data['password'])){ $sdata['password'] = think_encrypt($data['password']); } $res = Db::name('user_email')->where('user_id',$userId)->update($sdata); if(!$res){ \exception('操作失败'); } $ret = $this->http_post($url,$param); if(!$ret){ \exception($this->error); } Db::commit(); }catch (\think\Exception $e){ Db::rollback(); trace($e->getMessage()); return false; } return true; } private function http_post($url,$param){ try{ $ret = curl_post($url,$param); trace($url); trace($ret); $data = json_decode($ret,true); if($data['status'] == 1){ return $data; }else{ \exception($data['msg']); } }catch (\think\Exception $e){ $this->error = $e->getMessage(); return false; } } public function apply2(){ // $start = '2022-01-28 下午'; // $end = '2022-01-28 下午'; // $type = 1; // $days = calculate_leave($start,$end,$type); // halt($days); // $id = 15016; // $userId = 100221; // $content = '同意'; // model('ApplyRecord')->audit($id,$userId,$content,[],[]); // HelpHander::success([],'操作成功'); $formJson = '[{"componentName":"ddleavefield","components":[{"componentName":"ddleaveselectfield","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":true,"defaultLable":"请假类型","defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":0,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"请假类型选择框","placeholder":false,"print":false,"required":false,"values":"{\"id\":2,\"name\":\"病假\"}"},{"componentName":"dddatefield","defaultApi":0,"defaultAutorekonTime":false,"defaultFormat":"yyyy-MM-dd 上下午","defaultImportant":true,"defaultLable":"开始日期","defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":1,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"日期","placeholder":false,"print":false,"required":false,"values":"2022-01-10 上午"},{"componentName":"dddatefield","defaultApi":0,"defaultAutorekonTime":false,"defaultFormat":"yyyy-MM-dd 上下午","defaultImportant":true,"defaultLable":"结束日期","defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":2,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"日期","placeholder":false,"print":false,"required":false,"values":"2022-01-10 上午"},{"componentName":"ddselectfield","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":false,"defaultLable":"是否离京","defaultOptions":[{"idx":1,"isCheck":false,"text":"是"},{"idx":2,"isCheck":false,"text":"否"}],"defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":3,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"单选框","placeholder":false,"print":false,"required":false,"values":"否"},{"componentName":"dddatefield","defaultApi":0,"defaultAutorekonTime":false,"defaultFormat":"yyyy-MM-dd 上下午","defaultImportant":false,"defaultLable":"离京日期","defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":4,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"日期","placeholder":false,"print":false,"required":false,"values":""},{"componentName":"dddatefield","defaultApi":0,"defaultAutorekonTime":false,"defaultFormat":"yyyy-MM-dd 上下午","defaultImportant":false,"defaultLable":"返京日期","defaultPrint":false,"defaultProps":"请选择","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":5,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"日期","placeholder":false,"print":false,"required":false,"values":""},{"componentName":"textfield","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":false,"defaultLable":"前往地区","defaultPrint":false,"defaultProps":"请输入","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":6,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"单行输入框","placeholder":false,"print":false,"required":false,"values":""}],"defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":true,"defaultLable":"请假套件","defaultPrint":true,"defaultProps":"","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":7,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"请假套件","placeholder":false,"print":false,"required":false},{"componentName":"textareafield","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":true,"defaultLable":"事由及说明","defaultPrint":true,"defaultProps":"请输入","defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":6,"important":true,"inTablefield":false,"isModify":true,"label":true,"name":"多行输入框","placeholder":true,"print":true,"required":true,"values":"就诊"},{"componentName":"ddattachment","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":false,"defaultLable":"附件","defaultPrint":false,"defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":3,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"附件","placeholder":false,"print":false,"required":false,"values":""},{"componentName":"ddphotofield","defaultApi":0,"defaultAutorekonTime":false,"defaultImportant":false,"defaultLable":"图片","defaultPrint":false,"defaultShow":false,"defaultTotal":false,"defaultTranslate":false,"idx":8,"important":false,"inTablefield":false,"isModify":true,"label":false,"name":"图片","placeholder":false,"print":false,"required":false,"values":"http://oaapi.dr-ipmc.org.cn/uploads2/20220110/7a3838a1e2945a45c0027ac9dc5942c1.jpeg"}]'; $formJson = json_decode($formJson,true); $start = ''; $end = ''; $isleavebj = '否'; // 默认不离京 $lbjstart = ''; $lbjend = ''; $address = ''; $type = 1; // 1=减去节假日 0=不减节假日 $data = [ 'org_id' => 3, 'user_id' => 1, 'apply_id' => 5650, 'create_time' => date('Y-m-d H:i:s'), 'status' => 0 ]; foreach ($formJson as $k=>$v){ if($v['componentName'] == 'ddleavefield'){ foreach ($v['components'] as $key=>$val){ switch ($val['idx']){ case '0': $leave = json_decode($val['values'],true); $data['leave_type'] = $leave['id']; break; case '1': $start = $val['values']; $starts = explode(' ',$start); if($starts[count($starts)-1] == '上午'){ $data['start_time'] = $starts[0].' 00:00:00'; }else{ $data['start_time'] = $starts[0].' 12:00:00'; } break; case '2': $end = $val['values']; $ends = explode(' ',$end); if($ends[count($ends)-1] == '上午'){ $data['end_time'] = $ends[0].' 11:59:59'; }else{ $data['end_time'] = $ends[0].' 23:59:59'; } break; case '3': $isleavebj = isset($val['values'])?$val['values']:'否'; break; case '4': $lbjstart = isset($val['values'])?$val['values']:''; break; case '5': $lbjend = isset($val['values'])?$val['values']:''; break; case '6': $address = isset($val['values'])?$val['values']:''; break; } } break; } } if($data['leave_type'] == 6){// 产假,不减节假日 $type = 0; } dump($start); dump($end); dump($type); $data['days'] = calculate_leave($start,$end,$type); $data['cur_days'] = $data['days']; halt($data); } public function sb(){ exit(); $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $spreadsheet = $reader->load('./xinhua.xlsx'); $sheet = $spreadsheet->getActiveSheet(); $keys = ['A','G','I','K','N','P','R','T','X','Z','AC','AE']; $data = []; foreach ($sheet->getRowIterator(2) as $row) { $tmp = array(); foreach ($row->getCellIterator() as $k=>$cell) { if(!in_array($k,$keys)){ continue; } $val = $cell->getFormattedValue(); if(in_array($k,$keys)){ $tmp[$k] = floatval(str_ireplace(',','',$val)); } } $data[] = $tmp; } // halt($data); $salaryId = 370; $num1 = $num2 = 0; foreach ($data as $k=>$v){ $ret = Db::name('salary_record_sb') ->where('salary_record_id',$salaryId) ->where('user_id',$v['A']) ->find(); if($ret){ $res = Db::name('salary_record_sb')->where('id',$ret['id'])->update([ 'ylap' => $ret['ylap'] + floatval($v['G']), 'syep' => $ret['syep'] + floatval($v['I']), 'ylip' => $ret['ylip'] + floatval($v['K']), 'ylac' => $ret['ylac'] + floatval($v['N']), 'syec' => $ret['syec'] + floatval($v['P']), 'ylic' => $ret['ylic'] + floatval($v['R']), 'gsc' => $ret['gsc'] + floatval($v['T']), 'gjjp' => $ret['gjjp'] + floatval($v['X']), 'gjjc' => $ret['gjjc'] + floatval($v['Z']), 'qynjp' => $ret['qynjp'] + floatval($v['AC']), 'qynjc' => $ret['qynjc'] + floatval($v['AE']), ]); if($res){ $num1++; } } $ret = Db::name('salary_record_special') ->where('salary_record_id',$salaryId) ->where('user_id',$v['A']) ->find(); if($ret){ $res = Db::name('salary_record_special')->where('id',$ret['id'])->update([ 'ljgjj' => $ret['ljgjj'] + floatval($v['X']), 'ljnj' => $ret['ljnj'] + floatval($v['AC']), 'ljsybx' => $ret['ljsybx'] + floatval($v['I']), 'ljylobx' => $ret['ljylobx'] + floatval($v['G']), 'ljylibx' => $ret['ljylibx'] + floatval($v['K']), 'ljsqljxmhj' => $ret['ljsqljxmhj'] + floatval($v['X']) + floatval($v['AC']) + floatval($v['I']) + floatval($v['G']) + floatval($v['K']) ]); if($res){ $num2++; } } } dump($num1); dump($num2); halt($data); } public function oa(){ exit(); $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); $spreadsheet = $reader->load('./oa.xlsx'); $sheet = $spreadsheet->getActiveSheet(); $keys = ['A','F','G','I','J','K','N','O','Q','R']; $data = []; foreach ($sheet->getRowIterator(2) as $row) { $tmp = array(); foreach ($row->getCellIterator() as $k=>$cell) { if(!in_array($k,$keys)){ continue; } $val = $cell->getFormattedValue(); if(in_array($k,$keys)){ $tmp[$k] = floatval(str_ireplace(',','',$val)); } } $data[] = $tmp; } $salaryId = 376; $num1 = $num2 = 0; foreach ($data as $k=>$v){ $ret = Db::name('salary_record_sb') ->where('salary_record_id',$salaryId) ->where('user_id',$v['A']) ->find(); if($ret){ $res = Db::name('salary_record_sb')->where('id',$ret['id'])->update([ 'syep' => $ret['syep'] + floatval($v['F']), 'ylip' => $ret['ylip'] + floatval($v['G']), 'syec' => $ret['syec'] + floatval($v['I']), 'ylic' => $ret['ylic'] + floatval($v['J']), 'gsc' => $ret['gsc'] + floatval($v['K']), 'gjjp' => $ret['gjjp'] + floatval($v['N']), 'gjjc' => $ret['gjjc'] + floatval($v['O']), ]); if($res){ $num1++; } } $ret = Db::name('salary_record_special') ->where('salary_record_id',$salaryId) ->where('user_id',$v['A']) ->find(); if($ret){ $res = Db::name('salary_record_special')->where('id',$ret['id'])->update([ 'ljgjj' => $ret['ljgjj'] + floatval($v['N']), 'ljsybx' => $ret['ljsybx'] + floatval($v['F']), 'ljylibx' => $ret['ljylibx'] + floatval($v['G']), 'ljsqljxmhj' => $ret['ljsqljxmhj'] + floatval($v['N']) + floatval($v['F']) + floatval($v['G']) ]); if($res){ $num2++; } } } dump($num1); dump($num2); halt($data); } public function save(){ $username = "hzd@dr-ipmc.org.cn"; $password = "12345678"; $c = new Oaimap($username,$password); $filepath = './email/'; $ret = $c->messageMimeStream('Sent','30','',false,$filepath); // $c->putFile($filepath,$ret['resource']); dump(file_get_contents($ret['resource'])); halt($ret); } public function important(){ // 已办结的改成已完成 $count = Db::name('important_record')->where('status',2)->setField('status',5); dump($count); $count2 = Db::name('important_record')->where('status',0)->where('pid',0)->setField('status',1); dump($count2); } public function salary(){ return false; //工伤(单位)=取两位小数(基数*0.003)+取两位小数(基数*0.003)-取两位小数(基数*0.0024) $lists = Db::name('salary_record_sb')->where('salary_record_id',360)->field('id,sb,gsc')->select(); $count = 0; foreach ($lists as $k=>$v){ $ngsc = round($v['sb']*0.003,2) + round($v['sb']*0.003,2) - round($v['sb']*0.0024,2); $lists[$k]['ngsc'] = $ngsc; if($ngsc != $v['gsc']){ $count++; Db::name('salary_record_sb')->where('id',$v['id'])->update(['gsc'=>$ngsc]); } } halt($lists); } public function salarysy(){ return false; //失业(单位)=取两位小数(基数*0.005)- (取两位小数(基数*0.008)-取两位小数(基数*0.005)) $lists = Db::name('salary_record_sb')->where('salary_record_id',360)->field('id,sb,syec')->select(); $count = 0; foreach ($lists as $k=>$v){ $ngsc = round($v['sb']*0.005,2) - (round($v['sb']*0.008,2) - round($v['sb']*0.005,2)); $lists[$k]['nsyec'] = $ngsc; if($ngsc != $v['syec']){ $count++; Db::name('salary_record_sb')->where('id',$v['id'])->update(['syec'=>$ngsc]); } } halt($lists); } public function salary2(){ return false; $sid = 319; $lists = Db::name('salary_record_log')->where('salary_record_id',$sid)->field('id,user_id,btjson')->select(); foreach ($lists as $k=>$v){ $btjson = json_decode($v['btjson'],true); $bt = 0; foreach ($btjson as $kk=>$vv){ if($vv['id'] == 50){ $bt = $vv['money']; } } $info = Db::name('salary_record_special')->where('salary_record_id',$sid)->where('user_id',$v['user_id'])->find(); if($info){ Db::name('salary_record_special')->where('id',$info['id'])->update([ 'ljsybx' => round($info['ljsybx'] - $bt,2), 'ljsqljxmhj' => round($info['ljsqljxmhj'] - $bt,2) ]); } $sb = Db::name('salary_record_sb')->where('salary_record_id',$sid)->where('user_id',$v['user_id'])->find(); if($sb){ Db::name('salary_record_sb')->where('id',$sb['id'])->update([ 'syep' => round($sb['syep'] + $bt,2), ]); } $lists[$k]['bt'] = $bt; } halt($lists); } public function index2(){ $val = ''; $val = (float)$val; halt($val); $url = 'https://www.lzfh.com/api/dwz.php?cb=1&sturl=3&longurl=http://yyh2.app8888.top/index/user/register/invite_code/JT5XVC.html'; $ret = curl_post($url); // $ret = file_get_contents($url); halt($ret); return false; $username = "hfp@dr-ipmc.org.cn"; $password = "12345678"; $c = new Oaimap($username,$password); // $ret = $c->getMessages('Drafts'); // $ret = $c->getMessageByUid('Drafts',5008); $fromFolder = 'Archive'; $toFolder = 'Trash'; $uids = 6; $ret = $c->messageMove($fromFolder,$toFolder,$uids,true); halt($ret); // 输入文件标签 // Header("Content-type: application/octet-stream"); // Header("Accept-Ranges: bytes"); // Header("Accept-Length: ".$ret['size']); // Header("Content-Disposition: attachment; filename=" . $ret['name']); // // 输出文件内容 // echo $ret['content']; // exit; } public function sendMail(){ $username = "hfp@dr-ipmc.org.cn"; $password = "12345678"; $c = new Oaimap($username,$password); $data = [ 'subject' => '3333', 'body' => '4444', 'to' => '[{"email":"hzd@dr-ipmc.org.cn","name":"黄志东"}]', 'cc' => '[]', 'bcc' => '', 'attachment' => '[{"size":974,"name":"JZBRPLYM.png","big":0,"md5":"","url":"http://test.dr-ipmc.org.cn/uploads/20210712/c733555eda22f153b44b4680461f0e67.png"}]', // [{"big":0,"md5":"sdssfwe232323rfwefwef","url":"","name":"","size":122,"source":{"mimeIndex":"","uid":"1","folder":"Sent"}}}] 'bookTime' => '', 'priority' => 1, 'dnt' => 0, // 0=阅读不回复 1=阅读回复 'draftFolder' => 'Drafts', // 保存草稿时传 'messageFolder' => '',// 编辑草稿箱时填写 'messageUid' => '', // 编辑草稿箱uid 'draftInfo' => null, // 回复、转发 'inReplyTo' => '', 'references' => '', 'dsn' => 0 // 0=发送成功不回复 1=发送成功回复 ]; $from = [ 'name' => 'hfp', 'email' => 'hfp@dr-ipmc.org.cn' ]; $data['from'] = $from; $ret = $c->sendMessage($data); halt($ret); // $this->createEml($data,$from); // exit(); } public function createEml($data,$from){ $date = date('D, d M Y H:i:s'); $data['date'] = $date; $altbody = strip_tags($data['body']); $messageId = md5(json_encode($data)); $partend = get_rand_num().'.'.time(); $part1 = '1_'.$partend; $emlstr = "Mime-Version: 1.0".PHP_EOL; $emlstr .= "Date: ".$date.' +0800'.PHP_EOL; $emlstr .= "Content-Type: multipart/mixed;".PHP_EOL; $emlstr .= " boundary=\"--=_Part_{$part1}\"".PHP_EOL; $emlstr .= "Message-ID: <{$messageId}@localhost>".PHP_EOL; $emlstr .= "X-Mailer: Postfix".PHP_EOL; if($data['book_time']){ $emlstr .= "TimedSendDate: 1".PHP_EOL; } $emlstr .= 'From: "=?utf-8?B?'.base64_encode($from['name']).'?=" <'.$from['email'].'>'.PHP_EOL; $tos = json_decode($data['to'],true); $tostr = []; foreach ($tos as $k=>$v){ $str = ''; if($v['name']){ $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>'; }else{ $str .= '<'.$v['email'].'>'; } $tostr[] = $str; } $emlstr .= 'To: '.implode(',',$tostr).PHP_EOL; $ccs = json_decode($data['cc'],true); if($ccs){ $ccstr = []; foreach ($ccs as $k=>$v){ $str = ''; if($v['name']){ $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>'; }else{ $str .= '<'.$v['email'].'>'; } $ccstr[] = $str; } $emlstr .= 'Cc: '.implode(',',$ccstr).PHP_EOL; } $bccs = json_decode($data['bcc'],true); if($bccs){ $bccstr = []; foreach ($bccs as $k=>$v){ $str = ''; if($v['name']){ $str .= '"=?utf-8?B?'.base64_encode($v['name']).'?=" <'.$v['email'].'>'; }else{ $str .= '<'.$v['email'].'>'; } $bccstr[] = $str; } $emlstr .= 'Bcc: '.implode(',',$bccstr).PHP_EOL; } if($data['dnt'] == 1){ $emlstr .= 'Disposition-Notification-To: '.$from['name'].PHP_EOL; $emlstr .= 'X-Confirm-Reading-To: '.$from['name'].PHP_EOL; } if($data['priority'] == 1){ $emlstr .= 'X-Priority: 1 (Highest)'.PHP_EOL; } $emlstr .= 'Subject: =?utf-8?B?'.base64_encode($data['subject']).'?='.PHP_EOL; $emlstr .= PHP_EOL.'----=_Part_'.$part1.PHP_EOL; $part2 = '2_'.$partend; $emlstr .= "Content-Type: multipart/alternative;".PHP_EOL; $emlstr .= " boundary=\"--=_Part_{$part2}".PHP_EOL; $emlstr .= PHP_EOL.'----=_Part_'.$part2.PHP_EOL; $emlstr .= 'Content-Type: text/plain; charset="utf-8"'.PHP_EOL; $emlstr .= 'Content-Transfer-Encoding: quoted-printable'.PHP_EOL; $emlstr .= PHP_EOL.quoted_printable_encode($altbody).PHP_EOL; $emlstr .= PHP_EOL.'----=_Part_'.$part2.PHP_EOL; $emlstr .= 'Content-Type: text/html; charset="utf-8"'.PHP_EOL; $emlstr .= 'Content-Transfer-Encoding: quoted-printable'.PHP_EOL; $emlstr .= PHP_EOL.quoted_printable_encode($data['body']).PHP_EOL; $emlstr .= PHP_EOL.'----=_Part_'.$part2.'--'.PHP_EOL; // 附件 // $emlstr .= PHP_EOL.'----=_Part_'.$part1.PHP_EOL; // $emlstr .= 'Content-Type: image/png; name="favicon.png"'.PHP_EOL; // $emlstr .= 'Content-Disposition: attachment; filename="favicon.png"'.PHP_EOL; // $emlstr .= 'Content-Transfer-Encoding: base64'.PHP_EOL; // $emlstr .= PHP_EOL.base64_encode(file_get_contents('./favicon.png')).PHP_EOL; // $emlstr .= PHP_EOL.'----=_Part_'.$part1.'--'.PHP_EOL; file_put_contents('./email/'.date('Ymd_').$messageId.'.eml', $emlstr); } public function login(){ $email = 'hzd@dr-ipmc.org.cn'; $res = model('Email')->login($email); halt($res); } public function p(){ halt(config('database.db_email')); $url = "http://124.71.111.86:8010/Api/Smtp/send"; $param = [ '_key' => '3zMTJH1WHxYVz7yr', '_lang' => 'zh-cn', 'from' => 'test@dr-ipmc.org.cn', 'from_name' => 'hzdong', 'to' => '13838379499@163.com', 'subject' => 'test', 'content' => 'Neri', 'save_sent' => 1 ]; $ret = curl_post($url,$param); halt(json_decode($ret,true)); } public function send(){ $mail = new PHPMailer(true); try { //服务器配置 $mail->CharSet ="UTF-8"; //设定邮件编码 $mail->isSMTP(); // 使用SMTP $mail->Host = 'mail.dr-ipmc.org.cn'; // SMTP服务器 $mail->SMTPAuth = true; // 允许 SMTP 认证 $mail->Username = 'hzd@dr-ipmc.org.cn'; // SMTP 用户名 即邮箱的用户名 $mail->Password = '12345678'; // SMTP 密码 部分邮箱是授权码(例如163邮箱) $mail->Port = 25; // 服务器端口 25 或者465 具体要看邮箱服务器支持 $mail->SMTPOptions = array( 'ssl' => array( 'verify_peer' => false, 'verify_peer_name' => false, 'allow_self_signed' => true ) ); // 设置优先级(1:紧急 3:普通 5:低) //message.setHeader("X-Priority", "1"); // 要求阅读回执(收件人阅读邮件时会提示回复发件人,表明邮件已收到,并已阅读) //message.setHeader("Disposition-Notification-To", from); $mail->setFrom('hzd@dr-ipmc.org.cn', 'hzd'); //发件人 $mail->addAddress('1570246817@qq.com', '黄志东'); // 收件人 //$mail->addAddress('ellen@example.com'); // 可添加多个收件人 // $mail->addReplyTo('xxxx@163.com', 'info'); //回复的时候回复给哪个邮箱 建议和发件人一致 //$mail->addCC('cc@example.com'); //抄送 //$mail->addBCC('bcc@example.com'); //密送 //发送附件 // $mail->addAttachment('../xy.zip'); // 添加附件 // $mail->addAttachment('../thumb-1.jpg', 'new.jpg'); // 发送附件并且重命名 //Content $mail->isHTML(true); // 是否以HTML文档格式发送 发送后客户端可直接显示对应HTML内容 $mail->Subject = '这里是邮件标题' . time(); $mail->Body = '

这里是邮件内容

' . date('Y-m-d H:i:s'); $mail->AltBody = '如果邮件客户端不支持HTML则显示此内容'; $ret = $mail->send(); dump($mail->getLastMessageID()); dump($ret); echo '邮件发送成功'; } catch (Exception $e) { echo '邮件发送失败: ', $mail->ErrorInfo; } } public function email111(){ $username = "hzd@dr-ipmc.org.cn"; $password = "12345678"; $c = new Oaimap($username,$password); $ret = $c->getMessageByUid('INBOX',11); // $msg = file_get_contents('./msg.eml'); // $ret = $c->getFoldersTree($msg); // $ret = $c->getMessages(); // $c->disconnect(); // $header = []; // foreach ($ret as $message){ // dump($message->getSubject()) ; // } halt($ret); } public function email2(){ $username = "hzd@dr-ipmc.org.cn"; $password = "12345678"; $c = new Oaimap2($username,$password); $ret = $c->getMessageByUid('INBOX',11); // $msg = file_get_contents('./msg.eml'); // $ret = $c->getFoldersTree($msg); // $ret = $c->getMessages(); // $c->disconnect(); // $header = []; // foreach ($ret as $message){ // dump($message->getSubject()) ; // } halt($ret); } public function mailso(){ include \think\facade\Env::get('root_path') . 'extend/MailSo/MailSo.php'; $username = "hzd@dr-ipmc.org.cn"; $password = "12345678"; $sLogFileFullPath = 'E:/website/'; define('APP_START_TIME', time()); // $oDriver = \MailSo\Log\Drivers\File::NewInstance($sLogFileFullPath); $oDriver = \MailSo\Log\Drivers\Syslog::NewInstance(); $oLogger = \MailSo\Log\Logger::SingletonInstance()->Add( $oDriver->WriteOnErrorOnly(false) ->WriteOnPhpErrorOnly(false) ->WriteOnTimeoutOnly(20) ); $oMailClient = MailClient::NewInstance()->SetLogger($oLogger); // $oData = $oMailClient // ->Connect('mail.dr-ipmc.org.cn', 143) // ->Login($username, $password) // ->MessageList('INBOX',0,10); // // $list = $this->responseObject($oData, 'MessageList'); // $oData = $oMailClient // ->Connect('mail.dr-ipmc.org.cn', 143) // ->Login($username, $password) // ->Message('INBOX',12); // // $list = $this->responseObject($oData, 'Message'); $oData = $oMailClient ->Connect('mail.dr-ipmc.org.cn', 143) ->Login($username, $password) ->Folders(); $list = $this->responseObject($oData); // $ret = $this->std_class_object_to_array($oData); halt($list); } public function std_class_object_to_array($stdclassobject) { $array = []; $_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject; foreach ($_array as $key => $value) { $value = (is_array($value) || is_object($value)) ? $this->std_class_object_to_array($value) : $value; $array[$key] = $value; } return $array; } public function index3(){ $config = config('app.imap'); // halt($config); $cm = new ClientManager($config); $oClient = $cm->account(); $oClient->connect(); $folders = $oClient->getFolders(); //Loop through every Mailbox /** @var \Webklex\PHPIMAP\Folder $folder */ foreach($folders as $folder){ //Get all Messages of the current Mailbox $folder /** @var \Webklex\PHPIMAP\Support\MessageCollection $messages */ $messages = $folder->messages()->all()->get(); /** @var \Webklex\PHPIMAP\Message $message */ foreach($messages as $message){ dump(is_utf8($message->getSubject())); if(!is_utf8($message->getSubject())){ echo iconv("GBK","UTF-8",$message->getSubject()).'
'; }else{ echo $message->getSubject().'
'; } echo 'Attachments: '.$message->getAttachments()->count().'
'; echo $message->getHTMLBody().'
'; //Move the current Message to 'INBOX.read' // if($message->move('INBOX.read') == true){ // echo 'Message has ben moved'; // }else{ // echo 'Message could not be moved'; // } } } exit(); // $aFolder = $oClient->getFolders(); // $ret = $oClient->createFolder('ssss.sssss'); // halt($ret); $folder = $oClient->getFolderByPath('INBOX'); $aMessage = $folder->messages()->all()->get(); include \think\facade\Env::get('root_path') . 'extend/MailSo/lib/MailSo/Base/Utils.php'; foreach($aMessage as $oMessage){ // echo imap_mime_header_decode($oMessage->getAttributes()["subject"]).'
'; echo \MailSo\Base\Utils::Utf8Clear($oMessage->getAttributes()["subject"]).'
'; echo 'Attachments: '.$oMessage->getAttachments()->count().'
'; // echo $oMessage->getHTMLBody(true); //Move the current Message to 'INBOX.read' // if($oMessage->moveToFolder('INBOX.read') == true){ // echo 'Message has ben moved'; // }else{ // echo 'Message could not be moved'; // } } halt('1111'); $aFolder = $oClient->getFolders(); foreach($aFolder as $oFolder){ // $info = $oFolder->overview('1:*'); $ret = $oFolder->getClient()->createFolder('subsss'); halt($ret); dump($oFolder->path); dump($oFolder->name); dump($oFolder->full_name); dump($oFolder->children); halt(1111); // dump($info); // // //Get all Messages of the current Mailbox $oFolder // /** @var \Webklex\PHPIMAP\Support\MessageCollection $aMessage */ // $aMessage = $oFolder->messages()->all()->get(); // // /** @var \Webklex\PHPIMAP\Message $oMessage */ // foreach($aMessage as $oMessage){ // echo $oMessage->getSubject().'
'; // echo 'Attachments: '.$oMessage->getAttachments()->count().'
'; // echo $oMessage->getHTMLBody(true); // // //Move the current Message to 'INBOX.read' //// if($oMessage->moveToFolder('INBOX.read') == true){ //// echo 'Message has ben moved'; //// }else{ //// echo 'Message could not be moved'; //// } // } } // $aMessage = $oFolder->query()->all()->get(); // halt($aMessage); } public function import(){ halt('1111'); $start = "2021-05-01 00:00:00"; $end = "2021-05-31 23:59:59"; $lists = Db::name('file') ->where('del',0) ->where('enable',1) ->where('create_time','>=',$start) ->where('create_time','<=',$end) ->order('id asc') ->select(); $sn = $this->createNewSn(4); Db::startTrans(); try{ foreach ($lists as $k=>$v){ $data = [ 'title' => $v['title'], 'sn' => $sn, 'source' => $v['source'], 'proof' => $v['sn'], 'org_id' => 4, 'transfer' => 1, 'status' => 1, 'transfer_id' => $v['id'], 'create_time' => $v['create_time'] ]; $ret = Db::name('important')->insert($data); if(!$ret){ \exception('操作失吧'); } $sn++; } Db::commit(); echo '操作完成'; }catch (\think\Exception $e){ Db::commit(); halt('错误'.$e->getMessage()); } } private function createNewSn($orgId){ $newsn = ''; $sn = Db::name('important')->where('del',0)->where('org_id',$orgId)->order('id desc')->value('sn'); $curY = date('y'); if(!$sn){ $newsn = $curY.'0001'; }else{ $y = substr($sn,0,2); if($curY != $y){ $newsn = $curY.'0001'; }else{ $newsn = $sn+1; } } return $newsn; } private function matchMailHead($str){ $headList = array(); $headArr = array( 'from', 'to', 'date', 'subject' ); foreach ($headArr as $key){ if(preg_match('/'.$key.':(.*?)[\n\r]/is', $str,$m)){ $match = trim($m[1]); $headList[$key] = $key=='date'?date('Y-m-d H:i:s',strtotime($match)):$match; } } return $headList; } public function word4(){ $PHPWord = new PhpWord(); $templateProcessor = new TemplateProcessor(__DIR__.'\test.docx'); $arr = [ [ 'programSn' => 'N0001', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'name' => [ ['name' => '未制定安全生','val'=>'sss'], ['name' => '未制定安全生','val'=>'sss'], ] ], [ 'programSn' => 'N0002', 'company' => '新华', 'fhUserName' => '张三2', 'agent' => '李四2', 'name' => [ ['name' => '未制定安全生','val'=>'sss'], ['name' => '未制定安全生','val'=>'sss'], ] ], ]; $templateProcessor->cloneBlock('block_name', 0, true, false, $arr); // 循环次数 $count = count($arr); // $templateProcessor->cloneRow('programSn', $count); //复制行、 // foreach ($arr as $kk => $vv) { // $list = ''; // for ($i = 0; $i < count($vv['list']); $i++) { // if ($i == (count($vv['list']) - 1)) { // $list = $list . ($i + 1) . ' .${name#' . ($kk + 1) . '#' . ($i + 1) . '}'; // } else { // // 换行符 // $list = $list . ($i + 1) . ' .${name#' . ($kk + 1) . '#' . ($i + 1) . '}'; // } // } // $templateProcessor->setValue('name#' . ($kk + 1), $list); // } // 保存新word文档 $path = md5(time()); // 将 word 文档保存至 你设置的路径 $templateProcessor->saveAs('./zss' . time() . ".docx"); } public function word(){ $templateProcessor = new TemplateProcessor(__DIR__.'/../../../public/word/stamp_tmp.docx'); $templateProcessor->setValue('firstname', 'John'); $templateProcessor->setValue('lastname', 'Doe'); $arr = [ [ 'programSn' => 'N0001', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'name1' => '应税凭证名称', 'title' => '111', 'name2' => '对方单位名称', 'company2' => '111', 'name3' => '签订日期', 'handleDate' => '111', 'name4' => '适用印花税税目', 'stampTitle' => '111', 'name5' => '计税金额', 'money' => '111', 'name6' => '适用税率', 'stampBl' => '111', 'name7' => '本期应纳税额', 'sdMoney' => '111', ], [ 'programSn' => 'N0002', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'name1' => '应税凭证名称', 'title' => '111', 'name2' => '对方单位名称', 'company2' => '111', 'name3' => '签订日期', 'handleDate' => '111', 'name4' => '适用印花税税目', 'stampTitle' => '111', 'name5' => '计税金额', 'money' => '111', 'name6' => '适用税率', 'stampBl' => '111', 'name7' => '本期应纳税额', 'sdMoney' => '111', ], ]; $templateProcessor->cloneBlock('block_name', 0, true, false, $arr); $templateProcessor->cloneBlock('block_name2', 0, true, false, $arr); // 将 word 文档保存至 你设置的路径 $file_dir = './word/zs' . time() . ".docx"; $templateProcessor->saveAs($file_dir); $file = fopen ( $file_dir, "rb" );//以只读和二进制模式打开文件 Header ( "Content-type: application/octet-stream" ); //告诉浏览器这是一个文件流格式的文件 Header ( "Accept-Ranges: bytes" ); //请求范围的度量单位 Header ( "Accept-Length: " . filesize ( $file_dir ) ); //Content-Length是指定包含于请求或响应中数据的字节长度 //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。 Header ( "Content-Disposition: attachment; filename=印花税计算表.docx" ); echo fread ( $file, filesize ( $file_dir ) ); //读取文件内容并直接输出到浏览器 fclose ( $file ); @unlink($file_dir); exit (); } public function word2(){ $templateProcessor = new TemplateProcessor(__DIR__.'/../../../public/word/gerenjianli(1).docx'); $templateProcessor->setValue('name', 'John'); // $templateProcessor->setValue('lastname', 'Doe'); $arr = [ [ 'project' => 'N0001', 'project_time' => '中心', 'project_content' => '张三', 'project_link' => '李四', 'project_yeji' => '应税凭证名称', ], [ 'project' => 'N0002', 'project_time' => '中心2', 'project_content' => '张三', 'project_link' => '李四', 'project_yeji' => '应税凭证名称', ], ]; $templateProcessor->cloneBlock('block_name2', 0, true, false, $arr); // $templateProcessor->cloneBlock('block_name2', 0, true, false, $arr); $arr2 = [ [ 'programSn' => 'N0001', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'name1' => '应税凭证名称', 'title' => '111', 'name2' => '对方单位名称', 'company2' => '111', 'name3' => '签订日期', 'handleDate' => '111', 'name4' => '适用印花税税目', 'stampTitle' => '111', 'name5' => '计税金额', 'money' => '111', 'name6' => '适用税率', 'stampBl' => '111', 'name7' => '本期应纳税额', 'sdMoney' => '111', ], [ 'programSn' => 'N0002', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'name1' => '应税凭证名称', 'title' => '111', 'name2' => '对方单位名称', 'company2' => '111', 'name3' => '签订日期', 'handleDate' => '111', 'name4' => '适用印花税税目', 'stampTitle' => '111', 'name5' => '计税金额', 'money' => '111', 'name6' => '适用税率', 'stampBl' => '111', 'name7' => '本期应纳税额', 'sdMoney' => '111', ], ]; $templateProcessor->cloneBlock('block_name3', 0, true, false, $arr2); // 将 word 文档保存至 你设置的路径 $file_dir = './word/zs' . time() . ".docx"; $templateProcessor->saveAs($file_dir); $file = fopen ( $file_dir, "rb" );//以只读和二进制模式打开文件 Header ( "Content-type: application/octet-stream" ); //告诉浏览器这是一个文件流格式的文件 Header ( "Accept-Ranges: bytes" ); //请求范围的度量单位 Header ( "Accept-Length: " . filesize ( $file_dir ) ); //Content-Length是指定包含于请求或响应中数据的字节长度 //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。 Header ( "Content-Disposition: attachment; filename=印花税计算表.docx" ); echo fread ( $file, filesize ( $file_dir ) ); //读取文件内容并直接输出到浏览器 fclose ( $file ); @unlink($file_dir); exit (); } public function wordold(){ $PHPWord = new PhpWord(); $templateProcessor = new TemplateProcessor(__DIR__.'\test.docx'); $arr = [ [ 'programSn' => 'N0001', 'company' => '中心', 'fhUserName' => '张三', 'agent' => '李四', 'list' => [ ['list' => '未制定安全生产责任制,扣10分;未经责任人签字确认,扣5分'], ['list' => '未制定安全生产责任制,扣9分;未经责任人签字确认,扣2分'], ] ], [ 'programSn' => 'N0002', 'company' => '新华', 'fhUserName' => '张三2', 'agent' => '李四2', 'list' => [ ['list' => '未制定安全生产责任制,扣10分;未经责任人签字确认,扣5分'], ['list' => '未制定安全生产责任制,扣9分;未经责任人签字确认,扣2分'], ] ], ]; // 循环次数 $count = count($arr); $templateProcessor->cloneRow('programSn', $count); //复制行、 foreach ($arr as $kk => $vv) { $list = ''; for ($i = 0; $i < count($vv['list']); $i++) { if ($i == (count($vv['list']) - 1)) { $list = $list . ($i + 1) . ' .${list#' . ($kk + 1) . '#' . ($i + 1) . '}'; } else { // 换行符 $list = $list . ($i + 1) . ' .${list#' . ($kk + 1) . '#' . ($i + 1) . '}'; } } $templateProcessor->setValue('list#' . ($kk + 1), $list); } // 保存新word文档 $path = md5(time()); // 将 word 文档保存至 你设置的路径 $templateProcessor->saveAs('./zs' . time() . ".docx"); } public function word3(){ header('Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document'); header('Content-Disposition: attachment;filename="印花税单.docx"'); header('Cache-Control: max-age=0'); $html = ''; $html .= '
'; $html .= '
印花税计算表
'; $html .= '
项目编号: {{ item.programSn }}
'; $html .= '
报税单位: {{ item.company }} 单位: 元
'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= '
应税凭证名称{{ item.title }}
对方单位名称{{ item.company2 }}
签订日期{{ item.handleDate }}
适用印花税税目{{ item.stamp.title }}
计税金额{{ item.money }}
适用税率{{ item.stamp.bl }}‰
本期应纳税额{{ item.sdMoney }}
'; $html .= '
核税人: {{ item.fhUserName }}填报人: {{ item.agent }}
'; $html .= '
'; $phpword = new PhpWord(); $section = $phpword->addSection(); \PhpOffice\PhpWord\Shared\Html::addHtml($section, $html, false, false); $objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007'); $objWriter->save('php://output'); } public function import2(){ exit(); $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xls(); // $spreadsheet = $reader->load('./xinhua.xlsx'); $spreadsheet = $reader->load('./mx.xls'); $sheet = $spreadsheet->getActiveSheet(); // $users = Db::name('user_info')->column('user_id','name'); $adds = Db::name('asset_add')->column('id','title'); $cates = Db::name('asset_cate')->column('id','title'); $units = Db::name('asset_unit')->column('id','title'); $classs = Db::name('asset_class')->column('id','title'); $enables = ['使用' => 2,'在库' => 1]; $company = 2; $orgId = 4; $res = array(); $keys = ['A','B','C','D','E','F','G','H','I','J','K','L','M']; $names = [ 'A' => 'sn', 'B' => 'old_sn', 'C' => 'title', 'D' => 'class_id', 'E' => 'cate_id', 'F' => 'nums', 'G' => 'enable', 'H' => 'add_id', 'I' => 'spec', 'J' => 'unit_id', 'K' => 'price', 'L' => 'buy_time', 'M' => 'brand' ]; $oldsn = []; $data = []; foreach ($sheet->getRowIterator(2) as $row) { $tmp = array(); foreach ($row->getCellIterator() as $k=>$cell) { if(!in_array($k,$keys)){ break; } $val = $cell->getFormattedValue(); if($k == 'D'){ if(!empty($classs[$val])){ $tmp[$names[$k]] = $classs[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'E'){ $val = $cell->getFormattedValue(); if(!empty($cates[$val])){ $tmp[$names[$k]] = $cates[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'G'){ $val = $cell->getFormattedValue(); if(!empty($enables[$val])){ $tmp[$names[$k]] = $enables[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'H'){ $val = $cell->getFormattedValue(); if(!empty($adds[$val])){ $tmp[$names[$k]] = $adds[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'J'){ $val = $cell->getFormattedValue(); if(!empty($units[$val])){ $tmp[$names[$k]] = $units[$val]; }else{ $tmp[$names[$k]] = 0; } }else{ $tmp[$names[$k]] = $cell->getFormattedValue(); } } if(!$tmp['buy_time']){ $tmp['buy_time'] = null; } $tmp['buy_time'] = !$tmp['buy_time']?null:date('Y-m-d',strtotime($tmp['buy_time'])); $tmp['company_id'] = $company; $tmp['org_id'] = $orgId; $tmp['create_time'] = date('Y-m-d H:i:s'); if(!in_array($tmp['old_sn'],$oldsn)){ $oldsn[] = $tmp['old_sn']; } $data[] = $tmp; } Db::name('asset_items')->where('old_sn','in',$oldsn)->setField('del',1); $ret = Db::name('asset_items')->insertAll($data); dump($ret); dump($oldsn); halt($data); } public function import1(){ $reader = new \PhpOffice\PhpSpreadsheet\Reader\Xlsx(); // $spreadsheet = $reader->load('./xinhua.xlsx'); $spreadsheet = $reader->load('./zhongxin.xlsx'); $sheet = $spreadsheet->getActiveSheet(); $users = Db::name('user_info')->column('user_id','name'); $adds = Db::name('asset_add')->column('id','title'); $cates = Db::name('asset_cate')->column('id','title'); $units = Db::name('asset_unit')->column('id','title'); $classs = Db::name('asset_class')->column('id','title'); $enables = ['使用' => 2,'在库' => 1]; $company = 1; $orgId = 4; $res = array(); $keys = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S']; $names = [ 'A' => 'sn', 'B' => 'old_sn', 'C' => 'title', 'D' => 'class_id', 'E' => 'cate_id', 'F' => 'nums', 'H' => 'user_id', 'I' => 'enable', 'J' => 'add_id', 'K' => 'spec', 'L' => 'unit_id', 'M' => 'price', 'N' => 'buy_time', 'O' => 'brand', 'P' => 'remark', 'Q' => 'remark2', 'R' => 'remark3', 'S' => 'remark4' ]; foreach ($sheet->getRowIterator(2) as $row) { $tmp = array(); foreach ($row->getCellIterator() as $k=>$cell) { if(!in_array($k,$keys)){ break; } if($k != 'G'){ $val = $cell->getFormattedValue(); if($k == 'D'){ if(!empty($classs[$val])){ $tmp[$names[$k]] = $classs[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'E'){ $val = $cell->getFormattedValue(); if(!empty($cates[$val])){ $tmp[$names[$k]] = $cates[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'I'){ $val = $cell->getFormattedValue(); if(!empty($enables[$val])){ $tmp[$names[$k]] = $enables[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'H'){ $val = $cell->getFormattedValue(); if(!empty($users[$val])){ $tmp[$names[$k]] = $users[$val]; $depId = Db::name('user_job') ->alias('uj') ->join('job j','j.id = uj.job_id') ->where('uj.user_id',$users[$val]) ->value('j.dep_id'); $tmp['dep_id'] = $depId?$depId:0; }else{ $tmp[$names[$k]] = 0; $tmp['dep_id'] = 0; } }else if($k == 'J'){ $val = $cell->getFormattedValue(); if(!empty($adds[$val])){ $tmp[$names[$k]] = $adds[$val]; }else{ $tmp[$names[$k]] = 0; } }else if($k == 'L'){ $val = $cell->getFormattedValue(); if(!empty($units[$val])){ $tmp[$names[$k]] = $units[$val]; }else{ $tmp[$names[$k]] = 0; } }else{ $tmp[$names[$k]] = $cell->getFormattedValue(); } } } if(!$tmp['buy_time']){ $tmp['buy_time'] = null; } $tmp['company_id'] = $company; $tmp['org_id'] = $orgId; $tmp['create_time'] = date('Y-m-d H:i:s'); if($tmp['user_id'] == 0&&$tmp['enable'] == 2){ // $errors[] = $tmp; // $errorids[] = $row->getRowIndex(); }else{ if($tmp['sn']){ $ret = Db::name('asset_items')->where('sn',$tmp['sn'])->find(); if(!$ret){ $res[] = $tmp; } } } } // halt($res); dump(count($res)); $ret = Db::name('asset_items')->insertAll($res); halt($ret); } public function programSn(){ exit(); // 获取主合同编号 $programs = Db::name('program')->select(); foreach ($programs as $k=>$v){ $lists = Db::name('contract') ->alias('c') ->join('apply a','a.id = c.apply_id') ->where('c.status',1) ->where('a.del',0) ->where('c.type',0) ->where('c.program_id',$v['id']) ->order('a.finish_time asc') ->field('c.*') ->select(); $i = 1; foreach ($lists as $kk=>$vv){ $sn = $v['sn'].str_pad($i,4,'0',STR_PAD_LEFT); Db::name('contract')->where('id',$vv['id'])->update(['program_sn'=>$sn]); $subs = Db::name('contract') ->alias('c') ->join('apply a','a.id = c.apply_id') ->where('c.status',1) ->where('a.del',0) ->where('c.type',1) ->where('c.parent_apply_id',$vv['id']) ->order('a.finish_time asc') ->field('c.*') ->select(); $j = 1; foreach ($subs as $kkk => $vvv){ $ssn = $sn.'补'.str_pad($j,2,'0',STR_PAD_LEFT); Db::name('contract')->where('id',$vvv['id'])->update(['program_sn'=>$ssn]); $j++; } $i++; } } echo '完成'; } public function budgetDep(){ exit(); $id = 2126; $info = Db::name('apply')->where('id',$id)->find(); $formJson = $info['form_json']; $values = []; $formJson = json_decode($formJson,true); foreach ($formJson as $k=>$v){ if($v['componentName'] == 'ddbudgetfield'){ foreach ($v['components'] as $key=>$val){ switch ($val['idx']){ case '0': $values = json_decode($val['values'],true); break; } } break; } } $items = $values['items']; $curTime = '2021-01-22 10:41:56'; $orgId = 4; $apply = Db::name('budget_apply')->where('apply_id',$id)->find(); foreach ($items as $k=>$v){ $sdata = [ 'org_id' => $orgId, 'dep_id' => $apply['dep_id'], 'budget_id' => $apply['budget_id'], 'company_id' => $apply['company_id'], 'items_id' => $v['id'], 'money' => floatval($v['money']), 'money2' => !empty($v['money2'])?floatval($v['money2']):0, 'money3' => !empty($v['money3'])?floatval($v['money3']):0, 'intro' => !empty($v['intro'])?$v['intro']:'', 'create_time' => $curTime ]; $res = Db::name('budget_dep')->insert($sdata); } halt('成功'); } public function stamp(){ exit(); $ids = Db::name('contract_stamp_log')->column('contract_id'); trace($ids); dump($ids); if($ids){ $ids = array_unique($ids); $lists = Db::name('contract')->where('id','not in',$ids)->where('type',0)->where('status',1)->select(); }else{ $lists = Db::name('contract')->where('type',0)->where('status',1)->select(); } foreach ($lists as $k=>$v){ if($v['sdid'] > 0){ $sdinfo = Db::name('stamp_duty')->where('id',$v['sdid'])->find(); $sd_money = round($v['money'] * $sdinfo['bl'] / 1000,1); if($sd_money < 1 && $sdinfo['type'] == 1){ $sd_money = 1; } if($sd_money < 1 && $sdinfo['type'] == 2){ $sd_money = 0; } if($sd_money != $v['sd_money']){ trace('修改:'.json_encode($v)); trace('修改为:'.$sd_money); dump('修改:'.json_encode($v)); dump('修改为:'.$sd_money); Db::name('contract')->where('id',$v['id'])->update(['sd_money'=>$sd_money]); } } } halt('完成'); } public function bksb(){ exit(); $names = ['name','total','sye','yli','gjj']; $file = './bksb.xlsx'; $data = ExcelUtil::read($file,$names,2); $salaryRecordId = 493; $lists = Db::name('salary_record_special') ->alias('srs') ->join('user_info ui','ui.user_id = srs.user_id') ->where('srs.salary_record_id',$salaryRecordId) ->field('srs.*,ui.name') ->select(); $count = 0; foreach ($lists as $k=>$v){ foreach ($data as $kk=>$vv){ if($v['name'] == $vv['name']){ $nljgjj = round($v['ljgjj'] - round($vv['gjj'],2),2); $nljsybx = round($v['ljsybx'] - round($vv['sye'],2),2); $nljylibx = round($v['ljylibx'] - round($vv['yli'],2),2); $lists[$k]['gjj'] = round($vv['gjj'],2); $lists[$k]['sye'] = round($vv['sye'],2); $lists[$k]['yli'] = round($vv['yli'],2); $lists[$k]['nljgjj'] = $nljgjj; $lists[$k]['nljsybx'] = $nljsybx; $lists[$k]['nljylibx'] = $nljylibx; Db::name('salary_record_special')->where('id',$v['id'])->update([ 'ljgjj' => $nljgjj, 'ljsybx' => $nljsybx, 'ljylibx' => $nljylibx ]); $count++; break; } } } dump($count); halt($lists); halt($data); } public function bksb2(){ exit(); $names = ['name','total','yla','sye','yli','gjj','qynj']; $file = './bksb2.xlsx'; $data = ExcelUtil::read($file,$names,2); dump(count($data)); $salaryRecordId = 489; $lists = Db::name('salary_record_special') ->alias('srs') ->join('user_info ui','ui.user_id = srs.user_id') ->where('srs.salary_record_id',$salaryRecordId) ->field('srs.*,ui.name') ->select(); $count = 0; foreach ($lists as $k=>$v){ foreach ($data as $kk=>$vv){ if($v['name'] == $vv['name']){ $nljgjj = round($v['ljgjj'] - round($vv['gjj'],2),2); $nljsybx = round($v['ljsybx'] - round($vv['sye'],2),2); $nljylibx = round($v['ljylibx'] - round($vv['yli'],2),2); $nljylobx = round($v['ljylobx'] - round($vv['yla'],2),2); $nljnj = round($v['ljnj'] - round($vv['qynj'],2),2); $lists[$k]['gjj'] = round($vv['gjj'],2); $lists[$k]['sye'] = round($vv['sye'],2); $lists[$k]['yli'] = round($vv['yli'],2); $lists[$k]['yla'] = round($vv['yla'],2); $lists[$k]['qynj'] = round($vv['qynj'],2); $lists[$k]['nljgjj'] = $nljgjj; $lists[$k]['nljsybx'] = $nljsybx; $lists[$k]['nljylibx'] = $nljylibx; $lists[$k]['nljylobx'] = $nljylobx; $lists[$k]['nljnj'] = $nljnj; Db::name('salary_record_special')->where('id',$v['id'])->update([ 'ljgjj' => $nljgjj, 'ljsybx' => $nljsybx, 'ljylibx' => $nljylibx, 'ljylobx' => $nljylobx, 'ljnj' => $nljnj ]); $count++; break; } } } dump($count); halt($lists); halt($data); } }