1.原因
由于系统标准功能录入太过于繁琐如下图,如果碰到要录几十个方法的时候就无法满足客户的需求。在工厂内无法普及,我们使用二开界面批量保存,并且和系统做交互计算
2.解决办法
提供行专列的批量保存的方式,后台使用ODATA调用结果代码如下图
/// 说明:线程调用ODATA(在线程里面循环的原因是,同时调用多个ODATA会导致方法无法正确的结束,所以在线程里面循环)
/// </summary>
/// <returns>
/// </returns>
public void threadListSave(List<RndtScMeCell> cells, List<CellValue> valueInfo, List<RndtLu> LUlist)
{
foreach (var value in valueInfo)
{
var cell = cells.Where(p => p.SC == value.SC && p.PG == value.PG && p.PGNODE == value.PGNODE && p.PA == value.PA && p.PANODE == value.PANODE && p.ME == value.ME && p.MENODE == value.MENODE && p.CELL_SHORT_DESC == value.Key).FirstOrDefault();
var client = new RestClient("http://" + LIMSURL + "/odata/RndvScMeCell(" + cell.SC + "," + cell.PG + "," + cell.PGNODE + "," + cell.PA + "," + cell.PANODE + "," + cell.ME + "," + cell.MENODE + "," + cell.CELL + ")/Update");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", BasicDate);
request.AddHeader("Content-Type", "application/json");
var VALUE_F = "";
if (IsNumeric(value.Value) == false)
{
VALUE_F = "null";
}
else
{
VALUE_F = value.Value;
}
request.AddParameter("application/json", "{\r\n\"VALUE_F\":" + VALUE_F + ",\r\n\"VALUE_S\":\"" + ExecResultText(cell, value.Value, LUlist) + "\"\r\n\r\n}\r\n", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
}
}