zhengkun před 3 roky
rodič
revize
b190d22dbf

+ 7 - 8
process_ medical/src/config.json

@@ -1,20 +1,20 @@
 {
   "save_mgodb": {
-    "addr": "172.17.4.87:27080",
-    "db": "py_spider",
+    "addr": "127.0.0.1:27017",
+    "db": "mixdata",
     "pool": 5
   },
   "spi_mgodb": {
-    "addr": "172.17.4.181:27001",
+    "addr": "127.0.0.1:27017",
     "db": "mixdata",
     "pool": 5
   },
   "qy_mgodb": {
-    "addr": "172.17.145.163:27083,172.17.4.187:27082",
+    "addr": "127.0.0.1:27017",
     "db": "mixdata",
     "pool": 5,
-    "username":"zhengkun",
-    "password":"zk@123123"
+    "username":"",
+    "password":""
   },
   "mysql": {
     "addr": "192.168.3.109:4000",
@@ -35,7 +35,6 @@
     "o_class_coll":"zktest_mysql_ylqxclass",
     "o_company_coll":"zktest_mysql_company_info",
     "o_company_err_coll":"zktest_mysql_company_info_err",
-    "o_product_coll":"zktest_mysql_product_info",
-    "o_product_err_coll":"zktest_mysql_product_info_err"
+    "o_product_coll":"zktest_mysql_product_info"
   }
 }

+ 1 - 3
process_ medical/src/init_config.go

@@ -15,11 +15,9 @@ func initConfig()  {
 	outputconf:= sysconfig["data_output"].(map[string]interface{})
 	o_area_coll = qu.ObjToString(outputconf["o_area_coll"])
 	o_class_coll = qu.ObjToString(outputconf["o_class_coll"])
-
 	o_company_coll = qu.ObjToString(outputconf["o_company_coll"])
 	o_company_err_coll = qu.ObjToString(outputconf["o_company_err_coll"])
 	o_product_coll = qu.ObjToString(outputconf["o_product_coll"])
-	o_product_err_coll = qu.ObjToString(outputconf["o_product_err_coll"])
 
 
 
@@ -64,5 +62,5 @@ func initMgo() {
 		PassWord: sqlconf["password"].(string),
 		DBName: sqlconf["db"].(string),
 	}
-	//MysqlTool.Init()
+	MysqlTool.Init()
 }

+ 18 - 9
process_ medical/src/main.go

@@ -1,6 +1,7 @@
 package main
 
 import (
+	log "github.com/donnie4w/go-logger/logger"
 	qu "qfw/util"
 	"regexp"
 )
@@ -12,34 +13,42 @@ var (
 	s_area_coll,s_product_coll,s_company_coll,s_qybase_coll			string
 	o_area_coll,o_class_coll,o_company_coll,o_product_coll	string
 	s_class_xlsx_name,s_area_xlsx_name	string
-	o_company_err_coll,o_product_err_coll	string
+	o_company_err_coll	string
 )
 
 var timeReg = regexp.MustCompile(`^(\d{4}-[0-1][0-9]-[0-3][0-9])$`)
 var timeReg1 = regexp.MustCompile(`^(\d{4}-\d{1,2}-\d{1,2})$`)
 var Url = "https://www.jianyu360.com/article/content/%s.html"
