using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Common;
using WIDESEA_WCS.Jobs.ConveyorLine.InboundArea;
using WIDESEA_WCS.Jobs.ConveyorLine.OutboundArea;
using WIDESEA_WCS.WCSClient;
namespace WIDESEA_WCS.ToWCS
{
public partial class QueryEquipmentinfoOperation
{
///
/// 查询设备信息
///
///
public static async Task QueryEquipmentinfo()
{
bool flag = true;
EquipmentStateinfo equipmentStateinfo = new EquipmentStateinfo()
{
BearingOutInfo = new List(),
InStationInfo = new List(),
LineInfo = new List(),
OutStationInfo = new List(),
};
try
{
await Task.Run(() =>
{
PLCClient client = WCSService.Clients.Find(r => r.PLCName == "LineDevice");
//轴承出库站台
foreach (var item in OutboundAreaDispatch.endStationNo)
{
equipmentStateinfo.BearingOutInfo.Add(QueryBarcodeAndTaskNumber(client, item));
}
//入库/测量站台
foreach (var item in InboundAreaDispatch.InboundStationNo)
{
equipmentStateinfo.InStationInfo.Add(QueryBarcodeAndTaskNumber(client, item));
}
//入库区出库站台
foreach (var item in InboundAreaDispatch.OutboundStationNo)
{
equipmentStateinfo.OutStationInfo.Add(QueryBarcodeAndTaskNumber(client, item));
}
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "InBound", "入库线"));
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "Outbound_E", "空托出库线"));
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "Measure_B", "测量线"));
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "ChangeLayer", "换层线"));
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "OutboundArea", "轴承出库线"));
equipmentStateinfo.LineInfo.Add(QueryLineInfo(client, "ReIboundArea", "轴承回库线"));
int inboundState = int.Parse(client.ReadValue(CLineInfoDBName.R_System_Inline_Run_Model.ToString(), "System").ToString());
int outboundState = int.Parse(client.ReadValue(CLineInfoDBName.R_System_Inline_Run_Model.ToString(), "OutSystem").ToString());
equipmentStateinfo.EQState = new
{
//设备模式
eqState = new
{
inboundState = GetState(inboundState),
outboundState = GetState(outboundState),
},//入库申请
inboundRequstState = new
{
inboundRequest = bool.Parse(client.ReadValue(CLineInfoDBName.R_Line_Confirm_OK.ToString(), "20101").ToString()),
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "20101").ToString(),
},
weighStationState = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "20201").ToString(),
weigh = client.ReadValue(CLineInfoDBName.R_Line_Weight.ToString(), "20201").ToString()
},
inboundCheck = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "30301").ToString(),
taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "30301").ToString(),
},
outboundCheck = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "30302").ToString(),
taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "30302").ToString(),
},
measureState = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "10301").ToString(),
taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "10301").ToString(),
},
reInboundState = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "90101").ToString(),
loadState = client.ReadValue(CLineInfoDBName.R_Line_LoadSleep.ToString(), "90101").ToString(),
},
hoisterState = new
{
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), "90100").ToString(),
taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), "90100").ToString(),
//提升状态
histerState = client.Read("DB506.36.0", "bool").ToString(),
//滚筒状态
rollerState = client.ReadValue(CLineInfoDBName.R_Line_DeviceNormal.ToString(), "90100").ToString(),
histerLayer = client.ReadValue(CLineInfoDBName.R_Line_Layer.ToString(), "90100").ToString(),
rgvRunState = client.ReadValue(CLineInfoDBName.W_System_RGVState.ToString()).ToString(),
},
};
});
}
catch
{
flag = false;
}
object resp = new
{
data = equipmentStateinfo,
status = flag,
};
return resp;
}
public static object QueryBarcodeAndTaskNumber(PLCClient client, string station)
{
return new
{
station = station,
barcode = client.ReadValue(CLineInfoDBName.R_Line_Barcode.ToString(), station),
taskNumber = client.ReadValue(CLineInfoDBName.R_Line_TaskNumber.ToString(), station),
};
}
public static string GetState(int state)
{
if (state == 1)
return "手动模式";
else if (state == 2)
return "单机模式";
else if (state == 3)
return "联机模式";
else return "未知模式";
}
public static object QueryLineInfo(PLCClient client, string lineCode, string name)
{
return new
{
name = name,
barcode = client.ReadValue(CLineInfoDBName.W_Line_Barcode.ToString(), lineCode),
taskNumber = client.ReadValue(CLineInfoDBName.W_Line_TaskNumber.ToString(), lineCode),
startStation = client.ReadValue(CLineInfoDBName.W_Line_StartStation.ToString(), lineCode),
endStation = client.ReadValue(CLineInfoDBName.W_Line_EndStation.ToString(), lineCode),
logic = client.ReadValue(CLineInfoDBName.R_Line_Logic.ToString(), lineCode).ToString()
};
}
}
public class EquipmentStateinfo
{
///
/// 出入库线信息
///
public List LineInfo { get; set; }
///
/// 入库站台信息
///
public List InStationInfo { get; set; }
///
/// 出库站台信息
///
public List OutStationInfo { get; set; }
///
/// 轴承出库信息
///
public List BearingOutInfo { get; set; }
///
/// 设备状态
///
public object EQState { get; set; }
}
}