wcc 1 місяць тому
батько
коміт
40d9be57d6

BIN
fix_qyxy_std/fix_company_type_int → fix_qyxy_std/fix_qyxy_std


+ 17 - 7
fix_qyxy_std/go.mod

@@ -1,8 +1,14 @@
 module fix_qyxy_std
 
-go 1.22.6
+go 1.23.0
 
-require jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3
+toolchain go1.23.7
+
+require (
+	github.com/xuri/excelize/v2 v2.9.1
+	go.mongodb.org/mongo-driver v1.10.1
+	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240412074219-927f3f682cb3
+)
 
 require (
 	github.com/PuerkitoBio/goquery v1.8.0 // indirect
@@ -15,14 +21,18 @@ require (
 	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
 	github.com/olivere/elastic/v7 v7.0.32 // indirect
 	github.com/pkg/errors v0.9.1 // indirect
+	github.com/richardlehane/mscfb v1.0.4 // indirect
+	github.com/richardlehane/msoleps v1.0.4 // indirect
+	github.com/tiendc/go-deepcopy v1.6.0 // indirect
 	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
 	github.com/xdg-go/scram v1.1.1 // indirect
 	github.com/xdg-go/stringprep v1.0.3 // indirect
+	github.com/xuri/efp v0.0.1 // indirect
+	github.com/xuri/nfp v0.0.1 // indirect
 	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
-	go.mongodb.org/mongo-driver v1.10.1 // indirect
-	golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d // indirect
-	golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
-	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect
-	golang.org/x/text v0.3.7 // indirect
+	golang.org/x/crypto v0.38.0 // indirect
+	golang.org/x/net v0.40.0 // indirect
+	golang.org/x/sync v0.14.0 // indirect
+	golang.org/x/text v0.25.0 // indirect
 	gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
 )

+ 25 - 5
fix_qyxy_std/go.sum

@@ -75,22 +75,36 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/richardlehane/mscfb v1.0.4 h1:WULscsljNPConisD5hR0+OyZjwK46Pfyr6mPu5ZawpM=
+github.com/richardlehane/mscfb v1.0.4/go.mod h1:YzVpcZg9czvAuhk9T+a3avCpcFPMUWm7gK3DypaEsUk=
+github.com/richardlehane/msoleps v1.0.1/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
+github.com/richardlehane/msoleps v1.0.4 h1:WuESlvhX3gH2IHcd8UqyCuFY5yiq/GR/yqaSM/9/g00=
+github.com/richardlehane/msoleps v1.0.4/go.mod h1:BWev5JBpU9Ko2WAgmZEuiz4/u3ZYTKbjLycmwiWUfWg=
 github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
 github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
 github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=
 github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
 github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
 github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
 github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/tiendc/go-deepcopy v1.6.0 h1:0UtfV/imoCwlLxVsyfUd4hNHnB3drXsfle+wzSCA5Wo=
+github.com/tiendc/go-deepcopy v1.6.0/go.mod h1:toXoeQoUqXOOS/X4sKuiAoSk6elIdqc0pN7MTgOOo2I=
 github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
 github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
 github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
 github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
 github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
 github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
+github.com/xuri/efp v0.0.1 h1:fws5Rv3myXyYni8uwj2qKjVaRP30PdjeYe2Y6FDsCL8=
+github.com/xuri/efp v0.0.1/go.mod h1:ybY/Jr0T0GTCnYjKqmdwxyxn2BQf2RcQIIvex5QldPI=
+github.com/xuri/excelize/v2 v2.9.1 h1:VdSGk+rraGmgLHGFaGG9/9IWu1nj4ufjJ7uwMDtj8Qw=
+github.com/xuri/excelize/v2 v2.9.1/go.mod h1:x7L6pKz2dvo9ejrRuD8Lnl98z4JLt0TGAwjhW+EiP8s=
+github.com/xuri/nfp v0.0.1 h1:MDamSGatIvp8uOmDP8FnmjuQpu90NzdJxo7242ANR9Q=
+github.com/xuri/nfp v0.0.1/go.mod h1:WwHg+CVyzlv/TX9xqBFXEZAuxOPxn2k1GNHwG41IIUQ=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
 github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
 github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
@@ -106,9 +120,12 @@ go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d h1:sK3txAijHtOK88l68nt020reeT1ZdKLIYetKl95FzVY=
 golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8=
+golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw=
 golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/image v0.25.0 h1:Y6uW6rH1y5y/LK1J8BPWZtr6yZ7hrsy6hFrXjgsc2fQ=
+golang.org/x/image v0.25.0/go.mod h1:tCAmOEGthTtkalusGp1g3xa2gke8J6c2N565dTyl9Rs=
 golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
 golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
 golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
@@ -124,14 +141,16 @@ golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwY
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd h1:O7DYs+zxREGLKzKoMQrtrEacpb0ZVXA5rIwylE2Xchk=
 golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
+golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ=
 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
+golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -147,8 +166,9 @@ golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuX
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
+golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=

+ 89 - 5
fix_qyxy_std/main.go

@@ -15,10 +15,16 @@ var (
 	//更新es
 	updateEsPool = make(chan []map[string]interface{}, 5000)
 	updateEsSp   = make(chan bool, 3) //保存协程
-	Es           *es.Elastic
-	esIndex      = "qyxy"
-	Mgo          *mongodb.MongodbSim
-	MgoQY        *mongodb.MongodbSim
+
+	// 更新mongo
+	updatePool = make(chan []map[string]interface{}, 5000)
+	updateSp   = make(chan bool, 5)
+	saveSize   = 50
+	//更新es
+	Es      *es.Elastic
+	esIndex = "qyxy"
+	Mgo     *mongodb.MongodbSim
+	MgoQY   *mongodb.MongodbSim
 )
 
 func initEs() {
@@ -61,11 +67,15 @@ func initMgo() {
 
 func main() {
 	go updateEsMethod()
+	go updateMethod()
 	initEs()
 	initMgo()
+	readXlsx()
 
 	//dealCapitalData()
-	dealCompanyTypeInt()
+	//dealCompanyTypeInt()
+
+	dealCompanyType()
 
 	select {}
 }
@@ -158,6 +168,44 @@ func dealCompanyTypeInt() {
 	log.Println("数据处理完毕,总数是", count)
 }
 
+func dealCompanyType() {
+	defer util.Catch()
+	sess := Mgo.GetMgoConn()
+	defer Mgo.DestoryMongoConn(sess)
+
+	it := sess.DB("mixdata").C("qyxy_std").Find(nil).Select(nil).Iter()
+	fmt.Println("dealCompanyType 开始处理 企业数据")
+	count := 0
+	for tmp := make(map[string]interface{}); it.Next(&tmp); count++ {
+		if count%1000 == 0 {
+			log.Println("current:", count, tmp["company_name"], tmp["_id"])
+		}
+		company_name := util.ObjToString(tmp["company_name"])
+		company_type := util.ObjToString(tmp["company_type"])
+
+		if company_name == "" || company_type == "" {
+			continue
+		}
+
+		ss := getCompanyType(company_name, company_type)
+		if ss != "" {
+			update := make(map[string]interface{})
+			update["ownership_type"] = ss
+			updateEsPool <- []map[string]interface{}{
+				{"_id": util.ObjToString(tmp["_id"])},
+				update,
+			}
+			//更新MongoDB
+			updatePool <- []map[string]interface{}{
+				{"_id": tmp["_id"]},
+				{"$set": update},
+			}
+
+		}
+	}
+	log.Println("企业数据 处理完毕,总数是", count)
+}
+
 // updateEsMethod 更新es
 func updateEsMethod() {
 	arru := make([][]map[string]interface{}, 200) //200条一组更新es
@@ -195,3 +243,39 @@ func updateEsMethod() {
 		}
 	}
 }
+
+// updateMethod 更新MongoDB
+func updateMethod() {
+	arru := make([][]map[string]interface{}, saveSize)
+	indexu := 0
+	for {
+		select {
+		case v := <-updatePool:
+			arru[indexu] = v
+			indexu++
+			if indexu == saveSize {
+				updateSp <- true
+				go func(arru [][]map[string]interface{}) {
+					defer func() {
+						<-updateSp
+					}()
+					Mgo.UpdateBulk("qyxy_std", arru...)
+				}(arru)
+				arru = make([][]map[string]interface{}, saveSize)
+				indexu = 0
+			}
+		case <-time.After(1000 * time.Millisecond):
+			if indexu > 0 {
+				updateSp <- true
+				go func(arru [][]map[string]interface{}) {
+					defer func() {
+						<-updateSp
+					}()
+					Mgo.UpdateBulk("qyxy_std", arru...)
+				}(arru[:indexu])
+				arru = make([][]map[string]interface{}, saveSize)
+				indexu = 0
+			}
+		}
+	}
+}

+ 66 - 0
fix_qyxy_std/util.go

@@ -1,6 +1,8 @@
 package main
 
 import (
+	"github.com/xuri/excelize/v2"
+	"log"
 	"regexp"
 	"strconv"
 	"strings"
@@ -15,6 +17,9 @@ var (
 	moneyRegChar, _ = regexp.Compile(regStrChar)
 	regQianw, _     = regexp.Compile(`\d{1,2}千万`)
 
+	yangMap      = make(map[string]bool) //存储98家央企
+	yangChildMap = make(map[string]bool) //存储央企 下属子公司
+
 	cutAllSpace, _ = regexp.Compile(`\s*`)
 	spaces         = []string{"\u3000", "\u2003", "\u00a0", "\t", "\r", "\n"}
 
@@ -286,3 +291,64 @@ func IsInSlice(slice []string, s string) bool {
 
 	return isIn
 }
+
+// readXlsx 读取央企
+func readXlsx() {
+	filePath := "央企.xlsx"
+	// 1. 读取 Excel(获取 A 列数据)
+	f, err := excelize.OpenFile(filePath)
+	if err != nil {
+		log.Fatal("❌ 无法打开 Excel 文件:", err)
+	}
+	defer f.Close()
+
+	//读取央企
+	rows, err := f.GetRows("Sheet1")
+	if err != nil {
+		log.Fatal("❌ 无法读取 Sheet1:", err)
+	}
+	for i := 1; i < len(rows); i++ {
+		name := rows[i][0]
+		if name != "" {
+			yangMap[name] = true
+		}
+	}
+	// 央企下属
+	rows2, err := f.GetRows("Sheet2")
+	if err != nil {
+		log.Fatal("❌ 无法读取 Sheet2:", err)
+	}
+	for i := 1; i < len(rows2); i++ {
+		name := rows2[i][1]
+		if name != "" {
+			yangChildMap[name] = true
+		}
+	}
+}
+
+// getCompanyType 获取公司类型;央企、国企、央企下属、事业单位、民企
+func getCompanyType(name, ctype string) (company_type string) {
+	if name == "" {
+		return
+	}
+
+	if yangMap[name] {
+		company_type = "央企"
+		return
+	}
+
+	if yangChildMap[name] {
+		company_type = "央企"
+		return
+	}
+
+	if strings.Contains(ctype, "国有独资") || strings.Contains(ctype, "国有控股") ||
+		ctype == "全民所有制" || ctype == "集体所有制" || ctype == "全民所有制分支机构(非法人)" ||
+		ctype == "集体分支机构(非法人)" {
+		company_type = "国企"
+		return
+	}
+
+	company_type = "其他"
+	return
+}

BIN
fix_qyxy_std/央企.xlsx


BIN
project_chuan/dealProposed22ConcurrentHistory


+ 72 - 0
project_chuan/incre.go

@@ -0,0 +1,72 @@
+package main
+
+import (
+	"github.com/olivere/elastic/v7"
+	"go.uber.org/zap"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
+	"sync"
+)
+
+// dealProposedIncrement 处理增量数据
+func dealProposedIncrement() {
+	// 1. 初始化 ES 客户端
+	client, err := elastic.NewClient(
+		elastic.SetURL(GF.Es.URL),
+		elastic.SetBasicAuth(GF.Es.Username, GF.Es.Password),
+		elastic.SetSniff(false),
+	)
+	if err != nil {
+		log.Fatal("创建 Elasticsearch 客户端失败", zap.Error(err))
+	}
+
+	// 2. 初始化 MongoDB 连接
+	sess := MgoP.GetMgoConn()
+	defer MgoP.DestoryMongoConn(sess)
+
+	coll := sess.DB("qfw").C("projectset_proposed")
+	query := map[string]interface{}{
+		//"firsttime": map[string]interface{}{
+		//	"$gte": 1735660800,
+		//	"$lte": 1748102400,
+		//},
+
+	}
+	iter := coll.Find(query).Select(nil).Iter()
+
+	// 3. 并发控制
+	const maxWorkers = 1
+	taskCh := make(chan map[string]interface{}, 2000)
+	var wg sync.WaitGroup
+
+	// 4. 启动 worker 处理任务
+	for i := 0; i < maxWorkers; i++ {
+		wg.Add(1)
+		go func() {
+			defer wg.Done()
+			for doc := range taskCh {
+				if len(doc) == 0 {
+					log.Info("aaa", zap.Any("client", client))
+				}
+				processOneProposed(doc, client)
+			}
+		}()
+	}
+
+	// 5. 逐条读取数据并派发任务
+	log.Info("111111", zap.String("222222", "开始处理数据"))
+	count := 0
+	for doc := make(map[string]interface{}); iter.Next(doc); {
+		count++
+		if count%1000 == 0 {
+			log.Info("dealProposed", zap.Int("current", count), zap.Any("projectname", doc["projectname"]), zap.Any("_id", doc["_id"]))
+		}
+
+		//if util.ObjToString(doc["area"]) == "甘肃" {
+		//	continue
+		//}
+
+		taskCh <- cloneMap(doc) // 防止 map 重用
+	}
+	close(taskCh)
+	wg.Wait()
+}

+ 8 - 5
project_chuan/project.go

@@ -194,13 +194,16 @@ func dealProposed22Concurrent() {
 
 	coll := sess.DB("qfw").C("projectset_proposed")
 	query := map[string]interface{}{
+		//"firsttime": map[string]interface{}{
+		//	"$gte": 1735660800,
+		//	"$lte": 1748102400,
+		//},
+
 		"firsttime": map[string]interface{}{
-			"$gte": 1735660800,
-			"$lte": 1748102400,
+			"$lte": 1735660800,
 		},
-		"area": "甘肃",
 	}
-	iter := coll.Find(query).Select(nil).Iter()
+	iter := coll.Find(query).Select(nil).Sort("-_id").Iter()
 
 	// 3. 并发控制
 	const maxWorkers = 1
@@ -227,7 +230,7 @@ func dealProposed22Concurrent() {
 	for doc := make(map[string]interface{}); iter.Next(doc); {
 		count++
 		if count%1000 == 0 {
-			log.Info("dealProposed", zap.Int("current", count), zap.Any("projectname", doc["projectname"]))
+			log.Info("dealProposed", zap.Int("current", count), zap.Any("projectname", doc["projectname"]), zap.Any("_id", doc["_id"]))
 		}
 
 		//if util.ObjToString(doc["area"]) == "甘肃" {

+ 218 - 0
qyxy-mysql/all.go

@@ -0,0 +1,218 @@
+package main
+
+import (
+	"context"
+	"fmt"
+	"github.com/RoaringBitmap/roaring"
+	"go.mongodb.org/mongo-driver/bson"
+	"go.mongodb.org/mongo-driver/mongo"
+	"go.mongodb.org/mongo-driver/mongo/options"
+	"go.uber.org/zap"
+	util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
+	"os"
+	"strings"
+	"time"
+)
+
+type BitmapStore struct {
+	bitmap *roaring.Bitmap
+	path   string
+}
+
+func NewBitmapStore(path string) (*BitmapStore, error) {
+	b := roaring.New()
+	if data, err := os.ReadFile(path); err == nil {
+		if err := b.UnmarshalBinary(data); err != nil {
+			return nil, err
+		}
+	}
+	return &BitmapStore{bitmap: b, path: path}, nil
+}
+
+func (bs *BitmapStore) Contains(hash uint32) bool {
+	return bs.bitmap.Contains(hash)
+}
+
+func (bs *BitmapStore) Add(hash uint32) {
+	bs.bitmap.Add(hash)
+}
+
+func (bs *BitmapStore) Save() error {
+	data, err := bs.bitmap.ToBytes()
+	if err != nil {
+		return err
+	}
+	return os.WriteFile(bs.path, data, 0644)
+}
+
+func mapMongoToCompanyBase(m map[string]interface{}) (*CompanyBase, string) {
+	companyID, ok := m["company_id"].(string)
+	if !ok || companyID == "" {
+		return nil, ""
+	}
+	parseDate := func(v interface{}) *time.Time {
+		if str, ok := v.(string); ok && str != "" {
+			t, err := time.Parse("2006-01-02", str)
+			if err == nil {
+				return &t
+			}
+		}
+		return nil
+	}
+	parseDateTime := func(v interface{}) *time.Time {
+		if str, ok := v.(string); ok && str != "" {
+			t, err := time.Parse("2006-01-02 15:04:05", str)
+			if err == nil {
+				return &t
+			}
+		}
+		return nil
+	}
+	getInt8Ptr := func(v interface{}) *int8 {
+		switch t := v.(type) {
+		case int32:
+			v := int8(t)
+			return &v
+		case float64:
+			v := int8(t)
+			return &v
+		}
+		return nil
+	}
+	return &CompanyBase{
+		CompanyID:          companyID,
+		ProvinceShort:      fmt.Sprint(m["province_short"]),
+		CompanyName:        fmt.Sprint(m["company_name"]),
+		CompanyCode:        fmt.Sprint(m["company_code"]),
+		CreditNo:           fmt.Sprint(m["credit_no"]),
+		OrgCode:            fmt.Sprint(m["org_code"]),
+		TaxCode:            fmt.Sprint(m["tax_code"]),
+		EstablishDate:      parseDate(m["establish_date"]),
+		LegalPerson:        fmt.Sprint(m["legal_person"]),
+		LegalPersonCaption: fmt.Sprint(m["legal_person_caption"]),
+		CompanyStatus:      fmt.Sprint(m["company_status"]),
+		CompanyType:        fmt.Sprint(m["company_type"]),
+		Authority:          fmt.Sprint(m["authority"]),
+		IssueDate:          parseDate(m["issue_date"]),
+		OperationStartDate: fmt.Sprint(m["operation_startdate"]),
+		OperationEndDate:   fmt.Sprint(m["operation_enddate"]),
+		Capital:            fmt.Sprint(m["capital"]),
+		CompanyAddress:     fmt.Sprint(m["company_address"]),
+		BusinessScope:      fmt.Sprint(m["business_scope"]),
+		CancelDate:         parseDate(m["cancel_date"]),
+		CancelReason:       fmt.Sprint(m["cancel_reason"]),
+		RevokeDate:         parseDate(m["revoke_date"]),
+		RevokeReason:       fmt.Sprint(m["revoke_reason"]),
+		UseFlag:            getInt8Ptr(m["use_flag"]),
+		CreateTime:         parseDateTime(m["create_time"]),
+		UpdateTime:         parseDateTime(m["update_time"]),
+		LegalPersonType:    getInt8Ptr(m["legal_person_type"]),
+		RealCapital:        fmt.Sprint(m["real_capital"]),
+		EnName:             fmt.Sprint(m["en_name"]),
+		ListCode:           fmt.Sprint(m["list_code"]),
+		LegalPersonID:      fmt.Sprint(m["legal_person_id"]),
+	}, companyID
+}
+
+// SyncCompanyBaseToMySQL 同步 基本信息
+func SyncCompanyBaseToMySQL() error {
+	ctx := context.Background()
+	// Bitmap 路径默认当前目录
+	bitmapFile := "./company_sync_bitmap.bin"
+	// MongoDB
+	//mongoClient, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://172.17.4.181:27001"))
+	//clientOptions := options.Client().ApplyURI("mongodb://172.17.4.181:27001")
+	host := GF.Mongoqy.Host
+	username := GF.Mongoqy.Username
+	password := GF.Mongoqy.Password
+	authSource := "admin" // 通常是 "admin",也可以是你的数据库名
+	// 构造 MongoDB URI
+	var mongoURI string
+	if username != "" && password != "" {
+		mongoURI = fmt.Sprintf("mongodb://%s:%s@%s/?authSource=%s", username, password, host, authSource)
+	} else {
+		mongoURI = fmt.Sprintf("mongodb://%s", host)
+	}
+
+	clientOptions := options.Client().ApplyURI(mongoURI)
+	//clientOptions.SetReadPreference(readpref.Primary())
+	//clientOptions.SetDirect(true)
+	// 连接MongoDB
+	client, err := mongo.Connect(context.Background(), clientOptions)
+	if err != nil {
+		log.Info("SyncCompanyBaseToMySQL", zap.Error(err))
+	}
+
+	// 检查连接
+	err = client.Ping(context.Background(), nil)
+	if err != nil {
+		log.Info("SyncCompanyBaseToMySQL", zap.Error(err))
+	}
+
+	//mongoClient, _ := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://127.0.0.1:27001"))
+	mongoColl := client.Database("mixdata").Collection("company_base")
+
+	bitmapStore, err := NewBitmapStore(bitmapFile)
+	if err != nil {
+		return err
+	}
+	defer bitmapStore.Save()
+
+	// 不是 个体工商户的数据
+	filter := map[string]interface{}{
+		"company_type": map[string]interface{}{
+			"$nin": []string{"个体工商户", "个人独资企业"},
+		},
+	}
+
+	cur, err := mongoColl.Find(ctx, filter)
+	if err != nil {
+		return err
+	}
+	defer cur.Close(ctx)
+
+	var batch []*CompanyBase
+	batchSize := 200
+	num := 0
+	for cur.Next(ctx) {
+		num++
+		var raw bson.M
+		if err := cur.Decode(&raw); err != nil {
+			continue
+		}
+
+		if num%1000 == 0 {
+			log.Info("main", zap.Any("current", num), zap.Any("_id", raw["_id"]), zap.Any("company_name", raw["company_name"]))
+		}
+		company_status := util.ObjToString(raw["company_status"])
+		if strings.Contains(company_status, "注销") || strings.Contains(company_status, "吊销") {
+			continue
+		}
+
+		entity, companyID := mapMongoToCompanyBase(raw)
+		if companyID == "" {
+			continue
+		}
+
+		hash := hashCompanyID(companyID)
+		if bitmapStore.Contains(hash) {
+			continue
+		}
+
+		bitmapStore.Add(hash)
+		batch = append(batch, entity)
+		if len(batch) >= batchSize {
+			if err := MysqlDB.Create(&batch).Error; err != nil {
+				return err
+			}
+			batch = batch[:0]
+		}
+	}
+	if len(batch) > 0 {
+		if err := MysqlDB.Create(&batch).Error; err != nil {
+			return err
+		}
+	}
+	return nil
+}

+ 67 - 0
qyxy-mysql/config.go

@@ -0,0 +1,67 @@
+package main
+
+type GlobalConf struct {
+	Mongoqy     MgoConf
+	Cron        CronConf
+	Mongop      MgoConf
+	Mysql       MysqlConf
+	Log         Log
+	Mongospider MgoConf
+	Email       EmailConf
+	Clickhouse  CkConf
+}
+
+type MgoConf struct {
+	Host     string
+	DB       string
+	Coll     string // 查询表
+	Username string
+	Password string
+	Size     int
+	Direct   bool
+	List     string
+	Detail   string
+}
+
+// CronConf 定时任务
+type CronConf struct {
+	Spec   string
+	Url    string
+	Start  int
+	End    int
+	Delete int
+}
+
+type CkConf struct {
+	Host     string
+	Username string
+	Password string
+	DB       string
+}
+
+type MysqlConf struct {
+	Address  string
+	Dbname   string
+	Username string
+	Password string
+	Prefix   string //数据表前缀
+	Table    string
+	Stime    string
+	Etime    string
+	Test     bool
+}
+
+type Log struct {
+	LogPath    string
+	MaxSize    int
+	Compress   bool
+	MaxAge     int
+	MaxBackups int
+	LogLevel   string
+	Format     string
+}
+
+type EmailConf struct {
+	Api string
+	To  string
+}

+ 49 - 0
qyxy-mysql/config.toml

@@ -0,0 +1,49 @@
+[mongoqy]  ## 181 链接
+    host = "127.0.0.1:27001"
+#    host = "172.17.4.181:27001"
+    db = "mixdata"
+    coll = ""
+    username = ""
+    password = ""
+#    direct = true
+
+
+
+
+[cron] ## 定时任务
+#    spec = "0 */1 * * * *"  ## 5分钟执行一次
+    spec = "0 03 7,12,15,20 * * *"   ## 每天7,12,15,20点执行
+    url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=0fc090e3-ceda-448d-8aba-d00a2994be7e"## 微信群通知机器人
+
+
+[mysql] ## 数据库MySQL
+    address = "127.0.0.1:4001" ## 本地
+#address = "172.17.162.29:14000" ## 线上
+    dbname=   "qyxy" ##
+    username = "wangchengcheng"
+    password= "Wcc#20221209P"
+    prefix = "" ## mysql 数据表前缀
+
+
+
+
+## 日志
+# 日志
+[log]
+    # 日志路径,为空将输出控制台
+    logpath = ""
+#    logpath = "logs/log.out"
+    # log size (M)
+    maxsize = 10
+    # compress log
+    compress = true
+    # log save  time (day)
+    maxage =  7
+    # save total log file total
+    maxbackups = 10
+    # log level
+    loglevel  = "debug"
+    # text or json output
+    format = "json"
+
+

+ 999 - 0
qyxy-mysql/entity.go

@@ -0,0 +1,999 @@
+package main
+
+import "time"
+
+// CompanyBase 企业基本信息
+type CompanyBase struct {
+	ID                 int64      `gorm:"primaryKey;column:id" json:"id"`
+	CompanyID          string     `gorm:"unique;column:company_id;type:char(32)" json:"company_id"`
+	ProvinceShort      string     `gorm:"column:province_short;type:varchar(5)" json:"province_short"`
+	CompanyName        string     `gorm:"column:company_name;type:varchar(255);index" json:"company_name"`
+	CompanyCode        string     `gorm:"column:company_code;type:varchar(50);index" json:"company_code"`
+	CreditNo           string     `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`
+	OrgCode            string     `gorm:"column:org_code;type:varchar(20)" json:"org_code"`
+	TaxCode            string     `gorm:"column:tax_code;type:varchar(50)" json:"tax_code"`
+	EstablishDate      *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`
+	LegalPerson        string     `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`
+	LegalPersonCaption string     `gorm:"column:legal_person_caption;type:varchar(10)" json:"legal_person_caption"`
+	CompanyStatus      string     `gorm:"column:company_status;type:varchar(50)" json:"company_status"`
+	CompanyType        string     `gorm:"column:company_type;type:varchar(50)" json:"company_type"`
+	Authority          string     `gorm:"column:authority;type:varchar(255)" json:"authority"`
+	IssueDate          *time.Time `gorm:"column:issue_date;type:date" json:"issue_date"`
+	OperationStartDate string     `gorm:"column:operation_startdate;type:varchar(50)" json:"operation_startdate"`
+	OperationEndDate   string     `gorm:"column:operation_enddate;type:varchar(50)" json:"operation_enddate"`
+	Capital            string     `gorm:"column:capital;type:varchar(50)" json:"capital"`
+	CompanyAddress     string     `gorm:"column:company_address;type:varchar(300)" json:"company_address"`
+	BusinessScope      string     `gorm:"column:business_scope;type:text" json:"business_scope"`
+	CancelDate         *time.Time `gorm:"column:cancel_date;type:date" json:"cancel_date"`
+	CancelReason       string     `gorm:"column:cancel_reason;type:varchar(500)" json:"cancel_reason"`
+	RevokeDate         *time.Time `gorm:"column:revoke_date;type:date" json:"revoke_date"`
+	RevokeReason       string     `gorm:"column:revoke_reason;type:varchar(500)" json:"revoke_reason"`
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;autoCreateTime" json:"create_time"`
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;autoUpdateTime;index" json:"update_time"`
+	LegalPersonType    *int8      `gorm:"column:legal_person_type;type:tinyint(4)" json:"legal_person_type"`
+	RealCapital        string     `gorm:"column:real_capital;type:varchar(50)" json:"real_capital"`
+	EnName             string     `gorm:"column:en_name;type:varchar(255)" json:"en_name"`
+	ListCode           string     `gorm:"column:list_code;type:varchar(50)" json:"list_code"`
+	LegalPersonID      string     `gorm:"column:legal_person_id;type:char(32)" json:"legal_person_id"`
+}
+
+func (CompanyBase) TableName() string {
+	return "company_base"
+}
+
+// CompanyIndustry 企业行业分类表
+type CompanyIndustry struct {
+	ID             int64     `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
+	CompanyID      string    `gorm:"column:company_id;unique;type:char(32);not null" json:"company_id"`
+	Industry       string    `gorm:"column:industry;type:varchar(100);not null;index" json:"industry"`
+	IndustryL1Code string    `gorm:"column:industry_l1_code;type:varchar(5)" json:"industry_l1_code"`
+	IndustryL1Name string    `gorm:"column:industry_l1_name;type:varchar(100)" json:"industry_l1_name"`
+	IndustryL2Code string    `gorm:"column:industry_l2_code;type:varchar(5)" json:"industry_l2_code"`
+	IndustryL2Name string    `gorm:"column:industry_l2_name;type:varchar(100)" json:"industry_l2_name"`
+	IndustryL3Code string    `gorm:"column:industry_l3_code;type:varchar(5)" json:"industry_l3_code"`
+	IndustryL3Name string    `gorm:"column:industry_l3_name;type:varchar(100)" json:"industry_l3_name"`
+	IndustryL4Code string    `gorm:"column:industry_l4_code;type:varchar(5)" json:"industry_l4_code"`
+	IndustryL4Name string    `gorm:"column:industry_l4_name;type:varchar(100)" json:"industry_l4_name"`
+	UseFlag        int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`
+	CreateTime     time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`
+	UpdateTime     time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"`
+}
+
+// TableName 自定义表名
+func (CompanyIndustry) TableName() string {
+	return "company_industry"
+}
+
+// CompanyHistoryName 企业曾用名记录表
+type CompanyHistoryName struct {
+	ID          int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID   string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	HistoryName string     `gorm:"column:history_name;type:varchar(255);not null;index" json:"history_name"`                                        // 曾用名
+	StartDate   *time.Time `gorm:"column:start_date;type:date" json:"start_date"`                                                                   // 名称开始使用日期
+	EndDate     *time.Time `gorm:"column:end_date;type:date" json:"end_date"`                                                                       // 名称结束使用日期
+	UseFlag     *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	ChangeDate  *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 废弃字段
+	CreateTime  time.Time  `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime  time.Time  `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 自定义表名
+func (CompanyHistoryName) TableName() string {
+	return "company_history_name"
+}
+
+// CompanyChange 企业变更记录
+type CompanyChange struct {
+	ID            int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChangeDate    *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 变更日期
+	ChangeType    string     `gorm:"column:change_type;type:varchar(100)" json:"change_type"`                                                         // 变更类型
+	ChangeField   string     `gorm:"column:change_field;type:varchar(4091)" json:"change_field"`                                                      // 变更事项
+	ContentBefore string     `gorm:"column:content_before;type:mediumtext" json:"content_before"`                                                     // 变更前内容
+	ContentAfter  string     `gorm:"column:content_after;type:mediumtext" json:"content_after"`                                                       // 变更后内容
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	ChangeRecord  string     `gorm:"column:change_record;type:char(32);not null" json:"change_record"`                                                // 变更记录
+	CreateTime    time.Time  `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime    time.Time  `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+// TableName 自定义表名
+func (CompanyChange) TableName() string {
+	return "company_change"
+}
+
+// CompanyBranch 企业分支机构
+type CompanyBranch struct {
+	ID              int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID       string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	BranchCompanyID *string    `gorm:"column:branch_company_id;type:char(32);index" json:"branch_company_id"`                                           // 分支机构的主体唯一键
+	BranchName      string     `gorm:"column:branch_name;type:varchar(255);not null;index" json:"branch_name"`                                          // 分支机构名称
+	BranchCreditNo  *string    `gorm:"column:branch_credit_no;type:varchar(50)" json:"branch_credit_no"`                                                // 分支机构统一信用代码
+	BranchCode      *string    `gorm:"column:branch_code;type:varchar(50)" json:"branch_code"`                                                          // 分支机构注册号
+	LegalPerson     *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 分支机构负责人
+	CompanyStatus   *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 登记状态
+	NCompanyStatus  *string    `gorm:"column:n_company_status;type:varchar(50)" json:"n_company_status"`                                                // 处理后的登记状态
+	EstablishDate   *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`                                                           // 分支机构成立日期
+	Authority       *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 分支机构登记机关
+	CancelDate      *time.Time `gorm:"column:cancel_date;type:date" json:"cancel_date"`                                                                 // 注销日期
+	RevokeDate      *time.Time `gorm:"column:revoke_date;type:date" json:"revoke_date"`                                                                 // 吊销日期
+	UseFlag         *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime      time.Time  `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime      time.Time  `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+// TableName 自定义表名
+func (CompanyBranch) TableName() string {
+	return "company_branch"
+}
+
+// AnnualReportBase  企业年报基础信息表
+type AnnualReportBase struct {
+	ID                    int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID             string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	CreditNo              *string    `gorm:"column:credit_no;type:varchar(50)" json:"credit_no"`                                                              // 统一信用代码
+	CompanyName           *string    `gorm:"column:company_name;type:varchar(255)" json:"company_name"`                                                       // 企业名称
+	CompanyCode           *string    `gorm:"column:company_code;type:varchar(50)" json:"company_code"`                                                        // 注册号
+	ReportYear            int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	OperatorName          *string    `gorm:"column:operator_name;type:varchar(255)" json:"operator_name"`                                                     // 经营者名称
+	CompanyStatus         *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 经营状态
+	CompanyAddress        *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 通讯地址
+	BusinessScope         *string    `gorm:"column:business_scope;type:mediumtext" json:"business_scope"`                                                     // 企业主营业务活动
+	CompanyPhone          *string    `gorm:"column:company_phone;type:varchar(50)" json:"company_phone"`                                                      // 联系电话
+	CompanyEmail          *string    `gorm:"column:company_email;type:varchar(50)" json:"company_email"`                                                      // 联系邮箱
+	ZipCode               *string    `gorm:"column:zip_code;type:varchar(10)" json:"zip_code"`                                                                // 邮政编码
+	EmployeeNo            *string    `gorm:"column:employee_no;type:varchar(20)" json:"employee_no"`                                                          // 从业人数
+	WomenEmployeeNo       *string    `gorm:"column:women_employee_no;type:varchar(20)" json:"women_employee_no"`                                              // 女性从业人数
+	MemberNo              *string    `gorm:"column:member_no;type:varchar(20)" json:"member_no"`                                                              // 成员人数
+	MemberFarmerNo        *string    `gorm:"column:member_farmer_no;type:varchar(20)" json:"member_farmer_no"`                                                // 成员人数中农民人数
+	MemberIncreaseNo      *string    `gorm:"column:member_increase_no;type:varchar(20)" json:"member_increase_no"`                                            // 本年度新增成员人数
+	MemberOutNo           *string    `gorm:"column:member_out_no;type:varchar(20)" json:"member_out_no"`                                                      // 本年度退出成员人数
+	CompanyHolding        *string    `gorm:"column:company_holding;type:varchar(255)" json:"company_holding"`                                                 // 企业控股情况
+	HasInvest             *string    `gorm:"column:has_invest;type:varchar(10)" json:"has_invest"`                                                            // 是否有投资或购买其他公司股权
+	HasGuarantees         *string    `gorm:"column:has_guarantees;type:varchar(10)" json:"has_guarantees"`                                                    // 是否有对外提供担保信息
+	StockSell             *string    `gorm:"column:stock_sell;type:varchar(10)" json:"stock_sell"`                                                            // 有限责任公司是否发生股权转让
+	SubjectionCreditNo    *string    `gorm:"column:subjection_credit_no;type:varchar(50)" json:"subjection_credit_no"`                                        // 从属企业统一信用代码/注册号
+	SubjectionCompanyName *string    `gorm:"column:subjection_company_name;type:varchar(255)" json:"subjection_company_name"`                                 // 从属企业名称
+	HasWebsite            *string    `gorm:"column:has_website;type:varchar(10)" json:"has_website"`                                                          // 是否有网站或网点
+	ReportDate            *time.Time `gorm:"column:report_date;type:date" json:"report_date"`                                                                 // 年报填报时间
+	UseFlag               *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime            time.Time  `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime            time.Time  `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+// TableName 表名自定义
+func (AnnualReportBase) TableName() string {
+	return "annual_report_base"
+}
+
+// AnnualReportWebsite 企业年报网站信息表
+type AnnualReportWebsite struct {
+	ID          int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID   string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear  int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	WebsiteURL  string     `gorm:"column:website_url;type:varchar(400);not null" json:"website_url"`                                                // 网址
+	WebsiteName *string    `gorm:"column:website_name;type:varchar(300)" json:"website_name"`                                                       // 网站名称
+	WebsiteType *string    `gorm:"column:website_type;type:varchar(20)" json:"website_type"`                                                        // 网站类型
+	IsHistory   *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag     *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	URLMD5      string     `gorm:"column:url_md5;type:char(32);not null" json:"url_md5"`                                                            // 网址MD5
+	CreateTime  *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime  *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportWebsite) TableName() string {
+	return "annual_report_website"
+}
+
+// AnnualReportPartner  企业年报股东信息表
+type AnnualReportPartner struct {
+	ID               int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID        string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear       int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	StockName        string     `gorm:"column:stock_name;type:varchar(255);not null" json:"stock_name"`                                                  // 股东名称
+	IsPersonal       *int8      `gorm:"column:is_personal;type:tinyint(4)" json:"is_personal"`                                                           // 是否自然人
+	StockNameID      *string    `gorm:"column:stock_name_id;type:char(32)" json:"stock_name_id"`                                                         // 股东id
+	StockCapital     *string    `gorm:"column:stock_capital;type:varchar(100)" json:"stock_capital"`                                                     // 认缴出资额
+	StockDate        *time.Time `gorm:"column:stock_date;type:date" json:"stock_date"`                                                                   // 认缴出资日期
+	InvestType       *string    `gorm:"column:invest_type;type:varchar(50)" json:"invest_type"`                                                          // 认缴出资方式
+	StockRealCapital *string    `gorm:"column:stock_real_capital;type:varchar(100)" json:"stock_real_capital"`                                           // 实缴出资额
+	StockRealDate    *time.Time `gorm:"column:stock_real_date;type:date" json:"stock_real_date"`                                                         // 实缴出资日期
+	InvestRealType   *string    `gorm:"column:invest_real_type;type:varchar(50)" json:"invest_real_type"`                                                // 实缴出资方式
+	IsHistory        *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag          *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	PartnerRecord    string     `gorm:"column:partner_record;type:char(32);not null" json:"partner_record"`                                              // 年报股东记录
+	CreateTime       *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime       *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportPartner) TableName() string {
+	return "annual_report_partner"
+}
+
+// AnnualReportInvest 企业年报对外投资信息表
+type AnnualReportInvest struct {
+	ID             int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID      string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear     int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	CreditNo       *string    `gorm:"column:credit_no;type:varchar(50)" json:"credit_no"`                                                              // 统一信用代码
+	InvesteeName   string     `gorm:"column:investee_name;type:varchar(255);not null" json:"investee_name"`                                            // 对外投资企业名称
+	InvesteeNameID *string    `gorm:"column:investee_name_id;type:char(32)" json:"investee_name_id"`                                                   // 投资企业的company_id
+	InvesteeCode   *string    `gorm:"column:investee_code;type:varchar(50)" json:"investee_code"`                                                      // 注册号
+	IsHistory      *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag        *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime     *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime     *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportInvest) TableName() string {
+	return "annual_report_invest"
+}
+
+// AnnualReportAsset  企业年报资产信息表
+type AnnualReportAsset struct {
+	ID                 int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID          string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear         int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	TotalAmount        *string    `gorm:"column:total_amount;type:varchar(20)" json:"total_amount"`                                                        // 资产总额
+	EquityAmount       *string    `gorm:"column:equity_amount;type:varchar(20)" json:"equity_amount"`                                                      // 所有者权益合计
+	BusinessIncome     *string    `gorm:"column:business_income;type:varchar(20)" json:"business_income"`                                                  // 销售总额(营业总收入)
+	TotalProfitAmount  *string    `gorm:"column:total_profit_amount;type:varchar(20)" json:"total_profit_amount"`                                          // 利润总额
+	MainBusinessIncome *string    `gorm:"column:main_business_income;type:varchar(20)" json:"main_business_income"`                                        // 主营业务收入
+	ProfitAmount       *string    `gorm:"column:profit_amount;type:varchar(20)" json:"profit_amount"`                                                      // 净利润
+	TaxAmount          *string    `gorm:"column:tax_amount;type:varchar(20)" json:"tax_amount"`                                                            // 纳税总额
+	DebtAmount         *string    `gorm:"column:debt_amount;type:varchar(20)" json:"debt_amount"`                                                          // 负债总额
+	GovernmentSupport  *string    `gorm:"column:government_support;type:varchar(20)" json:"government_support"`                                            // 获得政府扶持资金、补助
+	FinancialLoan      *string    `gorm:"column:financial_loan;type:varchar(20)" json:"financial_loan"`                                                    // 金融贷款
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportAsset) TableName() string {
+	return "annual_report_asset"
+}
+
+// AnnualReportSocialSecurity 企业年报社保信息表
+type AnnualReportSocialSecurity struct {
+	ID                   int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID            string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear           int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	InsuranceName        string     `gorm:"column:insurance_name;type:varchar(20);not null" json:"insurance_name"`                                           // 保险种类、名称
+	InsuranceAmount      *string    `gorm:"column:insurance_amount;type:varchar(20)" json:"insurance_amount"`                                                // 参保人数
+	InsuranceBase        *string    `gorm:"column:insurance_base;type:varchar(20)" json:"insurance_base"`                                                    // 保险缴费基数
+	InsuranceRealCapital *string    `gorm:"column:insurance_real_capital;type:varchar(20)" json:"insurance_real_capital"`                                    // 实际缴费金额
+	InsuranceArrearage   *string    `gorm:"column:insurance_arrearage;type:varchar(20)" json:"insurance_arrearage"`                                          // 累计欠缴金额
+	UseFlag              *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime           *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime           *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportSocialSecurity) TableName() string {
+	return "annual_report_social_security"
+}
+
+// AnnualReportEquityChange 企业年报股权变更信息表
+type AnnualReportEquityChange struct {
+	ID               int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID        string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear       int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	StockName        string     `gorm:"column:stock_name;type:varchar(255);not null" json:"stock_name"`                                                  // 股东名称
+	ChangeDate       *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 变更日期
+	ProportionBefore *string    `gorm:"column:proportion_change_before;type:varchar(20)" json:"proportion_change_before"`                                // 变更前股权比例
+	ProportionAfter  *string    `gorm:"column:proportion_change_after;type:varchar(20)" json:"proportion_change_after"`                                  // 变更后股权比例
+	IsHistory        *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag          *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	ChangeRecord     string     `gorm:"column:change_record;type:char(32);not null" json:"change_record"`                                                // 变更记录(股东名称+变更日期)
+	CreateTime       *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime       *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName 设置表名
+func (AnnualReportEquityChange) TableName() string {
+	return "annual_report_equity_change"
+}
+
+// AnnualReportChange 企业年报变更信息表
+type AnnualReportChange struct {
+	ID            int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear    int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	ChangeDate    *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 修改日期
+	ChangeField   *string    `gorm:"column:change_field;type:varchar(1000)" json:"change_field"`                                                      // 修改事项
+	ContentBefore *string    `gorm:"column:content_before;type:mediumtext" json:"content_before"`                                                     // 修改前
+	ContentAfter  *string    `gorm:"column:content_after;type:mediumtext" json:"content_after"`                                                       // 修改后
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	ChangeRecord  string     `gorm:"column:change_record;type:char(32);not null" json:"change_record"`                                                // 变更记录
+	CreateTime    *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime    *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName sets the table name for GORM
+func (AnnualReportChange) TableName() string {
+	return "annual_report_change"
+}
+
+// AnnualReportGuarantee 企业年报对外提供保证担保信息表
+type AnnualReportGuarantee struct {
+	ID              int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID       string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ReportYear      int16      `gorm:"column:report_year;type:smallint(6);not null" json:"report_year"`                                                 // 年报年份
+	Creditor        *string    `gorm:"column:creditor;type:varchar(255)" json:"creditor"`                                                               // 债权人
+	Debtor          *string    `gorm:"column:debtor;type:varchar(255)" json:"debtor"`                                                                   // 债务人
+	DebtType        *string    `gorm:"column:debt_type;type:varchar(50)" json:"debt_type"`                                                              // 主债权种类
+	GuaranteeAmount *string    `gorm:"column:guarantee_amount;type:varchar(50)" json:"guarantee_amount"`                                                // 主债权数额
+	PerformTime     *string    `gorm:"column:perform_time;type:varchar(50)" json:"perform_time"`                                                        // 履行债务的期限
+	GuaranteeTerm   *string    `gorm:"column:guarantee_term;type:varchar(50)" json:"guarantee_term"`                                                    // 保证的期间
+	GuaranteeType   *string    `gorm:"column:guarantee_type;type:varchar(50)" json:"guarantee_type"`                                                    // 保证的方式
+	GuaranteeScope  *string    `gorm:"column:guarantee_scope;type:varchar(50)" json:"guarantee_scope"`                                                  // 保证担保的范围
+	IsHistory       *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag         *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	GuaranteeRecord string     `gorm:"column:guarantee_record;type:char(32);not null" json:"guarantee_record"`                                          // MD5 唯一标识
+	CreateTime      *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime      *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+// TableName sets the table name for GORM
+func (AnnualReportGuarantee) TableName() string {
+	return "annual_report_guarantee"
+}
+
+// CompanyAllow 行政许可信息表
+type CompanyAllow struct {
+	ID             int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID      string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	AllowCode      *string    `gorm:"column:allow_code;type:varchar(255);default:null" json:"allow_code"`                                              // 许可文件编号
+	AllowFilename  *string    `gorm:"column:allow_filename;type:varchar(255);default:null" json:"allow_filename"`                                      // 许可文件名称
+	AllowContent   *string    `gorm:"column:allow_content;type:varchar(4500);default:null" json:"allow_content"`                                       // 许可内容
+	AllowStartDate *string    `gorm:"column:allow_startdate;type:varchar(50);default:null" json:"allow_startdate"`                                     // 有效期自
+	AllowEndDate   *string    `gorm:"column:allow_enddate;type:varchar(50);default:null" json:"allow_enddate"`                                         // 有效期至
+	AllowAuthority *string    `gorm:"column:allow_authority;type:varchar(255);default:null" json:"allow_authority"`                                    // 许可机关
+	IsHistory      *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag        *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	AllowRecord    string     `gorm:"column:allow_record;type:char(32);not null" json:"allow_record"`                                                  // 行政许可记录
+	CreateTime     *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime     *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyAllow) TableName() string {
+	return "company_allow"
+}
+
+// CompanyAbnormal 经营异常记录表
+type CompanyAbnormal struct {
+	ID                int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID         string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	IncludedDate      *time.Time `gorm:"column:included_date;type:date" json:"included_date"`                                                             // 列入时间
+	IncludedReason    *string    `gorm:"column:included_reason;type:varchar(4000)" json:"included_reason"`                                                // 列入原因
+	IncludedAuthority *string    `gorm:"column:included_authority;type:varchar(255)" json:"included_authority"`                                           // 列入机关
+	RemovedDate       *time.Time `gorm:"column:removed_date;type:date" json:"removed_date"`                                                               // 移除时间
+	RemovedReason     *string    `gorm:"column:removed_reason;type:varchar(4000)" json:"removed_reason"`                                                  // 移除原因
+	RemovedAuthority  *string    `gorm:"column:removed_authority;type:varchar(255)" json:"removed_authority"`                                             // 移除机关
+	UseFlag           *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 是否历史数据
+	IsHistory         *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 使用标记
+	AbnormalRecord    string     `gorm:"column:abnormal_record;type:char(32);not null" json:"abnormal_record"`                                            // 经营异常记录
+	CreateTime        *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 入库时间
+	UpdateTime        *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+// TableName sets the insert table name for this struct type
+func (CompanyAbnormal) TableName() string {
+	return "company_abnormal"
+}
+
+// CompanyIllegal 企业严重违法信息表
+type CompanyIllegal struct {
+	ID                int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID         string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	IncludedDate      *time.Time `gorm:"column:included_date;type:date" json:"included_date"`                                                             // 列入时间
+	IllegalType       *string    `gorm:"column:illegal_type;type:varchar(255);default:null" json:"illegal_type"`                                          // 类别
+	IncludedReason    *string    `gorm:"column:included_reason;type:varchar(4000);default:null" json:"included_reason"`                                   // 列入原因
+	IncludedAuthority *string    `gorm:"column:included_authority;type:varchar(255);default:null" json:"included_authority"`                              // 列入机关
+	RemovedDate       *time.Time `gorm:"column:removed_date;type:date" json:"removed_date"`                                                               // 移除时间
+	RemovedReason     *string    `gorm:"column:removed_reason;type:varchar(4000);default:null" json:"removed_reason"`                                     // 移除原因
+	RemovedAuthority  *string    `gorm:"column:removed_authority;type:varchar(255);default:null" json:"removed_authority"`                                // 移除机关
+	IsHistory         *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag           *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	IllegalRecord     string     `gorm:"column:illegal_record;type:char(32);not null" json:"illegal_record"`                                              // 严重违法记录
+	CreateTime        *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime        *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyIllegal) TableName() string {
+	return "company_illegal"
+}
+
+// CompanyCheck 企业抽查检查信息表
+type CompanyCheck struct {
+	ID          int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID   string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	CheckDate   *time.Time `gorm:"column:check_date;type:date" json:"check_date"`                                                                   // 日期
+	CheckType   *string    `gorm:"column:check_type;type:varchar(30);default:null" json:"check_type"`                                               // 类型
+	CheckResult *string    `gorm:"column:check_result;type:varchar(1024);default:null" json:"check_result"`                                         // 结果
+	Authority   *string    `gorm:"column:authority;type:varchar(255);default:null" json:"authority"`                                                // 检查实施机关
+	IsHistory   *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态(0: 有效,1: 历史)
+	UseFlag     *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记,10废弃数据
+	CheckRecord string     `gorm:"column:check_record;type:char(32);not null" json:"check_record"`                                                  // 抽查检查记录 日期+检查实施机关
+	CreateTime  *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime  *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyCheck) TableName() string {
+	return "company_check"
+}
+
+// CompanyPledge 企业股权出质信息表
+type CompanyPledge struct {
+	ID                int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID         string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ProvinceShort     *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份简称
+	PledgeCode        *string    `gorm:"column:pledge_code;type:varchar(50)" json:"pledge_code"`                                                          // 登记编号
+	Pledgor           *string    `gorm:"column:pledgor;type:varchar(255)" json:"pledgor"`                                                                 // 出质人
+	PledgorIdentifyNo *string    `gorm:"column:pledgor_identify_no;type:varchar(30)" json:"pledgor_identify_no"`                                          // 出质人证件号码
+	PledgorNameID     *string    `gorm:"column:pledgor_name_id;type:char(32)" json:"pledgor_name_id"`                                                     // 机构出质人 company_id
+	PledgorIsPersonal *int8      `gorm:"column:pledgor_is_personal;type:tinyint" json:"pledgor_is_personal"`                                              // 出质人类型
+	Pawnee            *string    `gorm:"column:pawnee;type:varchar(255)" json:"pawnee"`                                                                   // 质权人
+	PawneeIdentifyNo  *string    `gorm:"column:pawnee_identify_no;type:varchar(30)" json:"pawnee_identify_no"`                                            // 质权人证件号码
+	PawneeNameID      *string    `gorm:"column:pawnee_name_id;type:char(32)" json:"pawnee_name_id"`                                                       // 机构质权人 company_id
+	PawneeIsPersonal  *int8      `gorm:"column:pawnee_is_personal;type:tinyint" json:"pawnee_is_personal"`                                                // 质权人类型
+	PledgeEquity      *string    `gorm:"column:pledge_equity;type:varchar(30)" json:"pledge_equity"`                                                      // 出质股权数额
+	PledgeDate        *time.Time `gorm:"column:pledge_date;type:date" json:"pledge_date"`                                                                 // 出质登记日期
+	PledgeStatus      *string    `gorm:"column:pledge_status;type:varchar(10)" json:"pledge_status"`                                                      // 状态
+	PublicDate        *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 公示日期
+	RevokeDate        *time.Time `gorm:"column:revoke_date;type:date" json:"revoke_date"`                                                                 // 注销日期
+	RevokeReason      *string    `gorm:"column:revoke_reason;type:varchar(255)" json:"revoke_reason"`                                                     // 注销原因
+	InvalidDate       *time.Time `gorm:"column:invalid_date;type:date" json:"invalid_date"`                                                               // 失效时间
+	InvalidReason     *string    `gorm:"column:invalid_reason;type:varchar(255)" json:"invalid_reason"`                                                   // 失效原因
+	UseFlag           *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	IsHistory         *int8      `gorm:"column:is_history;type:tinyint;default:0" json:"is_history"`                                                      // 状态(0: 有效,1: 历史)
+	PledgeRecord      string     `gorm:"column:pledge_record;type:char(32);not null" json:"pledge_record"`                                                // 股权出质记录
+	CreateTime        *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime        *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyPledge) TableName() string {
+	return "company_pledge"
+}
+
+// CompanyPledgeExtend 企业股权出质扩展信息表
+type CompanyPledgeExtend struct {
+	ID           int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID    string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	PledgeRecord string     `gorm:"column:pledge_record;type:char(32);not null" json:"pledge_record"`                                                // 股权出质记录
+	EquityAmount *string    `gorm:"column:equity_amount;type:varchar(30)" json:"equity_amount"`                                                      // 股权出质数值
+	EquityUnit   *string    `gorm:"column:equity_unit;type:varchar(30)" json:"equity_unit"`                                                          // 股权出质单位
+	UseFlag      *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime   *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime   *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyPledgeExtend) TableName() string {
+	return "company_pledge_extend"
+}
+
+// CompanyPunish 企业行政处罚信息表
+type CompanyPunish struct {
+	ID               int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID        string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	PunishDate       *time.Time `gorm:"column:punish_date;type:date" json:"punish_date"`                                                                 // 处罚决定日期
+	PunishCode       *string    `gorm:"column:punish_code;type:varchar(200)" json:"punish_code"`                                                         // 决定书文号
+	IllegalType      *string    `gorm:"column:illegal_type;type:varchar(4000)" json:"illegal_type"`                                                      // 违法行为类型
+	PunishContent    *string    `gorm:"column:punish_content;type:mediumtext" json:"punish_content"`                                                     // 行政处罚内容
+	IllegalFact      *string    `gorm:"column:illegal_fact;type:mediumtext" json:"illegal_fact"`                                                         // 主要违法事实
+	PunishType       *string    `gorm:"column:punish_type;type:varchar(150)" json:"punish_type"`                                                         // 处罚种类
+	PunishAmount     *string    `gorm:"column:punish_amount;type:varchar(50)" json:"punish_amount"`                                                      // 罚款金额
+	AmountForfeiture *string    `gorm:"column:amount_forfeiture;type:varchar(50)" json:"amount_forfeiture"`                                              // 没收金额
+	PunishValidity   *string    `gorm:"column:punish_validity;type:varchar(200)" json:"punish_validity"`                                                 // 处罚有效期
+	PublicDate       *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 公示日期
+	PublicDeadline   *string    `gorm:"column:public_deadline;type:varchar(50)" json:"public_deadline"`                                                  // 公示截止日期
+	PunishBasis      *string    `gorm:"column:punish_basis;type:varchar(1000)" json:"punish_basis"`                                                      // 处罚依据
+	Authority        *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 决定机关
+	RevokeNameCode   *string    `gorm:"column:revoke_name_code;type:varchar(200)" json:"revoke_name_code"`                                               // 暂扣或吊销证照名称及编号
+	Mark             *string    `gorm:"column:mark;type:varchar(255)" json:"mark"`                                                                       // 备注
+	IsHistory        *int8      `gorm:"column:is_history;type:tinyint;default:0" json:"is_history"`                                                      // 是否历史数据
+	UseFlag          *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	PunishRecord     string     `gorm:"column:punish_record;type:char(32);not null" json:"punish_record"`                                                // 行政处罚记录
+	CreateTime       *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime       *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyPunish) TableName() string {
+	return "company_punish"
+}
+
+// CompanyIntellectual 企业知识产权出质信息表
+type CompanyIntellectual struct {
+	ID                   int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID            string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	PublicDate           *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 公示日期
+	IntellectualCode     *string    `gorm:"column:intellectual_code;type:varchar(50)" json:"intellectual_code"`                                              // 知识产权登记证号
+	Pledgor              *string    `gorm:"column:pledgor;type:varchar(255)" json:"pledgor"`                                                                 // 出质人名称
+	IntellectualName     *string    `gorm:"column:intellectual_name;type:varchar(50)" json:"intellectual_name"`                                              // 名称
+	IntellectualType     *string    `gorm:"column:intellectual_type;type:varchar(20)" json:"intellectual_type"`                                              // 种类
+	Pledgee              *string    `gorm:"column:pledgee;type:varchar(255)" json:"pledgee"`                                                                 // 质权人名称
+	IntellectualStatus   *string    `gorm:"column:intellectual_status;type:varchar(20)" json:"intellectual_status"`                                          // 状态
+	IntellectualDeadline *string    `gorm:"column:intellectual_deadline;type:varchar(100)" json:"intellectual_deadline"`                                     // 质权登记期限
+	CancelDate           *time.Time `gorm:"column:cancel_date;type:date" json:"cancel_date"`                                                                 // 注销日期
+	CancelReason         *string    `gorm:"column:cancel_reason;type:varchar(255)" json:"cancel_reason"`                                                     // 注销原因
+	IsHistory            *int8      `gorm:"column:is_history;type:tinyint;default:0" json:"is_history"`                                                      // 是否历史数据
+	UseFlag              *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	IntellectualRecord   string     `gorm:"column:intellectual_record;type:char(32);not null" json:"intellectual_record"`                                    // 知识产权出质记录
+	CreateTime           *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime           *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyIntellectual) TableName() string {
+	return "company_intellectual"
+}
+
+// CompanyIntellectualChange 知识产权出质变更信息表
+type CompanyIntellectualChange struct {
+	ID                 int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID          string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChangeDate         *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 变更日期
+	ChangeField        *string    `gorm:"column:change_field;type:varchar(500)" json:"change_field"`                                                       // 变更事项
+	ContentBefore      *string    `gorm:"column:content_before;type:varchar(2000)" json:"content_before"`                                                  // 变更前内容
+	ContentAfter       *string    `gorm:"column:content_after;type:varchar(2000)" json:"content_after"`                                                    // 变更后内容
+	ChangeRecord       string     `gorm:"column:change_record;type:varchar(50);not null" json:"change_record"`                                             // 变更记录
+	IsHistory          *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	IntellectualRecord string     `gorm:"column:intellectual_record;type:char(32);not null" json:"intellectual_record"`                                    // 知识产权出质记录
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyIntellectualChange) TableName() string {
+	return "company_intellectual_change"
+}
+
+// CompanyChattel 动产抵押登记信息表
+type CompanyChattel struct {
+	ID             int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID      string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChattelDate    *time.Time `gorm:"column:chattel_date;type:date" json:"chattel_date"`                                                               // 登记日期
+	ChattelCode    string     `gorm:"column:chattel_code;type:varchar(100);not null" json:"chattel_code"`                                              // 登记编号
+	DebtType       *string    `gorm:"column:debt_type;type:varchar(50)" json:"debt_type"`                                                              // 被担保债权种类
+	DebtAmount     *string    `gorm:"column:debt_amount;type:varchar(50)" json:"debt_amount"`                                                          // 被担保债权数额
+	GuaranteeScope *string    `gorm:"column:guarantee_scope;type:varchar(1000)" json:"guarantee_scope"`                                                // 担保范围
+	DebtTerm       *string    `gorm:"column:debt_term;type:varchar(200)" json:"debt_term"`                                                             // 债务履行期限
+	Remark         *string    `gorm:"column:remark;type:varchar(1000)" json:"remark"`                                                                  // 主债权信息备注
+	ChattelStatus  *string    `gorm:"column:chattel_status;type:varchar(100)" json:"chattel_status"`                                                   // 状态
+	Authority      *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 登记机关
+	PublicDate     *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 公示日期
+	RevokeDate     *time.Time `gorm:"column:revoke_date;type:date" json:"revoke_date"`                                                                 // 注销日期
+	RevokeReason   *string    `gorm:"column:revoke_reason;type:varchar(500)" json:"revoke_reason"`                                                     // 注销原因
+	IsHistory      *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag        *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime     *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime     *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyChattel) TableName() string {
+	return "company_chattel"
+}
+
+// CompanyChattelChange 动产抵押变更信息表
+type CompanyChattelChange struct {
+	ID            int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChangeDate    *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 变更日期
+	ChattelCode   *string    `gorm:"column:chattel_code;type:varchar(100)" json:"chattel_code"`                                                       // 登记编号
+	ChangeContent *string    `gorm:"column:change_content;type:text" json:"change_content"`                                                           // 变更内容
+	IsHistory     *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	ChangeRecord  string     `gorm:"column:change_record;type:char(32);not null" json:"change_record"`                                                // 变更记录
+	CreateTime    *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime    *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyChattelChange) TableName() string {
+	return "company_chattel_change"
+}
+
+// CompanyChattelMortgage 动产抵押权人信息表
+type CompanyChattelMortgage struct {
+	ID                    int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID             string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChattelCode           *string    `gorm:"column:chattel_code;type:varchar(100)" json:"chattel_code"`                                                       // 登记编号
+	Mortgagee             *string    `gorm:"column:mortgagee;type:varchar(255)" json:"mortgagee"`                                                             // 抵押权人名称
+	MortgageeIdentifyType *string    `gorm:"column:mortgagee_identify_type;type:varchar(200)" json:"mortgagee_identify_type"`                                 // 抵押权人证照/证件类型
+	MortgageeIdentifyNo   *string    `gorm:"column:mortgagee_identify_no;type:varchar(200)" json:"mortgagee_identify_no"`                                     // 证照/证件号码
+	MortgageeAddress      *string    `gorm:"column:mortgagee_address;type:varchar(300)" json:"mortgagee_address"`                                             // 住所地
+	IsHistory             *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag               *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime            *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime            *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyChattelMortgage) TableName() string {
+	return "company_chattel_mortgage"
+}
+
+// CompanyChattelPawn 动产抵押物信息表
+type CompanyChattelPawn struct {
+	ID          int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID   string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ChattelCode *string    `gorm:"column:chattel_code;type:varchar(100)" json:"chattel_code"`                                                       // 登记编号
+	PawnNo      *int       `gorm:"column:pawn_no;type:int(11)" json:"pawn_no"`                                                                      // 抵押物编号
+	PawnName    *string    `gorm:"column:pawn_name;type:varchar(500)" json:"pawn_name"`                                                             // 名称
+	PawnInfo    *string    `gorm:"column:pawn_info;type:varchar(5000)" json:"pawn_info"`                                                            // 数量、质量、状况、所在地等情况
+	PawnOwner   *string    `gorm:"column:pawn_owner;type:varchar(255)" json:"pawn_owner"`                                                           // 所有权归属
+	Remark      *string    `gorm:"column:remark;type:varchar(200)" json:"remark"`                                                                   // 备注
+	IsHistory   *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史数据
+	UseFlag     *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime  *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime  *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (CompanyChattelPawn) TableName() string {
+	return "company_chattel_pawn"
+}
+
+// CompanyJustice 司法协助信息表
+type CompanyJustice struct {
+	ID            int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	DocNo         *string    `gorm:"column:doc_no;type:varchar(200)" json:"doc_no"`                                                                   // 执行通知书文号
+	Executee      *string    `gorm:"column:executee;type:varchar(255)" json:"executee"`                                                               // 被执行人
+	EquityAmount  *string    `gorm:"column:equity_amount;type:varchar(50)" json:"equity_amount"`                                                      // 股权数额
+	EquityStatus  *string    `gorm:"column:equity_status;type:varchar(50)" json:"equity_status"`                                                      // 类型|状态
+	ExecCourt     *string    `gorm:"column:exec_court;type:varchar(100)" json:"exec_court"`                                                           // 执行法院
+	IsHistory     *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态(0: 有效, 1: 历史)
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	JusticeRecord string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	CreateTime    *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime    *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJustice) TableName() string {
+	return "company_justice"
+}
+
+// CompanyJusticeEquityChange 司法协助股权变更信息表
+type CompanyJusticeEquityChange struct {
+	ID                   int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID            string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	ExecDate             *time.Time `gorm:"column:exec_date;type:date" json:"exec_date"`                                                                     // 执行日期
+	DocNo                *string    `gorm:"column:doc_no;type:varchar(200)" json:"doc_no"`                                                                   // 执行通知书文号
+	Executee             *string    `gorm:"column:executee;type:varchar(255)" json:"executee"`                                                               // 被执行人
+	ExecuteeIdentifyType *string    `gorm:"column:executee_identify_type;type:varchar(50)" json:"executee_identify_type"`                                    // 被执行人证照种类
+	ExecuteeIdentifyNo   *string    `gorm:"column:executee_identify_no;type:varchar(50)" json:"executee_identify_no"`                                        // 被执行人证件号码
+	ExecItem             *string    `gorm:"column:exec_item;type:varchar(250)" json:"exec_item"`                                                             // 执行事项
+	EquityAmount         *string    `gorm:"column:equity_amount;type:varchar(50)" json:"equity_amount"`                                                      // 股权数额
+	Accepter             *string    `gorm:"column:accepter;type:varchar(255)" json:"accepter"`                                                               // 受让人
+	AccepterIdentifyType *string    `gorm:"column:accepter_identify_type;type:varchar(50)" json:"accepter_identify_type"`                                    // 受让人证件类型
+	AccepterIdentifyNo   *string    `gorm:"column:accepter_identify_no;type:varchar(50)" json:"accepter_identify_no"`                                        // 受让人证件号码
+	ExecCourt            *string    `gorm:"column:exec_court;type:varchar(100)" json:"exec_court"`                                                           // 执行法院
+	ExecNo               *string    `gorm:"column:exec_no;type:varchar(200)" json:"exec_no"`                                                                 // 执行裁定书文号
+	IsHistory            *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 是否历史
+	UseFlag              *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	JusticeRecord        string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	CreateTime           *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime           *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJusticeEquityChange) TableName() string {
+	return "company_justice_equity_change"
+}
+
+// CompanyJusticeFreeze 司法协助冻结信息表
+type CompanyJusticeFreeze struct {
+	ID                   int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID            string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	PublicDate           *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 冻结公示日期
+	DocNo                *string    `gorm:"column:doc_no;type:varchar(200)" json:"doc_no"`                                                                   // 执行通知书文号
+	Executee             *string    `gorm:"column:executee;type:varchar(255)" json:"executee"`                                                               // 被执行人
+	ExecuteeIdentifyType *string    `gorm:"column:executee_identify_type;type:varchar(50)" json:"executee_identify_type"`                                    // 被执行人证照种类
+	ExecuteeIdentifyNo   *string    `gorm:"column:executee_identify_no;type:varchar(50)" json:"executee_identify_no"`                                        // 被执行人证件号码
+	ExecItem             *string    `gorm:"column:exec_item;type:varchar(250)" json:"exec_item"`                                                             // 执行事项
+	EquityAmount         *string    `gorm:"column:equity_amount;type:varchar(50)" json:"equity_amount"`                                                      // 股权数额
+	FreezeStartDate      *time.Time `gorm:"column:freeze_start_date;type:date" json:"freeze_start_date"`                                                     // 冻结期限自
+	FreezeEndDate        *time.Time `gorm:"column:freeze_end_date;type:date" json:"freeze_end_date"`                                                         // 冻结期限至
+	FreezeYears          *string    `gorm:"column:freeze_years;type:varchar(20)" json:"freeze_years"`                                                        // 冻结期限
+	ExecCourt            *string    `gorm:"column:exec_court;type:varchar(100)" json:"exec_court"`                                                           // 执行法院
+	ExecNo               *string    `gorm:"column:exec_no;type:varchar(200)" json:"exec_no"`                                                                 // 执行裁定书文号
+	IsHistory            *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态(0: 有效, 1: 历史)
+	UseFlag              *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	JusticeRecord        string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	CreateTime           *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime           *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJusticeFreeze) TableName() string {
+	return "company_justice_freeze"
+}
+
+// CompanyJusticeInvalid 司法协助失效信息表
+type CompanyJusticeInvalid struct {
+	ID            int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	InvalidDate   *time.Time `gorm:"column:invalid_date;type:date" json:"invalid_date"`                                                               // 失效日期
+	InvalidReason *string    `gorm:"column:invalid_reason;type:varchar(20)" json:"invalid_reason"`                                                    // 失效原因
+	IsHistory     *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态(0: 有效,1: 历史)
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	JusticeRecord string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	CreateTime    *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime    *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJusticeInvalid) TableName() string {
+	return "company_justice_invalid"
+}
+
+// CompanyJusticeUnfreeze 司法协助解除冻结信息表;
+type CompanyJusticeUnfreeze struct {
+	ID                           int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID                    string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	UnfreezeDate                 *time.Time `gorm:"column:unfreeze_date;type:date" json:"unfreeze_date"`                                                             // 解除冻结日期
+	UnfreezeDocNo                *string    `gorm:"column:unfreeze_doc_no;type:varchar(200)" json:"unfreeze_doc_no"`                                                 // 执行通知书文号
+	UnfreezeExecutee             *string    `gorm:"column:unfreeze_executee;type:varchar(255)" json:"unfreeze_executee"`                                             // 被执行人
+	UnfreezeExecuteeIdentifyType *string    `gorm:"column:unfreeze_executee_identify_type;type:varchar(50)" json:"unfreeze_executee_identify_type"`                  // 被执行人证照种类
+	UnfreezeExecuteeIdentifyNo   *string    `gorm:"column:unfreeze_executee_identify_no;type:varchar(50)" json:"unfreeze_executee_identify_no"`                      // 被执行人证件号码
+	UnfreezeExecItem             *string    `gorm:"column:unfreeze_exec_item;type:varchar(250)" json:"unfreeze_exec_item"`                                           // 执行事项
+	UnfreezeEquityAmount         *string    `gorm:"column:unfreeze_equity_amount;type:varchar(50)" json:"unfreeze_equity_amount"`                                    // 股权数额
+	UnfreezePublicDate           *time.Time `gorm:"column:unfreeze_public_date;type:date" json:"unfreeze_public_date"`                                               // 公示日期
+	UnfreezeExecCourt            *string    `gorm:"column:unfreeze_exec_court;type:varchar(100)" json:"unfreeze_exec_court"`                                         // 执行法院
+	UnfreezeExecNo               *string    `gorm:"column:unfreeze_exec_no;type:varchar(200)" json:"unfreeze_exec_no"`                                               // 执行裁定书文号
+	IsHistory                    *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态(0: 有效,1: 历史)
+	UseFlag                      *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	JusticeRecord                string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	CreateTime                   *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime                   *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJusticeUnfreeze) TableName() string {
+	return "company_justice_unfreeze"
+}
+
+// CompanyJusticeKeepFreeze 司法协助续行冻结信息表
+type CompanyJusticeKeepFreeze struct {
+	ID                   int        `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID            string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	PublicDate           *time.Time `gorm:"column:public_date;type:date" json:"public_date"`                                                                 // 冻结公示日期
+	DocNo                *string    `gorm:"column:doc_no;type:varchar(200)" json:"doc_no"`                                                                   // 执行通知书文号
+	Executee             *string    `gorm:"column:executee;type:varchar(255)" json:"executee"`                                                               // 被执行人
+	ExecuteeIdentifyType *string    `gorm:"column:executee_identify_type;type:varchar(50)" json:"executee_identify_type"`                                    // 被执行人证照种类
+	ExecuteeIdentifyNo   *string    `gorm:"column:executee_identify_no;type:varchar(50)" json:"executee_identify_no"`                                        // 被执行人证件号码
+	ExecItem             *string    `gorm:"column:exec_item;type:varchar(250)" json:"exec_item"`                                                             // 执行事项
+	EquityAmount         *string    `gorm:"column:equity_amount;type:varchar(50)" json:"equity_amount"`                                                      // 股权数额
+	FreezeStartDate      *time.Time `gorm:"column:freeze_start_date;type:date" json:"freeze_start_date"`                                                     // 冻结期限自
+	FreezeEndDate        *time.Time `gorm:"column:freeze_end_date;type:date" json:"freeze_end_date"`                                                         // 冻结期限至
+	FreezeYears          *string    `gorm:"column:freeze_years;type:varchar(20)" json:"freeze_years"`                                                        // 冻结期限
+	ExecCourt            *string    `gorm:"column:exec_court;type:varchar(100)" json:"exec_court"`                                                           // 执行法院
+	ExecNo               *string    `gorm:"column:exec_no;type:varchar(200)" json:"exec_no"`                                                                 // 执行裁定书文号
+	JusticeRecord        string     `gorm:"column:justice_record;type:char(32);not null" json:"justice_record"`                                              // 司法协助记录
+	IsHistory            *int8      `gorm:"column:is_history;type:tinyint(4);default:0" json:"is_history"`                                                   // 状态
+	UseFlag              *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	KeepFreezeRecord     string     `gorm:"column:keep_freeze_record;type:char(32);not null" json:"keep_freeze_record"`                                      // 续行冻结记录
+	CreateTime           *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime           *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyJusticeKeepFreeze) TableName() string {
+	return "company_justice_keep_freeze"
+}
+
+// CompanyClear 企业清算信息表
+type CompanyClear struct {
+	ID            int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID     string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	ClearDirector *string    `gorm:"column:clear_director;type:varchar(200)" json:"clear_director"`                                                   // 清算组负责人
+	ClearMembers  *string    `gorm:"column:clear_members;type:varchar(1000)" json:"clear_members"`                                                    // 清算成员名称(多个成员英文逗号隔开)
+	UseFlag       *int8      `gorm:"column:use_flag;type:tinyint(4);default:0" json:"use_flag"`                                                       // 使用标记
+	CreateTime    *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime    *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 最后更新时间
+}
+
+func (CompanyClear) TableName() string {
+	return "company_clear"
+}
+
+// SpecialEnterprise 事业单位信息表
+type SpecialEnterprise struct {
+	ID                 int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID          string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CreditNo           *string    `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`                                                        // 统一信用代码
+	CompanyName        string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 事业单位名称
+	LegalPerson        *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 法定代表人/负责人
+	CompanyStatus      *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 单位状态
+	Capital            *string    `gorm:"column:capital;type:varchar(50)" json:"capital"`                                                                  // 开办资金(万元)
+	CompanyType        *string    `gorm:"column:company_type;type:varchar(50)" json:"company_type"`                                                        // 类型
+	OperationStartdate *string    `gorm:"column:operation_startdate;type:varchar(50)" json:"operation_startdate"`                                          // 有效期起始日期
+	OperationEnddate   *string    `gorm:"column:operation_enddate;type:varchar(50)" json:"operation_enddate"`                                              // 有效期截止日期
+	CompanyAddress     *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 联系地址
+	BusinessScope      *string    `gorm:"column:business_scope;type:text" json:"business_scope"`                                                           // 宗旨和业务范围
+	Organizer          *string    `gorm:"column:organizer;type:varchar(255)" json:"organizer"`                                                             // 举办单位
+	Authority          *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 登记管理机关
+	CapitalSource      *string    `gorm:"column:capital_source;type:varchar(100)" json:"capital_source"`                                                   // 经费来源
+	ProvinceShort      *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialEnterprise) TableName() string {
+	return "special_enterprise"
+}
+
+// SpecialGovUnit 机关单位信息表
+type SpecialGovUnit struct {
+	ID             int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID      string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CreditNo       *string    `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`                                                        // 统一信用代码
+	CompanyName    string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 机关单位名称
+	LegalPerson    *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 法定代表人或负责人
+	CompanyStatus  *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 登记状态
+	NCompanyStatus *string    `gorm:"column:n_company_status;type:varchar(15)" json:"n_company_status"`                                                // 归类后的登记状态
+	CompanyType    *string    `gorm:"column:company_type;type:varchar(100)" json:"company_type"`                                                       // 机构类型
+	OrganCategory  *string    `gorm:"column:organ_category;type:varchar(100)" json:"organ_category"`                                                   // 机构类别
+	CompanyAddress *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 办公地址
+	BusinessScope  *string    `gorm:"column:business_scope;type:text" json:"business_scope"`                                                           // 机构职能
+	PostCode       *string    `gorm:"column:post_code;type:varchar(10)" json:"post_code"`                                                              // 邮政编码
+	ProvinceShort  *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	UseFlag        *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime     *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime     *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialGovUnit) TableName() string {
+	return "special_gov_unit"
+}
+
+// SpecialLawOffice 律师事务所信息表
+type SpecialLawOffice struct {
+	ID                int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID         string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CreditNo          *string    `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`                                                        // 统一信用代码
+	LicenseNo         *string    `gorm:"column:license_no;type:varchar(50)" json:"license_no"`                                                            // 执业证号
+	CompanyName       string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 律师事务所名称
+	EnName            *string    `gorm:"column:en_name;type:varchar(255)" json:"en_name"`                                                                 // 事务所英文名称
+	LegalPerson       *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 负责人
+	EstablishDate     *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`                                                           // 成立日期
+	CompanyStatus     *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 执业状态
+	CompanyType       *string    `gorm:"column:company_type;type:varchar(50)" json:"company_type"`                                                        // 类型
+	ComposionForm     *string    `gorm:"column:composion_form;type:varchar(100)" json:"composion_form"`                                                   // 组成形式
+	Capital           *string    `gorm:"column:capital;type:varchar(50)" json:"capital"`                                                                  // 注册资金(万元)
+	CompanyAddress    *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 联系地址
+	Organizer         *string    `gorm:"column:organizer;type:varchar(100)" json:"organizer"`                                                             // 主管司法局
+	IssueDate         *time.Time `gorm:"column:issue_date;type:date" json:"issue_date"`                                                                   // 发证日期
+	LawyerNum         *int       `gorm:"column:lawyer_num" json:"lawyer_num"`                                                                             // 律师人数
+	WebURL            *string    `gorm:"column:web_url;type:varchar(255)" json:"web_url"`                                                                 // 事务所主页
+	Phone             *string    `gorm:"column:phone;type:varchar(50)" json:"phone"`                                                                      // 电话
+	Fax               *string    `gorm:"column:fax;type:varchar(50)" json:"fax"`                                                                          // 传真
+	EMail             *string    `gorm:"column:e_mail;type:varchar(100)" json:"e_mail"`                                                                   // E-mail
+	BriefIntroduction *string    `gorm:"column:brief_introduction;type:text" json:"brief_introduction"`                                                   // 简介
+	ProvinceShort     *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	UseFlag           *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime        *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime        *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialLawOffice) TableName() string {
+	return "special_law_office"
+}
+
+// SpecialSocialOrgan 社会组织信息表
+type SpecialSocialOrgan struct {
+	ID                 int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID          string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CreditNo           *string    `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`                                                        // 统一信用代码
+	CompanyName        string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 社会组织名称
+	LegalPerson        *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 法定代表人/负责人
+	EstablishDate      *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`                                                           // 成立日期
+	CompanyStatus      *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 单位状态
+	CompanyType        *string    `gorm:"column:company_type;type:varchar(50)" json:"company_type"`                                                        // 类型
+	Capital            *string    `gorm:"column:capital;type:varchar(50)" json:"capital"`                                                                  // 注册资金(万元)
+	OperationStartDate *string    `gorm:"column:operation_startdate;type:varchar(50)" json:"operation_startdate"`                                          // 有效期起始日期
+	OperationEndDate   *string    `gorm:"column:operation_enddate;type:varchar(50)" json:"operation_enddate"`                                              // 有效期截止日期
+	CompanyAddress     *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 住址
+	BusinessScope      *string    `gorm:"column:business_scope;type:text" json:"business_scope"`                                                           // 业务范围
+	OrganTag           *string    `gorm:"column:organ_tag;type:varchar(255)" json:"organ_tag"`                                                             // 组织标识
+	Organizer          *string    `gorm:"column:organizer;type:varchar(255)" json:"organizer"`                                                             // 业务主管单位
+	Authority          *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 登记管理机关
+	ProvinceShort      *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialSocialOrgan) TableName() string {
+	return "special_social_organ"
+}
+
+// SpecialTradeUnion 工会信息表
+type SpecialTradeUnion struct {
+	ID                 int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID          string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CreditNo           *string    `gorm:"column:credit_no;type:varchar(50);index" json:"credit_no"`                                                        // 统一信用代码
+	CompanyName        string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 工会名称
+	EstablishDate      *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`                                                           // 成立日期
+	LegalPerson        *string    `gorm:"column:legal_person;type:varchar(255)" json:"legal_person"`                                                       // 法定代表人或负责人
+	CompanyStatus      *string    `gorm:"column:company_status;type:varchar(50)" json:"company_status"`                                                    // 登记状态
+	NCompanyStatus     *string    `gorm:"column:n_company_status;type:varchar(15)" json:"n_company_status"`                                                // 归类后的登记状态
+	OperationStartDate *string    `gorm:"column:operation_startdate;type:varchar(50)" json:"operation_startdate"`                                          // 有效期起始日期
+	OperationEndDate   *string    `gorm:"column:operation_enddate;type:varchar(50)" json:"operation_enddate"`                                              // 有效期截止日期
+	CompanyAddress     *string    `gorm:"column:company_address;type:varchar(300)" json:"company_address"`                                                 // 住所地址
+	Authority          *string    `gorm:"column:authority;type:varchar(255)" json:"authority"`                                                             // 发证机关
+	ProvinceShort      *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	UseFlag            *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime         *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime         *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialTradeUnion) TableName() string {
+	return "special_trade_union"
+}
+
+// SpecialHongkongCompany 香港公司信息表
+type SpecialHongkongCompany struct {
+	ID              int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID       string     `gorm:"column:company_id;type:char(32);not null;unique" json:"company_id"`                                               // 主体唯一键
+	CompanyCode     *string    `gorm:"column:company_code;type:varchar(50);index" json:"company_code"`                                                  // 公司编号
+	CompanyName     string     `gorm:"column:company_name;type:varchar(255);not null;index" json:"company_name"`                                        // 公司名称
+	TraditionalName *string    `gorm:"column:traditional_name;type:varchar(255)" json:"traditional_name"`                                               // 公司繁体名称
+	EnName          *string    `gorm:"column:en_name;type:varchar(255)" json:"en_name"`                                                                 // 公司英文名称
+	CompanyType     *string    `gorm:"column:company_type;type:varchar(255)" json:"company_type"`                                                       // 公司类别
+	EstablishDate   *time.Time `gorm:"column:establish_date;type:date" json:"establish_date"`                                                           // 成立日期
+	ProvinceShort   *string    `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                     // 省份(英文缩写)
+	CompanyStatus   *string    `gorm:"column:company_status;type:varchar(100)" json:"company_status"`                                                   // 公司现况
+	LiquidationMode *string    `gorm:"column:liquidation_mode;type:varchar(255)" json:"liquidation_mode"`                                               // 清盘模式
+	CancelDate      *time.Time `gorm:"column:cancel_date;type:date" json:"cancel_date"`                                                                 // 已告解散日期/不再是独立实体日期
+	Mortgage        *string    `gorm:"column:mortgage;type:varchar(255)" json:"mortgage"`                                                               // 押记登记册
+	ImpMatters      *string    `gorm:"column:imp_matters;type:varchar(255)" json:"imp_matters"`                                                         // 重要事项
+	BrCode          *string    `gorm:"column:br_code;type:varchar(100)" json:"br_code"`                                                                 // 商业登记代码
+	Remark          *string    `gorm:"column:remark;type:varchar(1000)" json:"remark"`                                                                  // 备注
+	UseFlag         *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime      *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime      *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialHongkongCompany) TableName() string {
+	return "special_hongkong_company"
+}
+
+// SpecialHongkongCompanyHistory 香港公司历史变更记录表
+type SpecialHongkongCompanyHistory struct {
+	ID           int64      `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                    // 自增主键
+	CompanyID    string     `gorm:"column:company_id;type:char(32);not null;index" json:"company_id"`                                                // 主体唯一键
+	UseName      *string    `gorm:"column:use_name;type:varchar(255)" json:"use_name"`                                                               // 变更中文名
+	UseEnName    *string    `gorm:"column:use_en_name;type:varchar(255)" json:"use_en_name"`                                                         // 变更英文名
+	ChangeDate   *time.Time `gorm:"column:change_date;type:date" json:"change_date"`                                                                 // 变更日期
+	ChangeField  *string    `gorm:"column:change_field;type:varchar(200)" json:"change_field"`                                                       // 变更类型
+	ChangeRecord string     `gorm:"column:change_record;type:char(32);not null" json:"change_record"`                                                // 变更记录
+	UseFlag      *int8      `gorm:"column:use_flag;type:tinyint;default:0" json:"use_flag"`                                                          // 使用标记
+	CreateTime   *time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP;index" json:"create_time"`                             // 入库时间
+	UpdateTime   *time.Time `gorm:"column:update_time;type:datetime;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+}
+
+func (SpecialHongkongCompanyHistory) TableName() string {
+	return "special_hongkong_company_history"
+}
+
+// CompanyBaseClean 基本信息清洗后字段表
+type CompanyBaseClean struct {
+	ID                  int64     `gorm:"column:id;primaryKey;autoIncrement" json:"id"`                                                                             // 自增主键
+	CompanyID           string    `gorm:"column:company_id;type:char(32);not null;uniqueIndex" json:"company_id"`                                                   // 主体唯一键
+	NCompanyStatus      *string   `gorm:"column:n_company_status;type:varchar(8);index" json:"n_company_status"`                                                    // 归类后的登记状态
+	CompanyMajorType    *int16    `gorm:"column:company_major_type;type:smallint;index" json:"company_major_type"`                                                  // 归类后的主体类型,1:个体户,2:合作社,3:企业
+	ProvinceShort       *string   `gorm:"column:province_short;type:varchar(5)" json:"province_short"`                                                              // 省份大写英文缩写
+	City                *string   `gorm:"column:city;type:varchar(16)" json:"city"`                                                                                 // 地市
+	District            *string   `gorm:"column:district;type:varchar(16)" json:"district"`                                                                         // 区县
+	StockStatus         *string   `gorm:"column:stock_status;type:varchar(8);index" json:"stock_status"`                                                            // 上市状态 (上市、退市)
+	UseFlag             *int16    `gorm:"column:use_flag;type:smallint;default:0" json:"use_flag"`                                                                  // 数据使用标记,0有效,1废弃
+	CreateTime          time.Time `gorm:"column:create_time;type:datetime;not null;default:CURRENT_TIMESTAMP" json:"create_time"`                                   // 创建时间
+	UpdateTime          time.Time `gorm:"column:update_time;type:datetime;not null;default:CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;index" json:"update_time"` // 更新时间
+	Location            *string   `gorm:"column:location;type:varchar(64)" json:"location"`                                                                         // 经纬度
+	CapitalNum          *float64  `gorm:"column:capital_num;type:decimal(40,6)" json:"capital_num"`                                                                 // 注册资本数值,量纲-万
+	Currency            *string   `gorm:"column:currency;type:varchar(15)" json:"currency"`                                                                         // 注册资本币种,默认人民币
+	OriginalCompanyName string    `gorm:"column:original_company_name;type:varchar(255);not null" json:"original_company_name"`                                     // 原始主体名称
+}
+
+func (CompanyBaseClean) TableName() string {
+	return "company_base_clean"
+}

+ 51 - 0
qyxy-mysql/go.mod

@@ -0,0 +1,51 @@
+module qyxy-mysql
+
+go 1.23.7
+
+require (
+	github.com/RoaringBitmap/roaring v1.9.4
+	github.com/spf13/viper v1.20.1
+	go.mongodb.org/mongo-driver v1.10.1
+	go.uber.org/zap v1.27.0
+	gorm.io/driver/mysql v1.6.0
+	gorm.io/gorm v1.30.0
+	jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40
+)
+
+require (
+	filippo.io/edwards25519 v1.1.0 // indirect
+	github.com/PuerkitoBio/goquery v1.8.0 // indirect
+	github.com/andybalholm/cascadia v1.3.1 // indirect
+	github.com/bits-and-blooms/bitset v1.12.0 // indirect
+	github.com/dchest/captcha v1.0.0 // indirect
+	github.com/fsnotify/fsnotify v1.8.0 // indirect
+	github.com/go-sql-driver/mysql v1.8.1 // indirect
+	github.com/go-viper/mapstructure/v2 v2.2.1 // indirect
+	github.com/golang/snappy v0.0.1 // indirect
+	github.com/jinzhu/inflection v1.0.0 // indirect
+	github.com/jinzhu/now v1.1.5 // indirect
+	github.com/klauspost/compress v1.13.6 // indirect
+	github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe // indirect
+	github.com/mschoch/smat v0.2.0 // indirect
+	github.com/pelletier/go-toml/v2 v2.2.3 // indirect
+	github.com/pkg/errors v0.9.1 // indirect
+	github.com/sagikazarmark/locafero v0.7.0 // indirect
+	github.com/sourcegraph/conc v0.3.0 // indirect
+	github.com/spf13/afero v1.12.0 // indirect
+	github.com/spf13/cast v1.7.1 // indirect
+	github.com/spf13/pflag v1.0.6 // indirect
+	github.com/subosito/gotenv v1.6.0 // indirect
+	github.com/xdg-go/pbkdf2 v1.0.0 // indirect
+	github.com/xdg-go/scram v1.1.1 // indirect
+	github.com/xdg-go/stringprep v1.0.3 // indirect
+	github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d // indirect
+	go.uber.org/multierr v1.10.0 // indirect
+	golang.org/x/crypto v0.32.0 // indirect
+	golang.org/x/net v0.33.0 // indirect
+	golang.org/x/sync v0.10.0 // indirect
+	golang.org/x/sys v0.29.0 // indirect
+	golang.org/x/text v0.21.0 // indirect
+	gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect
+	gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
+	gopkg.in/yaml.v3 v3.0.1 // indirect
+)

+ 254 - 0
qyxy-mysql/go.sum

@@ -0,0 +1,254 @@
+cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
+filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
+filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
+github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/BurntSushi/toml v1.2.0 h1:Rt8g24XnyGTyglgET/PRUNlrUeu9F5L+7FilkXfZgs0=
+github.com/BurntSushi/toml v1.2.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
+github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
+github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
+github.com/RoaringBitmap/roaring v1.9.4 h1:yhEIoH4YezLYT04s1nHehNO64EKFTop/wBhxv2QzDdQ=
+github.com/RoaringBitmap/roaring v1.9.4/go.mod h1:6AXUsoIEzDTFFQCe1RbGA6uFONMhvejWj5rqITANK90=
+github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
+github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
+github.com/aws/aws-sdk-go v1.43.21/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
+github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
+github.com/bits-and-blooms/bitset v1.12.0 h1:U/q1fAF7xXRhFCrhROzIfffYnu+dlS38vCZtmFVPHmA=
+github.com/bits-and-blooms/bitset v1.12.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
+github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
+github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
+github.com/dchest/captcha v1.0.0 h1:vw+bm/qMFvTgcjQlYVTuQBJkarm5R0YSsDKhm1HZI2o=
+github.com/dchest/captcha v1.0.0/go.mod h1:7zoElIawLp7GUMLcj54K9kbw+jEyvz2K0FDdRRYhvWo=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
+github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g=
+github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8=
+github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
+github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M=
+github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y=
+github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
+github.com/go-viper/mapstructure/v2 v2.2.1 h1:ZAaOCxANMuZx5RCeg0mBdEZk7DZasvvZIxtHqx8aGss=
+github.com/go-viper/mapstructure/v2 v2.2.1/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM=
+github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
+github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
+github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
+github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
+github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
+github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
+github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
+github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
+github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
+github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
+github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
+github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
+github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE=
+github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
+github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
+github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
+github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
+github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
+github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
+github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
+github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
+github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
+github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
+github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
+github.com/klauspost/compress v1.13.6 h1:P76CopJELS0TiO2mebmnzgWaajssP/EszplttgQxcgc=
+github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk=
+github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
+github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
+github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
+github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
+github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe h1:iruDEfMl2E6fbMZ9s0scYfZQ84/6SPL6zC8ACM2oIL0=
+github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/mschoch/smat v0.2.0 h1:8imxQsjDm8yFEAVBe7azKmKSgzSkZXDuKkSq9374khM=
+github.com/mschoch/smat v0.2.0/go.mod h1:kc9mz7DoBKqDyiRL7VZN8KvXQMWeTaVnttLRXOlotKw=
+github.com/nsqio/go-nsq v1.1.0/go.mod h1:vKq36oyeVXgsS5Q8YEO7WghqidAVXQlcFxzQbQTuDEY=
+github.com/olivere/elastic/v7 v7.0.32/go.mod h1:c7PVmLe3Fxq77PIfY/bZmxY/TAamBhCzZ8xDOE09a9k=
+github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
+github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M=
+github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc=
+github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
+github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8=
+github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
+github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo=
+github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k=
+github.com/smartystreets/assertions v1.1.1/go.mod h1:tcbTF8ujkAEcZ8TElKY+i30BzYlVhC/LOxJk7iOWnoo=
+github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM=
+github.com/smartystreets/gunit v1.4.2/go.mod h1:ZjM1ozSIMJlAz/ay4SG8PeKF00ckUp+zMHZXV9/bvak=
+github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo=
+github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0=
+github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs=
+github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4=
+github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y=
+github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/viper v1.20.1 h1:ZMi+z/lvLyPSCoNtFCpqjy0S4kPbirhpTMwl8BkW9X4=
+github.com/spf13/viper v1.20.1/go.mod h1:P9Mdzt1zoHIG8m2eZQinpiBjo6kCmZSKBClNNqjJvu4=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
+github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
+github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
+github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
+github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
+github.com/tidwall/pretty v1.0.0 h1:HsD+QiTn7sK6flMKIvNmpqz1qrpP3Ps6jOKIKMooyg4=
+github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk=
+github.com/xdg-go/pbkdf2 v1.0.0 h1:Su7DPu48wXMwC3bs7MCNG+z4FhcyEuz5dlvchbq0B0c=
+github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI=
+github.com/xdg-go/scram v1.1.1 h1:VOMT+81stJgXW3CpHyqHN3AXDYIMsx56mEFrB37Mb/E=
+github.com/xdg-go/scram v1.1.1/go.mod h1:RaEWvsqvNKKvBPvcKeFjrG2cJqOkHTiyTpzz23ni57g=
+github.com/xdg-go/stringprep v1.0.3 h1:kdwGpVNwPFtjs98xCGkHjQtGKh86rDcRZN17QEMCOIs=
+github.com/xdg-go/stringprep v1.0.3/go.mod h1:W3f5j4i+9rC0kuIEJL0ky1VpHXQU3ocBgklLGvcBnW8=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d h1:splanxYIlg+5LfHAM6xpdFEAYOk8iySO56hMFq6uLyA=
+github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA=
+github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
+go.mongodb.org/mongo-driver v1.10.1 h1:NujsPveKwHaWuKUer/ceo9DzEe7HIj1SlJ6uvXZG0S4=
+go.mongodb.org/mongo-driver v1.10.1/go.mod h1:z4XpeoU6w+9Vht+jAFyLgVrD+jGSQQe0+CBWFHNiHt8=
+go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
+go.opentelemetry.io/otel v1.5.0/go.mod h1:Jm/m+rNp/z0eqJc74H7LPwQ3G87qkU/AnnAydAjSAHk=
+go.opentelemetry.io/otel/trace v1.5.0/go.mod h1:sq55kfhjXYr1zVSyexg0w1mpa03AYXR5eyTkB9NPPdE=
+go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
+go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
+go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
+go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
+go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
+go.uber.org/multierr v1.10.0 h1:S0h4aNzvfcFsC3dRF1jLoaov7oRaKqRGC/pUEJ2yvPQ=
+go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
+go.uber.org/zap v1.22.0/go.mod h1:H4siCOZOrAolnUPJEkfaSjDqyP+BDS0DdDWzwcgt3+U=
+go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
+go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
+golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc=
+golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc=
+golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
+golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
+golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
+golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
+golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
+golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk=
+golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
+golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
+golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
+golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
+golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
+golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
+golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
+golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
+golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
+golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
+golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
+golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
+google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
+google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
+google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
+google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
+google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
+google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc=
+google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
+google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
+google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
+google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
+google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
+google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
+google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
+gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 h1:VpOs+IwYnYBaFnrNAeB8UUWtL3vEUnzSCL1nVjPhqrw=
+gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
+gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
+gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
+gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
+gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gorm.io/driver/mysql v1.6.0 h1:eNbLmNTpPpTOVZi8MMxCi2aaIm0ZpInbORNXDwyLGvg=
+gorm.io/driver/mysql v1.6.0/go.mod h1:D/oCC2GWK3M/dqoLxnOlaNKmXz8WNTfcS9y5ovaSqKo=
+gorm.io/gorm v1.30.0 h1:qbT5aPv1UH8gI99OsRlvDToLxW5zR7FzS9acZDOZcgs=
+gorm.io/gorm v1.30.0/go.mod h1:8Z33v652h4//uMA76KjeDH8mJXPm1QNCYrMeatR0DOE=
+honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40 h1:xTeRmpFgwOdu+NbWg/YntX3MnQpttm7jj33C1+JdBTk=
+jygit.jydev.jianyu360.cn/data_processing/common_utils v0.0.0-20240202055658-e2ef72e18b40/go.mod h1:1Rp0ioZBhikjXHYYXmnzL6RNfvTDM/2XvRB+vuPLurI=

+ 100 - 0
qyxy-mysql/init.go

@@ -0,0 +1,100 @@
+package main
+
+import (
+	"fmt"
+	"github.com/spf13/viper"
+	"go.uber.org/zap"
+	"gorm.io/driver/mysql"
+	"gorm.io/gorm"
+	"gorm.io/gorm/logger"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
+	"os"
+	"time"
+)
+
+var GF GlobalConf
+
+func InitConfig() (err error) {
+	viper.SetConfigFile("config.toml") // 指定配置文件路径
+	viper.SetConfigName("config")      // 配置文件名称(无扩展名)
+	viper.SetConfigType("toml")        // 如果配置文件的名称中没有扩展名,则需要配置此项
+
+	viper.AddConfigPath("./")
+	viper.AddConfigPath("./conf/")  // 还可以在工作目录中查找配置
+	viper.AddConfigPath("../conf/") // 还可以在工作目录中查找配置
+	err = viper.ReadInConfig()      // 查找并读取配置文件
+	if err != nil {                 // 处理读取配置文件的错误
+		return
+	}
+
+	err = viper.Unmarshal(&GF)
+
+	return err
+
+}
+
+// Init 初始化配置
+func Init() {
+	InitConfig()
+	InitLog()
+	InitMgo()
+	InitMysql()
+}
+
+func InitMgo() {
+	//181  凭安企业
+	MgoQY = &mongodb.MongodbSim{
+		//MongodbAddr: "172.17.189.140:27080",
+		MongodbAddr: GF.Mongoqy.Host,
+		Size:        10,
+		DbName:      GF.Mongoqy.DB,
+		UserName:    "",
+		Password:    "",
+		Direct:      GF.Mongoqy.Direct,
+	}
+	MgoQY.InitPool()
+}
+
+func InitMysql() {
+	now := time.Now()
+	username := GF.Mysql.Username
+	password := GF.Mysql.Password
+	host := GF.Mysql.Address // 本地
+	//host := "172.17.162.27:14000" //线上
+	database := GF.Mysql.Dbname
+	dsn := fmt.Sprintf("%s:%s@tcp(%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", username, password, host, database)
+	// 连接到数据库
+	var err error
+	MysqlDB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
+		Logger: logger.Default.LogMode(logger.Error), //不打印日志
+	})
+	if err != nil {
+		log.Info("InitMysql", zap.String("初始化MySQL "+database, "数据库失败"), zap.Error(err))
+		return
+	} else {
+		log.Info("InitMysql", zap.String("初始化MySQL "+database, "数据库成功"))
+	}
+
+	log.Info("InitMysql", zap.Any("duration", time.Since(now).Seconds()))
+
+}
+
+func InitLog() {
+	now := time.Now()
+	err := log.InitLog(
+		log.Path(GF.Log.LogPath),
+		log.Level(GF.Log.LogLevel),
+		log.Compress(GF.Log.Compress),
+		log.MaxSize(GF.Log.MaxSize),
+		log.MaxBackups(GF.Log.MaxBackups),
+		log.MaxAge(GF.Log.MaxAge),
+		log.Format(GF.Log.Format),
+	)
+	if err != nil {
+		fmt.Printf("InitLog failed: %v\n", err)
+		os.Exit(1)
+	}
+
+	log.Info("InitLog", zap.Any("duration", time.Since(now).Seconds()))
+}

+ 23 - 0
qyxy-mysql/main.go

@@ -0,0 +1,23 @@
+package main
+
+import (
+	"go.uber.org/zap"
+	"gorm.io/gorm"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
+	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
+)
+
+var (
+	MgoQY   *mongodb.MongodbSim //87 环境,采集 存储的MongoDB
+	MysqlDB *gorm.DB
+)
+
+func main() {
+	Init()
+	log.Info("main", zap.String("SyncCompanyBaseToMySQL", "开始处理企业基本信息"))
+	err := SyncCompanyBaseToMySQL()
+	if err != nil {
+		log.Info("main", zap.Error(err))
+	}
+	log.Info("main", zap.String("SyncCompanyBaseToMySQL", "结束处理企业基本信息"))
+}

BIN
qyxy-mysql/qyxy-mysql-company-base


+ 9 - 0
qyxy-mysql/tools.go

@@ -0,0 +1,9 @@
+package main
+
+import "hash/fnv"
+
+func hashCompanyID(companyID string) uint32 {
+	h := fnv.New32a()
+	h.Write([]byte(companyID))
+	return h.Sum32()
+}

+ 126 - 117
updateBidding/main.go

@@ -12,7 +12,6 @@ import (
 	"jygit.jydev.jianyu360.cn/data_processing/common_utils/elastic"
 	"jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
 	"reflect"
-	"strings"
 	"time"
 )
 
@@ -131,12 +130,12 @@ func main() {
 	Init()
 	//InitEsBiddingField()
 	//go updateMethod()   //更新mongodb
-	//go updateEsMethod() //更新es
+	go updateEsMethod() //更新es
 	//go updateEsHrefMethod() //更新es href 字段
 	//go updateProjectEsMethod()
 	//taskRunProject()
-	taskRunBidding()
-	//dealBidding() //正式环境bidding数据处理
+	//taskRunBidding()
+	dealBidding() //正式环境bidding数据处理
 	//dealBiddingAi() //正式环境bidding数据处理
 	//dealBiddingTest() // 测试环境数据处理
 
@@ -197,7 +196,7 @@ func taskRunBidding() {
 	//}
 
 	//selected := map[string]interface{}{"contenthtml": 0, "detail": 0}
-	it := sess.DB("qfw").C("zktest_unit_0430_data").Find(nil).Select(nil).Iter()
+	it := sess.DB("qfw").C("bidding").Find(nil).Select(nil).Iter()
 
 	fmt.Println("taskRun 开始")
 	count := 0
@@ -504,13 +503,13 @@ func dealBidding() {
 	sess := MgoB.GetMgoConn()
 	defer MgoB.DestoryMongoConn(sess)
 
-	where := map[string]interface{}{
-		"comeintime": map[string]interface{}{
-			"$lt": 1722009600,
-			//"$lt":  1718812802,
-			"$gte": 1718899200,
-		},
-	}
+	//where := map[string]interface{}{
+	//	"comeintime": map[string]interface{}{
+	//		"$lt": 1722009600,
+	//		//"$lt":  1718812802,
+	//		"$gte": 1718899200,
+	//	},
+	//}
 
 	//where := map[string]interface{}{
 	//	"_id": map[string]interface{}{
@@ -519,7 +518,7 @@ func dealBidding() {
 	//	},
 	//}
 
-	it := sess.DB("qfw").C("bidding").Find(where).Select(nil).Iter()
+	it := sess.DB("qfw").C("bidding").Find(nil).Select(nil).Iter()
 
 	fmt.Println("taskRun 开始")
 	count := 0
@@ -528,8 +527,18 @@ func dealBidding() {
 			log.Info("current", log.Int("count", count), log.Any("_id", tmp["_id"]))
 		}
 
-		update := map[string]interface{}{}
+		//update := map[string]interface{}{}
 		esUpdate := map[string]interface{}{}
+
+		if util.IntAll(tmp["extracttype"]) == -1 {
+			continue
+		}
+		if util.ObjToString(tmp["purchasing"]) == "" {
+			continue
+		}
+
+		esUpdate["purchasing"] = tmp["purchasing"]
+
 		// 2.更新中标单位,中标金额
 		//if tag_topinformation, ok := tmp["tag_topinformation"]; ok && tag_topinformation != nil {
 		//	update["tag_topinformation"] = tag_topinformation
@@ -551,115 +560,115 @@ func dealBidding() {
 		      "其它"
 		  ],
 		*/
-		// 行业分类默认值
-		resultSubs := make([]string, 0)
-		resultTobs := make([]string, 0)
-		if topscopeclass, ok := tmp["topscopeclass"]; ok && topscopeclass != nil {
-			if topps, ok2 := topscopeclass.([]interface{}); ok2 {
-				for _, v := range topps {
-					top := util.ObjToString(v)
-					if top != "" {
-						resultTobs = append(resultTobs, top)
-					}
-				}
-			}
-			//1.一级分类是空数组或者 是 其它
-			if len(resultTobs) == 0 || resultTobs[0] == "其它" {
-				update["topscopeclass"] = []string{"其它"}
-				update["subscopeclass"] = []string{"其它"}
-				update["s_topscopeclass"] = "其它"
-				update["s_subscopeclass"] = "其它"
-				esUpdate["s_topscopeclass"] = "其它"
-				esUpdate["s_subscopeclass"] = "其它"
-				esUpdate["topscopeclass"] = []string{"其它"}
-			} else {
-				if subs, ok3 := tmp["subscopeclass"]; ok3 {
-					if subbs, ok4 := subs.([]interface{}); ok4 {
-						for _, v := range subbs {
-							sub := util.ObjToString(v)
-							if sub != "" && sub != "其它" {
-								resultSubs = append(resultSubs, sub)
-							}
-						}
-					}
-				}
-				newTops, newSubs, cleanedTops := ProcessTopscopeclass(resultTobs, resultSubs)
-				update["topscopeclass"] = newTops
-				update["subscopeclass"] = newSubs
-				update["s_topscopeclass"] = strings.Join(cleanedTops, ",")
-				update["s_subscopeclass"] = strings.Join(newSubs, ",")
-				esUpdate["s_topscopeclass"] = strings.Join(cleanedTops, ",")
-				esUpdate["s_subscopeclass"] = strings.Join(newSubs, ",")
-				esUpdate["topscopeclass"] = newTops
-			}
-
-		} else {
-			update["topscopeclass"] = []string{"其它"}
-			update["subscopeclass"] = []string{"其它"}
-			update["s_topscopeclass"] = "其它"
-			update["s_subscopeclass"] = "其它"
-			esUpdate["s_topscopeclass"] = "其它"
-			esUpdate["s_subscopeclass"] = "其它"
-			esUpdate["topscopeclass"] = []string{"其它"}
-		}
-
-		//procurementlist 处理预计采购时间
-		//if procurementlist, ok := tmp["procurementlist"]; ok && procurementlist != nil {
-		//	field := "procurementlist"
-		//	if tmp[field] != nil {
-		//		if field == "procurementlist" {
-		//			if tmp["procurementlist"] != nil {
-		//				var arr []interface{}
-		//				plist := tmp["procurementlist"].([]interface{})
-		//				for _, p := range plist {
-		//					p1 := p.(map[string]interface{})
-		//					p2 := make(map[string]interface{})
-		//					for k, v := range BiddingLevelField[field] {
-		//						if k == "projectname" && util.ObjToString(p1[k]) == "" {
-		//							p2[k] = util.ObjToString(tmp["projectname"])
-		//						} else if k == "buyer" && util.ObjToString(p1[k]) == "" && util.ObjToString(tmp["buyer"]) != "" {
-		//							p2[k] = util.ObjToString(tmp["buyer"])
-		//						} else if k == "expurasingtime" && util.ObjToString(p1[k]) != "" {
-		//							res := getMethod(util.ObjToString(p1[k]))
-		//							if res != 0 {
-		//								p2[k] = res
-		//							}
-		//						} else if p1[k] != nil && reflect.TypeOf(p1[k]).String() == v {
-		//							p2[k] = p1[k]
-		//						}
-		//
+		//// 行业分类默认值
+		//resultSubs := make([]string, 0)
+		//resultTobs := make([]string, 0)
+		//if topscopeclass, ok := tmp["topscopeclass"]; ok && topscopeclass != nil {
+		//	if topps, ok2 := topscopeclass.([]interface{}); ok2 {
+		//		for _, v := range topps {
+		//			top := util.ObjToString(v)
+		//			if top != "" {
+		//				resultTobs = append(resultTobs, top)
+		//			}
+		//		}
+		//	}
+		//	//1.一级分类是空数组或者 是 其它
+		//	if len(resultTobs) == 0 || resultTobs[0] == "其它" {
+		//		update["topscopeclass"] = []string{"其它"}
+		//		update["subscopeclass"] = []string{"其它"}
+		//		update["s_topscopeclass"] = "其它"
+		//		update["s_subscopeclass"] = "其它"
+		//		esUpdate["s_topscopeclass"] = "其它"
+		//		esUpdate["s_subscopeclass"] = "其它"
+		//		esUpdate["topscopeclass"] = []string{"其它"}
+		//	} else {
+		//		if subs, ok3 := tmp["subscopeclass"]; ok3 {
+		//			if subbs, ok4 := subs.([]interface{}); ok4 {
+		//				for _, v := range subbs {
+		//					sub := util.ObjToString(v)
+		//					if sub != "" && sub != "其它" {
+		//						resultSubs = append(resultSubs, sub)
 		//					}
-		//					arr = append(arr, p2)
-		//				}
-		//				if len(arr) > 0 {
-		//					esUpdate[field] = arr
 		//				}
 		//			}
 		//		}
+		//		newTops, newSubs, cleanedTops := ProcessTopscopeclass(resultTobs, resultSubs)
+		//		update["topscopeclass"] = newTops
+		//		update["subscopeclass"] = newSubs
+		//		update["s_topscopeclass"] = strings.Join(cleanedTops, ",")
+		//		update["s_subscopeclass"] = strings.Join(newSubs, ",")
+		//		esUpdate["s_topscopeclass"] = strings.Join(cleanedTops, ",")
+		//		esUpdate["s_subscopeclass"] = strings.Join(newSubs, ",")
+		//		esUpdate["topscopeclass"] = newTops
 		//	}
+		//
+		//} else {
+		//	update["topscopeclass"] = []string{"其它"}
+		//	update["subscopeclass"] = []string{"其它"}
+		//	update["s_topscopeclass"] = "其它"
+		//	update["s_subscopeclass"] = "其它"
+		//	esUpdate["s_topscopeclass"] = "其它"
+		//	esUpdate["s_subscopeclass"] = "其它"
+		//	esUpdate["topscopeclass"] = []string{"其它"}
+		//}
+		//
+		////procurementlist 处理预计采购时间
+		////if procurementlist, ok := tmp["procurementlist"]; ok && procurementlist != nil {
+		////	field := "procurementlist"
+		////	if tmp[field] != nil {
+		////		if field == "procurementlist" {
+		////			if tmp["procurementlist"] != nil {
+		////				var arr []interface{}
+		////				plist := tmp["procurementlist"].([]interface{})
+		////				for _, p := range plist {
+		////					p1 := p.(map[string]interface{})
+		////					p2 := make(map[string]interface{})
+		////					for k, v := range BiddingLevelField[field] {
+		////						if k == "projectname" && util.ObjToString(p1[k]) == "" {
+		////							p2[k] = util.ObjToString(tmp["projectname"])
+		////						} else if k == "buyer" && util.ObjToString(p1[k]) == "" && util.ObjToString(tmp["buyer"]) != "" {
+		////							p2[k] = util.ObjToString(tmp["buyer"])
+		////						} else if k == "expurasingtime" && util.ObjToString(p1[k]) != "" {
+		////							res := getMethod(util.ObjToString(p1[k]))
+		////							if res != 0 {
+		////								p2[k] = res
+		////							}
+		////						} else if p1[k] != nil && reflect.TypeOf(p1[k]).String() == v {
+		////							p2[k] = p1[k]
+		////						}
+		////
+		////					}
+		////					arr = append(arr, p2)
+		////				}
+		////				if len(arr) > 0 {
+		////					esUpdate[field] = arr
+		////				}
+		////			}
+		////		}
+		////	}
+		////}
+		//
+		//if len(update) > 0 {
+		//	//fmt.Println("aaaaa", biddingID)
+		//	//更新mongo
+		//	//MgoT.UpdateById("bidding", biddingID, map[string]interface{}{"$set": update})
+		//	//更新MongoDB
+		//	updatePool <- []map[string]interface{}{
+		//		{"_id": tmp["_id"]},
+		//		{"$set": update},
+		//	}
+		//
+		//	//2.es 项目 更新字段
+		//	//err := Es.UpdateDocument("bidding", biddingID, update)
+		//	//if err != nil && err.Error() != "Document not updated: noop" {
+		//	//	log.Info("bidding es update err", err, biddingID)
+		//	//}
+		//	//// 更新es
+		//	//updateEsPool <- []map[string]interface{}{
+		//	//	{"_id": biddingID},
+		//	//	update,
+		//	//}
 		//}
-
-		if len(update) > 0 {
-			//fmt.Println("aaaaa", biddingID)
-			//更新mongo
-			//MgoT.UpdateById("bidding", biddingID, map[string]interface{}{"$set": update})
-			//更新MongoDB
-			updatePool <- []map[string]interface{}{
-				{"_id": tmp["_id"]},
-				{"$set": update},
-			}
-
-			//2.es 项目 更新字段
-			//err := Es.UpdateDocument("bidding", biddingID, update)
-			//if err != nil && err.Error() != "Document not updated: noop" {
-			//	log.Info("bidding es update err", err, biddingID)
-			//}
-			//// 更新es
-			//updateEsPool <- []map[string]interface{}{
-			//	{"_id": biddingID},
-			//	update,
-			//}
-		}
 
 		// 更新Es 数据
 		if len(esUpdate) > 0 {

BIN
updateBidding/updateBidding