using NX_CommonClassLibrary;
using NX_DbClassLibrary;
using NX_LogClassLibrary;
using NX_ModelClassLibrary.CustomEnum;
using NX_ModelClassLibrary.TranModel;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NX_WcsDal.WcsBusiness
{
public class Tran_Dal
{
#region 单例模式
///
/// 单例模式对象
///
private static Tran_Dal _instance = null;
private static readonly object lockObj = new object();
///
/// 单例模式方法
///
public static Tran_Dal Instance
{
get
{
if (_instance == null)
{
lock (lockObj)
{
if (_instance == null)
{
_instance = new Tran_Dal();
}
}
}
return _instance;
}
}
#endregion
///
/// 加载输送线未完成的指令数据
///
///
public List LoadTranUnFinishedCmd(string regionCode)
{
try
{
string sqlQueryTranUnFinishedCmd = $@"
SELECT
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.CMD_STATUS < '{(int)TranCmdStatusEnum.完成}'
AND A.REGION_CODE = '{regionCode}'
";
DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryTranUnFinishedCmd).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
List retLst = new List();
foreach (DataRow item in dt.Rows)
{
WcsTranCmdMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
retLst.Add(tmpMd);
}
return retLst;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"加载输送线未完成指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
///
/// 更新输送线指令状态
///
/// 输送线指令对象
public void UpdateTranCmdStatus(WcsTranCmdMd wcsTranCmdMd)
{
try
{
string sqlUpdateTranCmdStatus = string.Empty;
if (wcsTranCmdMd.CmdStatus == TranCmdStatusEnum.已下发PLC)
{
sqlUpdateTranCmdStatus = $@"
UPDATE WCS_TRAN_CMD
SET
CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
UPDATE_TIME = GETDATE(),
EXECUTE_TIME = GETDATE()
WHERE
TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
";
}
else if (wcsTranCmdMd.CmdStatus == TranCmdStatusEnum.完成)
{
sqlUpdateTranCmdStatus = $@"
UPDATE WCS_TRAN_CMD
SET CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
UPDATE_TIME = GETDATE(),
FINISH_TIME = GETDATE()
WHERE
TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
";
}
else
{
sqlUpdateTranCmdStatus = $@"
UPDATE WCS_TRAN_CMD
SET CMD_STATUS = '{(int)wcsTranCmdMd.CmdStatus}',
UPDATE_BY = '{wcsTranCmdMd.UpdateBy}',
UPDATE_TIME = GETDATE()
WHERE
TRAN_CMD_ID = '{wcsTranCmdMd.TranCmdId}'
";
}
LeadDbHelperSQLServer.ExecuteSql(sqlUpdateTranCmdStatus);
}
catch (Exception ex)
{
LogHelper.WriteLog($"更新输送线指令状态发生异常!【{ex.Message}】", LogTypeEnum.Err);
}
}
public List LoadAllTranCmd(WcsTranCmdSearchMd searchMd)
{
try
{
string sqlQuery = string.Empty;
if (!string.IsNullOrEmpty(searchMd.TaskNo))
{
sqlQuery += $" AND TASK_NO = '{searchMd.TaskNo}'";
}
if (!string.IsNullOrEmpty(searchMd.CmdNo))
{
sqlQuery += $" AND CMD_NO = '{searchMd.CmdNo}'";
}
if (!string.IsNullOrEmpty(searchMd.PalletCode))
{
sqlQuery += $" AND PALLET_CODE like '%{searchMd.PalletCode}%'";
}
if (!string.IsNullOrEmpty(searchMd.DevMsg))
{
sqlQuery += $" AND TRAN_DEV_NO = '{searchMd.DevMsg}'";
}
if (!string.IsNullOrEmpty(searchMd.SlocCode))
{
sqlQuery += $" AND SLOC_NO like '%{searchMd.SlocCode}%'";
}
if (!string.IsNullOrEmpty(searchMd.ElocCode))
{
sqlQuery += $" AND ELOC_NO like '%{searchMd.ElocCode}%'";
}
if (!string.IsNullOrEmpty(searchMd.CmdType))
{
sqlQuery += $" AND CMD_TYPE = '{searchMd.CmdType}'";
}
if (!string.IsNullOrEmpty(searchMd.CmdStatus))
{
sqlQuery += $" AND CMD_STATUS = '{searchMd.CmdStatus}'";
}
if (!string.IsNullOrEmpty(searchMd.TrayLoadedType))
{
sqlQuery += $" AND TRAY_STATUS = '{searchMd.TrayLoadedType}'";
}
if (!string.IsNullOrEmpty(searchMd.StartExcuteTime))
{
sqlQuery += $" AND EXECUTE_TIME >= '{searchMd.StartExcuteTime}'";
}
if (!string.IsNullOrEmpty(searchMd.EndExcuteTime))
{
sqlQuery += $" AND EXECUTE_TIME <= '{searchMd.EndExcuteTime}'";
}
if (!string.IsNullOrEmpty(searchMd.StartFinishTime))
{
sqlQuery += $" AND FINISH_TIME >= '{searchMd.StartFinishTime}'";
}
if (!string.IsNullOrEmpty(searchMd.EndFinishTime))
{
sqlQuery += $" AND FINISH_TIME <= '{searchMd.EndFinishTime}'";
}
int pageStartIndex = (searchMd.PageNum - 1) * searchMd.EveryPageQty;
int pageEndIndex = searchMd.PageNum * searchMd.EveryPageQty;
string sql = $@"select * from VW_ZBK_WCS_TRAN_CMD where 1 = 1 {sqlQuery}
ORDER BY A.UPDATE_TIME DESC,A.CREATE_TIME DESC
OFFSET {pageStartIndex} ROWS
FETCH NEXT {searchMd.EveryPageQty} ROWS ONLY";
DataTable dt = LeadDbHelperSQLServer.Query(sql).Tables[0];
if (dt != null && dt.Rows.Count > 0)
{
List retLst = new List();
foreach (DataRow item in dt.Rows)
{
WcsTranCmdMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty(dt.Columns, item);
retLst.Add(retMd);
}
return retLst;
}
else
{
return null;
}
}
catch (Exception ex)
{
LogHelper.WriteLog($"加载堆垛机所有作业指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
return null;
}
}
}
}