xuzhiheng 2 rokov pred
rodič
commit
784135c497

+ 5 - 0
customerdata/src/main.go

@@ -46,6 +46,7 @@ type sysconfig struct {
 	FilterTemporaryCol     []string               `json:"filter_Temporary_col"`
 	FilterTemporaryColName string                 `json:"filter_Temporary_col_name"`
 	XhsMapArr              []string               `json:"xhsMapArr"`
+	FilterOwnerArr         []string               `json:"filterOwnerArr"`
 }
 
 var (
@@ -87,6 +88,7 @@ var (
 	FilterFileAndDetailMap = map[string]bool{}
 	FilterTemporaryColMap  = map[string]bool{}
 	XhsMap                 = map[string]bool{}
+	FilterOwnerMap         = map[string]bool{}
 	IsNewSql               int
 )
 
@@ -213,6 +215,9 @@ func init() {
 	for _, v := range Sysconfig.XhsMapArr {
 		XhsMap[v] = true
 	}
+	for _, v := range Sysconfig.FilterOwnerArr {
+		FilterOwnerMap[v] = true
+	}
 }
 func main() {
 	go SaveMgo()

+ 110 - 0
customerdata/src/util.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	"encoding/json"
 	"fmt"
 	"log"
 	qu "qfw/util"
@@ -34,6 +35,24 @@ var MatchType = map[string]interface{}{
 }
 var SE = qu.SimpleEncrypt{Key: "topJYBX2019"}
 
+type (
+	OwnerContact struct {
+		ContactData []ContactDataStruct `json:"contactData"`
+	}
+	ContactDataStruct struct {
+		CompanyName string          `json:"companyName"`
+		Contact     []ContactStruct `json:"contact"`
+	}
+	ContactStruct struct {
+		Name  string `json:"name"`
+		Phone string `json:"phone"`
+	}
+	Contact struct {
+		ContactPerson string `json:"contact_person"`
+		Phone         string `json:"phone"`
+	}
+)
+
 // 加载排除词、附加词、关键词
 func GetNotkeyAndKeyAddWord(list primitive.A, fieldMap map[string]interface{}, hasNotKey bool) (kws []*KeyWord, aws []*AddWord, nkws []*NotKeyWord, tagnames, buyerclasss []string) {
 	defer qu.Catch()
@@ -773,6 +792,42 @@ func AssembelSave(tmp map[string]interface{}, IsSearchHosp, IsSearchEnps bool, a
 			tmp["project_completedate"] = qu.Int64All(info["project_completedate"])
 		}
 	}
+	if FilterOwnerMap[appid] {
+		SearchOwnerInfo(tmp)
+		owner := qu.ObjToString(tmp["owner"])
+		if owner != "" {
+			contactData := MgoEnps.FindOne("buyer_enterprise", bson.M{"buyer_name": owner})
+			if contactData != nil && len(contactData) > 0 {
+				if contactData["contact"] != nil {
+					contact := []Contact{}
+					contactB, _ := json.Marshal(contactData["contact"])
+					json.Unmarshal(contactB, &contact)
+					if len(contact) > 0 {
+						contactStructs := []ContactStruct{}
+						for _, v := range contact {
+							contactStruct := ContactStruct{
+								Name:  v.ContactPerson,
+								Phone: v.Phone,
+							}
+							contactStructs = append(contactStructs, contactStruct)
+						}
+						if len(contactStructs) > 0 {
+							contactDataStruct := ContactDataStruct{
+								CompanyName: owner,
+								Contact:     contactStructs,
+							}
+							contactDataStructs := []ContactDataStruct{contactDataStruct}
+							ownerContact := OwnerContact{
+								ContactData: contactDataStructs,
+							}
+							ownerByte, _ := json.Marshal(&ownerContact)
+							tmp["owner_contact"] = string(ownerByte)
+						}
+					}
+				}
+			}
+		}
+	}
 	//祥和不锈钢
 	if FilterFileAndDetailMap[appid] {
 		detail := qu.ObjToString(tmp["detail"])
@@ -913,6 +968,61 @@ func SearchEnterpriseInfo(tmp map[string]interface{}) {
 	}
 }
 
+func SearchOwnerInfo(tmp map[string]interface{}) {
+	owner := qu.ObjToString(tmp["owner"])
+	if owner != "" {
+		data := MgoEnps.FindOne(EnpsColl, bson.M{"company_name": owner})
+		if data != nil && len(data) > 0 {
+			//注册省份
+			if company_area := qu.ObjToString(data["company_area"]); company_area != "" {
+				tmp["owner_company_area"] = company_area
+			}
+			//注册城市
+			if company_city := qu.ObjToString(data["company_city"]); company_city != "" {
+				tmp["owner_company_city"] = company_city
+			}
+			//注册区县
+			if company_district := qu.ObjToString(data["company_district"]); company_district != "" {
+				tmp["owner_company_district"] = company_district
+			}
+			//中标单位联系人
+			if legal_person := qu.ObjToString(data["legal_person"]); legal_person != "" {
+				tmp["owner_legal_person"] = legal_person
+			}
+			//中标单位的注册地址
+			if company_address := qu.ObjToString(data["company_address"]); company_address != "" {
+				tmp["owner_company_address"] = company_address
+			}
+			//注册资金"capital" : "324 万","capital" : 124.8,
+			if data["capital"] != nil {
+				tmp["owner_capital"] = qu.Float64All(data["capital"])
+			}
+			//注册时间"establish_date" : ISODate("1949-10-01T00:00:00.000+0000")
+			if establish_date := qu.ObjToString(data["establish_date"]); establish_date != "" {
+				tmp["owner_establish_date"] = establish_date
+			}
+			//经营范围
+			if business_scope := qu.ObjToString(data["business_scope"]); business_scope != "" {
+				tmp["owner_business_scope"] = business_scope
+			}
+			//中标单位的社会征信代码
+			if credit_no := qu.ObjToString(data["credit_no"]); credit_no != "" {
+				tmp["owner_winner_credit_no"] = credit_no
+			}
+			//股东名单
+			if stock_name := qu.ObjToString(data["stock_name"]); stock_name != "" {
+				tmp["owner_stock_name"] = stock_name
+			}
+			if email := qu.ObjToString(data["company_email"]); email != "" {
+				tmp["owner_company_email"] = email
+			}
+			if phone := qu.ObjToString(data["company_phone"]); phone != "" {
+				tmp["owner_company_phone"] = phone
+			}
+		}
+	}
+}
+
 func SearchEnterpriseInfos(tmp map[string]interface{}, s_winner string) {
 	winner := strings.Split(s_winner, ",")[0] //取第一个中标单位
 	data := MgoEnps.FindOne(EnpsColl, bson.M{"company_name": winner})

+ 13 - 12
src/history/datamodel.go

@@ -27,9 +27,10 @@ var (
 	HenanMobileWinbidMap   = map[string]bool{}
 	HenanMobileBidtypeMap  = map[string]bool{}
 	FilterFileAndDetailMap = map[string]bool{}
+	FilterOwnerMap         = map[string]bool{}
 )
 
-//客户模型
+// 客户模型
 type Customer struct {
 	ID           string                            //客户ID
 	Name         string                            //客户名称
@@ -47,7 +48,7 @@ type Customer struct {
 	Exact        int                               //精准筛选服务开关
 }
 
-//部门模型
+// 部门模型
 type Department struct {
 	ID             string                              //部门ID
 	Name           string                              //部门名称
@@ -58,7 +59,7 @@ type Department struct {
 	SaveDataMap    map[string]map[string]interface{}   //最终入库数据(部门内部去重)
 }
 
-//查询规则模型
+// 查询规则模型
 type SearchRule struct {
 	//一条查询规则
 	ID           string
@@ -75,7 +76,7 @@ type SearchRule struct {
 	ExactRule    string //精准筛选规则
 }
 
-//打标签规则模型
+// 打标签规则模型
 type TagRule struct {
 	//一条打标签规则
 	ID            string
@@ -92,13 +93,13 @@ type TagRule struct {
 	BuyerClass []string      //采购单位行业限制,每组关键词都有一个采购单位行业限制
 }
 
-//全局清理词类型
+// 全局清理词类型
 type ClearWord struct {
 	KeyReg    []*regexp.Regexp
 	MatchType []string //清理词匹配方式
 }
 
-//关键词类型
+// 关键词类型
 type KeyWord struct {
 	KeyReg    *Reg     //匹配规则(0:逗号分隔 1:&&分隔)      例如:[[智能,5G],[智慧交通,智慧城市]]
 	MatchType []string //关键词的匹配方式
@@ -108,7 +109,7 @@ type KeyWord struct {
 	//KeyWordMap []map[int]map[string]string //记录KeyReg中字母规则(0:逗号分隔 1:&&分隔)
 }
 
-//附加词类型
+// 附加词类型
 type AddWord struct {
 	KeyReg    *Reg     //匹配规则(0:逗号分隔 1:&&分隔)
 	MatchType []string //附加词的匹配方式
@@ -118,34 +119,34 @@ type AddWord struct {
 	//AddWordMap []map[int]map[string]string //记录KeyReg中字母规则(0:逗号分隔 1:&&分隔)
 }
 
-//排除词
+// 排除词
 type NotKeyWord struct {
 	KeyReg    *Reg     //例如:排除1&&排除2,排除3,KeyReg[0]存 排除3;KeyReg[1]存 排除1 排除2
 	MatchType []string //排除词的匹配方式
 	//NotWordMap []map[int]bool //记录KeyReg中字母规则
 }
 
-//匹配正则
+// 匹配正则
 type Reg struct {
 	CReg []*CommonReg //逗号分隔
 	AReg []*AndRegPre //&&分隔
 	//KeyStr []string     //原始值(用于含字母时取原值)
 }
 
-//逗号分隔正则
+// 逗号分隔正则
 type CommonReg struct {
 	CrVal    *regexp.Regexp //正则类型
 	CsVal    string         //原始值
 	IsLetter bool           //是否含字母
 }
 
-//&&分隔正则
+// &&分隔正则
 type AndRegPre struct {
 	AndRegKid []*AndReg
 	CsVal     string //原始值
 }
 
-//&&分隔正则
+// &&分隔正则
 type AndReg struct {
 	CrVal    *regexp.Regexp
 	IsLetter bool //是否含字母

+ 1 - 1
src/history/historytask.go

@@ -772,7 +772,7 @@ func (this *HistoryData) DelImportData() {
 }
 
 func SaveImportData(fileUrl, dataTables, appid, historyId string) {
-	filePath := "./web/res" + fileUrl
+	filePath := "/nas/jyqyfw/datatag" + fileUrl
 	xlFile, err := xlsx.OpenFile(filePath)
 	if err != nil {
 		return

+ 163 - 13
src/history/util_history.go

@@ -1,6 +1,7 @@
 package history
 
 import (
+	"encoding/json"
 	"fmt"
 
 	"log"
@@ -130,6 +131,24 @@ var FieldMap = map[string]interface{}{
 	"id":               "唯一标识",
 }
 
+type (
+	OwnerContact struct {
+		ContactData []ContactDataStruct `json:"contactData"`
+	}
+	ContactDataStruct struct {
+		CompanyName string          `json:"companyName"`
+		Contact     []ContactStruct `json:"contact"`
+	}
+	ContactStruct struct {
+		Name  string `json:"name"`
+		Phone string `json:"phone"`
+	}
+	Contact struct {
+		ContactPerson string `json:"contact_person"`
+		Phone         string `json:"phone"`
+	}
+)
+
 // 加载排除词、附加词、关键词
 func GetNotkeyAndKeyAddWord(list []map[string]interface{}, fieldMap map[string]interface{}, hasNotKey bool) (kws []*KeyWord, aws []*AddWord, nkws []*NotKeyWord, tagnames, buyerclasss []string) {
 	defer qu.Catch()
@@ -674,19 +693,6 @@ func AssembelSave(tmp map[string]interface{}, IsSearchHosp, IsSearchEnps bool, h
 	} else {
 		tmp["projectId"] = ""
 	}
-
-	//河南移动/盈峰科技
-	/*if NeedProjectidAppidMap[appid] {
-		projectId := GetProjectId(id)
-		if projectId != "" {
-			//projectIds := strings.Split(projectId, ",")
-			//tmp["projectId"] = SE.EncodeString(projectId)
-			tmp["projectId"] = projectId
-		} else {
-			tmp["projectId"] = ""
-		}
-	}*/
-
 	// 标识第一条数据是否拆过包
 	var isDis bool = false
 	if DisPackageAppidMap[appid] {
@@ -948,6 +954,95 @@ func AssembelSave(tmp map[string]interface{}, IsSearchHosp, IsSearchEnps bool, h
 			return
 		}
 	}
+	if FilterOwnerMap[appid] {
+		SearchOwnerInfo(tmp)
+		owner := qu.ObjToString(tmp["owner"])
+		if owner != "" {
+			contactData := MgoEnps.FindOne("buyer_enterprise", bson.M{"buyer_name": owner})
+			if contactData != nil && len(contactData) > 0 {
+				if contactData["contact"] != nil {
+					contact := []Contact{}
+					contactB, _ := json.Marshal(contactData["contact"])
+					json.Unmarshal(contactB, &contact)
+					if len(contact) > 0 {
+						contactStructs := []ContactStruct{}
+						for _, v := range contact {
+							contactStruct := ContactStruct{
+								Name:  v.ContactPerson,
+								Phone: v.Phone,
+							}
+							contactStructs = append(contactStructs, contactStruct)
+						}
+						if len(contactStructs) > 0 {
+							contactDataStruct := ContactDataStruct{
+								CompanyName: owner,
+								Contact:     contactStructs,
+							}
+							contactDataStructs := []ContactDataStruct{contactDataStruct}
+							ownerContact := OwnerContact{
+								ContactData: contactDataStructs,
+							}
+							ownerByte, _ := json.Marshal(&ownerContact)
+							tmp["owner_contact"] = string(ownerByte)
+						}
+					}
+				}
+				// if partners, ok := contactData["contact"].([]interface{}); ok && len(partners) > 0 {
+				// 	log.Println("owner联系方式不为空", partners)
+				// 	contactStructs := []ContactStruct{}
+				// 	for _, partner := range partners {
+				// 		if p, oks := partner.(map[string]interface{}); oks {
+				// 			if contact_name := qu.ObjToString(p["contact_person"]); contact_name != "" {
+				// 				contactStruct := ContactStruct{
+				// 					Name:  contact_name,
+				// 					Phone: qu.ObjToString(p["phone"]),
+				// 				}
+				// 				contactStructs = append(contactStructs, contactStruct)
+				// 			}
+				// 		}
+				// 	}
+				// 	if len(contactStructs) > 0 {
+				// 		contactDataStruct := ContactDataStruct{
+				// 			CompanyName: owner,
+				// 			Contact:     contactStructs,
+				// 		}
+				// 		contactDataStructs := []ContactDataStruct{contactDataStruct}
+				// 		ownerContact := OwnerContact{
+				// 			ContactData: contactDataStructs,
+				// 		}
+				// 		ownerByte, _ := json.Marshal(&ownerContact)
+				// 		tmp["owner_contact"] = string(ownerByte)
+				// 		log.Println("owner联系方式owner_contact", string(ownerByte))
+				// 	}
+				// } else if partners, ok := contactData["contact"].([]map[string]interface{}); ok && len(partners) > 0 {
+				// 	log.Println("owner联系方式不为空222", partners)
+				// 	contactStructs := []ContactStruct{}
+				// 	for _, p := range partners {
+				// 		if contact_name := qu.ObjToString(p["contact_person"]); contact_name != "" {
+				// 			contactStruct := ContactStruct{
+				// 				Name:  contact_name,
+				// 				Phone: qu.ObjToString(p["phone"]),
+				// 			}
+				// 			contactStructs = append(contactStructs, contactStruct)
+				// 		}
+				// 	}
+				// 	if len(contactStructs) > 0 {
+				// 		contactDataStruct := ContactDataStruct{
+				// 			CompanyName: owner,
+				// 			Contact:     contactStructs,
+				// 		}
+				// 		contactDataStructs := []ContactDataStruct{contactDataStruct}
+				// 		ownerContact := OwnerContact{
+				// 			ContactData: contactDataStructs,
+				// 		}
+				// 		ownerByte, _ := json.Marshal(&ownerContact)
+				// 		tmp["owner_contact"] = string(ownerByte)
+				// 		log.Println("owner联系方式owner_contact", string(ownerByte))
+				// 	}
+				// }
+			}
+		}
+	}
 	//导出中标单位联系方式
 	if i_contact == 1 {
 		var company = map[string]string{}
@@ -1093,6 +1188,61 @@ func SearchEnterpriseInfo(tmp map[string]interface{}) {
 	}
 }
 
+func SearchOwnerInfo(tmp map[string]interface{}) {
+	owner := qu.ObjToString(tmp["owner"])
+	if owner != "" {
+		data := MgoEnps.FindOne(EnpsColl, bson.M{"company_name": owner})
+		if data != nil && len(data) > 0 {
+			//注册省份
+			if company_area := qu.ObjToString(data["company_area"]); company_area != "" {
+				tmp["owner_company_area"] = company_area
+			}
+			//注册城市
+			if company_city := qu.ObjToString(data["company_city"]); company_city != "" {
+				tmp["owner_company_city"] = company_city
+			}
+			//注册区县
+			if company_district := qu.ObjToString(data["company_district"]); company_district != "" {
+				tmp["owner_company_district"] = company_district
+			}
+			//中标单位联系人
+			if legal_person := qu.ObjToString(data["legal_person"]); legal_person != "" {
+				tmp["owner_legal_person"] = legal_person
+			}
+			//中标单位的注册地址
+			if company_address := qu.ObjToString(data["company_address"]); company_address != "" {
+				tmp["owner_company_address"] = company_address
+			}
+			//注册资金"capital" : "324 万","capital" : 124.8,
+			if data["capital"] != nil {
+				tmp["owner_capital"] = qu.Float64All(data["capital"])
+			}
+			//注册时间"establish_date" : ISODate("1949-10-01T00:00:00.000+0000")
+			if establish_date := qu.ObjToString(data["establish_date"]); establish_date != "" {
+				tmp["owner_establish_date"] = establish_date
+			}
+			//经营范围
+			if business_scope := qu.ObjToString(data["business_scope"]); business_scope != "" {
+				tmp["owner_business_scope"] = business_scope
+			}
+			//中标单位的社会征信代码
+			if credit_no := qu.ObjToString(data["credit_no"]); credit_no != "" {
+				tmp["owner_winner_credit_no"] = credit_no
+			}
+			//股东名单
+			if stock_name := qu.ObjToString(data["stock_name"]); stock_name != "" {
+				tmp["owner_stock_name"] = stock_name
+			}
+			if email := qu.ObjToString(data["company_email"]); email != "" {
+				tmp["owner_company_email"] = email
+			}
+			if phone := qu.ObjToString(data["company_phone"]); phone != "" {
+				tmp["owner_company_phone"] = phone
+			}
+		}
+	}
+}
+
 func SearchEnterpriseInfos(tmp map[string]interface{}, s_winner string) {
 	winner := strings.Split(s_winner, ",")[0] //取第一个中标单位
 	data := MgoEnps.FindOne(EnpsColl, bson.M{"company_name": winner})

+ 3 - 0
src/main.go

@@ -101,6 +101,9 @@ func initOther() {
 	for _, v := range util.Sysconfig["filter_file_and_detail"].([]interface{}) {
 		history.FilterFileAndDetailMap[v.(string)] = true
 	}
+	for _, v := range util.Sysconfig["filter_owner_appid"].([]interface{}) {
+		history.FilterOwnerMap[v.(string)] = true
+	}
 }
 
 func main() {