using NX_CommonClassLibrary;
using NX_DbClassLibrary;
using NX_JsonClassLibrary;
using NX_LogClassLibrary;
using NX_ModelClassLibrary.BaseModel;
using NX_ModelClassLibrary.Common;
using NX_ModelClassLibrary.CrnModel;
using NX_ModelClassLibrary.CustomEnum;
using NX_ModelClassLibrary.TranModel;
using NX_ModelClassLibrary.WcsDispatch;
using NX_ModelClassLibrary.WmsTask;
using NX_WcsDal.CommonBusiness;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NX_WcsDal.WcsDispatch
{
public class TaskRequest_Dal
{
#region 单例模式
///
/// 单例模式对象
///
private static TaskRequest_Dal _instance = null;
private static readonly object lockObj = new object();
///
/// 单例模式方法
///
public static TaskRequest_Dal Instance
{
get
{
if (_instance == null)
{
lock (lockObj)
{
if (_instance == null)
{
_instance = new TaskRequest_Dal();
}
}
}
return _instance;
}
}
#endregion
public WmsTskTaskMd GetUnfinishWmsTaskOfPalletCode(string palletCode)
{
try
{
string sqlGetUnfinishWmsTask = $@"
SELECT
TOP 1
A.TASK_ID,
A.NEWID,
A.WAREHOUSE_CODE,
A.WAREHOUSE_NAME,
A.TASK_NO,
A.TRAY_CODE,
A.PALLET_CODE,
A.TRAY_LOADED_TYPE,
A.SLOC_CODE,
A.ELOC_CODE,
A.CLOC_CODE,
A.TASK_TYPE,
A.TASK_MSG,
A.ERR_FLAG,
A.TASK_PRIORITY,
A.TASK_STATUS,
A.SBIN_CODE,
A.EBIN_CODE,
A.CMD_NO,
A.ROUTE_CODE,
A.CREATE_BY,
B.USER_CODE CreateCode,
B.USER_NAME CreateName,
A.CREATE_TIME,
A.UPDATE_BY,
C.USER_CODE UpdateCode,
C.USER_NAME UpdateName,
A.UPDATE_TIME,
A.DATA_VERSION,
A.REMARKS1,
A.REMARKS2,
A.REMARKS3,
A.REMARKS4,
A.REMARKS5
FROM
WMS_TSK_TASK A
LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
WHERE
A.PALLET_CODE = '{palletCode}'
AND A.TASK_STATUS < '{(int)WmsTaskStatusEnum.任务完成}'
";
DataTable dtGetUnfinishWmsTask = LeadDbHelperSQLServer.Query(sqlGetUnfinishWmsTask).Tables[0];
if (dtGetUnfinishWmsTask != null && dtGetUnfinishWmsTask.Rows.Count > 0)
{
DataRow item = dtGetUnfinishWmsTask.Rows[0];
WmsTskTaskMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dtGetUnfinishWmsTask.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"根据托盘号获取WMS未完成的大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public BasWcsDevMd GetCrnDevMsg(string shelfCode)
{
try
{
string sql = $@"
SELECT
*
FROM
WCS_BAS_DEV
WHERE
DEV_CODE = (
SELECT
DEV_CODE
FROM
BAS_SHELF
WHERE
SHELF_CODE = '{shelfCode}'
)
";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
BasWcsDevMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取堆垛机设备信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public WcsCrnCmdMd GetUnfinishWcsCrnCmdOfPalletCode(string palletCode)
{
try
{
string sqlQueryCrnUnFinishedCmd = $@"
SELECT
TOP 1
A.CRN_CMD_ID,
A.NEWID,
A.TASK_NO,
A.CMD_NO,
A.TRAY_CODE,
A.PALLET_CODE,
A.TRAY_STATUS,
A.CRN_DEV_NO,
A.CRN_FORK_DEV_NO,
A.SBIN_NO,
A.SBIN_ROW,
A.SBIN_COL,
A.SBIN_LAYER,
A.S_EXTENSION_GROUP,
A.S_EXTENSION_IDX,
A.EBIN_NO,
A.EBIN_ROW,
A.EBIN_COL,
A.EBIN_LAYER,
A.E_EXTENSION_GROUP,
A.E_EXTENSION_IDX,
A.CMD_TYPE,
A.ACTIVE_TYPE,
A.CMD_PRIORITY,
A.CMD_STATUS,
A.CMD_LOG,
A.ERR_FLAG,
A.ERR_LOG,
A.CREATE_BY,
B.USER_CODE CreateCode,
B.USER_NAME CreateName,
A.CREATE_TIME,
A.EXECUTE_TIME,
A.FINISH_TIME,
A.UPDATE_BY,
C.USER_CODE UpdateCode,
C.USER_NAME UpdateName,
A.UPDATE_TIME,
A.DATA_VERSION,
A.REMARKS1,
A.REMARKS2,
A.REMARKS3,
A.REMARKS4,
A.REMARKS5
FROM
WCS_CRN_CMD A
LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
WHERE A.PALLET_CODE = '{palletCode}' AND A.CMD_STATUS < '{(int)CrnCmdStatusEnum.完成}'
";
DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
WcsCrnCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"根据托盘号获取未完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public WcsTranCmdMd GetUnfinishWcsTranCmdOfPalletCode(string palletCode)
{
try
{
string sqlQueryCrnUnFinishedCmd = $@"
SELECT
TOP 1
A.TRAN_CMD_ID,
A.NEWID,
A.TASK_NO,
A.CMD_NO,
A.TRAY_CODE,
A.PALLET_CODE,
A.TRAY_STATUS,
A.TRAN_DEV_NO,
A.SLOC_NO,
A.SPLC_NO,
A.ELOC_NO,
A.EPLC_NO,
A.CMD_TYPE,
A.ACTIVE_TYPE,
A.CMD_PRIORITY,
A.CMD_STATUS,
A.CMD_LOG,
A.ERR_FLAG,
A.ERR_LOG,
A.CREATE_BY,
B.USER_CODE CreateCode,
B.USER_NAME CreateName,
A.CREATE_TIME,
A.EXECUTE_TIME,
A.FINISH_TIME,
A.UPDATE_BY,
C.USER_CODE UpdateCode,
C.USER_NAME UpdateName,
A.UPDATE_TIME,
A.DATA_VERSION,
A.REMARKS1,
A.REMARKS2,
A.REMARKS3,
A.REMARKS4,
A.REMARKS5
FROM
WCS_TRAN_CMD A
LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
WHERE A.PALLET_CODE = '{palletCode}' AND A.CMD_STATUS < '{(int)TranCmdStatusEnum.完成}'
";
DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
WcsTranCmdMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return tmpMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"根据托盘号获取未完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public bool VerifyTrayMsgAndBalanceMsg(string palletCode,out string trayCode)
{
try
{
string sqlVerifyTrayAndBalanceMsg = $@"
SELECT
A.TRAY_CODE
FROM
WMS_STK_BALANCE A
LEFT JOIN WMS_STK_TRAY B ON A.TRAY_ID = B.TRAY_ID
WHERE
A.PALLET_CODE = '{palletCode}'
AND A.REGION_CODE = 'SHDJ_Region'
AND A.BALANCE_STATUS = '55'
AND B.TRAY_STATUS = '55'
";
DataTable dt = LeadDbHelperSQLServer.Query(sqlVerifyTrayAndBalanceMsg).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
trayCode = dt.Rows[0][0].ToString();
return true;
}
else
{
trayCode = null;
return false;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"校验托盘号库存和组盘信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
trayCode = null;
return false;
}
}
public BasRegionMd GetRegionMd(string regionCode)
{
try
{
string sql = $@"select * from BAS_REGION where REGION_CODE = '{regionCode}'";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
BasRegionMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取库区信息发生异常!{ex.Message}", LogTypeEnum.Err);
return null;
}
}
public BasNextLocRouteMd GetRouteMsg(BasWcsLocMd sLocNo, BasWcsLocMd eLocNo)
{
try
{
string sqlGetRoute = $@"SELECT * FROM dbo.FN_GetAllNextRoute('{sLocNo.LocCode}','{eLocNo.LocCode}')";
DataTable dt = LeadDbHelperSQLServer.Query(sqlGetRoute).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
BasNextLocRouteMd nextLocRouteMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return nextLocRouteMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取起点站台:【{sLocNo.LocCode}】到终点站台:【{eLocNo.LocCode}】的路径信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public int InsertWmsTaskData(TaskRequestMd taskRequestMd, BasWcsLocMd eLocNo, string trayCode, BasNextLocRouteMd basNextLocRouteMd, BasRegionMd regionMd)
{
try
{
string taskNo = BasCommon_Dal.Instance.GetSysSequence("Task_No");
string sqlInsertWmsTask = $@"
INSERT INTO [dbo].[WMS_TSK_TASK] (
[WAREHOUSE_CODE],
[WAREHOUSE_NAME],
[REGION_CODE],
[TASK_NO],
[TRAY_CODE],
[PALLET_CODE],
[TRAY_LOADED_TYPE],
[SLOC_CODE],
[ELOC_CODE],
[CLOC_CODE],
[TASK_TYPE],
[TASK_MSG],
[ERR_FLAG],
[TASK_PRIORITY],
[TASK_STATUS],
[SBIN_CODE],
[EBIN_CODE],
[CMD_NO],
[ROUTE_CODE],
[CREATE_BY],
[CREATE_TIME],
[UPDATE_BY],
[UPDATE_TIME],
[DATA_VERSION],
[REMARKS1],
[REMARKS2],
[REMARKS3],
[REMARKS4],
[REMARKS5]
)
VALUES
(
'{regionMd.WarehouseCode}',
'{regionMd.WarehouseName}',
'{regionMd.RegionCode}',
'{taskNo}',
'{trayCode}',
'{taskRequestMd.PalletCode}',
'{(int)TrayStatusEnum.满盘}',
'{taskRequestMd.CurrentLocNo}',
'{eLocNo.LocCode}',
'{taskRequestMd.CurrentLocNo}',
'{(int)WmsTaskTypeEnum.正常收货入库}',
NULL,
'{(int)WcsCmdErrFlagEnum.正常}',
'{100}',
'{(int)WmsTaskStatusEnum.初始创建}',
NULL,
NULL,
NULL,
'{basNextLocRouteMd.SectionNo}',
1,
getdate(),
1,
getdate(),
0,
NULL,
NULL,
NULL,
NULL,
NULL
);
";
return LeadDbHelperSQLServer.ExecuteSql(sqlInsertWmsTask);
}
catch (Exception ex)
{
LogHelper.WriteLog($"插入WMS大任务数据发生异常!【{ex.Message}】请求参数:【{JsonHelper.ToJson(taskRequestMd)}】终点站台:【{JsonHelper.ToJson(eLocNo)}】", LogTypeEnum.Err);
return 0;
}
}
public int GetRuningWmsTaskNum()
{
try
{
string sqlGetUnfinishWmsTaskNum = $@"
SELECT
COUNT (1)
FROM
WMS_TSK_TASK
WHERE
TASK_STATUS > '{(int)WmsTaskStatusEnum.初始创建}'
AND TASK_STATUS < '{(int)WmsTaskStatusEnum.任务完成}'
";
object obj = LeadDbHelperSQLServer.GetSingle(sqlGetUnfinishWmsTaskNum);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取正在执行的WMS大任务总数发生异常!【{ex.Message}】", LogTypeEnum.Err);
return 0;
}
}
public WmsTskTaskMd GetWmsTaskOriginalState(string regionCode)
{
try
{
string sqlGetUnfinishWmsTask = $@"
SELECT
TOP 1
A.TASK_ID,
A.NEWID,
A.WAREHOUSE_CODE,
A.WAREHOUSE_NAME,
A.TASK_NO,
A.TRAY_CODE,
A.PALLET_CODE,
A.TRAY_LOADED_TYPE,
A.SLOC_CODE,
A.ELOC_CODE,
A.CLOC_CODE,
A.TASK_TYPE,
A.TASK_MSG,
A.ERR_FLAG,
A.TASK_PRIORITY,
A.TASK_STATUS,
A.SBIN_CODE,
A.EBIN_CODE,
A.CMD_NO,
A.ROUTE_CODE,
A.CREATE_BY,
B.USER_CODE CreateCode,
B.USER_NAME CreateName,
A.CREATE_TIME,
A.UPDATE_BY,
C.USER_CODE UpdateCode,
C.USER_NAME UpdateName,
A.UPDATE_TIME,
A.DATA_VERSION,
A.REMARKS1,
A.REMARKS2,
A.REMARKS3,
A.REMARKS4,
A.REMARKS5
FROM
WMS_TSK_TASK A
LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
WHERE
1=1
AND A.TASK_STATUS = '{(int)WmsTaskStatusEnum.初始创建}'
AND A.REGION_CODE = '{regionCode}'
ORDER BY A.TASK_PRIORITY,A.TASK_TYPE,A.CREATE_TIME
";
DataTable dtGetUnfinishWmsTask = LeadDbHelperSQLServer.Query(sqlGetUnfinishWmsTask).Tables[0];
if (dtGetUnfinishWmsTask != null && dtGetUnfinishWmsTask.Rows.Count > 0)
{
DataRow item = dtGetUnfinishWmsTask.Rows[0];
WmsTskTaskMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dtGetUnfinishWmsTask.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取初始创建的WMS大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public WmsTskTaskMd InsertTranCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasWcsLocMd sLocNo, BasWcsLocMd eLocNo, BasNextLocRouteMd locRouteMd)
{
try
{
string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
string sqlInsertTranCmd = $@"
INSERT INTO [dbo].[WCS_TRAN_CMD] (
[TASK_NO],
[CMD_NO],
[TRAY_CODE],
[PALLET_CODE],
[TRAY_STATUS],
[TRAN_DEV_NO],
[SLOC_NO],
[SPLC_NO],
[ELOC_NO],
[EPLC_NO],
[CMD_TYPE],
[ACTIVE_TYPE],
[CMD_PRIORITY],
[CMD_STATUS],
[CMD_LOG],
[ERR_FLAG],
[ERR_LOG],
[CREATE_BY],
[CREATE_TIME],
[UPDATE_BY],
[UPDATE_TIME],
[DATA_VERSION],
[REMARKS1],
[REMARKS2],
[REMARKS3],
[REMARKS4],
[REMARKS5]
)
VALUES
(
'{wmsTskTaskMd.TaskNo}',
'{cmdNo}',
'{wmsTskTaskMd.TrayCode}',
'{wmsTskTaskMd.PalletCode}',
'{(int)wmsTskTaskMd.TrayLoadedType}',
'{locRouteMd.DevNo}',
'{sLocNo.LocCode}',
'{sLocNo.LocCode}',
'{eLocNo.LocCode}',
'{eLocNo.LocCode}',
'{(int)TranCmdTypeEnum.TRANSFER}',
'{(int)TranActiveTypeEnum.直行}',
100,
'{(int)TranCmdStatusEnum.初始创建}',
NULL,
'{(int)WcsCmdErrFlagEnum.正常}',
NULL,
'{wmsTskTaskMd.UpdateBy}',
getdate(),
{wmsTskTaskMd.UpdateBy},
getdate(),
0,
NULL,
NULL,
NULL,
NULL,
NULL
);
";
string sqlUpdateWmsTask = $@"
UPDATE WMS_TSK_TASK
SET CLOC_CODE = '{locRouteMd.SlocNo}',
CMD_NO = '{cmdNo}',
ROUTE_CODE = '{locRouteMd.SectionNo}',
TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
UPDATE_TIME = GETDATE()
WHERE
TASK_ID = '{wmsTskTaskMd.TaskId}'
";
List sqlLst = new List
{
sqlUpdateWmsTask,
sqlInsertTranCmd
};
int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
if (row > 0)
{
wmsTskTaskMd.ClocCode = locRouteMd.SlocNo;
wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
wmsTskTaskMd.RouteCode = locRouteMd.SectionNo;
wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
wmsTskTaskMd.UpdateTime = DateTime.Now;
return wmsTskTaskMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"修改WMS大任务状态、新增输送线指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public BasBinMd GetBinMdOfCode(string binCode)
{
try
{
string sqlGetBinMdOfCodeAndType = $@"
SELECT
TOP 1 A.*, B.USER_CODE CreateCode,
B.USER_NAME CreateName,
C.USER_CODE UpdateCode,
C.USER_NAME UpdateName
FROM
BAS_BIN A
LEFT JOIN SYS_USER B ON A.CREATE_BY = B.USER_ID
LEFT JOIN SYS_USER C ON A.UPDATE_BY = C.USER_ID
WHERE
A.USED_FLAG = 1
AND A.DEL_FLAG = 0
AND A.BIN_CODE = '{binCode}'
";
DataTable dt = LeadDbHelperSQLServer.Query(sqlGetBinMdOfCodeAndType).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
DataRow item = dt.Rows[0];
BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
return retMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取库位号:【{binCode}】的详细库位信息发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public WmsTskTaskMd InsertCrnCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasBinMd sBinMd, BasBinMd eBinMd, BasWcsDevMd devMd)
{
try
{
string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
string sqlInsertCrnCmd = $@"
INSERT INTO [dbo].[WCS_CRN_CMD] (
[TASK_NO],
[CMD_NO],
[TRAY_CODE],
[PALLET_CODE],
[TRAY_STATUS],
[CRN_DEV_NO],
[CRN_FORK_DEV_NO],
[SBIN_NO],
[SBIN_ROW],
[SBIN_COL],
[SBIN_LAYER],
[S_EXTENSION_GROUP],
[S_EXTENSION_IDX],
[EBIN_NO],
[EBIN_ROW],
[EBIN_COL],
[EBIN_LAYER],
[E_EXTENSION_GROUP],
[E_EXTENSION_IDX],
[CMD_TYPE],
[ACTIVE_TYPE],
[CMD_PRIORITY],
[CMD_STATUS],
[CMD_LOG],
[ERR_FLAG],
[ERR_LOG],
[CREATE_BY],
[CREATE_TIME],
[UPDATE_BY],
[UPDATE_TIME],
[DATA_VERSION],
[REMARKS1],
[REMARKS2],
[REMARKS3],
[REMARKS4],
[REMARKS5]
)
VALUES
(
'{wmsTskTaskMd.TaskNo}',
'{cmdNo}',
'{wmsTskTaskMd.TrayCode}',
'{wmsTskTaskMd.PalletCode}',
'{(int)wmsTskTaskMd.TrayLoadedType}',
'{devMd.DevCode}',
'{devMd.DevCode}',
'{sBinMd.BinCode}',
'{sBinMd.BinRow}',
'{sBinMd.BinColumn}',
'{sBinMd.BinLayer}',
'{sBinMd.EXTENSION_GROUP}',
'{sBinMd.EXTENSION_IDX}',
'{eBinMd.BinCode}',
'{eBinMd.BinRow}',
'{eBinMd.BinColumn}',
'{eBinMd.BinLayer}',
'{eBinMd.EXTENSION_GROUP}',
'{eBinMd.EXTENSION_IDX}',
'{CrnCmdTypeEnum.MOVE}',
'{(int)CrnActiveTypeEnum.取放货}',
1,
'{(int)CrnCmdStatusEnum.初始创建}',
NULL,
'{(int)WcsCmdErrFlagEnum.正常}',
NULL,
'{wmsTskTaskMd.UpdateBy}',
getdate(),
'{wmsTskTaskMd.UpdateBy}',
getdate(),
0,
NULL,
NULL,
NULL,
NULL,
NULL
);
";
string sqlUpdateWmsTask = $@"
UPDATE WMS_TSK_TASK
SET CLOC_CODE = '{wmsTskTaskMd.SlocCode}',
CMD_NO = '{cmdNo}',
ROUTE_CODE = '',
TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
UPDATE_TIME = GETDATE()
WHERE
TASK_ID = '{wmsTskTaskMd.TaskId}'
";
List sqlLst = new List
{
sqlUpdateWmsTask,
sqlInsertCrnCmd
};
int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
if (row > 0)
{
wmsTskTaskMd.ClocCode = wmsTskTaskMd.SlocCode;
wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
wmsTskTaskMd.RouteCode = "";
wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
wmsTskTaskMd.UpdateTime = DateTime.Now;
return wmsTskTaskMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"修改WMS大任务状态、新增堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public WmsTskTaskMd InsertCrnCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasBinMd sBinMd, BasBinMd eBinMd, BasNextLocRouteMd locRouteMd)
{
try
{
string cmdNo = BasCommon_Dal.Instance.GetSysSequence("Cmd_No");
string sqlInsertCrnCmd = $@"
INSERT INTO [dbo].[WCS_CRN_CMD] (
[TASK_NO],
[CMD_NO],
[TRAY_CODE],
[PALLET_CODE],
[TRAY_STATUS],
[CRN_DEV_NO],
[CRN_FORK_DEV_NO],
[SBIN_NO],
[SBIN_ROW],
[SBIN_COL],
[SBIN_LAYER],
[S_EXTENSION_GROUP],
[S_EXTENSION_IDX],
[EBIN_NO],
[EBIN_ROW],
[EBIN_COL],
[EBIN_LAYER],
[E_EXTENSION_GROUP],
[E_EXTENSION_IDX],
[CMD_TYPE],
[ACTIVE_TYPE],
[CMD_PRIORITY],
[CMD_STATUS],
[CMD_LOG],
[ERR_FLAG],
[ERR_LOG],
[CREATE_BY],
[CREATE_TIME],
[UPDATE_BY],
[UPDATE_TIME],
[DATA_VERSION],
[REMARKS1],
[REMARKS2],
[REMARKS3],
[REMARKS4],
[REMARKS5]
)
VALUES
(
'{wmsTskTaskMd.TaskNo}',
'{cmdNo}',
'{wmsTskTaskMd.TrayCode}',
'{wmsTskTaskMd.PalletCode}',
'{(int)wmsTskTaskMd.TrayLoadedType}',
'{locRouteMd.DevNo}',
'{locRouteMd.DevNo}',
'{sBinMd.BinCode}',
'{sBinMd.BinRow}',
'{sBinMd.BinColumn}',
'{sBinMd.BinLayer}',
'{sBinMd.EXTENSION_GROUP}',
'{sBinMd.EXTENSION_IDX}',
'{eBinMd.BinCode}',
'{eBinMd.BinRow}',
'{eBinMd.BinColumn}',
'{eBinMd.BinLayer}',
'{eBinMd.EXTENSION_GROUP}',
'{eBinMd.EXTENSION_IDX}',
'{CrnCmdTypeEnum.IN}',
'{(int)CrnActiveTypeEnum.取放货}',
'{wmsTskTaskMd.TaskPriority}',
'{(int)CrnCmdStatusEnum.初始创建}',
NULL,
'{(int)WcsCmdErrFlagEnum.正常}',
NULL,
'{wmsTskTaskMd.UpdateBy}',
getdate(),
'{wmsTskTaskMd.UpdateBy}',
getdate(),
0,
NULL,
NULL,
NULL,
NULL,
NULL
);
";
string sqlUpdateWmsTask = $@"
UPDATE WMS_TSK_TASK
SET CLOC_CODE = '{locRouteMd.SlocNo}',
CMD_NO = '{cmdNo}',
ROUTE_CODE = '{locRouteMd.SectionNo}',
TASK_STATUS = '{(int)WmsTaskStatusEnum.指令下发}',
UPDATE_TIME = GETDATE()
WHERE
TASK_ID = '{wmsTskTaskMd.TaskId}'
";
List sqlLst = new List
{
sqlUpdateWmsTask,
sqlInsertCrnCmd
};
int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
if (row > 0)
{
wmsTskTaskMd.ClocCode = locRouteMd.SlocNo;
wmsTskTaskMd.CmdNo = Convert.ToInt32(cmdNo);
wmsTskTaskMd.RouteCode = locRouteMd.SectionNo;
wmsTskTaskMd.TaskStatus = WmsTaskStatusEnum.指令下发;
wmsTskTaskMd.UpdateTime = DateTime.Now;
return wmsTskTaskMd;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"修改WMS大任务状态、新增堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
public int GetLimitWmsTaskNum(string val)
{
try
{
string sql = $@"SELECT PARAMETER_VALUE FROM SYS_PARAMETER WHERE PARAMETER_CODE = '{val}'";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
return Convert.ToInt32(dt.Rows[0][0]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取参数信息数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return 0;
}
}
public int GetRuningWmsInstockTaskNum()
{
try
{
string sql = $@"SELECT COUNT(1) FROM WMS_TSK_TASK WHERE TASK_TYPE IN (1,2,3,4,5) AND TASK_STATUS < 99";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
return Convert.ToInt32(dt.Rows[0][0]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取正在作业的入库大任务统计数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return 0;
}
}
public int GetRuningWmsOutstockTaskNum()
{
try
{
string sql = $@"SELECT COUNT(1) FROM WMS_TSK_TASK WHERE TASK_TYPE IN (6,7,8,9) AND TASK_STATUS < 99";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
return Convert.ToInt32(dt.Rows[0][0]);
}
else
{
return 0;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"获取正在作业的入库大任务统计数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return 0;
}
}
}
}