using System;
|
using System.Collections.Generic;
|
using System.Globalization;
|
using System.Linq;
|
using System.Reflection;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Comm;
|
using WIDESEA_Core.EFDbContext;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_WCS.IRepositories;
|
using WIDESEA_WCS.Repositories;
|
using WIDESEA_WCS.WCSClient;
|
using WIDESEA_WMS.IRepositories;
|
using WIDESEA_WMS.Repositories;
|
using static WIDESEA_Comm.Wheel_trace;
|
|
namespace WIDESEA_WCS
|
{
|
public class Wheel_info_trace
|
{
|
/// <summary>
|
/// 查询车轮上线
|
/// </summary>
|
/// <param name="client"></param>
|
public static void Wheel_online(PLCClient client)
|
{
|
VOLContext context = new VOLContext();
|
Idt_info_traceRepository traceRepository = new dt_info_traceRepository(context);
|
IVV_Mes_WorkinfoRepository workinfoRepository = new VV_Mes_WorkinfoRepository(context);
|
PropertyInfo[] propertyInfos = typeof(Wheel_online).GetProperties();
|
var groups = client.itemGroups.Where(x => x.opratortype == "trace_online").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
|
foreach (var key in groups)
|
{
|
try
|
{
|
Wheel_online StackerDBItem = new Wheel_online();
|
foreach (var propertyInfo in propertyInfos)
|
{
|
if (propertyInfo.Name == "Name")
|
{
|
StackerDBItem.Name = key.Key;
|
}
|
else
|
{
|
DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
|
if (group != null)
|
{
|
var readData = DBExtension.Read(group, client);
|
switch (propertyInfo.Name)
|
{
|
case "oi_on":
|
StackerDBItem.oi_on = Convert.ToByte(readData);
|
break;
|
case "o_wp_id":
|
StackerDBItem.o_wp_id = Convert.ToString(readData);
|
break;
|
case "o_online_time":
|
StackerDBItem.o_online_time = readData.ToString();
|
break;
|
}
|
}
|
}
|
}
|
#region 替换老PCS时使用
|
if (/*StackerDBItem.oi_on == 1*/true)
|
{
|
if (string.IsNullOrEmpty(StackerDBItem.o_wp_id)) throw new Exception($"{StackerDBItem.Name}:SN号为空");
|
if (string.IsNullOrEmpty(StackerDBItem.o_online_time)) throw new Exception($"{StackerDBItem.Name}:上线时间为空");
|
var info = traceRepository.Find(x => x.trace_SN == StackerDBItem.o_wp_id).FirstOrDefault();
|
if (info != null) throw new Exception();
|
info = new dt_info_trace();
|
info.trace_SN = StackerDBItem.o_wp_id;
|
var time = DateTime.ParseExact(StackerDBItem.o_online_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture);
|
//var time1 = DateTime.ParseExact(StackerDBItem.o_online_time, "yyyyMMddHHmmss", new CultureInfo("zh-CN", true));
|
info.trace_status = "待加工";
|
info.trace_online_time = time;
|
info.trace_line_number = StackerDBItem.Name;
|
var Work = workinfoRepository.Find(x => x.SN == info.trace_SN && x.processCode == "17").FirstOrDefault();
|
if (Work != null)
|
{
|
info.trace_workOrder = Work.workOrder;
|
info.trace_productName = Work.productName;
|
info.trace_drawingNo = Work.drawingNo;
|
info.trace_heatBatchID = Work.heatBatchID;
|
info.trace_heatID = Work.heatID;
|
info.trace_billetID = Work.billetID.ToString();
|
}
|
traceRepository.Add(info, true);
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
}
|
}
|
/// <summary>
|
/// 查询车轮加工
|
/// </summary>
|
/// <param name="client"></param>
|
public static void Wheel_machine(PLCClient client)
|
{
|
VOLContext context = new VOLContext();
|
Idt_info_traceRepository traceRepository = new dt_info_traceRepository(context);
|
PropertyInfo[] propertyInfos = typeof(Wheel_Machine).GetProperties();
|
var groups = client.itemGroups.Where(x => x.opratortype == "trace_Machine").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
|
foreach (var key in groups)
|
{
|
try
|
{
|
Wheel_Machine StackerDBItem = new Wheel_Machine();
|
foreach (var propertyInfo in propertyInfos)
|
{
|
if (propertyInfo.Name == "Name")
|
{
|
StackerDBItem.Name = key.Key;
|
}
|
else
|
{
|
DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
|
if (group != null)
|
{
|
var readData = DBExtension.Read(group, client);
|
switch (propertyInfo.Name)
|
{
|
case "oi_on":
|
StackerDBItem.oi_on = Convert.ToByte(readData);
|
break;
|
case "o_wp_id":
|
StackerDBItem.o_wp_id = Convert.ToString(readData);
|
break;
|
case "o_mach_start_time":
|
StackerDBItem.o_mach_start_time = readData.ToString();
|
break;
|
case "o_mach_finish_time":
|
StackerDBItem.o_mach_finish_time = readData.ToString();
|
break;
|
case "o_operator":
|
StackerDBItem.o_operator = readData.ToString();
|
break;
|
case "o_shift":
|
StackerDBItem.o_shift = readData.ToString();
|
break;
|
case "o_wp_status":
|
StackerDBItem.o_wp_status = Convert.ToInt16(readData);
|
break;
|
case "o_wp_process":
|
StackerDBItem.o_wp_process = Convert.ToInt16(readData);
|
break;
|
}
|
}
|
}
|
}
|
#region 替换老PCS时使用
|
if (/*StackerDBItem.oi_on == 1*/true)
|
{
|
if (string.IsNullOrEmpty(StackerDBItem.o_wp_id)) throw new Exception($"{StackerDBItem.Name}:SN号为空");
|
var info = traceRepository.Find(x => x.trace_SN == StackerDBItem.o_wp_id).FirstOrDefault();
|
if (info != null)
|
{
|
if (!string.IsNullOrEmpty(StackerDBItem.o_mach_start_time))
|
info.trace_mach_start_time = DateTime.ParseExact(StackerDBItem.o_mach_start_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture);
|
if (!string.IsNullOrEmpty(StackerDBItem.o_mach_finish_time))
|
info.trace_mach_finish_time = DateTime.ParseExact(StackerDBItem.o_mach_finish_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture);
|
if (!string.IsNullOrEmpty(StackerDBItem.o_operator)) info.trace_operator = StackerDBItem.o_operator;
|
if (!string.IsNullOrEmpty(StackerDBItem.o_shift)) info.trace_shift = info.trace_shift;
|
info.trace_mach_statu = StackerDBItem.o_wp_status;
|
info.trace_process = StackerDBItem.o_wp_process;
|
info.trace_mach_number = StackerDBItem.Name;
|
traceRepository.Update(info, x => new { x.trace_mach_start_time, x.trace_mach_finish_time, x.trace_operator, x.trace_shift, x.trace_mach_statu, x.trace_process, x.trace_mach_number }, true);
|
}
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
}
|
}
|
/// <summary>
|
/// 查询车轮下线
|
/// </summary>
|
/// <param name="client"></param>
|
public static void Wheel_offline(PLCClient client)
|
{
|
VOLContext context = new VOLContext();
|
Idt_info_traceRepository traceRepository = new dt_info_traceRepository(context);
|
PropertyInfo[] propertyInfos = typeof(Wheel_offline).GetProperties();
|
var groups = client.itemGroups.Where(x => x.opratortype == "trace_offline").OrderBy(x => x.Methods).ThenBy(x => x.name).GroupBy(x => x.Methods).ToList();
|
foreach (var key in groups)
|
{
|
try
|
{
|
Wheel_offline StackerDBItem = new Wheel_offline();
|
foreach (var propertyInfo in propertyInfos)
|
{
|
if (propertyInfo.Name == "Name")
|
{
|
StackerDBItem.Name = key.Key;
|
}
|
else
|
{
|
DBItemGroup group = key.FirstOrDefault(x => x.name == propertyInfo.Name);
|
if (group != null)
|
{
|
var readData = DBExtension.Read(group, client);
|
switch (propertyInfo.Name)
|
{
|
case "oi_on":
|
StackerDBItem.oi_on = Convert.ToByte(readData);
|
break;
|
case "o_wp_id":
|
StackerDBItem.o_wp_id = Convert.ToString(readData);
|
break;
|
case "o_offline_time":
|
StackerDBItem.o_offline_time = readData.ToString();
|
break;
|
case "o_direction":
|
StackerDBItem.o_direction = Convert.ToByte(readData);
|
break;
|
}
|
}
|
}
|
}
|
#region 替换老PCS时使用
|
if (/*StackerDBItem.oi_on == 1*/true)
|
{
|
if (string.IsNullOrEmpty(StackerDBItem.o_wp_id)) throw new Exception($"{StackerDBItem.Name}:SN号为空");
|
var info = traceRepository.Find(x => x.trace_SN == StackerDBItem.o_wp_id).FirstOrDefault();
|
if (info != null)
|
{
|
if (!string.IsNullOrEmpty(StackerDBItem.o_offline_time))
|
info.trace_offline_time = DateTime.ParseExact(StackerDBItem.o_offline_time, "yyyyMMddHHmmss", CultureInfo.CurrentCulture);
|
info.trace_direction = StackerDBItem.o_direction.ToString();
|
//info.trace_line_number = info.trace_line_number + StackerDBItem.Name;
|
traceRepository.Update(info, x => new { x.trace_offline_time, x.trace_direction }, true);
|
}
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
#endregion
|
}
|
catch (Exception ex)
|
{
|
//client.Write(key.FirstOrDefault(x => x.name == "oi_on").dbAddress, (byte)0);//信号复位
|
}
|
}
|
}
|
|
|
}
|
}
|