|
@@ -0,0 +1,219 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ log "github.com/donnie4w/go-logger/logger"
|
|
|
+ qu "qfw/util"
|
|
|
+ "strings"
|
|
|
+)
|
|
|
+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() {
|
|
|
+ sess := save_mgo.GetMgoConn()
|
|
|
+ defer save_mgo.DestoryMongoConn(sess)
|
|
|
+ q,total:=map[string]interface{}{},0
|
|
|
+ it := sess.DB(save_mgo.DbName).C("zktesy_mysql_product_info").Find(&q).Iter()
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
|
|
|
+ if total%10000==0 {
|
|
|
+ log.Debug("curent index ",total)
|
|
|
+ }
|
|
|
+ delete(tmp,"_id")
|
|
|
+ MysqlTool.Insert("f_product",tmp)
|
|
|
+ tmp = make(map[string]interface{})
|
|
|
+ }
|
|
|
+
|
|
|
+ log.Debug("is over ",total)
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+//导出-产品信息
|
|
|
+func exportProductMgo() {
|
|
|
+
|
|
|
+ initClass() //内存初始化-分类
|
|
|
+
|
|
|
+ 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()
|
|
|
+ for tmp := make(map[string]interface{}); it.Next(&tmp);total++{
|
|
|
+ if total%10000==0 {
|
|
|
+ log.Debug("curent index ",total)
|
|
|
+ }
|
|
|
+ reg_company := qu.ObjToString(tmp["reg_company"])
|
|
|
+ if reg_company!="" {
|
|
|
+ data := buildInsertData(tmp)
|
|
|
+ if data!=nil && len(data)>2 {
|
|
|
+ save_mgo.Save("zktest_mysql_product_info",data)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tmp = make(map[string]interface{})
|
|
|
+ }
|
|
|
+ log.Debug("is 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{}{
|
|
|
+ "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 {
|
|
|
+ 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"
|
|
|
+ }else if p_class=="进口"{
|
|
|
+ data["make_country"] = "2"
|
|
|
+ }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"])
|
|
|
+ type_str := qu.ObjToString(tmp["type"])
|
|
|
+
|
|
|
+ approve_date,validity_date := "",""
|
|
|
+ validity_date = qu.ObjToString(tmp["yxqz"])
|
|
|
+ if type_str == "注册" {
|
|
|
+ data["regist_type"] = "1"
|
|
|
+ approve_date = qu.ObjToString(tmp["pzrq"])
|
|
|
+ }else if type_str == "备案" {
|
|
|
+ data["regist_type"] = "2"
|
|
|
+ approve_date = qu.ObjToString(tmp["barq"])
|
|
|
+ }else {
|
|
|
+ data["regist_type"] = ""
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ //处理-日期-格式-多变
|
|
|
+ if approve_date != "" {
|
|
|
+ approve_date_new := timeStandata(approve_date)
|
|
|
+ if approve_date_new!="" {
|
|
|
+ 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 = "'"
|
|
|
+ }
|
|
|
+
|
|
|
+ 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
|
|
|
+ data["product_class4"] = product_name
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return data
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+func timeStandata(str string)string{
|
|
|
+ new_str := ""
|
|
|
+ str = strings.ReplaceAll(str,".","-")
|
|
|
+ if !timeReg1.MatchString(str) {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ strArr := strings.Split(str,"-")
|
|
|
+ if len(strArr)!=3 {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ year :=strArr[0]
|
|
|
+ month :=strArr[1]
|
|
|
+ day :=strArr[2]
|
|
|
+ if len(month)==1{
|
|
|
+ month = "0"+month
|
|
|
+ }
|
|
|
+ if len(day)==1 {
|
|
|
+ day = "0"+day
|
|
|
+ }
|
|
|
+ new_str = year+"-"+month+"-"+day
|
|
|
+ if !timeReg.MatchString(new_str) {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ return new_str
|
|
|
+}
|