瀏覽代碼

更新人才直认企业导入

sandm 2 年之前
父節點
當前提交
635378e1e0

+ 5 - 3
app/admin/controller/DirectlyIdentify.php

@@ -32,15 +32,17 @@ class DirectlyIdentify extends AdminController{
 
         $path = $excel->getRealPath();
 
+        $savename = \think\facade\Filesystem::disk("public")->putFile("uploadexcel", $excel);
+
         $zhiren_data = [
-            'task_name' => date("Y-m-d",time()) , "-导入机构数据",
-            'task_file' => $path,
+            'task_name' => date("Y-m-d",time()) . "-导入机构数据",
+            'task_file' => $savename,
             'task_status' => -1,
             'createTime' => date("Y-m-d H:i:s",time()),
             'updateTime' => date("Y-m-d H:i:s",time())
         ];
 
-        $id = Db::table("new_talent_zhiren")->insert($zhiren_data);
+        $id = Db::table("new_talent_zhiren")->insertGetId($zhiren_data);
 
         queue("app\job\Import", ["id" => $id]);
 

+ 2 - 2
app/admin/view/directly_identify/index.html

@@ -56,7 +56,7 @@
                 <h4 class="modal-title" id="importModalLabel">机构数据导入</h4>
             </div>
             <div class="modal-body">
-                <form id="enterprise-import-form" action="/admin/directly_identify/enterprise_import" method="post" enctype="multipart/form-data" target="hiddenIframe">
+                <form id="enterprise-import-form" action="/admin/directly_identify/enterprise_import" method="post" enctype="multipart/form-data">
                     <input type="file" id="file" name="file" onchange="$('#fileName').val($('#file').val());" class="hidden">
                     <div class="form-group row">
                         <div class="col-sm-1"></div>
@@ -72,7 +72,7 @@
                 </form>
             </div>
             <div class="modal-footer">
-                <button type="button" class="btn btn-primary" onclick="DirectlyIdentify.importSubmit()">提交</button>
+                <button type="button" class="btn btn-primary" onclick="DirectlyIdentify.enterpriseImportSubmit()">提交</button>
                 <button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
             </div>
         </div>

+ 13 - 0
app/common.php

@@ -344,3 +344,16 @@ function chkEnterpriseFull($ep) {
     }
     return true;
 }
+function generate_password( $length = 8 ) {
+    $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%&*?';
+    $password = '';
+    for ( $i = 0; $i < $length; $i++ )
+    {
+    // 这里提供两种字符获取方式
+    // 第一种是使用 substr 截取$chars中的任意一位字符;
+    // 第二种是取字符数组 $chars 的任意元素
+    // $password .= substr($chars, mt_rand(0, strlen($chars) – 1), 1);
+        $password .= $chars[ mt_rand(0, strlen($chars) - 1) ];
+    }
+    return $password;
+}

+ 105 - 75
app/job/Import.php

@@ -6,6 +6,10 @@ use think\queue\Job;
 use think\facade\Log;
 use think\facade\Db;
 use app\common\api\ChuanglanSmsApi;
