美文网首页
电子规范管理系统standardms在linux系统中部署遇到的

电子规范管理系统standardms在linux系统中部署遇到的

作者: 工程设计 | 来源:发表于2018-11-08 21:32 被阅读0次

    局域网内用一台闲置的电脑,安装了linux,部署了engineercms,docker和onlyoffice进行项目管理、文档协作,还缺少一利器:电子规范管理。于是请一哥们帮忙编译了我的standardms电子规范管理系统。

    第一次编译,还是老问题,源码中,路径是win下的“\\”,到linux系统下是不行的,必须全部改成“/”。

    重新编译,在linux系统下运行,新上传的pdf文件可以下载阅览,以前的pdf文件,死活下载不了。

    找了很久,怀疑是文件的读写权限,文件夹的读写权限,都不是。

    终于发现,原来,用securefx上传文件到linux系统下,中文文件名全被修改了,可是在securefx里却看不出来什么异样。用securecrt在命令行下,列表文件,就发现上传的中文文件名都乱码了。用flashfxp上传就没问题,standardms可以访问。

    上网查securefx乱码解决方案,原来是将ini文件的00000最后一个0改为1就行了。

    果然,解决了大问题。

    电子规范管理系统其实有不少商用的,也有不少网站提供下载,官方的也逐渐放开了电子版的下载了。不过暂时还是犹抱琵琶半遮面,都不是很齐全,自己收集的一些电子规范,在单位里用用,平时解燃眉之急,开审查会,也可以随时通过VPN进入局域网内进行检索,甚是方便。

    这个系统开发一个自动更新规范编号有效版本的数据库,根据网络上最新发布的规范编号进行更新,仅仅是更新编号数据库,如果发现检索到的电子规范,其名称与规范数据库中的版本号不一致,提醒这个规范已经过期,需要谨慎对待。但旧规范没必要删除,可以作为对照使用。

    爬虫

    package main

    import (

    "fmt"

    "log"

    "net/http"

    "strconv"

    "code.google.com/p/mahonia"

    "github.com/PuerkitoBio/goquery"

    "github.com/mozillazg/request"

    "github.com/tealeg/xlsx"

    )

    type Cata1 struct {

    Id          string

    Number      string

    Title        string

    Category    string

    Leixing      string

    Banbudata    string

    Shishidata  string

    Licinumber  string

    Feizhidata  string

    Tidainumber  string

    Biaozhunfile string

    }

    func mainrequest1() {

    c := new(http.Client)

    req := request.NewRequest(c)

    req.Cookies = map[string]string{

    "JSESSIONID": "EF9156C40832CF0ADC83F7A509C90350",

    "stylePath": "",

    }

    slice1 := make([]Cata1, 0)

    for i := 0; i < 5; i++ {//分页

    //职业健康法律

    resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%D6%B0%D2%B5%BD%A1%BF%B5%B0%B2%C8%AB%B7%A8%C2%C9%B7%A8%B9%E6&08070300004_page=" + strconv.Itoa(i))

    //环境法律

    // resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%BB%B7%BE%B3%B7%A8%C2%C9%B7%A8%B9%E6&08070300004_page=" + strconv.Itoa(i))

    //规范

    // resp, _ := req.Get("http://xxx/ProjManager/flfgv08070300009.jsp?flf81024flfgl01=%BC%BC%CA%F5%B1%EA%D7%BC&08070300004_page=" + strconv.Itoa(i))

    // j, _ := resp.Text()

    // fmt.Println(j)

    defer resp.Body.Close() // Don't forget close the response body

    dec := mahonia.NewDecoder("GB2312") //定义转换乱码

    // fmt.Println(dec.ConvertString(j))  //转成utf-8

    rd := dec.NewReader(resp.Body)

    doc, err := goquery.NewDocumentFromReader(rd)

    if err != nil {

    log.Fatal(err)

    }

    // var Cata []*Cata1

    // Find the review items

    doc.Find("tr.trclass").Each(func(i int, s *goquery.Selection) {

    // For each item found, get the band and title

    // band := s.Find("td").Text()

    // fmt.Print(band)

    aa := make([]Cata1, 1)

    s.Find("td.tdclass").Each(func(i1 int, s1 *goquery.Selection) {

    //band := s1.Text()

    if i1 == 0 && s1.Text() != "" {

    aa[0].Number = s1.Text()

    // fmt.Printf("%d:1 %s\n", i1, s1.Text())

    }

    if i1 == 1 && s1.Text() != "" {

    aa[0].Title = s1.Text()

    // fmt.Printf("%d:2 %s\n", i1, s1.Text())

    }

    if i1 == 2 && s1.Text() != "" {

    aa[0].Category = s1.Text()

    // fmt.Printf("%d:3 %s\n", i1, s1.Text())

    }

    if i1 == 3 && s1.Text() != "" {

    aa[0].Leixing = s1.Text()

    // fmt.Printf("%d:4 %s\n", i1, s1.Text())

    }

    if i1 == 4 && s1.Text() != "" {

    aa[0].Banbudata = s1.Text()

    // fmt.Printf("%d:5 %s\n", i1, s1.Text())

    }

    if i1 == 5 && s1.Text() != "" {

    aa[0].Shishidata = s1.Text()

    // fmt.Printf("%d:6 %s\n", i1, s1.Text())

    }

    if i1 == 6 && s1.Text() != "" {

    aa[0].Licinumber = s1.Text()

    // fmt.Printf("%d:7 %s\n", i1, s1.Text())

    }

    if i1 == 7 && s1.Text() != "" {

    aa[0].Feizhidata = s1.Text()

    // fmt.Printf("%d:8 %s\n", i1, s1.Text())

    }

    if i1 == 8 && s1.Text() != "" {

    aa[0].Tidainumber = s1.Text()

    // fmt.Printf("%d:9 %s\n", i1, s1.Text())

    }

    if i1 == 9 && s1.Text() != "" {

    aa[0].Biaozhunfile = s1.Text()

    // fmt.Printf("%d:10 %s\n", i1, s1.Text())

    }

    //fmt.Printf("%d: 序号、编号、名称、分类……%s\n", i1, band) //, title

    })

    slice1 = append(slice1, aa...)

    })

    }

    // fmt.Printf("slice1", slice1)

    //写入excel

    var file *xlsx.File

    var sheet *xlsx.Sheet

    var row *xlsx.Row

    var cell *xlsx.Cell

    file = xlsx.NewFile()

    sheet, _ = file.AddSheet("Sheet1")

    row = sheet.AddRow() //增加行

    cell = row.AddCell() //增加列

    cell.Value = "#"

    cell = row.AddCell() //增加列

    cell.Value = "标准编号"

    cell = row.AddCell() //增加列

    cell.Value = "标准名称"

    cell = row.AddCell() //增加列

    cell.Value = "标准类别"

    cell = row.AddCell() //增加列

    cell.Value = "法律法规类型"

    cell = row.AddCell() //增加列

    cell.Value = "颁布日期"

    cell = row.AddCell() //增加列

    cell.Value = "实施日期"

    cell = row.AddCell() //增加列

    cell.Value = "历次被替代标准编号"

    cell = row.AddCell() //增加列

    cell.Value = "废止日期"

    cell = row.AddCell() //增加列

    cell.Value = "替代标准编号"

    cell = row.AddCell() //增加列

    cell.Value = "标准文件"

    for w, z := range slice1 { //行

    row = sheet.AddRow() //增加行

    cell = row.AddCell() //增加列

    cell.Value = strconv.Itoa(w + 1)

    cell = row.AddCell() //增加列

    cell.Value = z.Number

    cell = row.AddCell() //增加列

    cell.Value = z.Title

    cell = row.AddCell() //增加列

    cell.Value = z.Category

    cell = row.AddCell() //增加列

    cell.Value = z.Leixing

    cell = row.AddCell() //增加列

    cell.Value = z.Banbudata

    cell = row.AddCell() //增加列

    cell.Value = z.Shishidata

    cell = row.AddCell() //增加列

    cell.Value = z.Licinumber

    cell = row.AddCell() //增加列

    cell.Value = z.Feizhidata

    cell = row.AddCell() //增加列

    cell.Value = z.Tidainumber

    cell = row.AddCell() //增加列

    cell.Value = z.Biaozhunfile

    }

    err := file.Save("MyXLSXFile.xlsx")

    if err != nil {

    fmt.Printf(err.Error())

    }

    }

    相关文章

      网友评论

          本文标题:电子规范管理系统standardms在linux系统中部署遇到的

          本文链接:https://www.haomeiwen.com/subject/vgegxqtx.html