using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
using Commom.Utility;
|
using Common;
|
using Model;
|
|
namespace BLL.DAL
|
{
|
public class DAL_CheckMonitor
|
{
|
/// <summary>
|
/// 获取机器人信息
|
/// </summary>
|
/// <param name="Json"></param>
|
/// <param name="pageInfo"></param>
|
/// <returns></returns>
|
public IList<WCSPickLino> GetList(AjaxGetRobotList Json, ref PageInfo pageInfo)
|
{
|
try
|
{
|
// test
|
StringBuilder strSql = new StringBuilder();
|
List<SqlParam> para = new List<SqlParam>();
|
|
|
strSql.Append("select Id,RobotNo,RobotName,PickType,IDState,Picked");
|
strSql.Append(" from WCSPickLino where IsDel = 0 ");
|
|
|
if (!string.IsNullOrWhiteSpace(Json.RobotNo))
|
{
|
strSql.Append(" and RobotNo like '%" + Json.RobotNo + "%' ");
|
}
|
if (!string.IsNullOrWhiteSpace(Json.PickType))
|
{
|
strSql.Append(" and PickType = '" + Json.PickType + "' ");
|
}
|
if (!string.IsNullOrWhiteSpace(Json.IDState))
|
{
|
strSql.Append(" and IDState = '" + Json.IDState + "' ");
|
}
|
|
SqlParam[] param = null;
|
if (para != null)
|
{
|
param = para.ToArray();
|
}
|
|
DataTable dt = DataFactory.SqlDataBase().GetPageList(strSql.ToString(), param, "RobotNo", "", ref pageInfo);
|
return ModelConvertHelper<WCSPickLino>.DataTableToModel(dt);
|
}
|
catch
|
{
|
throw new NotImplementedException();
|
}
|
}
|
|
/// <summary>
|
/// 获取任务控制信息明细
|
/// </summary>
|
/// <param name="Json"></param>
|
/// <param name="pageInfo"></param>
|
/// <returns></returns>
|
public IList<PickLinoBind> GetDetailList(AjaxGetBindList Json, ref PageInfo pageInfo)
|
{
|
try
|
{
|
StringBuilder strSql = new StringBuilder();
|
List<SqlParam> para = new List<SqlParam>();
|
|
//
|
strSql.Append("select PickLinoID,TaskNo,Type,LotNo,SkuNo,SkuName,Chang,Kuan,Gao,AddTime,IDState,LineDao,Level,Finish from WCSPickLinoBind where IsDel = '0' ");
|
if (!string.IsNullOrWhiteSpace(Json.PickLinoID))
|
{
|
strSql.Append(" and PickLinoID = '" + Json.PickLinoID + "' ");
|
}
|
DataTable dt = DataFactory.SqlDataBase().GetPageList(strSql.ToString(), null, "AddTime", "", ref pageInfo);
|
return ModelConvertHelper<PickLinoBind>.DataTableToModel(dt);
|
}
|
catch
|
{
|
throw new NotImplementedException();
|
}
|
}
|
|
|
/// <summary>
|
/// 手动添加任务 liudl Del 20231026
|
/// </summary>
|
/// <param name="model"></param>
|
/// <param name="loginUser"></param>
|
/// <returns></returns>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 任务绑定工位
|
/// </summary>
|
/// <param name="models"></param>
|
/// <param name="loginName">登录人</param>
|
/// <returns></returns>
|
public bool BindTask(WCSTasks models,string loginName)
|
{
|
bool result = false;
|
try
|
{
|
StringBuilder sqlString = new StringBuilder();
|
// 验证任务是否已存在
|
sqlString.Append($"select count(Id) from WCSTasks where PalletNo = '{models.PalletNo}' adn (Status = '0' or Status = '1') ;");
|
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
|
if (dt != null)
|
{
|
if (dt.Rows[0][0].ToString() != "0")
|
{
|
throw new Exception("等待或正在执行任务中托盘号:" + models.PalletNo + ";已存在!");
|
}
|
}
|
models.TaskNo = GetTaskNo();
|
if (models.Type == "0")//0入 1出
|
{
|
var str = int.Parse(models.EndLocate.Substring(0, 2));
|
if (str <= 2)
|
{
|
models.EndRoadway = "R01";
|
}
|
else if (str > 2)
|
{
|
models.EndRoadway = "R02";
|
}
|
}
|
else if (models.Type == "1")
|
{
|
var str = int.Parse(models.StartLocate.Substring(0, 2));
|
if (str <= 2)
|
{
|
models.StartRoadway = "R01";
|
}
|
else if (str > 2)
|
{
|
models.StartRoadway = "R02";
|
}
|
}
|
else
|
{
|
return false;
|
}
|
// 新增任务
|
sqlString.Clear();
|
sqlString.Append("INSERT INTO WCSTasks (TaskNo,Type,Status,Origin,StartRoadway,StartLocat,EndLocat,EndRoadway,PalletNo,");
|
sqlString.Append("LotNo,SupplierLot,SkuNo,SkuName,Qty,Levels,CreateUser) VALUES (");
|
sqlString.Append($"'{models.TaskNo}','{models.Type}','0','{models.Origin}','{models.StartRoadway}','{models.StartLocate}',");
|
sqlString.Append($"'{models.EndLocate}','{models.EndRoadway}','{models.PalletNo}','{models.LotNo}','{models.SupplierLot}',");
|
sqlString.Append($"'{models.SkuNo}','{models.SkuName}','{models.Qty}','{models.Levels}','{loginName}');");
|
var num = DataFactory.SqlDataBase().ExecuteBySql(sqlString);
|
|
if (num == 1)
|
{
|
DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "任务管理",
|
FkNo = models.TaskNo+"-"+models.PalletNo,
|
Msg = "新增任务信息",
|
Type = "新增",
|
};
|
oper.AddOperation(operation, loginName);
|
result = true;
|
}
|
|
return result;
|
}
|
catch(Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
/// <summary>
|
/// 机器人禁用/恢复
|
/// </summary>
|
/// <param name="Id"></param>
|
/// <param name="loginName"></param>
|
/// <returns></returns>
|
public bool MonitorForbidden(string[] Id, string loginName)
|
{
|
bool result = false;
|
try
|
{
|
int dt = DataFactory.SqlDataBase().IsExist("WCSPickLino", "Id", Id);
|
if (dt >= Id.Length)
|
{
|
int i = 0;
|
while (i < Id.Length)
|
{
|
StringBuilder sql = new StringBuilder();
|
// 获取当前任务详细信息
|
sql.Append($"select * from WCSPickLino where Id = '{Id[i]}';");
|
DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql);
|
if (monitorDt != null && monitorDt.Rows.Count > 0)
|
{
|
int tag = 1;
|
if (monitorDt.Rows[0]["IDState"].ToString() != "0")
|
{
|
tag = 0;
|
}
|
sql.Clear();
|
// 修改任务状态
|
sql.Append($"update WCSPickLino set IDState={tag},UpdateTime = getdate() where Id='{Id[i]}';");
|
int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql);
|
if (_ret >= 1)
|
{
|
/*DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "设备管理",
|
FkNo = monitorDt.Rows[0]["ID"].ToString() + "号机器人",
|
Msg = "禁用机器人",
|
Type = "完成",
|
};
|
oper.AddOperation(operation, loginName);*/
|
result = true;
|
}
|
}
|
i++;
|
}
|
|
}
|
return result;
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
|
/// <summary>
|
/// 手动结批信号修改
|
/// </summary>
|
/// <param name="Id"></param>
|
/// <param name="loginName"></param>
|
/// <returns></returns>
|
public bool EndBatchTask(string[] Id)
|
{
|
bool result = false;
|
try
|
{
|
int dt = DataFactory.SqlDataBase().IsExist("WCSPickLino", "Id", Id);
|
if (dt >= Id.Length)
|
{
|
int i = 0;
|
while (i < Id.Length)
|
{
|
StringBuilder sql = new StringBuilder();
|
// 获取当前任务详细信息
|
sql.Append($"select * from WCSPickLino where Id = '{Id[i]}';");
|
DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql);
|
if (monitorDt != null && monitorDt.Rows.Count > 0)
|
{
|
int tag = 2;
|
if (monitorDt.Rows[0]["IDState"].ToString() != "0")
|
{
|
tag = 0;
|
}
|
sql.Clear();
|
// 修改任务状态
|
sql.Append($"update WCSPickLino set IDState={tag},UpdateTime = getdate() where Id='{Id[i]}';");
|
int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql);
|
if (_ret >= 1)
|
{
|
/*DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "设备管理",
|
FkNo = monitorDt.Rows[0]["ID"].ToString() + "号机器人",
|
Msg = "禁用机器人",
|
Type = "完成",
|
};
|
oper.AddOperation(operation, loginName);*/
|
result = true;
|
}
|
}
|
i++;
|
}
|
|
}
|
return result;
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
|
/// <summary>
|
/// 取消任务
|
/// </summary>
|
/// <param name="Id"></param>
|
/// <param name="loginName"></param>
|
/// <returns></returns>
|
public bool TaskMonitorCancel(string[] Id,string loginName)
|
{
|
bool result = false;
|
try
|
{
|
int dt = DataFactory.SqlDataBase().IsExist("WCSTasks", "Id", Id);
|
if (dt >= Id.Length)
|
{
|
int i = 0;
|
while (i < Id.Length)
|
{
|
StringBuilder sql = new StringBuilder();
|
// 获取当前任务详细信息
|
sql.Append($"select * from WCSTasks where Id = '{Id[i]}';");
|
DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql);
|
if (monitorDt != null && monitorDt.Rows.Count > 0)
|
{
|
if (monitorDt.Rows[0]["Status"].ToString() != "0")
|
{
|
i++;
|
continue;
|
}
|
// 完成上架任务
|
var wcsSql = new DALWcsMessage();
|
if (monitorDt.Rows[0]["Origin"].ToString() == "WMS")
|
{
|
var task = new TaskReques
|
{
|
taskNo = monitorDt.Rows[0]["TaskNo"].ToString(),
|
PalletNo = monitorDt.Rows[0]["PalletNo"].ToString(),
|
TaskType = monitorDt.Rows[0]["Type"].ToString(),
|
TaskStatus = "4",
|
};
|
|
wcsSql.RequestTasks(task);
|
}
|
|
sql.Clear();
|
// 修改任务状态
|
sql.Append("update WCSTasks set Status = 4,CancelDate=getdate() where Id='" + Id[i] + "'");
|
int _ret = DataFactory.SqlDataBase().ExecuteBySql(sql);
|
if (_ret >= 1)
|
{
|
DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "任务管理",
|
FkNo = monitorDt.Rows[0]["TaskNo"].ToString() + "-" + monitorDt.Rows[0]["PalletNo"].ToString(),
|
Msg = "手动取消任务信息",
|
Type = "取消",
|
};
|
oper.AddOperation(operation, loginName);
|
result = true;
|
}
|
}
|
|
i++;
|
|
}
|
|
}
|
return result;
|
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
|
/// <summary>
|
/// 手动再次回传WMS
|
/// </summary>
|
/// <param name="Id">任务ID集合</param>
|
/// <param name="loginName"></param>
|
/// <returns></returns>
|
public bool TaskMonitorBackhaul(string[] Id, string loginName,bool tuoji)
|
{
|
bool result = false;
|
try
|
{
|
int dt = DataFactory.SqlDataBase().IsExist("WCSTasks", "Id", Id);
|
if (dt >= Id.Length)
|
{
|
int i = 0;
|
while (i < Id.Length)
|
{
|
StringBuilder sql = new StringBuilder();
|
// 获取当前任务详细信息
|
sql.Append($"select * from WCSTasks where Id = '{Id[i]}' and IsSuccess = '1';");
|
DataTable monitorDt = DataFactory.SqlDataBase().GetDataTableBySQL(sql);
|
if (monitorDt != null && monitorDt.Rows.Count > 0)
|
{
|
string taskStatus = monitorDt.Rows[0]["Status"].ToString();
|
if (taskStatus == "0" || taskStatus == "1" || taskStatus =="4")
|
{
|
i++;
|
continue;
|
}
|
DAL_OperationRecord oper = new DAL_OperationRecord();
|
var operation = new OperationModel()
|
{
|
MenuName = "任务管理",
|
FkNo = monitorDt.Rows[0]["TaskNo"].ToString() + "-" + monitorDt.Rows[0]["PalletNo"].ToString(),
|
Msg = "手动回传任务信息",
|
Type = "回传",
|
};
|
oper.AddOperation(operation, loginName);
|
// 完成上架任务
|
var wcsSql = new DALWcsMessage();
|
if (monitorDt.Rows[0]["Origin"].ToString() == "WMS")
|
{
|
var task = new TaskReques
|
{
|
taskNo = monitorDt.Rows[0]["TaskNo"].ToString(),
|
PalletNo = monitorDt.Rows[0]["PalletNo"].ToString(),
|
TaskType = monitorDt.Rows[0]["Type"].ToString(),
|
TaskStatus = monitorDt.Rows[0]["Status"].ToString(), // 获取再次
|
};
|
|
result = wcsSql.RequestTasks(task);
|
}
|
}
|
|
i++;
|
|
}
|
|
}
|
return result;
|
|
}
|
catch
|
{
|
return result;
|
}
|
}
|
|
|
/// <summary>
|
/// 获取最新任务号
|
/// </summary>
|
/// <returns></returns>
|
public string GetTaskNo()
|
{
|
try
|
{
|
var taskStr = "";
|
//TK2023091900003
|
var codeFlag = "CS";
|
var time = DateTime.Now.ToString("yyyyMMdd").Trim();
|
|
|
StringBuilder sqlString = new StringBuilder();
|
// 验证任务是否已存在
|
sqlString.Append($"select TaskNo from WCSTasks where TaskNo like '{codeFlag+time}%' order by TaskNo desc;");
|
|
DataTable dt = DataFactory.SqlDataBase().GetDataTableBySQL(sqlString);
|
if (dt.Rows.Count != 0)
|
{
|
var s = dt.Rows[0];
|
var maxNo = dt.Rows[0][0].ToString();
|
if (string.IsNullOrWhiteSpace(maxNo))
|
{
|
taskStr = codeFlag + time + "00001";
|
}
|
else
|
{
|
int lastNo = Convert.ToInt32(maxNo.Substring(10, 5)) + 1;
|
taskStr = codeFlag + time + (lastNo.ToString().PadLeft(5, '0'));
|
|
}
|
}
|
else
|
{
|
taskStr = codeFlag + time + "00001";
|
}
|
|
|
return taskStr;
|
}
|
catch (Exception e)
|
{
|
throw new Exception(e.Message);
|
}
|
}
|
|
}
|
}
|