using Cksoft.Data;
using Cksoft.Data.Repository;
using Cksoft.Unity;
using Cksoft.Unity.Log4NetConfig;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using WebApplet.Controllers;
using WebApplet.Models;
namespace DllEapDal.OFILM
{
public class SampleDal
{
private readonly IDatabase Db = null;
public SampleDal()
{
}
public SampleDal(IDatabase db)
{
Db = db;
}
///
/// 获取当前机台的相关参数
///
///
///
public string Get(string mId)
{
string sql = $@"SELECT Remark from macstatus01 where MacCode='{mId}'";
string type = Db.FindObject(sql).ToString();
int x = type.IndexOf("-") > 0 ? type.IndexOf("-") : type.IndexOf(" ");
return type.Substring(0, x);
}
public string GetMacNumber(string mId)
{
string sql = $@"select macnumber from machinenumber where MacId=(select id from machine where FCode='{mId}')";
return Convert.ToString(Db.FindObject(sql));
}
///
/// 获取该机台的所有参数
///
///
///
///
public SampleStandard MesGet(string mId, string type, string macNum)
{
QisCheck qis = Db.FindList($@"select mac_id macId,Material_NO materialNo,STANDARD_XOFFSET sXOffset,STANDARD_YOFFSET sYOffset,STANDARD_ROTATE sTOffset,WARNING_XOFFSET wXOffset,WARNING_YOFFSET wYOffset,WARNING_ROTATE wTOffset,ABNORMAL_XOFFSET aXOffset,ABNORMAL_YOFFSET aYOffset,ABNORMAL_ROTATE aTOffset FROM ofg_qis.view_mfg_sample_check where mac_id='{mId}' and Material_NO='{type}'")?.FirstOrDefault();
if (qis!=null)
{
string str = "";
Para s = new Para();
s.MId = mId;
s.Type = type;
s.Macnum = macNum;
s.X = qis.sXOffset ;
s.Y = qis.sYOffset;
s.T = qis.sTOffset;
s.X1 = str + qis.wXOffset;
s.X2 = str + qis.aXOffset;
s.Y1 = str + qis.wYOffset;
s.Y2 = str + qis.aYOffset;
s.T1 = str + qis.wTOffset;
s.T2 = str + qis.aTOffset;
return new SampleStandard()
{
code = "1",
data = s
};
}
else
{
return new SampleStandard()
{
code = "0",
msg="未查询到该机台及机种对应到的sample值请维护后重试"
};
}
}
public async Task GetParamsAsync(ParamModel paramModel)
{
try
{
SampleRes s = new SampleRes();
string url = AppConfigurtaionServices.Configuration["url"]; ;
string macCode = paramModel.MacCode;
Stopwatch sw = new Stopwatch();
sw.Reset();
sw.Start();
var paras = paramModel.Paras;//new string[] { "283" };
var obj = new MachineInfo { EquipmentID = macCode, ParamsList = paras };
HttpClient client = new HttpClient(new HttpClientHandler
{
AutomaticDecompression = System.Net.DecompressionMethods.GZip | System.Net.DecompressionMethods.Deflate
});
client.DefaultRequestHeaders.Add("Method", "POST");
client.DefaultRequestHeaders.Add("ContentType", "multipart/form-data; charset=utf-8");
var content = new MultipartFormDataContent();
var uri = new Uri(url);
var equipmentId = new ByteArrayContent(Encoding.UTF8.GetBytes(obj.EquipmentID));
content.Add(equipmentId, "EquipmentID");
for (int i = 0; i < obj.ParamsList.Count(); i++)
{
var temp = new ByteArrayContent(Encoding.UTF8.GetBytes(obj.ParamsList.ElementAt(i)));
content.Add(temp, $"ParamsList[{i}]");
}
client.Timeout = new TimeSpan(0, 0, 600);
LogHelper.LogError("请求地址: " + url + "请求内容: " + content.ToJson(), "DA sample 校验", string.Empty);
var result = await client.PostAsync(uri, content);
sw.Stop();
// Console.WriteLine("请求用时:" + sw.ElapsedMilliseconds / 1000);
if (result == null || result.IsSuccessStatusCode == false)
{
Console.WriteLine("----------------");
LogHelper.LogError("请求返回的结果" + result.ToJson(), "DA sample 校验", string.Empty);
Console.WriteLine(result);
Console.WriteLine("----------------");
}
if (result != null && result.IsSuccessStatusCode)
{
var bytes = result.Content.ReadAsByteArrayAsync().Result;
LogHelper.LogError("请求返回的结果" + Encoding.UTF8.GetString(bytes), "DA sample 校验", string.Empty);
s = JsonConvert.DeserializeObject(Encoding.UTF8.GetString(bytes));
return s;
}
s.code = "fail";
return s ;
}
catch (Exception ex)
{
SampleRes s = new SampleRes();
LogHelper.LogError(ex.ToString(), "DA sample 校验", string.Empty);
s.code = "fail";
return s;
}
}
public bool Set(Sample sample, string message)
{
/*using (IDatabase currDb = DbFactory.Base("qis"))
{
QisCheck qis = currDb.FindList($@"select mac_id macId,Material_NO materialNo,STANDARD_XOFFSET sXOffset,STANDARD_YOFFSET sYOffset,STANDARD_ROTATE sTOffset,WARNING_XOFFSET wXOffset,WARNING_YOFFSET wYOffset,WARNING_ROTATE wTOffset,ABNORMAL_XOFFSET aXOffset,ABNORMAL_YOFFSET aYOffset,ABNORMAL_ROTATE aTOffset FROM ofg_qis.view_mfg_sample_check where mac_id='{sample.macId}' and Material_NO='{sample.materialNo}'")?.FirstOrDefault();
if (qis != null)
{*/
if(sample!=null)
{
DaSample ds = new DaSample()
{
MacId = Convert.ToInt32(Db.FindObject($@"select id from machine where FCode='{sample.macId}'")),
Type = sample.materialNo,
Time = Convert.ToDateTime(sample.sTime),
X = sample.xOffset,
Y = sample.yOffset,
T = sample.tOffset,
RecCode = sample.userId,
Result = message
};
if (Db.InsertFor(ds, sample.userId) > 0)
{
return true;
}
else
{
return false;
}
}
return false;
}
#region 暂时用不到
///
/// sql语句的生成
///
///
///
/* public Sample Set(Sample sample)
{
string sql = $@"select e.FName as Factory,d.FName as Plant , c.FName as Floor ,f.pcode as PCode,a.Fcode as MacCode,g.MacNumber as MacNum
FROM machine AS a
LEFT JOIN factoryregion AS b ON a.RegionId = b.id
INNER JOIN factoryregion AS c ON b.ParentId = c.id
INNER JOIN factoryregion AS d ON c.ParentId = d.id
INNER JOIN factoryregion AS e ON d.ParentId = e.id
INNER JOIN mactprocess AS f ON a.id = f.MacID
LEFT JOIN machinenumber AS g ON a.id = g.macid where a.Fcode='{sample.MId}'";
IEnumerable s = Db.FindList(sql);
foreach (Sample item in s)
{
sample.Factory = item.Factory;
sample.Plant = item.Plant;
sample.Floor = item.Floor;
sample.PCode = item.PCode;
}
DaSample ds = new DaSample();
ds.MacId = Convert.ToInt32(Db.FindObject($@"select ID FROM machine where FCode='{sample.MId}'"));
ds.Type = sample.Type;
ds.Time = sample.STime;
ds.X = sample.X;
ds.Y = sample.Y;
ds.T = sample.T;
ds.RecCode = sample.UserId;
Db.InsertFor(ds, sample.UserId);
return sample;
}*/
#endregion
}
}