lining пре 6 година
родитељ
комит
0fca0bdcd6

+ 161 - 0
src/dashoo.cn/backend/api/controllers/oilsupplier/select.go

@@ -1,6 +1,7 @@
 package oilsupplier
 
 import (
+	"archive/zip"
 	"dashoo.cn/backend/api/business/oilsupplier/annualaudit"
 	"dashoo.cn/backend/api/business/oilsupplier/infochange"
 	"dashoo.cn/backend/api/business/oilsupplier/qualchange"
@@ -10,6 +11,9 @@ import (
 	"dashoo.cn/backend/api/business/register"
 	"encoding/json"
 	"fmt"
+	"io"
+	"os"
+	"path/filepath"
 	"sort"
 	"strconv"
 	"strings"
@@ -21,6 +25,7 @@ import (
 	"dashoo.cn/backend/api/business/oilsupplier/supplier"
 	. "dashoo.cn/backend/api/controllers"
 	"dashoo.cn/utils"
+	. "github.com/linxGnu/goseaweedfs"
 )
 
 type SelectController struct {
@@ -892,9 +897,165 @@ func (this *SelectController) GetTotalList() {
 	this.ServeJSON()
 }
 
+// @Title 导出营业执照
+// @Description
+// @Success 200 {object}
+// @router /getallbusinesslicense [get]
+func (this *SelectController) GetAllBusinessLicense() {
+
+	needFileType := this.GetString("NeedFileType")
+
+	svc := supplier.GetOilSupplierService(utils.DBE)
+
+	var supplierList []supplier.OilSupplier
+	where := "1=1"
+	svc.GetEntities(&supplierList, where)
+	_dir := utils.Cfg.MustValue("file", "tmplateDir") + "营业执照"
+	for _,item := range supplierList {
+		var supplierFile supplierfile.OilSupplierFile
+		where := "SupplierId=" + strconv.Itoa(item.Id) + " and NeedFileType='" + needFileType + "'"
+		has := svc.GetEntity(&supplierFile, where)
+		if has {
+			fileArr := strings.Split(supplierFile.FileName, ".")
+			fileUrl := strings.Split(supplierFile.FileUrl, "|")
+			if len(fileUrl) == 2 && len(fileArr) == 2 {
+				utils.DownloadFile("http://" + fileUrl[0], item.SupplierName + "." + fileArr[1] , _dir)
+			}
+		}
+	}
+
+	//Zip(_dir, utils.Cfg.MustValue("file", "tmplateDir") + "license.zip")
+
+	f1,_ := os.Open(_dir)
+	var files = []*os.File{f1}
+	destZipName := time.Now().Format("2006-01-02")
+	destZip := utils.Cfg.MustValue("file", "tmplateDir") + destZipName + ".zip"
+	err := Compress(files, destZip)
+
+	retDocUrl := ""
+	if err == nil {
+		var sw *Seaweed
+		var filer []string
+		if _filer := os.Getenv("GOSWFS_FILER_URL"); _filer != "" {
+			filer = []string{_filer}
+		}
+		sw = NewSeaweed("http", utils.Cfg.MustValue("file", "upFileHost"), filer, 2*1024*1024, 5*time.Minute)
+		_, _, fID, _ := sw.UploadFile(destZip, "", "")
+		retDocUrl = utils.Cfg.MustValue("file", "downFileHost") + "/" + fID
+
+	}
+	os.Remove(destZip)
+	os.Remove(_dir)
+	var errinfo ErrorDataInfo
+	errinfo.Code = 0
+	errinfo.Item = retDocUrl
+	this.Data["json"] = &errinfo
+	this.ServeJSON()
+
+}
+
+func Compress(files []*os.File, dest string) error {
+	d, _ := os.Create(dest)
+	defer d.Close()
+	w := zip.NewWriter(d)
+	defer w.Close()
+	for _, file := range files {
+		err := compress(file, "", w)
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
+func compress(file *os.File, prefix string, zw *zip.Writer) error {
+	info, err := file.Stat()
+	if err != nil {
+		return err
+	}
+	if info.IsDir() {
+		prefix = prefix + "/" + info.Name()
+		fileInfos, err := file.Readdir(-1)
+		if err != nil {
+			return err
+		}
+		for _, fi := range fileInfos {
+			f, err := os.Open(file.Name() + "/" + fi.Name())
+			if err != nil {
+				return err
+			}
+			err = compress(f, prefix, zw)
+			if err != nil {
+				return err
+			}
+		}
+	} else {
+		header, err := zip.FileInfoHeader(info)
+		header.Name = prefix + "/" + header.Name
+		if err != nil {
+			return err
+		}
+		writer, err := zw.CreateHeader(header)
+		if err != nil {
+			return err
+		}
+		_, err = io.Copy(writer, file)
+		file.Close()
+		if err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
 
+func Zip(srcFile string, destZip string) error {
+	zipfile, err := os.Create(destZip)
+	if err != nil {
+		return err
+	}
+	defer zipfile.Close()
+
+	archive := zip.NewWriter(zipfile)
+	defer archive.Close()
 
+	filepath.Walk(srcFile, func(path string, info os.FileInfo, err error) error {
+		if err != nil {
+			return err
+		}
 
+		header, err := zip.FileInfoHeader(info)
+		if err != nil {
+			return err
+		}
+
+
+		header.Name = strings.TrimPrefix(path, filepath.Dir(srcFile) + "/")
+		// header.Name = path
+		if info.IsDir() {
+			header.Name += "/"
+		} else {
+			header.Method = zip.Deflate
+		}
+
+		writer, err := archive.CreateHeader(header)
+		if err != nil {
+			return err
+		}
+
+		if ! info.IsDir() {
+			file, err := os.Open(path)
+			if err != nil {
+				return err
+			}
+			defer file.Close()
+			_, err = io.Copy(writer, file)
+		}
+		return err
+	})
+
+	return err
+}
 
 
 

+ 7 - 0
src/dashoo.cn/frontend_web/src/api/oilsupplier/select.js

@@ -48,5 +48,12 @@ export default {
       method: 'post',
       params: params
     })
+  },
+  getAllBusinessLicense (params, myAxios) {
+    return myAxios({
+      url: '/select/getallbusinesslicense',
+      method: 'get',
+      params: params
+    })
   }
 }

+ 20 - 3
src/dashoo.cn/frontend_web/src/pages/select/companyselect/index.vue

@@ -57,6 +57,7 @@
           </el-form-item>
           <el-form-item>
             <el-button type="primary" size="mini" @click="exportExcel">导出</el-button>
+            <el-button type="primary" size="mini" @click="exportBusinessLicense">营业执照导出</el-button>
           </el-form-item>
           <!-- 预留接口 公司基本信息和准入范围 -->
           <!-- <el-form-item label="特殊查询">
@@ -795,7 +796,6 @@
 
 
 <script>
-import api2 from '@/api/oilsupplier/supplier'
 import api from '@/api/oilsupplier/select'
 import FileSaver from 'file-saver'
 import XLSX from 'xlsx'
@@ -911,7 +911,7 @@ export default {
       currentItemCount: 0,
       SetupTime: '', // 成立时间
       CreateOn: [],
-      ssList:[],
+      ssList: [],
       searchForm: {
         AccessCardNo: '',
         SupplierName: '',
@@ -958,6 +958,23 @@ export default {
   },
 
   methods: {
+    exportBusinessLicense () {
+      let params = {
+        NeedFileType: '营业执照'
+      }
+      api.getAllBusinessLicense(params, this.$axios).then(res => {
+        if (res.data.code === 0) {
+          let docurl = res.data.item
+          // 内网服务器专用
+          if (process.client && docurl.indexOf('upfile') === 0) {
+            const myDomain = window.location.host
+            location.href = 'http://' + myDomain + '/' + docurl
+          } else {
+            location.href = 'http://' + docurl
+          }
+        }
+      })
+    },
     search () {
       this.getCertSub()
     },
@@ -1017,7 +1034,7 @@ export default {
     getDictOptions2() {
       let params = {
       }
-      api2.getDictListByStatus(params, this.$axios).then(res => {
+      oapi.getDictListByStatus(params, this.$axios).then(res => {
         this.allorgunitOptions = res.data.items['Allunitorglist']
       }).catch(err => {
         console.error(err)