using Furion;
|
using OfficeOpenXml.FormulaParsing.Excel.Functions.DateTime;
|
using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Linq.Expressions;
|
using System.Text;
|
using System.Threading.Tasks;
|
using WIDESEA_Common;
|
using WIDESEA_Common.DBHelper;
|
using WIDESEA_Common.EquipmentEnum;
|
using WIDESEA_Core.Extensions;
|
using WIDESEA_Core.Utilities;
|
using WIDESEA_Entity.DomainModels;
|
using WIDESEA_Services.Repositories;
|
using WIDESEA_WCS.WCSClient;
|
using static FreeSql.Internal.GlobalFilter;
|
|
namespace WIDESEA_WCS
|
{
|
public class AGVData
|
{
|
/// <summary>
|
/// AGV车辆信息显示
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetAgvStatusData(SaveModel model)
|
{
|
var response = new WebResponseContent();
|
try
|
{
|
if (WCSService.Clients == null)
|
{
|
return response.Error("");
|
}
|
string AGVName = model.MainData["AGVName"].ToString();
|
PLCClient client = WCSService.Clients.Find(X => X.PLCName == AGVName);
|
if (client == null) return response.Error("AGVPLC未连接");
|
//agv类型:0-潜伏型,1 - 牵引型,2 - 承载型,3 - 举升型,4 -辊道型,5 - 叉车型,6 - 其他
|
int agvType = 0;
|
//agv编号
|
int agvCode = 2;
|
//agv上下线状态,0-下线,1 - 上线
|
int agvOnline = 4;
|
//agv当前地标号
|
int agvRfidLabel = 6;
|
//agv当前x坐标值
|
int agvXcoordinate = 8;
|
//agv当前y坐标值
|
int agvYcoordinate = 12;
|
//agv运行状态 :0-停止,1 - 行驶,2 - 暂停
|
int agvStatus = 16;
|
//agv当前运行速度(mm / s)
|
int agvSpeed = 18;
|
//agv报警代码(按位状态提取,最多可表示32种报警
|
int agvAlarmCode = 20;
|
bool isFirst = true;
|
List<AGVStatus> statusList = new List<AGVStatus>();
|
while (true)
|
{
|
if (!isFirst)
|
{
|
agvType = agvType + 44;
|
agvCode = agvCode + 44;
|
agvOnline = agvOnline + 44;
|
agvRfidLabel = agvRfidLabel + 44;
|
agvXcoordinate = agvXcoordinate + 44;
|
agvYcoordinate = agvYcoordinate + 44;
|
agvStatus = agvStatus + 44;
|
agvSpeed = agvSpeed + 44;
|
agvAlarmCode = agvAlarmCode + 44;
|
}
|
AGVStatus aGVStatus = new AGVStatus();
|
aGVStatus.agvCode = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1001." + agvCode.ToString()).Content;
|
if (aGVStatus.agvCode > 0)
|
{
|
aGVStatus.agvType = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1001." + agvType.ToString()).Content;
|
aGVStatus.agvOnline = client.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB1001." + agvOnline.ToString()).Content == true ? "上 线" : "下 线";
|
aGVStatus.agvRfidLabel = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1001." + agvRfidLabel.ToString()).Content;
|
aGVStatus.agvXcoordinate = client.SiemensPLCClient.SiemensS7NetClient.ReadInt32("DB1001." + agvXcoordinate.ToString()).Content;
|
aGVStatus.agvYcoordinate = client.SiemensPLCClient.SiemensS7NetClient.ReadInt32("DB1001." + agvYcoordinate.ToString()).Content;
|
aGVStatus.agvStatus = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1001." + agvStatus.ToString()).Content;
|
aGVStatus.agvSpeed = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1001." + agvSpeed.ToString()).Content;
|
aGVStatus.agvAlarmCode = 0; //client.SiemensPLCClient.SiemensS7NetClient.Read("DB1001." + agvAlarmCode.ToString(), 32).Content;
|
statusList.Add(aGVStatus);
|
isFirst = false;
|
}
|
else
|
break;
|
}
|
//string data = string.Empty;
|
//foreach (var item in statusList)
|
//{
|
// data = JsonConvert.SerializeObject(new
|
// {
|
// title = item.agvCode,
|
// number = new
|
// {
|
// number = '[' + 120 + '}',
|
// toFixed = 1,
|
// textAlign = "left",
|
// content = "{nt}",
|
// style = new
|
// {
|
// fontSize = 26
|
// }
|
// }
|
// });
|
//}
|
response.OK(data: statusList);
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
|
return response;
|
}
|
|
|
/// <summary>
|
/// 任务完成量组装
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetAgvTaskInfozz(SaveModel model)
|
{
|
FreeDB freeDB = new FreeDB();
|
var response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
//Console.WriteLine(AGVName+"---"+DateTime.Now);
|
//Expression<Func<dt_agvtask_hty, bool>> upExpression = AGVName switch
|
//{
|
// "正极AGV调度" => x => x.agv_code.Contains("正极AGV调度"),
|
// "负极AGV调度" => x => x.agv_code.Contains("负极AGV调度"),
|
// "组装AGV调度" => x => x.agv_code.Contains("组装AGV调度"),
|
|
// _ => throw new NotImplementedException(),
|
//};
|
#region MyRegion
|
|
#endregion
|
List<string> strings1 = new List<string>();
|
|
List<int> tocount = new List<int>();
|
for (int i = 14; i >= 0; i--)
|
{
|
String time1 = DateTime.Now.Date.AddDays(-i).ToString("yyyy-MM-dd");
|
//DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
//Console.WriteLine($"time1:{time1}");
|
int upHty = freeDB.Select<dt_agvtask_hty>()
|
.Where(x => x.agv_code.Contains(AGVName) && x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count();
|
//int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)&& x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count;
|
tocount.Add(upHty);
|
//Console.WriteLine(AGVName + $"--{i}-");
|
strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
|
}
|
//for (int i = 14; i >= 0; i--)
|
//{
|
// //Console.WriteLine(AGVName + $"--{i}-" );
|
// strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
// DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
|
// DateTime time1 = DateTime.Now.Date.AddDays(-i);
|
|
// int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)).Where(x => x.agv_createtime < time && x.agv_createtime > time1 && x.agv_taskstate == "TaskState_Finished").ToList().Count;
|
// //Console.WriteLine(AGVName + $"-数量{upHty}--" + DateTime.Now);
|
|
|
//}
|
//Console.WriteLine(AGVName + "-4321--" + DateTime.Now);
|
return response.OK(data: new
|
{
|
upNum = tocount,
|
//upNum = ints,
|
//downNum = ints1,
|
//totalNum = ints2,
|
totalNum = strings1
|
|
});
|
|
}
|
catch (Exception ex)
|
{
|
//Console.WriteLine( "-errrr--" + DateTime.Now);
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
|
/// <summary>
|
/// 任务完成量正极
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetAgvTaskInfozj(SaveModel model)
|
{
|
FreeDB freeDB = new FreeDB();
|
var response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
//Console.WriteLine(AGVName + "---" + DateTime.Now);
|
//Expression<Func<dt_agvtask_hty, bool>> upExpression = AGVName switch
|
//{
|
// "正极AGV调度" => x => x.agv_code.Contains("正极AGV调度"),
|
// "负极AGV调度" => x => x.agv_code.Contains("负极AGV调度"),
|
// "组装AGV调度" => x => x.agv_code.Contains("组装AGV调度"),
|
|
// _ => throw new NotImplementedException(),
|
//};
|
#region MyRegion
|
|
#endregion
|
List<string> strings1 = new List<string>();
|
|
List<int> tocount = new List<int>();
|
for (int i = 14; i >= 0; i--)
|
{
|
String time1 = DateTime.Now.Date.AddDays(-i).ToString("yyyy-MM-dd");
|
//DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
//Console.WriteLine($"time1:{time1}");
|
int upHty = freeDB.Select<dt_agvtask_hty>()
|
.Where(x => x.agv_code.Contains(AGVName) && x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count();
|
//int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)&& x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count;
|
tocount.Add(upHty);
|
//Console.WriteLine(AGVName + $"--{i}-");
|
strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
|
}
|
//for (int i = 14; i >= 0; i--)
|
//{
|
// //Console.WriteLine(AGVName + $"--{i}-" );
|
// strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
// DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
|
// DateTime time1 = DateTime.Now.Date.AddDays(-i);
|
|
// int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)).Where(x => x.agv_createtime < time && x.agv_createtime > time1 && x.agv_taskstate == "TaskState_Finished").ToList().Count;
|
// //Console.WriteLine(AGVName + $"-数量{upHty}--" + DateTime.Now);
|
|
|
//}
|
//Console.WriteLine(AGVName + "-4321--" + DateTime.Now);
|
return response.OK(data: new
|
{
|
upNum = tocount,
|
//upNum = ints,
|
//downNum = ints1,
|
//totalNum = ints2,
|
totalNum = strings1
|
|
});
|
|
}
|
catch (Exception ex)
|
{
|
//Console.WriteLine("-errrr--" + DateTime.Now);
|
response.Error(ex.Message);
|
}
|
return response;
|
} /// <summary>
|
/// 任务完成量负极
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetAgvTaskInfofj(SaveModel model)
|
{
|
FreeDB freeDB = new FreeDB();
|
var response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
//Console.WriteLine(AGVName + "---" + DateTime.Now);
|
//Expression<Func<dt_agvtask_hty, bool>> upExpression = AGVName switch
|
//{
|
// "正极AGV调度" => x => x.agv_code.Contains("正极AGV调度"),
|
// "负极AGV调度" => x => x.agv_code.Contains("负极AGV调度"),
|
// "组装AGV调度" => x => x.agv_code.Contains("组装AGV调度"),
|
|
// _ => throw new NotImplementedException(),
|
//};
|
#region MyRegion
|
|
#endregion
|
List<string> strings1 = new List<string>();
|
|
List<int> tocount = new List<int>();
|
for (int i = 14; i >= 0; i--)
|
{
|
String time1 = DateTime.Now.Date.AddDays(-i).ToString("yyyy-MM-dd");
|
//DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
//Console.WriteLine($"time1:{time1}");
|
int upHty = freeDB.Select<dt_agvtask_hty>()
|
.Where(x => x.agv_code.Contains(AGVName) && x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count();
|
//int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)&& x.agv_createtime.ToString().Contains(time1) && x.agv_taskstate.Contains("TaskState_Finished")).ToList().Count;
|
tocount.Add(upHty);
|
//Console.WriteLine(AGVName + $"--{i}-");
|
strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
|
}
|
//for (int i = 14; i >= 0; i--)
|
//{
|
// //Console.WriteLine(AGVName + $"--{i}-" );
|
// strings1.Add(DateTime.Now.AddDays(-i).ToString("MM-dd"));
|
// DateTime time = DateTime.Now.Date.AddDays(-i + 1);
|
|
// DateTime time1 = DateTime.Now.Date.AddDays(-i);
|
|
// int upHty = dt_agvtask_htyRepository.Instance.Find(x => x.agv_code.Contains(AGVName)).Where(x => x.agv_createtime < time && x.agv_createtime > time1 && x.agv_taskstate == "TaskState_Finished").ToList().Count;
|
// //Console.WriteLine(AGVName + $"-数量{upHty}--" + DateTime.Now);
|
|
|
//}
|
//Console.WriteLine(AGVName + "-4321--" + DateTime.Now);
|
return response.OK(data: new
|
{
|
upNum = tocount,
|
//upNum = ints,
|
//downNum = ints1,
|
//totalNum = ints2,
|
totalNum = strings1
|
|
});
|
|
}
|
catch (Exception ex)
|
{
|
//Console.WriteLine("-errrr--" + DateTime.Now);
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
/// <summary>
|
/// 圆形统计图
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetLocationEmptyOrStored(SaveModel model)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
if (AGVName == "正极AGV调度")
|
{
|
|
int tbEmptyNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("ZJ-TBHCJ") && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int tbStoredNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("ZJ-TBHCJ") && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
int bcEmptyNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("ZJ-BCHCJ") && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int bcStoredNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("ZJ-BCHCJ") && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
|
response.OK(data: new { tbEmptyNum, tbStoredNum, bcEmptyNum, bcStoredNum });
|
}
|
else if (AGVName == "负极AGV调度")
|
{
|
|
int tbEmptyNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("FJ-TBHCJ") && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int tbStoredNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("FJ-TBHCJ") && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
int bcEmptyNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("FJ-BCHCJ") && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int bcStoredNum = base_ware_locationRepository.Instance.Find(x => x.equipment_type.Contains("FJ-BCHCJ") && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
|
response.OK(data: new { tbEmptyNum, tbStoredNum, bcEmptyNum, bcStoredNum });
|
}
|
else if (AGVName == "组装AGV调度")
|
{
|
int gfEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int gfStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
|
int jkEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJK") || x.equipment_type.Contains("FJK")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int jkStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJK") || x.equipment_type.Contains("FJK")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
int qjEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-QJHCJ") || x.equipment_type.Contains("FJ-QJHCJ")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int qjStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-QJHCJ") || x.equipment_type.Contains("FJ-QJHCJ")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
|
|
response.OK(data: new { gfEmptyNum, gfStoredNum, jkEmptyNum, jkStoredNum, qjEmptyNum, qjStoredNum });
|
}
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
|
/// <summary>
|
/// 空,满,掉线,执行货架数量统计
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetLocationData(SaveModel model)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
string area = string.Empty;
|
if (AGVName == "正极AGV调度")
|
{
|
|
int totalEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-TBHCJ") || x.equipment_type.Contains("ZJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int totalStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-TBHCJ") || x.equipment_type.Contains("ZJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
int totalNGNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-TBHCJ") || x.equipment_type.Contains("ZJ-BCHCJ")) && x.task == 1).Count;
|
int totalWaitedNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-TBHCJ") || x.equipment_type.Contains("ZJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Close.ToString()).Count;
|
response.OK(data: new { totalEmptyNum, totalStoredNum, totalNGNum, totalWaitedNum });
|
}
|
else if (AGVName == "负极AGV调度")
|
{
|
int totalEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("FJ-TBHCJ") || x.equipment_type.Contains("FJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int totalStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("FJ-TBHCJ") || x.equipment_type.Contains("FJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
int totalNGNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("FJ-TBHCJ") || x.equipment_type.Contains("FJ-BCHCJ")) && x.task == 1).Count;
|
int totalWaitedNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("FJ-TBHCJ") || x.equipment_type.Contains("FJ-BCHCJ")) && x.location_state == LocationStateEnum.LocationState_Close.ToString()).Count;
|
response.OK(data: new { totalEmptyNum, totalStoredNum, totalNGNum, totalWaitedNum });
|
}
|
else if (AGVName == "组装AGV调度")
|
{
|
area = "ZJ";
|
int totalEmptyNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ") | x.equipment_type.Contains("ZJK") | x.equipment_type.Contains("FJK") | x.equipment_type.Contains("FJ-QJHCJ") | x.equipment_type.Contains("ZJ-QJHCJ")) && x.location_state == LocationStateEnum.LocationState_Empty.ToString()).Count;
|
int totalStoredNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ") | x.equipment_type.Contains("ZJK") | x.equipment_type.Contains("FJK") | x.equipment_type.Contains("FJ-QJHCJ") | x.equipment_type.Contains("ZJ-QJHCJ")) && x.location_state == LocationStateEnum.LocationState_Stored.ToString()).Count;
|
int totalNGNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ") | x.equipment_type.Contains("ZJK") | x.equipment_type.Contains("FJK") | x.equipment_type.Contains("FJ-QJHCJ") | x.equipment_type.Contains("ZJ-QJHCJ")) && x.task == 1).Count;
|
int totalWaitedNum = base_ware_locationRepository.Instance.Find(x => (x.equipment_type.Contains("ZJ-GFHCJ") || x.equipment_type.Contains("FJ-GFHCJ") | x.equipment_type.Contains("ZJK") | x.equipment_type.Contains("FJK") | x.equipment_type.Contains("FJ-QJHCJ") | x.equipment_type.Contains("ZJ-QJHCJ")) && x.location_state == LocationStateEnum.LocationState_Close.ToString()).Count;
|
response.OK(data: new { totalEmptyNum, totalStoredNum, totalNGNum, totalWaitedNum });
|
}
|
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
|
/// <summary>
|
/// 任务列表信息
|
/// </summary>
|
/// <param name="model"></param>
|
/// <returns></returns>
|
public static WebResponseContent GetAGVTaskData(SaveModel model)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
string AGVName = model.MainData["AGVName"].ToString();
|
string area = string.Empty;
|
List<dt_agvtask> agvtasks = new List<dt_agvtask>();
|
Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_code.Contains(AGVName);
|
agvtasks = dt_agvtaskRepository.Instance.Find(Expression).ToList();
|
//if (AGVName == "正极AGV调度")
|
//{
|
// area = "ZJ";
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_code .Contains("正极AGV调度") ;
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).ToList();
|
//Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("TB") || x.agv_fromaddress.Contains("GY") || x.agv_fromaddress.Contains("FQ") || x.agv_toaddress.Contains("TB") || x.agv_toaddress.Contains("GY") || x.agv_toaddress.Contains("FQ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).Where(x => x.agv_fromaddress.Contains(area)).ToList();
|
//}
|
//else if (AGVName == "负极AGV调度")
|
//{
|
// area = "FJ";
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("TB") || x.agv_fromaddress.Contains("GY") || x.agv_fromaddress.Contains("FQ") || x.agv_toaddress.Contains("TB") || x.agv_toaddress.Contains("GY") || x.agv_toaddress.Contains("FQ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).Where(x => x.agv_fromaddress.Contains(area)).ToList();
|
//}
|
//else if (AGVName == "组装AGV调度")
|
//{
|
// area = "ZZ";
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("XL-FQHCJ") || x.agv_toaddress.Contains("CDHCJ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).Where(x => x.agv_fromaddress.Contains(area)).ToList();
|
//}
|
//else if (AGVName == "负极极卷库")
|
//{
|
// area = "FJ";
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("XL-FQHCJ") || x.agv_toaddress.Contains("CDHCJ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).Where(x => x.agv_fromaddress.Contains(area)).ToList();
|
//}
|
//else if (AGVName == "一楼冲叠")
|
//{
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("JJHCJ") || x.agv_fromaddress.Contains("1-ZJSL-CDHCJ") || x.agv_fromaddress.Contains("1-FJSL-CDHCJ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).ToList();
|
//}
|
//else if (AGVName == "二楼冲叠")
|
//{
|
// Expression<Func<dt_agvtask, bool>> Expression = x => x.agv_fromaddress.Contains("JJHCJ") || x.agv_fromaddress.Contains("2-ZJSL-CDHCJ") || x.agv_fromaddress.Contains("2-FJSL-CDHCJ");
|
// agvtasks = dt_agvtaskRepository.Instance.Find(Expression).ToList();
|
//}
|
if (agvtasks.Count <= 0) return response.Error("未找到任务");
|
List<LocationModel> tempConfig = new List<LocationModel>();
|
|
//tempConfig = App.GetConfig<List<LocationModel>>("location");
|
foreach (var item in agvtasks)
|
{
|
//item.agv_fromaddress = tempConfig.Where(x => x.Code == item.agv_fromaddress).Select(x => x.Name).First().ToString();
|
//item.agv_toaddress = tempConfig.Where(x => x.Code == item.agv_toaddress).Select(x => x.Name).First().ToString();
|
item.agv_taskstate = item.agv_taskstate == AGVTaskStateEnum.Create.ToString() ? "已创建" : item.agv_taskstate == AGVTaskStateEnum.SendOut.ToString() ? "已下发" : item.agv_taskstate == AGVTaskStateEnum.Executing.ToString() ? "起点执行中" : item.agv_taskstate == AGVTaskStateEnum.Complete.ToString() ? "起点已完成" : item.agv_taskstate == AGVTaskStateEnum.Executing1.ToString() ? "终点执行中" : item.agv_taskstate == AGVTaskStateEnum.Complete1.ToString() ? "终点已完成" : "其他";
|
}
|
response.OK(data: agvtasks);
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
|
|
//提升机信息对接显示
|
public static WebResponseContent GetTSJInfo(SaveModel model)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
if (WCSService.Clients == null)
|
{
|
return response.Error("");
|
}
|
string AGVName = model.MainData["TSJName"].ToString();
|
|
PLCClient client = WCSService.Clients.Find(X => X.PLCName == AGVName);
|
if (client != null)
|
{
|
#region 提升机运行状态
|
string status = "未通讯";
|
bool status1 = client.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92.1").Content;//准备好
|
if (status1)
|
{
|
status = "准备好";
|
}
|
bool status2 = client.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92.2").Content;//运行
|
if (status2)
|
{
|
status = "运行";
|
}
|
bool status3 = client.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92.3").Content;//完成
|
if (status3)
|
{
|
status = "完成";
|
}
|
#endregion
|
|
int agverror = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.192").Content.ToInt();//agv报警
|
bool tsjerror = client.SiemensPLCClient.SiemensS7NetClient.ReadBool("DB51.92").Content;//提升机报警
|
int error = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB51.90").Content.ToInt();//提升机反馈步骤
|
int floor = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1002.190").Content.ToInt();//AGV反馈步骤
|
response.OK(data: new { status, agverror, tsjerror, error, floor });
|
}
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
|
public static WebResponseContent GetTSJInfos(SaveModel model)
|
{
|
WebResponseContent response = new WebResponseContent();
|
try
|
{
|
List<string> AGVName = model.DelKeys.ConvertAll(x => { return x.ToString(); });
|
List<object> data = new List<object>();
|
foreach (var item in AGVName)
|
{
|
PLCClient client = WCSService.Clients.Find(X => X.PLCName == item);
|
if (client != null)
|
{
|
int status = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1000.0").Content.ToInt();
|
int error = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1000.2").Content.ToInt();
|
int floor = client.SiemensPLCClient.SiemensS7NetClient.ReadInt16("DB1000.4").Content.ToInt();
|
data.Add(new { status, error, floor });
|
}
|
}
|
return response.OK(data: data);
|
}
|
catch (Exception ex)
|
{
|
response.Error(ex.Message);
|
}
|
return response;
|
}
|
}
|
}
|
public class AGVStatus
|
{
|
/// <summary>
|
/// agv类型:0-潜伏型,1 - 牵引型,2 - 承载型,3 - 举升型,4 -辊道型,5 - 叉车型,6 - 其他
|
/// </summary>
|
public int agvType { get; set; }
|
|
/// <summary>
|
/// agv编号
|
/// </summary>
|
public int agvCode { get; set; }
|
|
/// <summary>
|
/// agv上下线状态,0-下线,1 - 上线
|
/// </summary>
|
public string agvOnline { get; set; }
|
|
/// <summary>
|
/// agv当前地标号
|
/// </summary>
|
public int agvRfidLabel { get; set; }
|
|
/// <summary>
|
/// agv当前x坐标值
|
/// </summary>
|
public int agvXcoordinate { get; set; }
|
|
/// <summary>
|
/// agv当前y坐标值
|
/// </summary>
|
public int agvYcoordinate { get; set; }
|
|
/// <summary>
|
/// agv运行状态 :0-停止,1 - 行驶,2 - 暂停
|
/// </summary>
|
public int agvStatus { get; set; }
|
|
/// <summary>
|
/// agv当前运行速度(mm / s)
|
/// </summary>
|
public int agvSpeed { get; set; }
|
|
/// <summary>
|
/// agv报警代码(按位状态提取,最多可表示32种报警
|
/// </summary>
|
public int agvAlarmCode { get; set; }
|
}
|