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 .= ' 应税凭证名称 | {{ item.title }} |
';
$html .= '对方单位名称 | {{ item.company2 }} |
';
$html .= '签订日期 | {{ item.handleDate }} |
';
$html .= '适用印花税税目 | {{ item.stamp.title }} |
';
$html .= '计税金额 | {{ item.money }} |
';
$html .= '适用税率 | {{ item.stamp.bl }}‰ |
';
$html .= '本期应纳税额 | {{ item.sdMoney }} |
';
$html .= '
';
$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);
}
}