|
@@ -20,7 +20,9 @@ var CleanDetailReg1 = regexp.MustCompile("(北京时间)")
|
|
|
var XjbtReg *regexp.Regexp = regexp.MustCompile("^(新疆生产建设兵团|新疆兵团)")
|
|
|
var SensitiveReg = regexp.MustCompile("(上一[条篇]|下一[条篇])[::].*")
|
|
|
|
|
|
-//取特殊类数据
|
|
|
+var OperatorReg = regexp.MustCompile("^中国(电信|联通|移动).*公司$")
|
|
|
+
|
|
|
+// 取特殊类数据
|
|
|
func GetFilialeByBuyerInfo(buyer string) string {
|
|
|
if FilialeReg1.MatchString(buyer) {
|
|
|
return FilialeReg1.FindString(buyer)
|
|
@@ -35,7 +37,7 @@ func GetFilialeByBuyerInfo(buyer string) string {
|
|
|
return ""
|
|
|
}
|
|
|
|
|
|
-//最终确认~指定地域
|
|
|
+// 最终确认~指定地域
|
|
|
func ConfirmUniqueRegionInfo(regions map[string]map[string]map[string]string, area *string, city *string, district *string) bool {
|
|
|
if len(regions) > 1 || len(regions) == 0 {
|
|
|
return false
|
|
@@ -59,7 +61,7 @@ func ConfirmUniqueRegionInfo(regions map[string]map[string]map[string]string, ar
|
|
|
return false
|
|
|
}
|
|
|
|
|
|
-//完整信息
|
|
|
+// 完整信息
|
|
|
func CompleteRegionInfo(area *string, city *string, district *string) {
|
|
|
if *area == "北京" {
|
|
|
*city = "北京市"
|
|
@@ -80,7 +82,7 @@ func CompleteRegionInfo(area *string, city *string, district *string) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//根据词获取所有的地域 ~ 暂时不采用三级简称提取城市
|
|
|
+// 根据词获取所有的地域 ~ 暂时不采用三级简称提取城市
|
|
|
func (e *ExtractTask) takeRegionsFromWords(text string, isAddress bool, isBrief bool, regionsArr *[]map[string]string) {
|
|
|
//全称匹配
|
|
|
for pos_full, trie_full := range e.Trie_Fulls {
|
|
@@ -147,7 +149,7 @@ func (e *ExtractTask) takeRegionsFromWords(text string, isAddress bool, isBrief
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//是否拼接数据~且根据地址类~首地域判断
|
|
|
+// 是否拼接数据~且根据地址类~首地域判断
|
|
|
func SplicingRegionsInfo(isAddress bool, regionsArr *[]map[string]string, infoArr []map[string]string) {
|
|
|
if isAddress {
|
|
|
if len(*regionsArr) == 0 { //第一次
|
|
@@ -186,7 +188,7 @@ func SplicingRegionsInfo(isAddress bool, regionsArr *[]map[string]string, infoAr
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//文本取地域 from 1~jsondata文本 2~其他文本
|
|
|
+// 文本取地域 from 1~jsondata文本 2~其他文本
|
|
|
func (e *ExtractTask) GetRegionFromText(text string, regions *map[string]map[string]map[string]string, isAddress bool, isBrief bool, from int) []map[string]interface{} {
|
|
|
regionValues := []map[string]interface{}{}
|
|
|
if text == "" {
|
|
@@ -214,7 +216,7 @@ func (e *ExtractTask) GetRegionFromText(text string, regions *map[string]map[str
|
|
|
return regionValues
|
|
|
}
|
|
|
|
|
|
-//更新方法
|
|
|
+// 更新方法
|
|
|
func UpdateRegionsInfo(area, city, district string, regions *map[string]map[string]map[string]string) {
|
|
|
if (*regions)[area] == nil {
|
|
|
city_info := map[string]map[string]string{}
|
|
@@ -242,7 +244,7 @@ func UpdateRegionsInfo(area, city, district string, regions *map[string]map[stri
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//同组合并后合理性校验
|
|
|
+// 同组合并后合理性校验
|
|
|
func ReasonableGroupRegionInfo(datas map[string]map[string]map[string]string) map[string]map[string]map[string]string {
|
|
|
if len(datas) > 2 || len(datas) == 0 { //省份超限,无效
|
|
|
return map[string]map[string]map[string]string{}
|
|
@@ -307,7 +309,7 @@ func ReasonableGroupRegionInfo(datas map[string]map[string]map[string]string) ma
|
|
|
return datas
|
|
|
}
|
|
|
|
|
|
-//两组比对~找寻补充,排除数据
|
|
|
+// 两组比对~找寻补充,排除数据
|
|
|
func AnalysisIsUniqueInfo(regions map[string]map[string]map[string]string, all_regions *map[string]map[string]map[string]string) {
|
|
|
if len(regions) == 0 {
|
|
|
return
|
|
@@ -345,7 +347,7 @@ func AnalysisIsUniqueInfo(regions map[string]map[string]map[string]string, all_r
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//选取规则方法
|
|
|
+// 选取规则方法
|
|
|
func ScreenOutReasonableRegionInfo(info map[string]string, regions_infosArr *[]map[string]string, new_regions_infosArr *[]map[string]string) map[string]string {
|
|
|
area := qu.ObjToString(info["area"])
|
|
|
city := qu.ObjToString(info["city"])
|
|
@@ -389,7 +391,7 @@ func ScreenOutReasonableRegionInfo(info map[string]string, regions_infosArr *[]m
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
-//拆分地域数据~目的更好的合并选取
|
|
|
+// 拆分地域数据~目的更好的合并选取
|
|
|
func splitRegionsInfos(infos map[string]map[string]map[string]string) []map[string]string {
|
|
|
infosArr := []map[string]string{}
|
|
|
for k, v := range infos {
|
|
@@ -410,7 +412,7 @@ func splitRegionsInfos(infos map[string]map[string]map[string]string) []map[stri
|
|
|
return infosArr
|
|
|
}
|
|
|
|
|
|
-//日志流程记录~组级别
|
|
|
+// 日志流程记录~组级别
|
|
|
func LogProcessRecordingForGroupInfo(key string, valueArr []string, fieldInfos map[string]interface{}, groupInfos map[string]map[string]map[string]string, finallyInfos map[string]map[string]map[string]string, logRecordInfo *[]map[string]interface{}) {
|
|
|
groupArr := splitRegionsInfos(groupInfos)
|
|
|
finalluArr := splitRegionsInfos(finallyInfos)
|
|
@@ -425,12 +427,12 @@ func LogProcessRecordingForGroupInfo(key string, valueArr []string, fieldInfos m
|
|
|
*logRecordInfo = append(*logRecordInfo, data)
|
|
|
}
|
|
|
|
|
|
-//日志流程记录~第二链路
|
|
|
+// 日志流程记录~第二链路
|
|
|
func LogProcessRecordingForSupplement(logRecordInfo *[]map[string]interface{}, data map[string]interface{}) {
|
|
|
*logRecordInfo = append(*logRecordInfo, data)
|
|
|
}
|
|
|
|
|
|
-//日志流程记录~初步
|
|
|
+// 日志流程记录~初步
|
|
|
func LogProcessRecordingForTentative(key string, valueArr interface{}, finallyInfos map[string]map[string]map[string]string, logRecordInfo *[]map[string]interface{}) {
|
|
|
finallyArr := splitRegionsInfos(finallyInfos)
|
|
|
data := map[string]interface{}{
|
|
@@ -440,7 +442,7 @@ func LogProcessRecordingForTentative(key string, valueArr interface{}, finallyIn
|
|
|
*logRecordInfo = append(*logRecordInfo, data)
|
|
|
}
|
|
|
|
|
|
-//重构地域逻辑顺序
|
|
|
+// 重构地域逻辑顺序
|
|
|
func (e *ExtractTask) IsConsecutionRegion(site string) bool {
|
|
|
isReset := false
|
|
|
if tmp := e.SiteCityMap[site]; tmp != nil {
|
|
@@ -452,7 +454,7 @@ func (e *ExtractTask) IsConsecutionRegion(site string) bool {
|
|
|
return isReset
|
|
|
}
|
|
|
|
|
|
-//清洗项目名称
|
|
|
+// 清洗项目名称
|
|
|
func CleanRegionProjectNameInfo(projectname string, buyer string) string {
|
|
|
new_str := projectname
|
|
|
if new_str == "" {
|
|
@@ -467,7 +469,7 @@ func CleanRegionProjectNameInfo(projectname string, buyer string) string {
|
|
|
return new_str
|
|
|
}
|
|
|
|
|
|
-//清洗文本词组
|
|
|
+// 清洗文本词组
|
|
|
func CleanRegionTextWords(wordsArr []string) []string {
|
|
|
if len(wordsArr) <= 1 {
|
|
|
return wordsArr
|
|
@@ -499,7 +501,7 @@ func CleanRegionTextWords(wordsArr []string) []string {
|
|
|
return newArr
|
|
|
}
|
|
|
|
|
|
-//链路补充~全称类
|
|
|
+// 链路补充~全称类
|
|
|
func (e *ExtractTask) LinkSpecialRuleFullStep(text string, area *string, city *string, district *string) {
|
|
|
regions := map[string]map[string]map[string]string{}
|
|
|
wordsArr := e.Seg_SV.Cut(text, true)
|
|
@@ -525,7 +527,7 @@ func (e *ExtractTask) LinkSpecialRuleFullStep(text string, area *string, city *s
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//链路补充~简称类
|
|
|
+// 链路补充~简称类
|
|
|
func (e *ExtractTask) LinkSpecialRuleBriefStep(text string, area *string, city *string, district *string) {
|
|
|
regions := map[string]map[string]map[string]string{}
|
|
|
wordsArr := e.Seg_SV.Cut(text, true)
|
|
@@ -558,7 +560,7 @@ func (e *ExtractTask) LinkSpecialRuleBriefStep(text string, area *string, city *
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//新增原则
|
|
|
+// 新增原则
|
|
|
func LinkAddedRules(regions map[string]map[string]map[string]string, area *string, city *string, district *string) {
|
|
|
if len(regions) == 1 {
|
|
|
for k, v := range regions {
|
|
@@ -577,7 +579,7 @@ func LinkAddedRules(regions map[string]map[string]map[string]string, area *strin
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//补充原则
|
|
|
+// 补充原则
|
|
|
func LinkSuppleRules(regions map[string]map[string]map[string]string, area *string, city *string, district *string) {
|
|
|
for k, v := range regions {
|
|
|
if *area == k {
|
|
@@ -595,7 +597,7 @@ func LinkSuppleRules(regions map[string]map[string]map[string]string, area *stri
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-//链路补充~企业校验步骤
|
|
|
+// 链路补充~企业校验步骤
|
|
|
func LinkSpecialQyxyStep(buyer string, area *string, city *string, district *string) {
|
|
|
qyxy_arr, _ := ju.Qyxy_Mgo.Find("qyxy_std", map[string]interface{}{
|
|
|
"company_name": buyer,
|