|
|
@@ -1,5 +1,6 @@
|
|
|
using Fine.OPCDaClient9000.App;
|
|
|
using Fine.OPCDaClient9000.DataMode;
|
|
|
+using Fine.OPCDaClient9000.Excel;
|
|
|
using Fine.OPCDaClient9000.Util;
|
|
|
using Newtonsoft.Json;
|
|
|
using System;
|
|
|
@@ -72,7 +73,8 @@ namespace Fine.OPCDaClient9000
|
|
|
}
|
|
|
|
|
|
|
|
|
- private void Search() {
|
|
|
+ private void Search()
|
|
|
+ {
|
|
|
if (string.IsNullOrEmpty(textBox1.Text))
|
|
|
{
|
|
|
return;
|
|
|
@@ -129,7 +131,7 @@ namespace Fine.OPCDaClient9000
|
|
|
}
|
|
|
textBox2.Text = listBox1.SelectedItem.ToString();
|
|
|
textBox3.Text = apis.FirstOrDefault().path;
|
|
|
- textBox5.Text = JsonBeauty.Execute(JsonConvert.SerializeObject(AppUtil.newsConfig.FirstOrDefault(a => a.Data.Exists(b => b.APIName == listBox1.SelectedItem.ToString())).Data.FirstOrDefault(c => c.APIName == listBox1.SelectedItem.ToString())));
|
|
|
+ textBox5.Text = JsonBeauty.Execute(JsonConvert.SerializeObject(AppUtil.newsConfig.FirstOrDefault(a => a.Data.Exists(b => b.APIName == listBox1.SelectedItem.ToString())).Data.FirstOrDefault(c => c.APIName == listBox1.SelectedItem.ToString()),new JsonSerializerSettings { NullValueHandling= NullValueHandling.Ignore }));
|
|
|
}
|
|
|
|
|
|
private void button3_Click(object sender, EventArgs e)
|
|
|
@@ -151,5 +153,341 @@ namespace Fine.OPCDaClient9000
|
|
|
firstapi.Data.Insert(0, newmoda);
|
|
|
File.WriteAllText(firstapi.path, JsonBeauty.Execute(JsonConvert.SerializeObject(firstapi.Data, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })));
|
|
|
}
|
|
|
+
|
|
|
+ private void button5_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ var excel = Path.Combine(AppContext.BaseDirectory, "Excel", "模板下载.xlsx");
|
|
|
+ FileStream file = new FileStream(path: excel, mode: FileMode.Open, access: FileAccess.Read);
|
|
|
+ OpenFileDialog open = new OpenFileDialog();
|
|
|
+ var result = open.ShowDialog();
|
|
|
+ if (result == DialogResult.OK)
|
|
|
+ {
|
|
|
+ MessageBox.Show("123");
|
|
|
+ }
|
|
|
+ //using (MemoryStream memory=new MemoryStream())
|
|
|
+ //{
|
|
|
+ // memory.CopyTo(file);
|
|
|
+ // memory.Close();
|
|
|
+ //}
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void button4_Click(object sender, EventArgs e)
|
|
|
+ {
|
|
|
+ //定义一个文件打开控件
|
|
|
+ OpenFileDialog ofd = new OpenFileDialog();
|
|
|
+ //设置打开对话框的初始目录,默认目录为exe运行文件所在的路径
|
|
|
+ ofd.InitialDirectory = Application.StartupPath;
|
|
|
+ //设置打开对话框的标题
|
|
|
+ ofd.Title = "请选择要打开的Excel文件";
|
|
|
+ //设置打开对话框可以多选
|
|
|
+ ofd.Multiselect = true;
|
|
|
+ //设置对话框打开的文件类型
|
|
|
+ ofd.Filter = "Excel文件|*.xlsx";
|
|
|
+ //设置文件对话框当前选定的筛选器的索引
|
|
|
+ ofd.FilterIndex = 2;
|
|
|
+ //设置对话框是否记忆之前打开的目录
|
|
|
+ ofd.RestoreDirectory = true;
|
|
|
+ if (ofd.ShowDialog() == DialogResult.OK)
|
|
|
+ {
|
|
|
+ MessageBox.Show(ofd.FileName);
|
|
|
+ var list = ExcelManager.Excel2Model<ExcelProjectModel>(ofd.FileName, "项目目录");
|
|
|
+ foreach (var item in list)
|
|
|
+ {
|
|
|
+ //处理基目录
|
|
|
+ var basepath = Path.Combine(AppContext.BaseDirectory, "config", "Router", item.模块名称);
|
|
|
+ if (!Directory.Exists(basepath))
|
|
|
+ {
|
|
|
+ Directory.CreateDirectory(basepath);
|
|
|
+ }
|
|
|
+ //处理文件
|
|
|
+ var getfileName = Path.Combine(basepath, item.配置文件名称 + "_Get.json");
|
|
|
+ var PostfileName = Path.Combine(basepath, item.配置文件名称 + "_Post.json");
|
|
|
+ //生成文件格式并保存
|
|
|
+ var apilist = ExcelManager.Excel2Model<ExcelAPIModel>(ofd.FileName, item.Sheet名称);
|
|
|
+ List<IoModal> getlist = new List<IoModal>();
|
|
|
+ List<IoModal> postlist = new List<IoModal>();
|
|
|
+ foreach (var api in apilist)
|
|
|
+ {
|
|
|
+ if (string.IsNullOrEmpty(api.方法))
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (api.方法.Trim().ToLower() == "get")
|
|
|
+ {
|
|
|
+ var iomodal = new IoModal()
|
|
|
+ {
|
|
|
+ APIName = api.Api名称.Trim(),
|
|
|
+ DelayTime = api.读写间隔,
|
|
|
+ IsCheck = api.是否检查 == "否" ? false : true,
|
|
|
+ Method = api.方法.Trim().ToLower(),
|
|
|
+ PType = 0,
|
|
|
+ Content = api.接口备注
|
|
|
+ };
|
|
|
+ var getwriteandgetkey = new List<WriteAndCheckKey>();
|
|
|
+ string[] writes = string.IsNullOrEmpty(api.写入点位) ? null : api.写入点位.Split('/');
|
|
|
+ string[] checks = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('/');
|
|
|
+ for (int i = 0; i < writes.Length; i++)
|
|
|
+ {
|
|
|
+ var moda = new WriteAndCheckKey();
|
|
|
+ var w = writes[i].Trim().Split('=');
|
|
|
+ moda.WriteTagName = w[0].Trim();
|
|
|
+ moda.StrValue = w[1].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ var c = checks[i].Trim().Split('=');
|
|
|
+ moda.CheckTagName = c[0].Trim();
|
|
|
+ moda.CheckValue = c[1].Trim();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda.CheckTagName = w[0].Trim();
|
|
|
+ moda.CheckValue = w[1].Trim();
|
|
|
+ }
|
|
|
+ getwriteandgetkey.Add(moda);
|
|
|
+ }
|
|
|
+ iomodal.Params = new List<Params>() { new Params { Param = "", keys = getwriteandgetkey } };
|
|
|
+ getlist.Add(iomodal);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (api.方法.Trim().ToLower() == "post")
|
|
|
+ {
|
|
|
+ var iomodal = new IoModal()
|
|
|
+ {
|
|
|
+ APIName = api.Api名称.Trim(),
|
|
|
+ DelayTime = api.读写间隔,
|
|
|
+ IsCheck = api.是否检查 == "否" ? false : true,
|
|
|
+ Method = api.方法.Trim().ToLower(),
|
|
|
+ Content = api.接口备注
|
|
|
+ };
|
|
|
+
|
|
|
+ if (api.Post类型.Trim() == "1")
|
|
|
+ {
|
|
|
+ iomodal.PType = EAPIparType.InOneVal;
|
|
|
+ var getwriteandgetkey = new List<WriteAndCheckKey>();
|
|
|
+ string[] writes = string.IsNullOrEmpty(api.写入点位) ? null : api.写入点位.Split('/');
|
|
|
+ string[] checks = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('/');
|
|
|
+ for (int i = 0; i < writes.Length; i++)
|
|
|
+ {
|
|
|
+ var moda = new WriteAndCheckKey();
|
|
|
+ //var w = writes[i].Trim().Split('=');
|
|
|
+ moda.WriteTagName = writes[i].Trim();
|
|
|
+ //moda.StrValue = w[1];
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda.CheckTagName = checks[i].Trim();
|
|
|
+ //moda.CheckValue = c[1];
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda.CheckTagName = writes[i].Trim();
|
|
|
+ }
|
|
|
+ getwriteandgetkey.Add(moda);
|
|
|
+ }
|
|
|
+ iomodal.Params = new List<Params>() { new Params { Param = "", keys = getwriteandgetkey } };
|
|
|
+ postlist.Add(iomodal);
|
|
|
+ }
|
|
|
+ else if (api.Post类型.Trim() == "21")
|
|
|
+ {
|
|
|
+ iomodal.PType = EAPIparType.inMultiValObj;
|
|
|
+ var getwriteandgetkey = new List<WriteAndCheckKey>();
|
|
|
+ string[] writes = string.IsNullOrEmpty(api.写入点位) ? null : api.写入点位.Split('/');
|
|
|
+ string[] checks = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('/');
|
|
|
+
|
|
|
+ var moda = new WriteAndCheckKey() { InputName = "Weight" };
|
|
|
+
|
|
|
+ moda.WriteTagName = writes[0].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda.CheckTagName = checks[0];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda.CheckTagName = writes[0];
|
|
|
+ }
|
|
|
+ getwriteandgetkey.Add(moda);
|
|
|
+ var moda2 = new WriteAndCheckKey() { InputName = "BranchNo" };
|
|
|
+
|
|
|
+ moda2.WriteTagName = writes[1].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda2.CheckTagName = checks[1];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda2.CheckTagName = writes[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ getwriteandgetkey.Add(moda2);
|
|
|
+ var moda3 = new WriteAndCheckKey() { InputName = "BrandNo" };
|
|
|
+
|
|
|
+ moda3.WriteTagName = writes[2].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda3.CheckTagName = checks[2];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda3.CheckTagName = writes[2];
|
|
|
+ }
|
|
|
+
|
|
|
+ getwriteandgetkey.Add(moda3);
|
|
|
+
|
|
|
+ iomodal.Params = new List<Params>() { new Params { Param = "", keys = getwriteandgetkey } };
|
|
|
+ postlist.Add(iomodal);
|
|
|
+ }
|
|
|
+ else if (api.Post类型.Trim() == "22")
|
|
|
+ {
|
|
|
+ iomodal.PType = EAPIparType.inMultiValObj;
|
|
|
+ var getwriteandgetkey = new List<WriteAndCheckKey>();
|
|
|
+ string[] writes = string.IsNullOrEmpty(api.写入点位) ? null : api.写入点位.Split('/');
|
|
|
+ string[] checks = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('/');
|
|
|
+
|
|
|
+ var moda = new WriteAndCheckKey() { InputName = "GDNum" };
|
|
|
+
|
|
|
+ moda.WriteTagName = writes[0].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda.CheckTagName = checks[0];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda.CheckTagName = writes[0];
|
|
|
+ }
|
|
|
+ getwriteandgetkey.Add(moda);
|
|
|
+ var moda2 = new WriteAndCheckKey() { InputName = "BranchNum" };
|
|
|
+
|
|
|
+ moda2.WriteTagName = writes[1].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda2.CheckTagName = checks[1];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda2.CheckTagName = writes[1];
|
|
|
+ }
|
|
|
+
|
|
|
+ getwriteandgetkey.Add(moda2);
|
|
|
+ var moda3 = new WriteAndCheckKey() { InputName = "BrandNum" };
|
|
|
+
|
|
|
+ moda3.WriteTagName = writes[2].Trim();
|
|
|
+ if (checks != null)
|
|
|
+ {
|
|
|
+ //var c = checks[i].Trim().Split('=');
|
|
|
+ moda3.CheckTagName = checks[2];
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ moda3.CheckTagName = writes[2];
|
|
|
+ }
|
|
|
+
|
|
|
+ getwriteandgetkey.Add(moda3);
|
|
|
+
|
|
|
+ iomodal.Params = new List<Params>() { new Params { Param = "", keys = getwriteandgetkey } };
|
|
|
+ postlist.Add(iomodal);
|
|
|
+ }
|
|
|
+ else if (api.Post类型.Trim() == "3")
|
|
|
+ {
|
|
|
+ iomodal.PType = EAPIparType.InSel;
|
|
|
+ iomodal.Params = new List<Params>();
|
|
|
+ var pars = api.Post参数.Replace(",", ",").Split(',');
|
|
|
+ var writes = api.写入点位.Split('\n');
|
|
|
+ var reads = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('\n');
|
|
|
+ for (int i = 0; i < pars.Length; i++)
|
|
|
+ {
|
|
|
+ var prams = new Params { Param = pars[i].Trim(), keys = new List<WriteAndCheckKey>() };
|
|
|
+ var wrts = writes[i].Split('/');
|
|
|
+ var chks = reads == null ? null : reads[i].Split('/');
|
|
|
+ for (int w = 0; w < wrts.Length; w++)
|
|
|
+ {
|
|
|
+ var wc = new WriteAndCheckKey { WriteTagName = wrts[w].Split('=')[0].Trim(), StrValue = wrts[w].Split('=')[1].Trim() };
|
|
|
+ if (chks != null)
|
|
|
+ {
|
|
|
+ wc.CheckTagName = chks[w].Split('=')[0].Trim();
|
|
|
+ wc.CheckValue = chks[w].Split('=')[1].Trim();
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ wc.CheckTagName = wrts[w].Split('=')[0].Trim();
|
|
|
+ wc.CheckValue = wrts[w].Split('=')[1].Trim();
|
|
|
+ }
|
|
|
+ prams.keys.Add(wc);
|
|
|
+ }
|
|
|
+
|
|
|
+ iomodal.Params.Add(prams);
|
|
|
+ }
|
|
|
+ postlist.Add(iomodal);
|
|
|
+ }
|
|
|
+ else if (api.Post类型.Trim() == "4")
|
|
|
+ {
|
|
|
+ iomodal.PType = EAPIparType.inSelAndMultiVal;
|
|
|
+ iomodal.Params = new List<Params>();
|
|
|
+ var pars = api.Post参数.Replace(",", ",").Split(',');
|
|
|
+ var writes = api.写入点位.Split('\n');
|
|
|
+ var reads = string.IsNullOrEmpty(api.检查点位) ? null : api.检查点位.Split('\n');
|
|
|
+ for (int i = 0; i < pars.Length; i++)
|
|
|
+ {
|
|
|
+ var prams = new Params { Param = pars[i].Trim(), keys = new List<WriteAndCheckKey>() };
|
|
|
+ var wrts = writes[i].Split('/');
|
|
|
+ var chks = reads == null ? null : reads[i].Split('/');
|
|
|
+
|
|
|
+ var wc = new WriteAndCheckKey();
|
|
|
+ wc.InputName = "BranchNum";
|
|
|
+ if (chks != null)
|
|
|
+ {
|
|
|
+ wc.CheckTagName = chks[0].Trim();
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ wc.CheckTagName = wrts[0].Trim();
|
|
|
+
|
|
|
+ }
|
|
|
+ prams.keys.Add(wc);
|
|
|
+
|
|
|
+ var wc1 = new WriteAndCheckKey();
|
|
|
+ wc1.InputName = "BrandNum";
|
|
|
+ if (chks != null)
|
|
|
+ {
|
|
|
+ wc1.CheckTagName = chks[1].Trim();
|
|
|
+
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ wc1.CheckTagName = wrts[1].Trim();
|
|
|
+
|
|
|
+ }
|
|
|
+ prams.keys.Add(wc1);
|
|
|
+
|
|
|
+
|
|
|
+ iomodal.Params.Add(prams);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ postlist.Add(iomodal);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ File.WriteAllText(getfileName, JsonBeauty.Execute(JsonConvert.SerializeObject(getlist, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })));
|
|
|
+ File.WriteAllText(PostfileName, JsonBeauty.Execute(JsonConvert.SerializeObject(postlist, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore })));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
}
|
|
|
}
|