DOC文件中法规对标系统完成

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/details/52136083

我们工程设计报告中,每个章节很多法律法规规程规范,如何快捷地核对这些文件的有效性,即法律的发布日期,执行日期,规范的编号和执行日期等。用这个系统就简单了。

考进去,输出的就是你想要的有效的编号了。

package controllers

import (
	"github.com/astaxie/beego"
	"github.com/astaxie/beego/logs"
	"github.com/tealeg/xlsx"
	"quick/models"
	"regexp"
	"strconv"
	"strings"
	"time"
)

type LegislationController struct {
	beego.Controller
}

type Legislationmore struct {
	Id            int64
	Number        string //`orm:"unique"`
	Title         string //原法规名称
	LibraryNumber string //规范有效版本库中的编号
	LibraryTitle  string
	Execute       string //执行时间
}

func (c *LegislationController) Index() { //
	c.Data["IsLegislation"] = true //
	c.TplName = "legislation.tpl"
	c.Data["IsLogin"] = checkAccount(c.Ctx)
	uname, _, _ := checkRoleread(c.Ctx) //login里的
	// rolename, _ = strconv.Atoi(role)
	c.Data["Uname"] = uname
	legislations, err := models.GetAllLegislations() //这里传入空字符串
	if err != nil {
		beego.Error(err.Error)
	} else {
		c.Data["Legislations"] = legislations
		c.Data["Length"] = len(legislations) //得到总记录数
	}

	logs := logs.NewLogger(1000)
	logs.SetLogger("file", `{"filename":"log/test.log"}`)
	logs.EnableFuncCallDepth(true)
	logs.Info(c.Ctx.Input.IP())
	logs.Close()
}

//搜索规范或者图集的名称或编号
func (c *LegislationController) Checklist() { //checklist用的是post方法
	name := c.Input().Get("name")
	beego.Info(name)
	array := strings.Split(name, "\n")
	aa := make([]Legislationmore, len(array))
	for i, v := range array {
		// beego.Info(v)
		//1、正则取到名称
		reg := regexp.MustCompile(`[《].*[》]`) //(`^\\<.*\\>`)
		text2 := reg.FindAllString(v, -1)
		text3 := SubString(text2[0], 1, len([]rune(text2[0]))-2)
		//2、根据名称搜索标准版本库,取得名称和版本号
		library, err := models.SearchLiabraryName(text3)
		if err != nil {
			beego.Error(err.Error)
		}
		text4 := strconv.Itoa(i + 1)
		Id1, _ := strconv.ParseInt(text4, 10, 64)
		aa[i].Id = Id1

		if library != nil {
			//3、构造struct
			aa[i].LibraryNumber = library.LiNumber //规范有效版本库中的完整编号
			aa[i].LibraryTitle = library.Title
			aa[i].Execute = library.Execute //执行日期
		} else {
			// aa[i].Number = library.Number //`orm:"unique"`
			// aa[i].Title = text3
			aa[i].LibraryNumber = "No LibraryNumber Match Find!"
			aa[i].LibraryTitle = text3
			aa[i].Execute = ""
		}
	}
	c.Data["IsLegislation"] = true
	c.TplName = "legislation.tpl"
	c.Data["IsLogin"] = checkAccount(c.Ctx)
	uname, _, _ := checkRoleread(c.Ctx) //login里的
	c.Data["Uname"] = uname
	
	c.Data["json"] = aa //这里必须要是c.Data["json"],其他c.Data["Data"]不行
	c.ServeJSON()

	logs := logs.NewLogger(1000)
	logs.SetLogger("file", `{"filename":"log/test.log"}`)
	logs.EnableFuncCallDepth(true)
	logs.Info(c.Ctx.Input.IP() + " " + "SearchLegislationsName:" + name)
	logs.Close()
}
//由法规名称精确搜索有效版本库
func SearchLiabraryName(Name string) (*Library, error) {
	o := orm.NewOrm()
	library := new(Library)
	qs := o.QueryTable("library")
	err := qs.Filter("title", Name).One(library)
	if err != nil {
		return nil, err
	}
	return library, err
}

没想到大半天完成了这个系统。beego开发效率还是有点高啊。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术小讲堂

ASP.NET AJAX(1)__Microsoft AJAX LibraryASP.NET AJAX(1)__Microsoft AJAX Library

ASP.NET AJAX(1)__Microsoft AJAX Library Microsoft AJAX Library为我们提供的客户端框架,提供的内容大...

30040
来自专栏熊二哥

快速入门系列--MVC--05行为

    Action执行包含内容比较多,主要有同步/异步Action的概念和执行过程,Authorationfilter, ActionFiltor, Resu...

20170
来自专栏菩提树下的杨过

Oracle中使用Entity Framework 6.x Code-First方式开发

去年写过一篇EF的简单学习笔记,当时EF还不支持Oracle的Code-First开发模式,今天无意又看了下Oracle官网,发现EF6.X已经支持了,并且给出...

28650
来自专栏网络

HttpClient使用心得

做过Java web开发的朋友们,应该大部分都用过Apatch HttpClient工具类库,最近在维护公司一个老项目时,遇到了由于HttpClient使用不当...

41990
来自专栏Golang语言社区

深入学习Golang—channel

Channel 1. 概述 “网络,并发”是Go语言的两大feature。Go语言号称“互联网的C语言”,与使用传统的C语言相比,写一个Server所使用的代码...

56090
来自专栏祝威廉

Kafka Zero-Copy 使用分析

Kafka 我个人感觉是性能优化的典范。而且使用Scala开发,代码写的也很漂亮的。重点我觉得有四个

24720
来自专栏安恒网络空间安全讲武堂

从零基础到解题之 Python is the best language

-目录- 前言 环境搭建 源码结构 题目分析 Python is the best language1 Python is the best langua...

30540
来自专栏技术/开源

UWP开源项目 LLQNotifier 页面间通信利器(移植EventBus)

前言 EventBus是一个Android版本的页面间通信库,这个库让页面间的通信变得十分容易且大幅降低了页面之间的耦合。小弟之前玩Android的时候就用得十...

20570
来自专栏java架构师

解决ASP.NET中的各种乱码问题

经常发现有人被乱码困扰着,而我感觉比较幸运,很少为此烦恼过。 在这篇博客中,我将把我想到的一些与乱码有关的经验总结出来,供大家参考。 页面显示乱码问题 在一...

40260
来自专栏分布式系统和大数据处理

C#网络编程(订立协议和发送文件) - Part.4

前面两篇文章所使用的范例都是传输字符串,有的时候我们可能会想在服务端和客户端之间传递文件。比如,考虑这样一种情况,假如客户端显示了一个菜单,当我们输入S1、S2...

10910

扫码关注云+社区

领取腾讯云代金券