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.

227 lines
5.6 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package DataexService
import (
"dsDataex/MyService/DataEX/DataexDAO"
"dsDataex/MyService/MySwagger"
"dsDataex/Utils/CacheUtil"
"dsDataex/Utils/ConfigUtil"
"dsDataex/Utils/DbUtil"
"encoding/json"
"fmt"
"strconv"
"time"
)
func LuaOrgtreeProcBatch(datas []MySwagger.Data) {
var IDs []string
var areaIDs []string
for no := 0; no < len(datas) && no < 1000; no++ {
var jsonData map[string]interface{}
err := json.Unmarshal([]byte(datas[no].Data), &jsonData)
if err != nil {
fmt.Println(err)
}
var id=strconv.FormatFloat(jsonData["org_id"].(float64), 'f', -1, 64)
//change by zhangjun 2020-07-23
//IDs =append(IDs,strings.ToLower(id))
IDs =append(IDs,id)
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{}
err := json.Unmarshal([]byte(datas[no].Data), &jsonData)
if err != nil {
fmt.Println(err)
}
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"{
//默认-1 1:小学2:初中3:高中4:完全中学5:九年一贯制6:十二年一贯制7:大学8:职业9:幼儿 10小幼一体 11小幼初一体
switch jsonData["school_type"].(float64) {
case 1:
schoolType="211"
break
case 2:
schoolType="311"
break
case 3:
schoolType="342"
break
case 4:
schoolType="341"
break
case 5:
schoolType="312"
break
case 6:
schoolType="345"
break
case 7:
schoolType="411"
break
case 8:
schoolType="414"
break
case 9:
schoolType="111"
break
case 10:
schoolType="211"
break
case 11:
schoolType="312"
break
}
}
if ConfigUtil.ROOT_ORGNAME == jsonData["org_name"].(string) {
parentID = "-1"
} else {
if orgType=="1" {
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 {
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+"',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,create_time,delete_flag,enable_flag) values ('"+ IDs[no] +"','"+jsonData["org_name"].(string)+"',"+orgType+",'"+schoolType+"','"+parentID+"','"+provinceId+"','"+cityId+"','"+areaId+"','"+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()
}
}