using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Commom.DotNetDevices;
|
using Commom.Utility;
|
using Common;
|
using Model;
|
|
namespace BLL.DAL
|
{
|
public class DAL_ManualControl
|
{
|
public List<WCSPlcInfo> GetList(AjaxPlcInfoList Json, ref PageInfo pageInfo)
|
{
|
try
|
{
|
StringBuilder strSql = new StringBuilder();
|
strSql.Append("select a.IP,b.* from WCSPlcInfo b left join WCSIP a on b.PlcIP = a.Id where b.IsDel = 0 and a.Type = '0' ");
|
if (!string.IsNullOrWhiteSpace(Json.StationNum))
|
{
|
strSql.Append($"and b.StationNum = '{Json.StationNum}' ");
|
}
|
if (!string.IsNullOrWhiteSpace(Json.Text))
|
{
|
strSql.Append($"and b.Text = '{Json.Text}' ");
|
}
|
DataTable dt = DataFactory.SqlDataBase().GetPageList(strSql.ToString(), null, "CreateTime", "", ref pageInfo);
|
if (dt!= null)
|
{
|
DALWcsMessage wcsSql = new DALWcsMessage();
|
var plcIpDt = wcsSql.GetPlcIps();
|
dt.Columns.Add("PlcStatusVal",Type.GetType("System.String"));
|
foreach (DataRow item in dt.Rows)
|
{
|
DataRow ipRows = plcIpDt.Select($" Id = {item["PlcIP"].ToString()} ")[0];
|
string plcStatus = "", plcValue = "";
|
var statusVal = "";
|
PlcIO plc = new PlcIO(ipRows["IP"].ToString(), 1, ref plcStatus);
|
if (plcStatus.Length > 0)
|
{
|
plc.ClosePlc();
|
}
|
else
|
{
|
plcValue = plc.GetPlcDBValue(int.Parse(item["DbNumber"].ToString()), item["PosType"].ToString(), item["PlcPos"].ToString());
|
}
|
switch (plcValue)
|
{
|
case "0": // 请求任务
|
statusVal = "PLC手动状态";
|
break;
|
case "10": // 请求任务
|
statusVal = "空闲";
|
break;
|
case "11": // 去取货位置
|
statusVal = "正在去往取货位置";
|
break;
|
case "12": // 取货过程
|
statusVal = "正在取货";
|
break;
|
case "20": // 取货完成
|
statusVal = "取货完成";
|
break;
|
case "21": // 去放货位置
|
statusVal = "正在去往放货位置";
|
break;
|
case "22": // 放货过程
|
statusVal = "正在放货";
|
break;
|
case "30": // 取货完成
|
statusVal = "放货完成";
|
break;
|
case "100": // 取货未成功
|
statusVal = "空取异常";
|
break;
|
case "101": // 放货有障碍
|
statusVal = "满放异常";
|
break;
|
default:
|
statusVal = "连接PLC失败";
|
break;
|
}
|
|
item["PlcStatusVal"] = statusVal;
|
plc.ClosePlc();
|
}
|
|
var list = ModelConvertHelper<WCSPlcInfo>.DataTableToModel(dt);
|
return list.ToList();
|
}
|
else
|
{
|
List<WCSPlcInfo> list = new List<WCSPlcInfo>();
|
return list;
|
}
|
|
}
|
catch
|
{
|
throw new NotImplementedException();
|
}
|
}
|
|
public string AddEditStacker(StackerModel model, string loginUser,string orgin)
|
{
|
try
|
{
|
//转换user信息 user Code变成id
|
|
UserInfo us = null;
|
StringBuilder strSql = new StringBuilder();
|
strSql.Append($"select * from UserInfo where IsDel = 0 and UserCode = '{loginUser}' ");
|
|
IDataReader dt = DataFactory.SqlDataBase().GetDataReaderBySQL(strSql, null);
|
|
us = ModelConvertHelper<UserInfo>.ReaderToModel(dt);
|
if (us == null)
|
{
|
return "未查询到当前登录人信息";
|
}
|
|
string plcStatus = ""; // PLC连接状态
|
DALWcsMessage wcsSql = new DALWcsMessage();
|
var PlcInfoDt = wcsSql.GetPlcInfos();
|
DataRow[] plcRows = PlcInfoDt.Select($"Level = '0' and StationNum='{model.DjType}' ");
|
if (plcRows.Length == 0)
|
{
|
return "未查询到起始跺机信息";
|
}
|
var PlcIpDt = wcsSql.GetPlcIps();
|
DataRow[] ipRows = PlcIpDt.Select($" Type = '0' and Id = '{plcRows[0]["PlcIP"].ToString()}'");
|
if (ipRows.Length == 0)
|
{
|
return "未查询到起始跺机信息";
|
}
|
PlcIO plc = new PlcIO(ipRows[0]["IP"].ToString(), 1, ref plcStatus);
|
if (plcStatus.Length > 0)
|
{
|
return "连接跺机失败";
|
}
|
|
var posDt = wcsSql.GetPlcPos(plcRows[0]["Id"].ToString());
|
// 写入起始排
|
var posRos101 = posDt.Select($"Name = 'StartRow' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos101["PosType"].ToString(), model.StartRow, posRos101["PlcPos"].ToString());
|
|
// 写入起始列
|
var posRos102 = posDt.Select($"Name = 'StartColumn' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos102["PosType"].ToString(), model.StartColumn, posRos102["PlcPos"].ToString());
|
|
// 写入起始层
|
var posRos103 = posDt.Select($"Name = 'StartLayer' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos103["PosType"].ToString(), model.StartLayer, posRos103["PlcPos"].ToString());
|
|
// 写入目的排
|
var posRos104 = posDt.Select($"Name = 'EndRow' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos104["PosType"].ToString(), model.EndRow, posRos104["PlcPos"].ToString());
|
|
// 写入目的列
|
var posRos105 = posDt.Select($"Name = 'EndColumn' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos105["PosType"].ToString(), model.EndColumn, posRos105["PlcPos"].ToString());
|
|
// 写入目的层
|
var posRos106 = posDt.Select($"Name = 'EndLayer' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos106["PosType"].ToString(), model.EndLayer, posRos106["PlcPos"].ToString());
|
|
//写入托盘号
|
var posRos107 = posDt.Select($"Name = 'PalletNo' ")[0];// 托盘号
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos107["PosType"].ToString(), model.PalletNo, posRos107["PlcPos"].ToString());
|
|
//写入任务号
|
var posRos108 = posDt.Select($"Name = 'TaskNo' ")[0];
|
plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos108["PosType"].ToString(), model.TaskNo, posRos108["PlcPos"].ToString());
|
|
// 写入wcs控制字流程10
|
bool inBl10 = plc.SetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), plcRows[0]["PosType"].ToString(), model.WcsPos, plcRows[0]["WcsPos"].ToString(), true);
|
|
|
plc.ClosePlc();
|
if (orgin == "Edit")
|
{
|
DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "跺机监控",
|
FkNo = model.TaskNo + "-" + model.PalletNo,
|
Msg = "手动编辑跺机任务信息",
|
Type = "编辑",
|
};
|
oper.AddOperation(operation, loginUser);
|
}
|
return "";
|
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
|
public StackerModel GetStacker(string id)
|
{
|
try
|
{
|
string plcStatus = ""; // PLC连接状态
|
StackerModel model = new StackerModel();
|
DALWcsMessage wcsSql = new DALWcsMessage();
|
|
var PlcInfoDt = wcsSql.GetPlcInfos();
|
DataRow[] plcRows = PlcInfoDt.Select($"Level = '0' and Id={id} ");
|
if (plcRows.Length == 0)
|
{
|
return model;
|
}
|
var PlcIpDt = wcsSql.GetPlcIps();
|
DataRow[] ipRows = PlcIpDt.Select($" Type = '0' and Id = '{plcRows[0]["PlcIP"].ToString()}'");
|
if (ipRows.Length == 0)
|
{
|
return model;
|
}
|
PlcIO plc = new PlcIO(ipRows[0]["IP"].ToString(), 1, ref plcStatus);
|
if (plcStatus.Length > 0)
|
{
|
return model;
|
}
|
var posDt = wcsSql.GetPlcPos(id);
|
|
// 获取起始排
|
var posRos101 = posDt.Select($"Name = 'StartRow' ")[0];
|
model.StartRow = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos101["PosType"].ToString(), posRos101["PlcPos"].ToString());
|
|
// 获取起始列
|
var posRos102 = posDt.Select($"Name = 'StartColumn' ")[0];
|
model.StartColumn = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos102["PosType"].ToString(), posRos102["PlcPos"].ToString());
|
|
// 获取起始层
|
var posRos103 = posDt.Select($"Name = 'StartLayer' ")[0];
|
model.StartLayer = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos103["PosType"].ToString(), posRos103["PlcPos"].ToString());
|
|
// 获取目的排
|
var posRos104 = posDt.Select($"Name = 'EndRow' ")[0];
|
model.EndRow = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos104["PosType"].ToString(), posRos104["PlcPos"].ToString());
|
|
// 获取目地列
|
var posRos105 = posDt.Select($"Name = 'EndColumn' ")[0];
|
model.EndColumn = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos105["PosType"].ToString(), posRos105["PlcPos"].ToString());
|
|
// 获取目的层
|
var posRos106 = posDt.Select($"Name = 'EndLayer' ")[0];
|
model.EndLayer = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos106["PosType"].ToString(), posRos106["PlcPos"].ToString());
|
|
// 获取托盘号
|
var posRos107 = posDt.Select($"Name = 'PalletNo' ")[0];// 托盘号
|
model.PalletNo = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos107["PosType"].ToString(), posRos107["PlcPos"].ToString());
|
|
// 获取任务号
|
var posRos108 = posDt.Select($"Name = 'TaskNo' ")[0];
|
model.TaskNo = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), posRos108["PosType"].ToString(), posRos108["PlcPos"].ToString());
|
|
// 获取wcs控制字流程
|
model.WcsPos = plc.GetPlcDBValue(int.Parse(plcRows[0]["DbNumber"].ToString()), plcRows[0]["PosType"].ToString(), plcRows[0]["WcsPos"].ToString());
|
|
model.DjType = plcRows[0]["StationNum"].ToString();
|
plc.ClosePlc();
|
|
|
return model;
|
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
public bool Add(TaskMonitorModel model, string loginUser)
|
{
|
bool result = false;
|
try
|
{
|
Hashtable ht = new Hashtable();
|
|
ht["TaskType"] = model.TaskType.AddQuotes();
|
ht["InitialAddre"] = "'" + model.InitialAddre + "'";
|
ht["Palno"] = "'" + model.Palno + "'";
|
ht["TargetAddre"] = "'" + model.TargetAddre + "'";
|
ht["State"] = "'0'";
|
ht["IsSucceed"] = "'" + model.IsSucceed + "'";
|
ht["ErrorStr"] = "'" + model.ErrorStr + "'";
|
ht["PriorityLevel"] = model.PriorityLevel;
|
ht["Source"] = "'手动'";
|
ht["Demo"] = "'"+ model.Demo + "'";
|
|
ht["CreateUser"] = "'" + loginUser + "'";
|
ht["CreateTime"] = "Getdate()";
|
|
|
int _ret = DataFactory.SqlDataBase().InsertByHashtableNullParam("TaskMonitor", ht);
|
|
if (_ret == 1) result = true;
|
|
return result;
|
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
|
public IList<Dictionarys> GetDictionaryItems(Dictionarys dictionarys, ref PageInfo page)
|
{
|
try
|
{
|
StringBuilder stringBuilder = new StringBuilder();
|
stringBuilder.Append("select * from View_Dictionary_Userinfo where IsDel = 0 and TopCode = 'Access' ");
|
if (dictionarys.TopCode != null && dictionarys.TopCode != "")
|
{
|
stringBuilder.Append(" and TopCode = " + dictionarys.TopCode.AddQuotes());
|
}
|
if (dictionarys.TypeName != null && dictionarys.TypeName != "")
|
{
|
stringBuilder.Append(" and TypeName like '%" + dictionarys.TypeName + "%' ");
|
}
|
if (dictionarys.Guid != null && dictionarys.Guid != "")
|
{
|
stringBuilder.Append(" and Guid = " + dictionarys.Guid.AddQuotes());
|
}
|
|
SqlParam[] para = new SqlParam[]
|
{
|
};
|
|
DataTable dt = DataFactory.SqlDataBase().GetPageList(stringBuilder.ToString(), para, "TopCode", "ASC", ref page);
|
IList<Dictionarys> list = ModelConvertHelper<Dictionarys>.DataTableToModel(dt);
|
|
return list;
|
}
|
catch
|
{
|
throw new NotImplementedException();
|
}
|
}
|
|
public bool IsAutoUpdate(string[] Code)
|
{
|
bool result = false;
|
try
|
{
|
string[] str = { "WCSAuto" };
|
int dt = DataFactory.SqlDataBase().IsExist("Dictionary", "TopCode", str);
|
if (dt >= Code.Length)
|
{
|
int i = 0;
|
while (i < Code.Length)
|
{
|
StringBuilder sql = new StringBuilder();
|
sql.Append("update Dictionary set Code='" + Code[i] + "' where TopCode='WCSAuto'");
|
int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql);
|
if (_ret >= Code.Length) result = true;
|
i++;
|
}
|
|
}
|
return result;
|
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
}
|
}
|