You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

367 lines
9.3 KiB

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
}