-var bidclass_dict = map[string]string{}
-var buyerclass_dict = map[string]string{}
-var industry_dict = map[string]string{}
-var area_dict = map[string]string{}
-var proclass_dict = map[string]string{}
+
+var bidclass_dict = map[string]string{}   	//v表-招标类别
+var buyerclass_dict = map[string]string{}	//v表-采购类别
+var industry_dict = map[string]string{}		//v表-行业类别
+var area_dict = map[string]string{}			//v表-行政区划
+var proclass_name_dict = map[string]string{}		//v表-医疗分类-名称对应-代码
+var proclass_code_dict = map[string]string{}		//v表-医疗分类-代码对应-名称
 var timeLayout = "2006-01-02 15:04:05"
 
 func init()  {
 	qu.ReadConfig(&sysconfig)
 	initConfig()
+	log.Debug("初始化完毕...")
 }
 
 
 func main()  {
-	//生产-经营企业信息
-	exportCompanyMysql()
 
 
 
+	//产品信息-
+	//init_proclass()
+	//log.Debug("临时加载分类配置-",len(proclass_name_dict),len(proclass_code_dict))
+	//exportProductMysql()
+
+	//生产-经营企业信息
+	//exportCompanyMysql()
 
 	//备案信息
-	//exportForReferenceMysql()
+	exportForReferenceMysql()
 
 	//v-表
 	//exportAreaCitysMysql()

+ 22 - 41
process_ medical/src/mark

@@ -1,3 +1,4 @@
+线上正式
 {
   "save_mgodb": {
     "addr": "172.17.4.87:27080",
@@ -21,32 +22,12 @@
     "db": "jy_lycp",
     "username": "jianyu",
     "password": "top@123"
-  },
-  "data_source": {
-    "s_class_xlsx_name": "table.xlsx",
-    "s_area_xlsx_name": "xzqh.xlsx",
-    "s_area_coll": "address_jy_2021",
-    "s_product_coll": "nmpa_product",
-    "s_company_coll": "nmpa_company",
-    "s_qybase_coll": "company_base"
-  },
-  "data_output": {
-    "o_area_coll":"zktest_mysql_area",
-    "o_class_coll":"zktest_mysql_ylqxclass",
-    "o_company_coll":"zktest_mysql_company_info",
-    "o_company_err_coll":"zktest_mysql_company_info_err",
-    "o_product_coll":"zktest_mysql_product_info",
-    "o_product_err_coll":"zktest_mysql_product_info_err"
   }
 }
 
 
 
-
-
-
-
-//测试
+本地调试
 {
   "save_mgodb": {
     "addr": "127.0.0.1:27017",
@@ -64,27 +45,27 @@
     "pool": 5,
     "username":"",
     "password":""
+  }
+}
+
+
+测试207
+{
+  "save_mgodb": {
+    "addr": "192.168.3.207:27092",
+    "db": "zhengkun",
+    "pool": 5
   },
-  "mysql": {
-    "addr": "192.168.3.109:4000",
-    "db": "jy_lycp",
-    "username": "jianyu",
-    "password": "top@123"
-  },
-  "data_source": {
-    "s_class_xlsx_name": "table.xlsx",
-    "s_area_xlsx_name": "xzqh.xlsx",
-    "s_area_coll": "address_jy_2021",
-    "s_product_coll": "nmpa_product",
-    "s_company_coll": "nmpa_company",
-    "s_qybase_coll": "company_base"
+  "spi_mgodb": {
+    "addr": "192.168.3.207:27092",
+    "db": "zhengkun",
+    "pool": 5
   },
-  "data_output": {
-    "o_area_coll":"zktest_mysql_area",
-    "o_class_coll":"zktest_mysql_ylqxclass",
-    "o_company_coll":"zktest_mysql_company_info",
-    "o_company_err_coll":"zktest_mysql_company_info_err",
-    "o_product_coll":"zktest_mysql_product_info",
-    "o_product_err_coll":"zktest_mysql_product_info_err"
+  "qy_mgodb": {
+    "addr": "192.168.3.207:27092",
+    "db": "zhengkun",
+    "pool": 5,
+    "username":"",
+    "password":""
   }
 }

+ 4 - 22
process_ medical/src/medical_bidding.go

@@ -156,11 +156,11 @@ func savePurMysqlData(tmp map[string]interface{}){
 		product_class_3 := qu.ObjToString(v["product_class_3"])
 
 		key_4 := "四级_"+product_name
-		if proclass_dict[key_4]!="" {
-			data["product_code"] = proclass_dict[key_4]
+		if proclass_name_dict[key_4]!="" {
+			data["product_code"] = proclass_name_dict[key_4]
 		}else {
 			pro_key := fmt.Sprintf("%s_%s_%s",product_class_1,product_class_2,product_class_3)
-			data["product_code"] = proclass_dict[pro_key]
+			data["product_code"] = proclass_name_dict[pro_key]
 		}
 
 
@@ -197,10 +197,7 @@ func exportUsefulPurchasing() {
 		if len(p_list)>0 {
 			isok++
 			s_winner := qu.ObjToString(tmp["s_winner"])
-
 			new_data["yl_purchasinglist"] = p_list
-
-
 			tmpid := BsonTOStringId(tmp["_id"])
 			new_data["info_id"] = tmpid
 			new_data["subtype"] = qu.ObjToString(tmp["subtype"])
@@ -236,26 +233,11 @@ func exportUsefulPurchasing() {
 				}
 			}
 			new_data["company_id"] = company_id
-
 			save_mgo.Save("zktest_mysql_source",new_data)
 		}
 
-
-
-
 		tmp = make(map[string]interface{})
 	}
 
 	log.Debug("is over ",total,isok)
-}
-
-//暂未使用
-func getUsefulPurchasingData(arr []map[string]interface{}) []map[string]interface{} {
-	new_arr :=[]map[string]interface{}{}
-	for _,v:=range arr {
-		if v["product_class_1"]!=nil {
-			new_arr = append(new_arr,v)
-		}
-	}
-	return new_arr
-}
+}

+ 2 - 2
process_ medical/src/medical_company.go

@@ -53,7 +53,7 @@ func saveCompanyMysql()  {
 		MysqlTool.Insert("f_company",tmp)
 		tmp = make(map[string]interface{})
 	}
-	log.Debug("is over ",total)
+	log.Debug("is company over ",total)
 }
 
 //关联企业信息-升数据
@@ -73,7 +73,7 @@ func exportCompanyMysql()  {
 				update := buildUpdateData(info,type_str)
 				save_mgo.Save(o_company_coll,update)
 			}else {//企业未匹配-记录
-				save_mgo.Save(o_company_coll, map[string]interface{}{
+				save_mgo.Save(o_company_err_coll, map[string]interface{}{
 					"company_name":company,
 				})
 			}

+ 4 - 0
process_ medical/src/medical_history.go

@@ -1 +1,5 @@
 package main
+
+func exportAliasName ()  {
+
+}

+ 12 - 12
process_ medical/src/medical_prepare.go

@@ -16,7 +16,7 @@ func initMySqlMgoData() {
 	init_proclass()
 
 	log.Debug("init mysql 完毕",len(bidclass_dict),len(buyerclass_dict),len(industry_dict))
-	log.Debug("init mgo 完毕",len(area_dict),len(proclass_dict))
+	log.Debug("init mgo 完毕",len(area_dict),len(proclass_name_dict),len(proclass_code_dict))
 
 }
 
@@ -102,39 +102,39 @@ func init_area() {
 
 
 }
-func init_proclass() {
 
+//7780 -- 7746  采用最后一个 34个重复
+func init_proclass() {
 	sess := save_mgo.GetMgoConn()
 	defer save_mgo.DestoryMongoConn(sess)
 	q,total:=map[string]interface{}{},0
-	it := sess.DB(save_mgo.DbName).C("zktest_mysql_ylqxclass").Find(&q).Iter()
-	dict := map[string]string{}
+	it := sess.DB(save_mgo.DbName).C(o_class_coll).Find(&q).Iter()
 	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
 		name := qu.ObjToString(tmp["name"])
 		code := qu.ObjToString(tmp["code"])
-		dict[code] = name
+		proclass_code_dict[code] = name
 		tmp = make(map[string]interface{})
 	}
 	//最多六位
-	for k,v := range dict {
+	for k,v := range proclass_code_dict {
 		key := ""
 		if utf8.RuneCountInString(k)==2 {
 			key = v+"_"+"_"
 		} else if utf8.RuneCountInString(k)==4 {
 			code_1 := k[:2]
-			name_1 := dict[code_1]
+			name_1 := proclass_code_dict[code_1]
 			key = name_1+"_"+v+"_"
-		}else if utf8.RuneCountInString(k)==6 {
+		}else if utf8.RuneCountInString(k)== 8{
 			code_1 := k[:2]
-			name_1 := dict[code_1]
+			name_1 := proclass_code_dict[code_1]
 			code_2 := k[:4]
-			name_2 := dict[code_2]
+			name_2 := proclass_code_dict[code_2]
 			key = name_1+"_"+name_2+"_"+v
-		}else if utf8.RuneCountInString(k)==8 {
+		}else if utf8.RuneCountInString(k)==14 {
 			key = "四级"+"_"+v
 		}
 		if key!="" {
-			proclass_dict[key] = k
+			proclass_name_dict[key] = k
 		}
 	}
 }

+ 49 - 99
process_ medical/src/medical_product.go

@@ -1,94 +1,38 @@
 package main
 
 import (
+	"fmt"
 	log "github.com/donnie4w/go-logger/logger"
 	qu "qfw/util"
 	"strings"
 	"unicode/utf8"
 )
-var class_all_data = map[string]*ClassAll{}
-var class_data = map[string]string{} //记录四级分类
-
-type ClassAll struct {
-	Name string
-	Code string
-	Level string
-	Pcode string
-}
-
-
-func initClass() {
-	sess := save_mgo.GetMgoConn()
-	defer save_mgo.DestoryMongoConn(sess)
-	q,total:=map[string]interface{}{},0
-	it := sess.DB(save_mgo.DbName).C("zktest_mysql_ylqxclass").Find(&q).Iter()
-	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
-		name := qu.ObjToString(tmp["name"])
-		code:=qu.ObjToString(tmp["code"])
-		level:=qu.ObjToString(tmp["level"])
-		pcode:=qu.ObjToString(tmp["pcode"])
-		class_all_data[code] = &ClassAll{
-			name,
-			code,
-			level,
-			pcode,
-		}
-		if level=="4" {
-			class_data[name] = code
-		}
-		tmp = make(map[string]interface{})
-	}
-	log.Debug("init class 完毕~",len(class_all_data),len(class_data))
-}
-
-
 
 //保存-mysql
-func productSaveMysql()  {
+func saveProductMysql()  {
 	sess := save_mgo.GetMgoConn()
 	defer save_mgo.DestoryMongoConn(sess)
 	q,total:=map[string]interface{}{},0
-	it := sess.DB(save_mgo.DbName).C("zktest_mysql_product_info").Find(&q).Iter()
+	it := sess.DB(save_mgo.DbName).C(o_product_coll).Find(&q).Iter()
 	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
 		if total%10000==0 {
 			log.Debug("curent index ",total)
 		}
-		//main_part
-		//changes
-
-		company_id := qu.ObjToString(tmp["company_id"])
-		if company_id!="" {
-			delete(tmp,"_id")
-			main_part := qu.ObjToString(tmp["main_part"])
-			changes := qu.ObjToString(tmp["changes"])
-
-			if utf8.RuneCountInString(main_part)>2000 {
-				tmp["main_part"] = ""
-				log.Debug("main_part~",company_id)
-			}
-			if utf8.RuneCountInString(changes)>2000{
-				tmp["changes"] = ""
-				log.Debug("changes~",company_id)
-			}
-
-			MysqlTool.Insert("f_product",tmp)
-		}
+		delete(tmp,"_id")
+		MysqlTool.Insert("f_product",tmp)
 		tmp = make(map[string]interface{})
 	}
-
-	log.Debug("is over ",total)
+	log.Debug("is product over ",total)
 }
 
 
 //导出-产品信息
-func exportProductMgo() {
-
-	initClass() //内存初始化-分类
+func exportProductMysql() {
 
 	sess := save_mgo.GetMgoConn()
 	defer save_mgo.DestoryMongoConn(sess)
 	q,total:=map[string]interface{}{},0
-	it := sess.DB(save_mgo.DbName).C("nmpa_product").Find(&q).Iter()
+	it := sess.DB(save_mgo.DbName).C(s_product_coll).Find(&q).Iter()
 	for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
 		if total%10000==0 {
 			log.Debug("curent index ",total)
@@ -97,37 +41,42 @@ func exportProductMgo() {
 		if reg_company!="" {
 			data := buildInsertData(tmp)
 			if data!=nil && len(data)>2 {
-				save_mgo.Save("zktest_mysql_product_info",data)
+				save_mgo.Save(o_product_coll,data)
 			}
 		}
 		tmp = make(map[string]interface{})
 	}
-	log.Debug("is over ",total)
+	log.Debug("is product over ",total)
 }
 
 
+//构建数据
 func buildInsertData(tmp map[string]interface{}) map[string]interface{}{
 	data:=map[string]interface{}{}
 	company_name :=qu.ObjToString(tmp["reg_company"])
-	c_data := save_mgo.FindOne("zktest_mysql_company_info", map[string]interface{}{
+	c_data := save_mgo.FindOne(o_company_coll, map[string]interface{}{
 		"company_name":company_name,
 	})
 	if c_data!=nil && len(c_data)>2 {
 		data["company_id"] = qu.ObjToString(c_data["company_id"])
 		data["business_type"] = qu.ObjToString(c_data["business_type"])
 	}else {
+		//当前产品-对应企业-未关联f_company 需要比对别名表-修改此三个字段
 		data["company_id"] = ""
 		data["business_type"] = ""
-	}
 
+		//查询别名表--待定
+
+
+
+
+
+	}
 	data["regno"] = qu.ObjToString(tmp["reg_no"])
 	data["company_name"] = qu.ObjToString(tmp["reg_company"])
 	data["company_address"] = qu.ObjToString(tmp["reg_address"])
 	data["brand"] = ""
 	data["make_adress"] = qu.ObjToString(tmp["product_address"])
-
-
-
 	p_class:= qu.ObjToString(tmp["p_class"])
 	if p_class=="国产" {
 		data["make_country"] = "1"
@@ -136,20 +85,25 @@ func buildInsertData(tmp map[string]interface{}) map[string]interface{}{
 	}else {
 		data["make_country"] = ""
 	}
-
 	data["agent_name"] = qu.ObjToString(tmp["agent_name"])
 	data["agent_address"] = qu.ObjToString(tmp["agent_address"])
 	data["model"] = qu.ObjToString(tmp["model"])
-	data["main_part"] = qu.ObjToString(tmp["main_component"])
 	data["product_descrip"] = qu.ObjToString(tmp["product_depict"])
 	data["use_scope "] = qu.ObjToString(tmp["application"])
 	data["storage_conditions"] = qu.ObjToString(tmp["conditions_use"])
 	data["remark"] = qu.ObjToString(tmp["remark"])
 	data["approve_depart"] = qu.ObjToString(tmp["badw"])
-
-	data["changes"] = qu.ObjToString(tmp["changes"])
+	main_part := qu.ObjToString(tmp["main_component"])
+	changes := qu.ObjToString(tmp["changes"])
+	if utf8.RuneCountInString(main_part)>2000 {
+		main_part = ""
+	}
+	if utf8.RuneCountInString(changes)>2000{
+		changes = ""
+	}
+	data["main_part"] = main_part
+	data["changes"] = changes
 	type_str := qu.ObjToString(tmp["type"])
-
 	approve_date,validity_date := "",""
 	validity_date = qu.ObjToString(tmp["yxqz"])
 	if type_str == "注册" {
@@ -161,8 +115,6 @@ func buildInsertData(tmp map[string]interface{}) map[string]interface{}{
 	}else {
 		data["regist_type"] = ""
 	}
-
-
 	//处理-日期-格式-多变
 	if approve_date != "" {
 		approve_date_new := timeStandata(approve_date)
@@ -170,42 +122,40 @@ func buildInsertData(tmp map[string]interface{}) map[string]interface{}{
 			data["approve_date"] = approve_date_new
 		}
 	}
-
 	if validity_date != "" {
 		validity_date_new := timeStandata(validity_date)
 		if validity_date_new!="" {
 			data["validity_date"] = validity_date_new
 		}
 	}
-
 	data["source_channel"] = qu.ObjToString(tmp["jy_class"])
 	class := qu.ObjToString(tmp["class"])
 	if class == "/" {
 		class = ""
 	}
-
+	data["manage_type"] = class
 	product_name := qu.ObjToString(tmp["product_name"])
-
-	data["manage_type"] = qu.ObjToString(tmp["class"])
 	data["product_name"] = product_name
-
-
-	//product_class1 2 3 4   - 比对数据
-	//先匹配4级结构
-	if class_data[product_name]=="" {
-		data["product_class1"] = qu.ObjToString(tmp["product_class"])
-		data["product_class2"] = qu.ObjToString(tmp["product_class_1"])
-		data["product_class3"] = qu.ObjToString(tmp["product_class_2"])
-		data["product_class4"] = ""
-	}else {
-		class_code := class_data[product_name]
-		data["product_class1"] = class_all_data[class_code[:2]].Name
-		data["product_class2"] = class_all_data[class_code[:4]].Name
-		data["product_class3"] = class_all_data[class_code[:6]].Name
+	product_class_1 := qu.ObjToString(tmp["product_class"])
+	product_class_2 := qu.ObjToString(tmp["product_class_1"])
+	product_class_3 := qu.ObjToString(tmp["product_class_2"])
+	key_4 := "四级_"+product_name
+	code_4 := proclass_name_dict[key_4]
+	if code_4!="" {
+		data["product_code"] = code_4
+		data["product_class1"] = proclass_code_dict[code_4[:2]]
+		data["product_class2"] = proclass_code_dict[code_4[:4]]
+		data["product_class3"] = proclass_code_dict[code_4[:8]]
 		data["product_class4"] = product_name
+	}else {
+		pro_key := fmt.Sprintf("%s_%s_%s",product_class_1,product_class_2,product_class_3)
+		code := proclass_name_dict[pro_key]
+		data["product_code"] = code
+		data["product_class1"] = product_class_1
+		data["product_class2"] = product_class_2
+		data["product_class3"] = product_class_3
+		data["product_class4"] = ""
 	}
-
-
 	return data
 }
 

+ 22 - 13
process_ medical/src/medical_vdata.go

@@ -11,6 +11,7 @@ import (
 	"regexp"
 	"strings"
 	"time"
+	"unicode/utf8"
 )
 
 
@@ -170,7 +171,7 @@ func exportMedicalClassMysql() {
 		sort := 0
 		num_sort :=0
 		pre_str := ""
-		code_1 := dealSortStr(index+1)
+		code_1 := convertSerialNumber(index+1,2)
 		dict_1 := map[string]interface{}{
 			"code":code_1,
 			"pcode":"",
@@ -195,7 +196,7 @@ func exportMedicalClassMysql() {
 			sort_1 := qu.IntAll(str[0])
 			if sort_1 > sort { //1-4
 				sort = sort_1
-				code_2 := code_1+dealSortStr(sort)
+				code_2 := code_1+convertSerialNumber(sort,2)
 				dict_2 := map[string]interface{}{
 					"code":code_2,
 					"pcode":code_1,
@@ -203,7 +204,8 @@ func exportMedicalClassMysql() {
 					"name":new_class_2,
 				}
 				save_mgo.Save(o_class_coll,dict_2)
-				code_3 := code_2+proReg.FindString(class_3)
+
+				code_3 := code_2+convertSerialNumber(qu.IntAll(proReg.FindString(class_3)),4)
 				dict_3 := map[string]interface{}{
 					"code":code_3,
 					"pcode":code_2,
@@ -216,7 +218,7 @@ func exportMedicalClassMysql() {
 				num_sort = 0 //重置一下
 				for _,v := range e_arr {
 					num_sort++
-					code4 := code_3+dealSortStr(num_sort)
+					code4 := code_3+convertSerialNumber(num_sort,6)
 					dict_4 := map[string]interface{}{
 						"code":code4,
 						"pcode":code_3,
@@ -228,8 +230,8 @@ func exportMedicalClassMysql() {
 
 			}else { //3-4
 				str_3 := proReg.FindString(class_3)
-				code_2:=dealSortStr(index+1)+dealSortStr(sort)
-				code_3 := code_2+proReg.FindString(class_3)
+				code_2:=convertSerialNumber(index+1,2)+convertSerialNumber(sort,2)
+				code_3 := code_2+convertSerialNumber(qu.IntAll(str_3),4)
 				if str_3 != pre_str {
 					pre_str = proReg.FindString(class_3)//重置一下
 					num_sort = 0 //重置一下
@@ -244,7 +246,7 @@ func exportMedicalClassMysql() {
 				e_arr := strings.Split(class_example,"、")
 				for _,v := range e_arr {
 					num_sort++
-					code4 := code_3+dealSortStr(num_sort)
+					code4 := code_3+convertSerialNumber(num_sort,6)
 					dict_4 := map[string]interface{}{
 						"code":code4,
 						"pcode":code_3,
@@ -335,16 +337,16 @@ func repairYlqxClass2() {
 	log.Debug("is over ",total,len(rankArr),len(data),len(infoData))
 
 	class := "体外诊断试剂"
-	code_1 := dealSortStr(23)
+	code_1 := convertSerialNumber(23,2)
 	dict_1 := map[string]interface{}{"code":code_1,"pcode":"","level":"1","name":class}
 	save_mgo.Save(o_class_coll,dict_1)
 	for k,v :=range rankArr {
-		code_2 := code_1+dealSortStr(k+1)
+		code_2 := code_1+convertSerialNumber(k+1,2)
 		dict_2 := map[string]interface{}{"code":code_2,"pcode":code_1,"level":"2","name":v}
 		save_mgo.Save(o_class_coll,dict_2)
 		infoArr := infoData[v]
 		for k1,v1 := range infoArr{
-			code_3 := code_2+dealSortStr(k1+1)
+			code_3 := code_2+convertSerialNumber(k1+1,4)
 			dict_3 := map[string]interface{}{"code":code_3,"pcode":code_2,"level":"3","name":v1}
 			save_mgo.Save(o_class_coll,dict_3)
 		}
@@ -353,10 +355,17 @@ func repairYlqxClass2() {
 	log.Debug("is repair2 over ")
 }
 
-func dealSortStr(index int) string {
+//2246位编号
+func convertSerialNumber(index int,position int) string {
 	code :=""
-	if index<10{
-		code = fmt.Sprintf("0%d",index)
+	curLength := utf8.RuneCountInString(fmt.Sprintf("%d",index))
+	diff := position-curLength
+	if diff>0 {
+		pre := ""
+		for i:=0;i<diff;i++ {
+			pre+="0"
+		}
+		code = fmt.Sprintf("%s%d",pre,index)
 	}else {
 		code = fmt.Sprintf("%d",index)
 	}