package DataexService import ( "dsDataex/GenXorm/models" "dsDataex/MyModel/OrgTree/OrgtreeDAO" "dsDataex/MyService/DataEX/DataexDAO" "dsDataex/MyService/MySwagger" "dsDataex/Utils/CacheUtil" "dsDataex/Utils/ConfigUtil" "dsDataex/Utils/DbUtil" "encoding/json" "reflect" "strconv" "time" ) /** * @Author zhangjun * @Description * @Date NOT IN USE * @Param * @return **/ func OrgtreeProc(datas []MySwagger.Data) { for no := 0; no < len(datas) && no < 1000; no++ { var jsonData map[string]interface{} json.Unmarshal([]byte(datas[no].Data), &jsonData) var data models.TDataexOrgtree //change by zhangjun 2020-07-15 data.Id = jsonData["org_id"].(string) //data.Id = strings.ToLower(jsonData["org_id"].(string)) data.OrgName = jsonData["org_name"].(string) switch jsonData["org_type"].(type) { case float64: data.OrgType= (int)(jsonData["org_type"].(float64)) break case string: data.OrgType, _ = strconv.Atoi(jsonData["org_type"].(string)) break } switch data.OrgType { case 1: if ConfigUtil.ROOT_ORGNAME == jsonData["org_name"].(string) { data.ParentId = "-1" } else { var areaCode string if jsonData["area_code"].(string)[2:] == "0000" {//省级 areaCode="100000" }else if jsonData["area_code"].(string)[4:] == "00" {//市级 areaCode = jsonData["area_code"].(string)[0:2] + "0000" } else { //县区级 areaCode = jsonData["area_code"].(string)[0:4] + "00" //处理直辖市 if areaCode == "110100" { areaCode = "110000" //北京 } if areaCode == "120100" { areaCode = "120000" //天津 } if areaCode == "310100" { areaCode = "310000" //上海 } if areaCode == "500100" { areaCode = "500000" //重庆 } if areaCode == "500200" { areaCode = "500000" } if areaCode == "371200" { areaCode = "370100" //济南 } data.ParentId = DataexDAO.GetParentIDBaseGO(areaCode) } } //add by zhangjun 2020-09-07 data.AreaId=jsonData["area_code"].(string) break case 2: if ConfigUtil.ROOT_ORGNAME == jsonData["org_name"].(string) { data.ParentId = "-1" } else { data.ParentId = DataexDAO.GetParentIDBaseGO(jsonData["area_code"].(string)) } data.SchoolType = jsonData["xxbxlxm"].(string) if jsonData["xxjbzm"].(string)=="811"{ data.AreaId=jsonData["province_code"].(string) }else if jsonData["xxjbzm"].(string)=="821" { data.AreaId=jsonData["city_code"].(string) }else{ data.AreaId=jsonData["area_code"].(string) } break case 7: if ConfigUtil.ROOT_ORGNAME == jsonData["org_name"].(string) { data.ParentId = "-1" } else { data.ParentId = DataexDAO.GetParentIDBaseGO(jsonData["area_code"].(string)) } //add by zhangjun 2020-09-07 data.AreaId=jsonData["area_code"].(string) break default: return } data.ProvinceId = jsonData["province_code"].(string) if jsonData["city_code"].(string) == "" || jsonData["city_code"].(string) == "-1" { data.CityId = jsonData["province_code"].(string) } else { data.CityId = jsonData["city_code"].(string) } //change by zhangjun 2020-09-07 //if jsonData["district_code"].(string) == "" || jsonData["district_code"].(string) == "-1" { // data.AreaId = data.CityId //} else { // data.AreaId = jsonData["district_code"].(string) //} data.AreaId3= jsonData["manager_area_code"].(string) data.AreaId2= jsonData["area_code"].(string) data.DeleteFlag = -1 data.EnableFlag = 1 ids := []string{data.Id} result := CacheUtil.GetListByIds(ids, CacheUtil.GetBean("t_dataex_orgtree")) if len(result) == 1 { OrgtreeDAO.UpdateOrgtree(data.Id, &data) } else { OrgtreeDAO.CreateOrgtree(&data) } } } func OrgtreeProcBatch(datas []MySwagger.Data) { var IDs []string var areaIDs []string for no := 0; no < len(datas) && no < 1000; no++ { var jsonData map[string]interface{} json.Unmarshal([]byte(datas[no].Data), &jsonData) //change by zhangjun 2020-07-23 //IDs =append(IDs,strings.ToLower(jsonData["org_id"].(string))) IDs =append(IDs,jsonData["org_id"].(string)) if Contains(areaIDs,jsonData["area_code"].(string))==-1 { areaIDs = append(areaIDs, jsonData["area_code"].(string)) } } result := CacheUtil.GetListByIds(IDs, CacheUtil.GetBean("t_dataex_orgtree")) var updateIDs []string for no:=0;no< len(result) ;no++{ updateIDs=append(updateIDs,result[no]["id"].(string)) } var parentMap map[string]string parentMap =DataexDAO.GetParentID2BaseGO(areaIDs) var sqls []string var sql string //补 parent_id var sqls2 []string var refresh = false for no:=0;no< len(datas) ;no++{ var jsonData map[string]interface{} json.Unmarshal([]byte(datas[no].Data), &jsonData) var orgType string var schoolType string var parentID string switch jsonData["org_type"].(type) { case float64: orgType =strconv.FormatFloat(jsonData["org_type"].(float64), 'f', -1, 64) break case string: orgType = jsonData["org_type"].(string) break } if orgType!="1" &&orgType!="2" &&orgType!="7" { continue } if orgType=="2"{ schoolType=jsonData["xxbxlxm"].(string) } var areaId="" var areaId3= jsonData["manager_area_code"].(string) var areaId2= jsonData["area_code"].(string) if ConfigUtil.ROOT_ORGNAME == jsonData["org_name"].(string) { parentID = "-1" //add by zhangjun 2020-09-07 areaId =jsonData["area_code"].(string) } else { if orgType=="1" { //add by zhangjun 2020-09-07 areaId =jsonData["area_code"].(string) var areaCode string if jsonData["area_code"].(string)[2:] == "0000" {//省级 areaCode="100000" }else if jsonData["area_code"].(string)[4:] == "00" {//市级 areaCode = jsonData["area_code"].(string)[0:2] + "0000" } else {//县区级 areaCode = jsonData["area_code"].(string)[0:4] + "00" //处理直辖市 if areaCode=="110100"{ areaCode="110000"//北京 } if areaCode=="120100"{ areaCode="120000"//天津 } if areaCode=="310100"{ areaCode="310000"//上海 } if areaCode=="500100"{ areaCode="500000"//重庆 } if areaCode=="500200"{ areaCode="500000" } if areaCode=="371200"{ areaCode="370100"//济南 } } parentID = parentMap[areaCode] //处理教育部 if jsonData["area_code"].(string)=="100000"{ parentID="0" } //delete by zhangjun 2020-07-17 //if parentID==""{ // parentID = DataexDAO.GetParentIDBaseGO(areaCode) //} if parentID==""{ sqls2=append(sqls2,"update t_dataex_orgtree set parent_id =(select id from t_dataex_orgtree where org_type=1 and area_id='" + areaCode + "') where id='"+IDs[no] +"'") } }else { if jsonData["xxjbzm"].(string)=="811"{ areaId=jsonData["province_code"].(string) }else if jsonData["xxjbzm"].(string)=="821" { areaId=jsonData["city_code"].(string) }else{ areaId=jsonData["area_code"].(string) } parentID = parentMap[jsonData["area_code"].(string)] //if parentID==""{ // parentID = DataexDAO.GetParentIDBaseGO(jsonData["area_code"].(string)) //} if parentID==""{ sqls2=append(sqls2,"update t_dataex_orgtree set parent_id =(select id from t_dataex_orgtree where org_type=1 and area_id='" + jsonData["area_code"].(string) + "') where id='"+IDs[no] +"'") } } } //是否需要刷新 机构访问控制缓存 if Contains( CacheUtil.PARENT_IDS,parentID)>-1{ refresh=true } var provinceId = jsonData["province_code"].(string) var cityId="" if jsonData["city_code"].(string) == "" || jsonData["city_code"].(string) == "-1" { cityId = jsonData["province_code"].(string) } else { cityId = jsonData["city_code"].(string) } //var areaId="" //if jsonData["district_code"].(string) == "" || jsonData["district_code"].(string) == "-1" { // areaId = cityId //} else { // areaId = jsonData["district_code"].(string) //} if Contains(updateIDs, IDs[no])>-1 { sql = "update t_dataex_orgtree set org_name = '" + jsonData["org_name"].(string)+"',org_type="+ orgType +",school_type='"+schoolType+"',parent_id ='" + parentID + "',province_id='"+provinceId+"',city_id='"+cityId+"',area_id='"+areaId+"',area_id2='"+areaId2+"',area_id3='"+areaId3+"',change_time='"+time.Now().Format("2006-01-02 15:04:05")+"' where id='" + IDs[no] + "'" }else { sql = "insert into t_dataex_orgtree (id,org_name,org_type,school_type,parent_id,province_id,city_id,area_id,area_id2,area_id3,create_time,delete_flag,enable_flag) values ('"+ jsonData["org_id"].(string)+"','"+jsonData["org_name"].(string)+"',"+orgType+",'"+schoolType+"','"+parentID+"','"+provinceId+"','"+cityId+"','"+areaId+"','"+"','"+areaId2+"','"+"','"+areaId3+"','"+time.Now().Format("2006-01-02 15:04:05")+"',-1,1)" } sqls=append(sqls,sql) } DbUtil.Engine.Sqls(sqls).Execute() if len(sqls2)>0{ DbUtil.Engine.Sqls(sqls2).Execute() } //缓存命中、缓存为空、parent_id未知 刷新缓存 if refresh || len(CacheUtil.PARENT_IDS)==0 || len(sqls2)>0{ CacheUtil.RefreshOrgtree() } } func Contains(array interface{}, val interface{}) (index int) { index = -1 switch reflect.TypeOf(array).Kind() { case reflect.Slice: { s := reflect.ValueOf(array) for i := 0; i < s.Len(); i++ { if reflect.DeepEqual(val, s.Index(i).Interface()) { index = i return index } } } } return index }