|
@@ -1,6 +1,7 @@
|
|
|
package oilsupplier
|
|
package oilsupplier
|
|
|
|
|
|
|
|
import (
|
|
import (
|
|
|
|
|
+ "archive/zip"
|
|
|
"dashoo.cn/backend/api/business/oilsupplier/annualaudit"
|
|
"dashoo.cn/backend/api/business/oilsupplier/annualaudit"
|
|
|
"dashoo.cn/backend/api/business/oilsupplier/infochange"
|
|
"dashoo.cn/backend/api/business/oilsupplier/infochange"
|
|
|
"dashoo.cn/backend/api/business/oilsupplier/qualchange"
|
|
"dashoo.cn/backend/api/business/oilsupplier/qualchange"
|
|
@@ -10,6 +11,9 @@ import (
|
|
|
"dashoo.cn/backend/api/business/register"
|
|
"dashoo.cn/backend/api/business/register"
|
|
|
"encoding/json"
|
|
"encoding/json"
|
|
|
"fmt"
|
|
"fmt"
|
|
|
|
|
+ "io"
|
|
|
|
|
+ "os"
|
|
|
|
|
+ "path/filepath"
|
|
|
"sort"
|
|
"sort"
|
|
|
"strconv"
|
|
"strconv"
|
|
|
"strings"
|
|
"strings"
|
|
@@ -21,6 +25,7 @@ import (
|
|
|
"dashoo.cn/backend/api/business/oilsupplier/supplier"
|
|
"dashoo.cn/backend/api/business/oilsupplier/supplier"
|
|
|
. "dashoo.cn/backend/api/controllers"
|
|
. "dashoo.cn/backend/api/controllers"
|
|
|
"dashoo.cn/utils"
|
|
"dashoo.cn/utils"
|
|
|
|
|
+ . "github.com/linxGnu/goseaweedfs"
|
|
|
)
|
|
)
|
|
|
|
|
|
|
|
type SelectController struct {
|
|
type SelectController struct {
|
|
@@ -892,9 +897,165 @@ func (this *SelectController) GetTotalList() {
|
|
|
this.ServeJSON()
|
|
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
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|