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
{
///
/// 获取机器人信息
///
///
///
///
public IList GetList(AjaxGetRobotList Json, ref PageInfo pageInfo)
{
try
{
// test
StringBuilder strSql = new StringBuilder();
List para = new List();
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.DataTableToModel(dt);
}
catch
{
throw new NotImplementedException();
}
}
///
/// 获取任务控制信息明细
///
///
///
///
public IList GetDetailList(AjaxGetBindList Json, ref PageInfo pageInfo)
{
try
{
StringBuilder strSql = new StringBuilder();
List para = new List();
//
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.DataTableToModel(dt);
}
catch
{
throw new NotImplementedException();
}
}
///
/// 手动添加任务 liudl Del 20231026
///
///
///
///
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 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);
}
}
///
/// 机器人禁用/恢复
///
///
///
///
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;
}
}
///
/// 手动结批信号修改
///
///
///
///
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;
}
}
///
/// 取消任务
///
///
///
///
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;
}
}
///
/// 手动再次回传WMS
///
/// 任务ID集合
///
///
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;
}
}
///
/// 获取最新任务号
///
///
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);
}
}
}
}