private void okButton_Click(object sender, EventArgs e) { string[] services = servicesText.Text.Split('\n'); List <layeInfo> layeInfos = new List <layeInfo>(); for (int i = 0; i < services.Length; i++) { //单个服务 layeInfo layeInf = new layeInfo(); bool isLayerInfo = getLayerInfo(services[i], ref layeInf); if (!isLayerInfo) { return; } if (layeInf.layerorder.Count != 0) { layeInfos.Add(layeInf); } } if (!isKeyField.Checked) { JsonSerializerSettings jsetting = new JsonSerializerSettings(); jsetting.NullValueHandling = NullValueHandling.Ignore; configText.Text = ConvertJsonString(JsonConvert.SerializeObject(layeInfos, Formatting.Indented, jsetting)); } else { configText.Text = ConvertJsonString(JsonConvert.SerializeObject(layeInfos)); } }
private void button1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(configJsonUrl.Text) || string.IsNullOrEmpty(checkConfigJsonUrl.Text)) { MessageBox.Show("两个地址都不能为空!"); return; } servicesText.Text = ""; var configJsonObject = JObject.Parse(HttpApi(configJsonUrl.Text)); var layerList = configJsonObject["map"]["operationallayers"]; var checkConfigJsonObject = JObject.Parse(HttpApi(checkConfigJsonUrl.Text)); var layersInfo = checkConfigJsonObject["layersInfo"]; for (var j = 0; j < layersInfo.Count(); j++) { string id = Convert.ToString(layersInfo[j]["id"]), url = ""; bool ismatch = true; if (layerList.Where(a => Convert.ToString(a["label"]) == Convert.ToString(layersInfo[j]["id"])).Count() > 0) { var layer = layerList.Where(a => Convert.ToString(a["label"]) == Convert.ToString(layersInfo[j]["id"])).First(); layeInfo layeInf = new layeInfo(); if (getLayerInfo(Convert.ToString(layer["url"]), ref layeInf)) { id = Convert.ToString(layer["label"]); url = Convert.ToString(layer["url"]); for (int k = 0; k < layeInf.fields.Count; k++) { if (layersInfo[j]["fields"].Where(a => Convert.ToString(a["layername"]) == layeInf.fields[k].layername).Count() > 0) { foreach (var ite in layeInf.fields[k].value) { var array = layersInfo[j]["fields"].Where(a => Convert.ToString(a["layername"]) == layeInf.fields[k].layername).ToList(); if (array[0]["value"].Where(a => Convert.ToString(a["alias"]) == ite.alias).Count() == 0) { ismatch = false; break; } } } else { ismatch = false; break; } if (!ismatch) { break; } } } } else { servicesText.AppendText(id + "----------未找到的id,请删除此行" + url + "\r\n"); } if (!ismatch) { servicesText.AppendText(id + "@" + url + "\r\n"); } } servicesText.Text = servicesText.Text.Trim(); }
private bool getLayerInfo(string service, ref layeInfo layeInf) { //是否过滤图层名,字段,单位 bool isFilterLayerName = false, isFilterField = false, isFilterUnit = false; string[] layerName_wordArry = new string[] { "" }, field_wordArry = new string[] { "" }, Unit_wordArry = new string[] { "" }; //过滤图层名 isFilterLayerName = isFilter(ref layerName_wordArry, layerNameKeyWord.Text); //过滤字段名 isFilterField = isFilter(ref field_wordArry, keyWord.Text); //过滤单位名 isFilterUnit = isFilter(ref Unit_wordArry, unitKeyWord.Text); //单个服务 layeInf.layerorder = new List <string>(); layeInf.fields = new List <fieldsInfo>(); var layerId = ""; if (service.Contains("@")) { layerId = service.Substring(0, service.IndexOf("@")); service = service.Substring(service.IndexOf("@") + 1); } var layersObject = JObject.Parse(HttpApi(service + "?f=pjson" + getToken(service))); string lname = HttpUtility.UrlDecode(service.Split('/')[(service.Split('/').Length - 2)], System.Text.Encoding.UTF8); if (!string.IsNullOrEmpty(layerId)) { layeInf.id = layerId; } else { layeInf.id = lname; } layeInf.label = lname; layeInf.title = lname; layeInf.sub_title = ""; layeInf.body_sub_title = ""; layeInf.details = new List <string>(); //图层数 if (layersObject["layers"] == null) { MessageBox.Show("请检查exe.config(是否添加token):" + layeInf.id + "@" + service); return(false); } int layerNum = layersObject["layers"].Count(); for (int j = 0; j < layerNum; j++) { var layerObject = JObject.Parse(HttpApi(service + "//" + j + "?f=pjson" + getToken(service))); string layerName = Convert.ToString(layerObject["name"]); //判断是否过滤该图层 bool isLayerNameContinue = true; if (isFilterLayerName) { foreach (var ite in layerName_wordArry) { if (layerName == ite) { isLayerNameContinue = false; break; } } } if (!isLayerNameContinue) { continue; } //过滤图层名不包含中文 if (chineseLayerName.Checked && !System.Text.RegularExpressions.Regex.IsMatch(layerName, "[\u4e00-\u9fa5]")) { continue; } //单个图层 fieldsInfo fieldInf = new fieldsInfo(); fieldInf.layername = layerName; fieldInf.keyField = ""; if (!isKeyField.Checked) { fieldInf.keyField = null; } fieldInf.value = new List <valueInfo>(); var fields = layerObject["fields"]; foreach (var item in fields) { string fieldName = Convert.ToString(item["name"]); if (!string.IsNullOrEmpty(keyWord.Text)) { bool isContinue = true; if (isFilterField) { foreach (var ite in field_wordArry) { if (fieldName.ToLower() == ite.ToLower()) { isContinue = false; break; } } } if (!isContinue) { continue; } } //过滤字段不包含中文 if (isEnglish.Checked && !System.Text.RegularExpressions.Regex.IsMatch(Convert.ToString(item["alias"]), "[\u4e00-\u9fa5]")) { continue; } //过滤重复别名 if (fieldInf.value.FindIndex(a => a.alias == Convert.ToString(item["alias"])) != -1) { continue; } valueInfo val = new valueInfo(); val.name = fieldName; val.alias = Convert.ToString(item["alias"]); //提取单位关键字 bool isKeyWord = true; string unitWord = ""; if (isFilterUnit) { foreach (var ite in Unit_wordArry) { if (val.alias.Contains(ite)) { isKeyWord = false; unitWord = ite; break; } } } if (!isKeyWord) { string aliasString = Convert.ToString(item["alias"]); if (aliasString.IndexOf("(") != -1) { val.@default = aliasString.Substring(0, aliasString.IndexOf("(")); } else if (aliasString.IndexOf("(") != -1) { val.@default = aliasString.Substring(0, aliasString.IndexOf("(")); } else { MessageBox.Show("该服务" + layeInf.id + "@" + service + "的面积字段填写不规范,请检查。面积单位:" + unitWord + "。 请在单位关键字删除该单位后生成json并手工提取单位关键字!!"); return(false); } val.unit = unitWord; } else { val.@default = Convert.ToString(item["alias"]); val.unit = ""; } fieldInf.value.Add(val); } if (fieldInf.value.Count != 0) { layeInf.fields.Add(fieldInf); layeInf.layerorder.Add(layerName); } } return(true); }