+// 给类文件的命名空间起个别名
+use PhpOffice\PhpSpreadsheet\Spreadsheet;
+//Xlsx类  保存文件功能类
+use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
 
 class Import{
 
@@ -29,97 +33,123 @@ class Import{
      * @return bool
      */
     public function deal($data): bool {
-        $res = Db::table("new_talent_zhiren")->where('id',$data['id'])->findOrEmpty();
+        $id = $data['id'];
+        $res = Db::table("new_talent_zhiren")->where('id',$id)->findOrEmpty();
         if($res){
             if($res['task_status'] != -1){
                 return false;
             }
-            $datas = getExcelDatas($res['task_file']);
-            $datas = array_slice($datas, 1); //去标题
-            $inserts = [];
-            $street = Db::table("sys_dict")->where("pid",1655)->column("code","name");
-            while ($row = array_shift($datas)) {
-                $msg = [];
-                $item = [];
-                $cols = count($row);
-                $item['data'] = 1;
-                for ($i = 0; $i < $cols; $i++) {
-                    switch ($i){
-                        case 0:
-                            if(!in_array($row[$i],['企业用户','民办非企业','事业单位'])){
-                                if($row[$i] == '事业单位'){
-                                    $item['special'] = 1;
+            try{
+                $spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load("/www/wwwroot/report/public/storage/".$res['task_file']);
+                $sheet = $spreadsheet->getSheet(0);
+                $datas = $sheet->toArray();
+                $datas = array_slice($datas, 1); //去标题
+                $street = Db::table("sys_dict")->where("pid",1655)->column("code","name");
+                $index = 2;
+
+                for ($index = 0;$index < count($datas);$index++){
+                    $row = $datas[$index];
+                    $msg = [];
+                    $item = [];
+                    for ($i = 0; $i < 11; $i++) {
+                        switch ($i){
+                            case 0:
+                                if(in_array($row[$i],['企业用户','民办非企业','事业单位'])){
+                                    if($row[$i] == '事业单位'){
+                                        $item['special'] = 1;
+                                    }else{
+                                        $item['special'] = 0;
+                                    }
                                 }else{
-                                    $item['special'] = 0;
+                                    array_push($msg,"导入的机构类型不正确");
                                 }
-                            }else{
-                               array_push($msg,"导入的机构类型不正确");
-                            }
-                            break;
-                        case 1:
-                            if(empty($row[$i])){
-                                array_push($msg,"机构名称不能为空");
-                            }else{
-                                $info = Db::table("un_enterprise")->where('name',$row[$i])->findOrEmpty();
-                                if($info){
-                                    array_push($msg,"机构名称已存在,请检查");
+                                break;
+                            case 1:
+                                if(empty($row[$i])){
+                                    array_push($msg,"机构名称不能为空");
                                 }else{
+                                    $info = Db::table("un_enterprise")->where('name',$row[$i])->findOrEmpty();
+                                    if($info){
+                                        array_push($msg,"机构名称已存在,请检查");
+                                    }else{
 
-                                    $isMatched = preg_match('/^[\x{4e00}-\x{9fa5}\(\)()\da-zA-Z&]{2,50}$/u', $row[$i], $matches);
+                                        $isMatched = preg_match('/^[\x{4e00}-\x{9fa5}\(\)()\da-zA-Z&]{2,50}$/u', $row[$i], $matches);
+                                        if($isMatched){
+                                            $item['name'] = $row[$i];
+                                        }else{
+                                            array_push($msg,"机构名称只能是中文或数字");
+                                        }
+                                    }
+                                }
+                                break;
+                            case 2:
+                                $info = Db::table("un_enterprise")->where('idCard',$row[$i])->findOrEmpty();
+                                if($info){
+                                    array_push($msg,"机构代码已存在,请检查");
+                                }else{
+                                    $isMatched = preg_match('/^([0-9A-HJ-NPQRTUWXY]{2}\d{6}[0-9A-HJ-NPQRTUWXY]{10}|[1-9]\d{14})$/', $row[$i], $matches);
                                     if($isMatched){
-                                        $item['name'] = $row[$i];
+                                        $item['idCard'] = $row[$i];
                                     }else{
-                                        array_push($msg,"机构名称只能是中文或数字");
+                                        array_push($msg,"组织机构代码证不正确");
                                     }
                                 }
-                            }
-                            break;
-                        case 2:
-                            $info = Db::table("un_enterprise")->where('idCard',$row[$i])->findOrEmpty();
-                            if($info){
-                                array_push($msg,"机构代码已存在,请检查");
-                            }else{
-                                $item['idCard'] = $row[$i];
-                            }
-                            break;
-                        case 3:
-                            $item['agentName'] = $row[$i];
-                            break;
-                        case 4:
-                            $item['agentPhone'] = $row[$i];
-                            break;
-                        case 5:
-                            $item['street'] = array_key_exists($row[$i],$street) ? $street[$row[$i]] : '00000';
-                            break;
-                        case 6:
-                            $item['address'] = $row[$i];
-                            break;
-                        case 7:
-                            $item['ephone'] = $row[$i];
-                            break;
-                        case 8:
-                            $item['bankCard'] = $row[$i];
-                            break;
-                        case 9:
-                            $item['bank'] = $row[$i];
-                            break;
-                        case 10:
-                            $item['bankNetwork'] = $row[$i];
-                            break;
+                                break;
+                            case 3:
+                                $item['agentName'] = $row[$i];
+                                break;
+                            case 4:
+                                $isMatched = preg_match('/^1[3456789]\d{9}$/', $row[$i], $matches);
+                                if($isMatched){
+                                    $item['agentPhone'] = $row[$i];
+                                }else{
+                                    array_push($msg,"联系电话不正确");
+                                }
+                                break;
+                            case 5:
+                                $item['street'] = array_key_exists($row[$i],$street) ? $street[$row[$i]] : '00000';
+                                break;
+                            case 6:
+                                $item['address'] = $row[$i];
+                                break;
+                            case 7:
+                                $item['ephone'] = $row[$i];
+                                break;
+                            case 8:
+                                $item['bankCard'] = $row[$i];
+                                break;
+                            case 9:
+                                $item['bank'] = $row[$i];
+                                break;
+                            case 10:
+                                $item['bankNetwork'] = $row[$i];
+                                break;
+                        }
+                    }
+                    var_dump($msg,($index+1));
+                    if(count($msg) >= 1){
+                        $sheet->setCellValue('L'.($index+2), '导入失败,失败原因:'.implode(";",$msg));
+                    }else{
+                        $item['id'] = getStringId();
+                        $item['type'] = 1;
+                        $item['source'] = 4;
+                        $item['username'] = $item['idCard'];
+                        $password = generate_password(8);
+                        $item['password'] =  hash('md5', $password);
+                        $item['createTime'] = date("Y-m-d H:i:s",time());
+                        Db::table("un_enterprise")->insert($item);
+                        $sheet->setCellValue('L'.($index+2), '导入成功,初始账号为:'.$item['idCard'].',初始密码为:'.$password);
                     }
                 }
-                if(count($msg) >= 1){
-
-                }
-
-                $companyIds = [];
-                $new = [];
 
-                $new["companyIds"] = $companyIds ? implode(",", $companyIds) : null;
-                $new["createTime"] = date("Y-m-d H:i:s");
-                $inserts[] = $new;
+                $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
+                $writer->save("/www/wwwroot/report/public/storage/".$res['task_file']);
+                Db::table("new_talent_zhiren")->where('id',$id)->update(['task_result' => $res['task_file'],'task_status' => 1,'updateTime' => date("Y-m-d H:i:s",time())]);
+                return true;
+            }catch (\Exception $e){
+                Db::table("new_talent_zhiren")->where('id',$data['id'])->update(['task_result' => $e->getMessage(),'status' => 0,'updateTime' => date("Y-m-d H:i:s",time())]);
+                return false;
             }
-
         }else{
             return false;
         }

二進制
public/static/downloadFile/directly_identify_enterprise_template.xlsx