using HanHe.Utility.Data;
|
using HH.WMS.Common.External;
|
using HH.WMS.Entitys.Common;
|
using HH.WMS.Entitys.External;
|
using System;
|
using System.Collections.Generic;
|
using System.Data;
|
using System.Data.Common;
|
using System.Data.SqlClient;
|
using System.Globalization;
|
using System.Linq;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace HH.WMS.DAL.External
|
{
|
public class ExternalDAL : BaseDAL
|
{
|
#region 事务 执行存储过程(处理托盘、托盘产品关联、生成任务、设置任务号、更新货位状态)
|
/// <summary>
|
/// 事务 执行存储过程(处理托盘、托盘产品关联、生成任务、设置任务号、更新货位状态)
|
/// </summary>
|
/// <param name="transportTask"></param>
|
/// <param name="inWorkAreaEntity"></param>
|
/// <param name="startAreaClass"></param>
|
/// <param name="endAreaClass"></param>
|
/// <returns></returns>
|
public SqlExecuteResult InWorkAreaTransaction(TN_WM_TRANSPORT_TASKEntity transportTask, InWorkAreaEntity inWorkAreaEntity)
|
{
|
try
|
{
|
DbCommand cmd = DataAccess.GetStoredProcCommand("prc_inWorkArea");
|
//任务
|
DbParameter param = new SqlParameter("tableTransportTask", SqlDbType.Structured); //这个类型很关键
|
param.Value = GetWorkAreaTransport(transportTask);
|
cmd.Parameters.Add(param);
|
//物料集合
|
param = new SqlParameter("tableTrayItem", SqlDbType.Structured) { Value = GetInWorkAreaTrayItem(inWorkAreaEntity) };
|
cmd.Parameters.Add(param);
|
DataAccess.AddInParameter(cmd, "trayCode", ComDbType.STRING, inWorkAreaEntity.trayCode);
|
DataAccess.AddInParameter(cmd, "projectCode", ComDbType.STRING, inWorkAreaEntity.projectCode);
|
DataAccess.AddInParameter(cmd, "isTransport", DbType.Byte, inWorkAreaEntity.isTransport == "Y" ? Convert.ToByte(true) : Convert.ToByte(false));
|
|
//执行存储过程
|
var result = DataAccessExtensive.ExecuteSingleData(DataAccess, cmd, null);
|
return new SqlExecuteResult()
|
{
|
Success = Convert.ToInt32(result.ItemArray[0]) == 0,
|
Exception = new Exception(result.ItemArray[1].ToString())
|
};
|
}
|
catch (Exception ex)
|
{
|
return new SqlExecuteResult()
|
{
|
Success = false,
|
Exception = ex
|
};
|
}
|
}
|
#endregion
|
|
#region 任务(实体转DataTable)
|
/// <summary>
|
/// 任务(实体转DataTable)
|
/// </summary>
|
/// <param name="transportTask"></param>
|
/// <returns></returns>
|
|
private DataTable GetWorkAreaTransport(TN_WM_TRANSPORT_TASKEntity transportTask)
|
{
|
DataTable tb = new DataTable();
|
tb.Columns.Add("CN_S_TASK_NO", typeof(string));
|
tb.Columns.Add("CN_S_CIR_OBJ", typeof(string));
|
tb.Columns.Add("CN_S_CIR_OBJ_CODE", typeof(string));
|
tb.Columns.Add("CN_S_START_BIT", typeof(string));
|
tb.Columns.Add("CN_S_END_BIT", typeof(string));
|
tb.Columns.Add("CN_S_PRO_CODE", typeof(string));
|
tb.Columns.Add("CN_S_STATE", typeof(string));
|
tb.Columns.Add("CN_S_BF_TASK_NO", typeof(string));
|
tb.Columns.Add("CN_S_AF_TASK_NO", typeof(string));
|
tb.Columns.Add("CN_S_STOCK_CODE", typeof(string));
|
tb.Columns.Add("CN_S_START_AREA", typeof(string));
|
tb.Columns.Add("CN_S_END_AREA", typeof(string));
|
tb.Columns.Add("CN_N_PRIORITY", typeof(int));
|
tb.Columns.Add("CN_S_CREATOR", typeof(string));
|
tb.Columns.Add("CN_S_CREATOR_BY", typeof(string));
|
tb.Columns.Add("CN_T_CREATE", typeof(DateTime));
|
tb.Columns.Add("CN_T_MODIFY", typeof(DateTime));
|
tb.Columns.Add("CN_S_REMARK", typeof(string));
|
tb.Columns.Add("CN_C_IS_AUTO", typeof(string));
|
tb.Columns.Add("CN_S_TASK_TYPE", typeof(string));
|
tb.Columns.Add("CN_C_START_IS_CONTROL_QTY", typeof(string));
|
tb.Columns.Add("CN_C_END_IS_CONTROL_QTY", typeof(string));
|
tb.Columns.Add("CN_S_START_AREA_TYPE", typeof(string));
|
tb.Columns.Add("CN_S_END_AREA_TYPE", typeof(string));
|
tb.Columns.Add("CN_S_START_CONTROL_INV", typeof(string));
|
tb.Columns.Add("CN_S_END_CONTROL_INV", typeof(string));
|
|
DataRow row = tb.NewRow();
|
row[0] = transportTask.CN_S_TASK_NO;
|
row[1] = transportTask.CN_S_CIR_OBJ;
|
row[2] = transportTask.CN_S_CIR_OBJ_CODE;
|
row[3] = transportTask.CN_S_START_BIT;
|
row[4] = transportTask.CN_S_END_BIT;
|
row[5] = transportTask.CN_S_PRO_CODE;
|
row[6] = transportTask.CN_S_STATE;
|
row[7] = transportTask.CN_S_BF_TASK_NO;
|
row[8] = transportTask.CN_S_AF_TASK_NO;
|
row[9] = transportTask.CN_S_STOCK_CODE;
|
row[10] = transportTask.CN_S_START_AREA;
|
row[11] = transportTask.CN_S_END_AREA;
|
row[12] = transportTask.CN_N_PRIORITY;
|
row[13] = transportTask.CN_S_CREATOR;
|
row[14] = transportTask.CN_S_CREATOR_BY;
|
row[15] = transportTask.CN_T_CREATE;
|
row[16] = transportTask.CN_T_MODIFY;
|
row[17] = transportTask.CN_S_REMARK;
|
row[18] = transportTask.CN_C_IS_AUTO;
|
row[19] = transportTask.CN_S_TASK_TYPE;
|
row[20] = transportTask.CN_C_START_IS_CONTROL_QTY;
|
row[21] = transportTask.CN_C_END_IS_CONTROL_QTY;
|
row[22] = transportTask.CN_S_START_AREA_TYPE;
|
row[23] = transportTask.CN_S_END_AREA_TYPE;
|
row[24] = transportTask.CN_S_START_CONTROL_INV;
|
row[25] = transportTask.CN_S_END_CONTROL_INV;
|
tb.Rows.Add(row);
|
|
return tb;
|
}
|
|
#endregion
|
|
#region 物料集合(实体转DataTable)
|
/// <summary>
|
/// 物料集合(实体转DataTable)
|
/// </summary>
|
/// <param name="inWorkAreaEntity"></param>
|
/// <returns></returns>
|
private DataTable GetInWorkAreaTrayItem(InWorkAreaEntity inWorkAreaEntity)
|
{
|
|
DataTable tb = new DataTable();
|
tb.Columns.Add("itemCode", typeof(string));
|
tb.Columns.Add("itemName", typeof(string));
|
tb.Columns.Add("itemPackUnit", typeof(string));
|
tb.Columns.Add("qty", typeof(decimal));
|
tb.Columns.Add("productionDate", typeof(DateTime));
|
tb.Columns.Add("lotNo", typeof(string));
|
tb.Columns.Add("itemState", typeof(string));
|
|
if (inWorkAreaEntity.data == null)
|
{
|
tb.Rows.Add(tb.NewRow());
|
}
|
else
|
{
|
foreach (var itemEntity in inWorkAreaEntity.data)
|
{
|
DataRow row = tb.NewRow();
|
row[0] = itemEntity.itemCode;
|
row[1] = itemEntity.itemName;
|
row[2] = itemEntity.itemPackUnit;
|
row[3] = itemEntity.qty;
|
row[4] = itemEntity.productionDate ?? DateTime.Now;
|
row[5] = itemEntity.lotNo == null ? "" : itemEntity.lotNo;
|
row[6] = itemEntity.itemState == null ? "" : itemEntity.itemState;
|
tb.Rows.Add(row);
|
}
|
}
|
return tb;
|
}
|
|
#endregion
|
|
|
#region 事务 执行存储过程(处理托盘、托盘产品关联、生成任务、设置任务号、更新货位状态)
|
|
/// <summary>
|
/// 事务 执行存储过程(处理托盘、托盘产品关联、生成任务、设置任务号、更新货位状态)
|
/// </summary>
|
/// <param name="executeOutWorkAreaPara"></param>
|
/// <returns></returns>
|
public SqlExecuteResult OutWorkAreaTransaction(ExecuteOutWorkAreaPara executeOutWorkAreaPara)
|
{
|
//TN_WM_TRANSPORT_TASKEntity transportTask, OutWorkAreaEntity outWorkAreaEntity, string startAreaClass, string endAreaClass
|
try
|
{
|
DbCommand cmd = DataAccess.GetStoredProcCommand("prc_outWorkArea");
|
//任务
|
DbParameter param = new SqlParameter("tableTransportTask", SqlDbType.Structured); //这个类型很关键
|
param.Value = GetWorkAreaTransport(executeOutWorkAreaPara.TransportList.FirstOrDefault());
|
cmd.Parameters.Add(param);
|
//add by liuying
|
DataAccess.AddInParameter(cmd, "projectCode", ComDbType.STRING, executeOutWorkAreaPara.OutWorkAreaEntity.projectCode);
|
DataAccess.AddInParameter(cmd, "isTransport", DbType.Byte, executeOutWorkAreaPara.OutWorkAreaEntity.IsTransport == "Y" ? Convert.ToByte(true) : Convert.ToByte(false));
|
//执行存储过程
|
var result = DataAccessExtensive.ExecuteSingleData(DataAccess, cmd, null);
|
|
return new SqlExecuteResult()
|
{
|
Success = Convert.ToInt32(result.ItemArray[0]) == 0,
|
Exception = new Exception(result.ItemArray[1].ToString())
|
};
|
}
|
catch (Exception ex)
|
{
|
return new SqlExecuteResult()
|
{
|
Success = false,
|
Exception = ex
|
};
|
}
|
}
|
#endregion
|
|
#region 执行出库
|
|
public void ExecuteOutWorkArea()
|
{
|
//创建任务
|
//更新起点、终点的货位扩展表
|
//修改库存
|
}
|
|
#endregion
|
|
#region 物料集合(实体转DataTable)
|
/// <summary>
|
/// 物料集合(实体转DataTable)
|
/// </summary>
|
/// <param name="inWorkAreaEntity"></param>
|
/// <returns></returns>
|
private DataTable GetOutWorkAreaTrayItem(OutWorkAreaEntity inWorkAreaEntity)
|
{
|
DataTable tb = new DataTable();
|
tb.Columns.Add("itemCode", typeof(string));
|
tb.Columns.Add("itemName", typeof(string));
|
tb.Columns.Add("itemPackUnit", typeof(string));
|
tb.Columns.Add("qty", typeof(decimal));
|
tb.Columns.Add("steelWireCode", typeof(string));
|
tb.Columns.Add("glueStockCode", typeof(string));
|
tb.Columns.Add("productionDate", typeof(DateTime));
|
|
foreach (var itemEntity in inWorkAreaEntity.Data)
|
{
|
DataRow row = tb.NewRow();
|
row[0] = itemEntity.ItemCode;
|
row[1] = itemEntity.ItemName;
|
row[2] = "";
|
row[3] = itemEntity.UnitQty;
|
row[4] = "";
|
row[5] = "";
|
row[6] = DateTime.Now.ToString(CultureInfo.InvariantCulture);
|
tb.Rows.Add(row);
|
}
|
return tb;
|
}
|
|
#endregion
|
}
|
}
|