Jelajahi Sumber

增加pdf导出功能

shiyi 6 tahun lalu
induk
melakukan
b5df022243

+ 1 - 0
src/dashoo.cn/backend/api/business/oilsupplier/supplierdataentry/supplierdataentry.go

@@ -117,6 +117,7 @@ type SupplierWinningDataEntryView struct {
 }
 
 type SupplierCertSubEntry struct {
+	SupplierTypeCode 	string `xorm:"VARCHAR(5)"`
 	Code 				string `xorm:"VARCHAR(8)"`
 	Name                string `xorm:"VARCHAR(50)"`
 }

+ 47 - 0
src/dashoo.cn/backend/api/business/workflow/ActivitiService.go

@@ -338,6 +338,53 @@ func (this *ActivitiService) ExcelToPdf(addressUrl string) string {
 	return retDocUrl
 }
 
+func (this *ActivitiService) WordToPdf(addressUrl string) string {
+	var aposeVM AposeVM
+	aposeVM.AddressUrl = addressUrl
+	fmt.Println("==addressUrl===", addressUrl)
+	jsonParam, err := json.Marshal(aposeVM)
+	if err != nil {
+		fmt.Println(err, "生成json字符串错误")
+	}
+	params := string(jsonParam)
+	//token = Authorization(this.Username, this.Password)
+	retVal := this.Post2("/word-to-pdf", params, "")
+	if retVal.StatusCode != 200 {
+		return ""
+	}
+	//pdfByte, err := ioutil.ReadAll(retVal.Body)
+	//ioutil.WriteFile("E:\aa.pdf", pdfByte, 777)
+	//模板下载到服务器
+	_dir := utils.Cfg.MustValue("file", "tmplateDir") + "pdf"
+	utils.CreatePath(_dir)
+	_dir += "/tmp_" + strconv.Itoa(int(time.Now().Unix())) + ".pdf"
+	raw := retVal.Body
+	defer raw.Close()
+
+	file, err := os.Create(_dir)
+	defer file.Close()
+	writer := bufio.NewWriter(file)
+	defer writer.Flush()
+	body, err := ioutil.ReadAll(raw)
+	writer.Write(body)
+
+	if err != nil {
+		return ""
+	}
+	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, err := sw.Upload(retVal.Body, "tmp.pdf", int64(len(pdfByte)), "", "")
+	_, _, fID, err := sw.UploadFile(_dir, "", "")
+	retDocUrl := utils.Cfg.MustValue("file", "downFileHost") + "/" + fID
+	os.Remove(_dir)
+	fmt.Println("==retDocUrl==", retDocUrl)
+	return retDocUrl
+}
+
 func (this *ActivitiService) FillWordTemplate(datas map[string]interface{}, templateUrl string, fileName string) string {
 	var wordTempVM WordTemplateVM
 	wordTempVM.Datas = datas

+ 3 - 0
src/dashoo.cn/backend/api/conf/app.conf

@@ -83,6 +83,9 @@ callbackHost=http://36dcae10.ngrok.io
 goodsModuleHost=http://weed1.labsop.cn:9390/3,255b9fa42e11
 basisModuleHost=http://weed1.labsop.cn:9390/6,255cf143a0f3
 techModuleHost=http://weed1.labsop.cn:9390/5,255d5b2ece8c
+goodsPdfHost=http://weed1.labsop.cn:9390/4,25ab20466969
+basisPdfHost=http://weed1.labsop.cn:9390/3,25ac524b9715
+techPdfHost=http://weed1.labsop.cn:9390/6,25ad0b7df344
 OriginUrl=http://47.92.212.59:8080/acti-api/api		
 AposeUrl=http://47.92.212.59:8080/acti-api/api/apose		
 BaseUrl=http://47.92.212.59:8080/acti-api/api/acti

+ 118 - 11
src/dashoo.cn/backend/api/controllers/oilsupplier/supplierdataentry.go

@@ -35,6 +35,16 @@ type DataEntryCallback struct {
 	DocUrl string `json:"DocUrl"`
 }
 
+func StructToMapDemo(obj interface{}) map[string]interface{} {
+	obj1 := reflect.TypeOf(obj)
+	obj2 := reflect.ValueOf(obj)
+	var data = make(map[string]interface{})
+	for i := 0; i < obj1.NumField(); i++ {
+		data[obj1.Field(i).Name] = obj2.Field(i).Interface()
+	}
+	return data
+}
+
 // @Title 从数据录入数据导出到word文档
 // @Description 数据存入word
 // @Success	200	{object} controllers.Request
@@ -68,10 +78,6 @@ func (this *SupplierDataEntryController) DocExport() {
 	svc.GetEntitysByOrderbyWhere(OilWinningProjectName, where3, "1", &tabledata6)
 	svc.GetEntitysByOrderbyWhere(OilSupplierCertSubName, where3, "1", &tabledata7)
 
-	//wheretable := "MId=" + strconv.Itoa(model.Id)
-	//svc.GetEntitysByWhere(this.User.AccCode+LimsHeatingFurnaceItemsName, wheretable, &tabledata)
-	//svc.GetEntitysByOrderbyWhere(this.User.AccCode+LimsHeatingFurnaceItemsName, wheretable, "OrderNo desc", &tabledata)
-
 	datamap := StructToMapDemo(model1)
 
 	if model2.SupplierTypeCode == "01" {
@@ -225,12 +231,113 @@ func (this *SupplierDataEntryController) DocExport() {
 
 }
 
-func StructToMapDemo(obj interface{}) map[string]interface{} {
-	obj1 := reflect.TypeOf(obj)
-	obj2 := reflect.ValueOf(obj)
-	var data = make(map[string]interface{})
-	for i := 0; i < obj1.NumField(); i++ {
-		data[obj1.Field(i).Name] = obj2.Field(i).Interface()
+// @Title 导出数据到word,作为导出pdf的中间步骤
+// @Description 数据存入word
+// @Success	200	{object} controllers.Request
+// @router /exportpdf/:tbid [post]
+func (this *SupplierDataEntryController) PdfExport() {
+	Id := this.Ctx.Input.Param(":tbid")
+	var Url string
+	var fileName string
+	var model1 supplierdataentry.SupplierDataEntry
+	var model2 supplierdataentry.SupplierCertDataEntry
+
+	svc := supplierdataentry.GetSupplierDataEntryService(utils.DBE)
+	where1 := "1=1"
+	where1 += " AND Id = '" + Id + "'"
+	where2 := "SupplierId = '" + Id + "'"
+	svc.GetEntityByWhere(OilSupplierName, where1, &model1)
+	svc.GetEntityByWhere(OilSupplierCertName, where2, &model2)
+
+	var tabledata []supplierdataentry.SupplierCertSubEntry
+	svc.GetEntitysByOrderbyWhere(OilSupplierCertSubName, where2, "1", &tabledata)
+
+	datamap := StructToMapDemo(model1)
+
+	if model2.SupplierTypeCode == "01" {
+		Url = utils.Cfg.MustValue("workflow", "goodsPdfHost")
+		fileName = "物资类准入范围.docx"
+	} else if model2.SupplierTypeCode == "02" {
+		Url = utils.Cfg.MustValue("workflow", "basisPdfHost")
+		fileName = "基建类准入范围.docx"
+		datamap["TJInNotify"] = model1.TJInNotify
+	} else {
+		Url = utils.Cfg.MustValue("workflow", "techPdfHost")
+		fileName = "技术服务类准入范围.docx"
 	}
-	return data
+
+	//model1
+	datamap["SetupTime"] = model1.SetupTime.Format("2006年01月02日")
+	datamap["QualifCert"] = model1.QualifCert
+	datamap["QualifCertLevel"] = model1.QualifCertLevel
+	datamap["SpecIndustryCert"] = model1.SpecIndustryCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	datamap["HseTraining"] = model1.HseTraining
+	datamap["Fax"] = model1.Fax
+	datamap["CompanyTel"] = model1.CompanyTel
+	datamap["SupplierName"] = model1.SupplierName
+	datamap["SpecTypeCode"] = model1.SpecTypeName
+	datamap["Country"] = model1.Country
+	datamap["MaunAgent"] = model1.MaunAgent
+	datamap["SupplierCertificate"] = model1.SupplierCertificate
+	datamap["MgrUnit"] = model1.MgrUnit
+	datamap["Grade"] = model1.Grade
+	datamap["CommercialNo"] = model1.CommercialNo
+	datamap["CountryTaxNo"] = model1.CountryTaxNo
+	datamap["OrganCode"] = model1.OrganCode
+	datamap["Address"] = model1.Address
+	datamap["ZipCode"] = model1.ZipCode
+	datamap["LinkAddress"] = model1.LinkAddress
+	datamap["LinkZipCode"] = model1.LinkZipCode
+	datamap["QualitySystemCert"] = model1.QualitySystemCert
+	datamap["ProductQualityCert"] = model1.ProductQualityCert
+	datamap["MaunLicense"] = model1.MaunLicense
+	datamap["LegalPerson"] = model1.LegalPerson
+	datamap["CompanyType"] = model1.CompanyType
+	datamap["ContactName"] = model1.ContactName
+	datamap["RegCapital"] = model1.RegCapital
+	datamap["DepositBank"] = model1.DepositBank
+	datamap["BankAccount"] = model1.BankAccount
+	datamap["Mobile"] = model1.Mobile
+	datamap["EMail"] = model1.EMail
+	datamap["BankCreditRating"] = model1.BankCreditRating
+	datamap["BusinessScope"] = model1.BusinessScope
+	datamap["Telphone"] = model1.Telphone
+
+	var interfaceSlice2 = make([]interface{}, len(tabledata))
+	datamap["CertSub"] = workflow.TableDetailData{
+		DataList:   interfaceSlice2,
+		StartRow:   2,
+		NeedDelRow: 1,
+		ReverseRow: 10,
+		Cols: []string{"Code", "Name"},
+		Merge:   []string{},
+		ColsNum: 2,
+	}
+
+	datamap["TableComment"] = []string{"CertSub"}
+
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+
+
+	retDocUrl := svcActiviti.FillWordTemplate(datamap, Url, fileName)
+	var datainfo ErrorDataInfo
+	datainfo.Code = 0
+	datainfo.Item = retDocUrl
+	datainfo.Message = "准备导出"
+	this.Data["json"] = &datainfo
+	this.ServeJSON()
+
+}
+
+// @Title post
+// @Description word to pdf
+// @Success 200 {string} pdfurl
+// @router /word-to-pdf [post]
+func (this *SupplierDataEntryController) WordToPdf() {
+	var pdfurl = this.GetString("pdfurl")
+	svcActiviti := workflow.GetActivitiService(utils.DBE)
+	pdfUrl := svcActiviti.WordToPdf(pdfurl)
+	this.Data["json"] = pdfUrl
+	this.ServeJSON()
 }

+ 6 - 0
src/dashoo.cn/frontend_web/src/api/oilsupplier/dataentry.js

@@ -4,5 +4,11 @@ export default {
       url: '/supplierdataentry/exportword/' + tbid,
       method: 'post'
     })
+  },
+  pdfexport(tbid, myAxios){
+    return myAxios({
+      url: '/supplierdataentry/exportpdf/' + tbid,
+      method: 'post'
+    })
   }
 }

+ 39 - 2
src/dashoo.cn/frontend_web/src/pages/select/companyselect/index.vue

@@ -74,6 +74,8 @@
         <el-table-column label="操作" min-width="200px" align="center" fixed="right">
           <template slot-scope="scope">
             <el-button type="text" @click="toWord(scope.row)" title="下载" size="mini" icon="el-icon-download" width="120px">下载</el-button>
+            <el-button type="text" @click="toPdf(scope.row)" title="导出" size="mini" icon="el-icon-document" width="120px">导出</el-button>
+
           </template>
         </el-table-column>
         <!--内框表格剩余栏显示-->
@@ -681,7 +683,7 @@ import FileSaver from 'file-saver'
 import XLSX from 'xlsx'
 import oapi from '@/api/oilsupplier/supplier'
 import dataapi from '@/api/oilsupplier/dataentry'
-//import watermark from '@/assets/js/watermark'
+import watermark from '@/assets/js/watermark'
 export default {
   created () {
     Object.assign(this.searchFormReset, this.searchForm)
@@ -897,7 +899,42 @@ export default {
           console.error(err)
         })
     },
-
+    //导出准入范围到pdf
+    toPdf (val) {
+      dataapi.pdfexport(val.Id, this.$axios)
+        .then(res => {
+          // response
+          if (res.data.code === 0) {
+            this.$message({
+              type: 'success',
+              message: res.data.message
+            })
+            let docurl = res.data.item
+            let pdfurl
+            // 内网服务器专用
+            if (process.client && docurl.indexOf('upfile') === 0) {
+              const myDomain = window.location.host
+              // location.href = 'http://' + myDomain + '/' + docurl
+              pdfurl = 'http://' + myDomain + '/' + docurl
+              this.$axios.post('supplierdataentry/word-to-pdf?pdfurl=' + pdfurl, {})
+                .then(function (res) {
+                  window.location.href = 'http://' + res.data
+                  watermark.set('大港油田企业法规处')
+                })
+            } else {
+              // location.href = 'http://' + docurl
+              pdfurl = 'http://' + docurl
+              this.$axios.post('supplierdataentry/word-to-pdf?pdfurl=' + pdfurl, {})
+                .then(function (res) {
+                  watermark.set('大港油田企业法规处')
+                  window.location.href = 'http://' + res.data
+                })
+            }
+          }
+        }).catch(err => {
+        console.error(err)
+      })
+    },
     // 列表排序功能
     orderby (column) {
       if (column.order == 'ascending') {