123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636 |
- using NX_CommonClassLibrary;
- using NX_DbClassLibrary;
- using NX_LogClassLibrary;
- using NX_ModelClassLibrary.BaseModel;
- 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 TaskResponse_Dal
- {
- #region 单例模式
- /// <summary>
- /// 单例模式对象
- /// </summary>
- private static TaskResponse_Dal _instance = null;
- private static readonly object lockObj = new object();
- /// <summary>
- /// 单例模式方法
- /// </summary>
- public static TaskResponse_Dal Instance
- {
- get
- {
- if (_instance == null)
- {
- lock (lockObj)
- {
- if (_instance == null)
- {
- _instance = new TaskResponse_Dal();
- }
- }
- }
- return _instance;
- }
- }
- #endregion
- public WcsTranCmdMd GetFinishedWcsTranCmdOfPalletCode(string trayCode, string palletCode, string eLocNo)
- {
- 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.TRAY_CODE = '{trayCode}' AND A.PALLET_CODE = '{palletCode}' AND A.CMD_STATUS = '{(int)TranCmdStatusEnum.完成}' AND A.ELOC_NO = '{eLocNo}'
- ";
- DataTable dt = LeadDbHelperSQLServer.Query(sqlQueryCrnUnFinishedCmd).Tables[0];
- if (dt != null && dt.Rows.Count > 0)
- {
- DataRow item = dt.Rows[0];
- WcsTranCmdMd tmpMd = ColumnToClassPropertyHelper.ColumnToClassProperty<WcsTranCmdMd>(dt.Columns, item);
- return tmpMd;
- }
- else
- {
- return null;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"根据托盘号获取未完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return null;
- }
- }
- public WcsCrnCmdMd GetFinishedWcsCrnCmdOfPalletCode(string palletCode,string trayCode)
- {
- 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.TRAY_CODE = '{trayCode}' AND 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<WcsCrnCmdMd>(dt.Columns, item);
- return retMd;
- }
- else
- {
- return null;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"根据托盘号获取完成的堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return null;
- }
- }
- public void UpdateWmsTaskElocNo(WmsTskTaskMd taskMd)
- {
- try
- {
- string sql = $@"update WMS_TSK_TASK set ELOC_CODE = '{taskMd.ElocCode}' where TASK_ID = '{taskMd.TaskId}'";
- LeadDbHelperSQLServer.ExecuteSql(sql) ;
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"更新WMS大任务的终点数据时发生异常!【{ex.Message}】", LogTypeEnum.Err);
- }
- }
- public WmsTskTaskMd GetUnfinishWmsTaskOfTaskNo(string taskNo)
- {
- 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.TASK_NO = '{taskNo}'
- 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<WmsTskTaskMd>(dtGetUnfinishWmsTask.Columns, item);
- return retMd;
- }
- else
- {
- return null;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"根据托盘号获取WMS未完成的大任务数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return null;
- }
- }
-
- public BasBinMd GetBinMdOfCodeAndType(string binCode, BasBinTypeEnum basBinType)
- {
- 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}'
- AND A.BIN_TYPE = '{(int)basBinType}'
- ";
- DataTable dt = LeadDbHelperSQLServer.Query(sqlGetBinMdOfCodeAndType).Tables[0];
- if (dt != null && dt.Rows.Count > 0)
- {
- DataRow item = dt.Rows[0];
- BasBinMd retMd = ColumnToClassPropertyHelper.ColumnToClassProperty<BasBinMd>(dt.Columns, item);
- return retMd;
- }
- else
- {
- return null;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"获取库位类型:【{basBinType}】库位号:【{binCode}】的详细库位信息发生异常!【{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<BasBinMd>(dt.Columns, item);
- return retMd;
- }
- else
- {
- return null;
- }
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"获取库位号:【{binCode}】的详细库位信息发生异常!【{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<BasNextLocRouteMd>(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 InsertCrnCmdAndUpdateWmsTask(WmsTskTaskMd wmsTskTaskMd, BasBinMd emptyBin, BasBinMd inBinMd, 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}',
- '{inBinMd.BinCode}',
- '{inBinMd.BinRow}',
- '{inBinMd.BinColumn}',
- '{inBinMd.BinLayer}',
- '{inBinMd.EXTENSION_GROUP}',
- '{inBinMd.EXTENSION_IDX}',
- '{emptyBin.BinCode}',
- '{emptyBin.BinRow}',
- '{emptyBin.BinColumn}',
- '{emptyBin.BinLayer}',
- '{emptyBin.EXTENSION_GROUP}',
- '{emptyBin.EXTENSION_IDX}',
- '{CrnCmdTypeEnum.IN}',
- '{(int)CrnActiveTypeEnum.取放货}',
- 100,
- '{(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}',
- SBIN_CODE = '{inBinMd.BinCode}',
- EBIN_CODE = '{emptyBin.BinCode}',
- CMD_NO = '{cmdNo}',
- ROUTE_CODE = '{locRouteMd.SectionNo}',
- TASK_STATUS = '{(int)WmsTaskStatusEnum.指令执行中}',
- UPDATE_TIME = GETDATE()
- WHERE
- TASK_ID = '{wmsTskTaskMd.TaskId}'
- ";
- List<string> sqlLst = new List<string>
- {
- sqlUpdateWmsTask,
- sqlInsertCrnCmd
- };
- int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
- return row;
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"修改WMS大任务状态、新增堆垛机指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return 0;
- }
- }
- public void UpdateMoveWmsTaskAndBalance(WmsTskTaskMd wmsTskTaskMd)
- {
- try
- {
- string sqlUodateWmsTaskToTargetLoc = $@"
- UPDATE WMS_TSK_TASK
- SET
- TASK_STATUS = '{(int)WmsTaskStatusEnum.任务完成}',
- UPDATE_TIME = GETDATE()
- WHERE
- TASK_ID = '{wmsTskTaskMd.TaskId}'
- ";
- string sqlUpdateSbinBalacne = $@"
- UPDATE WMS_STK_BALANCE
- SET BALANCE_STATUS = '99',
- UPDATE_TIME = GETDATE(),
- DATA_VERSION = DATA_VERSION + 1
- WHERE
- TRAY_CODE = '{wmsTskTaskMd.TrayCode}'
- AND BALANCE_STATUS = 66
- AND BIN_CODE = '{wmsTskTaskMd.SbinCode}'
- ";
- string sqlUpdateEbinBalacne = $@"
- UPDATE WMS_STK_BALANCE
- SET BALANCE_STATUS = '55',
- UPDATE_TIME = GETDATE(),
- DATA_VERSION = DATA_VERSION + 1
- WHERE
- TRAY_CODE = '{wmsTskTaskMd.TrayCode}'
- AND BALANCE_STATUS = 66
- AND BIN_CODE = '{wmsTskTaskMd.EbinCode}'
- ";
- List<string> sqlList = new List<string>();
- sqlList.Add(sqlUodateWmsTaskToTargetLoc);
- sqlList.Add(sqlUpdateSbinBalacne);
- sqlList.Add(sqlUpdateEbinBalacne);
- LeadDbHelperSQLServer.ExecuteSqlTran(sqlList);
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"更新WMS内伸货位移库大任务完成状态时发生异常!【{ex.Message}】", LogTypeEnum.Err);
- }
- }
- public int UpdateWmsTaskToTargetLoc(WmsTskTaskMd wmsTskTaskMd)
- {
- try
- {
- string sqlUodateWmsTaskToTargetLoc = $@"
- UPDATE WMS_TSK_TASK
- SET
- TASK_STATUS = '{(int)WmsTaskStatusEnum.托盘到目标}',
- UPDATE_TIME = GETDATE()
- WHERE
- TASK_ID = '{wmsTskTaskMd.TaskId}'
- ";
- int row = LeadDbHelperSQLServer.ExecuteSql(sqlUodateWmsTaskToTargetLoc);
- return row;
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"修改WMS大任务状态为托盘到目标时发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return 0;
- }
- }
- public int 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<string> sqlLst = new List<string>
- {
- sqlUpdateWmsTask,
- sqlInsertTranCmd
- };
- int row = LeadDbHelperSQLServer.ExecuteSqlTran(sqlLst);
- return row;
- }
- catch (Exception ex)
- {
- LogHelper.WriteLog($"修改WMS大任务状态、新增输送线指令数据发生异常!【{ex.Message}】", LogTypeEnum.Err);
- return 0;
- }
- }
- }
- }
|