using SqlSugar; using System; using System.Collections.Generic; using System.Data; using System.Text; using WCS_Client.Models; using WCS_Client.Utility; using WCS_Client.Workflow; using WCS_TASK = WCS.Entity.WCS_TASK; namespace WCS_Client { public class BaseWorkflow { public static bool Login(string use_No, string use_Pwd, out string errMsg) { bool result = false; errMsg = string.Empty; string errorMsg = string.Empty; try { TryCachHelper.TryExecute((db) => { var user = db.Queryable().First(v => v.USER_NO == use_No); if (user == null) { errorMsg = LangConst.UserNotExists; } else { if (user.USER_PWD == Md5Helper.Md5Hash(use_Pwd)) { string user_textStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT); string jiemastr = BinaryHelper.jiema(user_textStr); WCS_Users userinfo = jiemastr.ToObject(); userinfo.Use_LoginTime = DateTime.Now; string userjson = userinfo.ToJson(); user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(BinaryHelper.bianma(userjson)); if (db.Updateable(user).UpdateColumns(it => it.USER_TEXT).ExecuteCommand() > 0) { user.GetUserInfo(userinfo); CurrentHelper.User = user; result = true; } else { errorMsg = LangConst.UpdateError; } } else { errorMsg = LangConst.PasswordError; } } }); //using (MAction action = new MAction(TableEnum.WCS_Users)) //{ // MDataTable mdt = action.Select(); // var users = mdt.ToList(); // var user = users.FirstOrDefault(v => v.USER_NO == use_No); // if (user == null) // { // errMsg = LangConst.UserNotExists; // } // else // { // if (user.USER_PWD == Md5Helper.Md5Hash(use_Pwd)) // { // string user_textStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT); // string jiemastr = BinaryHelper.jiema(user_textStr); // WCS_Users userinfo = jiemastr.ToObject(); // userinfo.Use_LoginTime = DateTime.Now; // string userjson = userinfo.ToJson(); // user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(BinaryHelper.bianma(userjson)); // action.Set("USER_TEXT", user.USER_TEXT); // string where = string.Format("USER_NO = '{0}'", user.USER_NO); // if (action.Update(where, false)) // { // user.GetUserInfo(userinfo); // CurrentHelper.User = user; // //CurrentHelper.User.UserInfoItem = BinaryHelper.jiema(CurrentHelper.User.User_Text).ToObject(); // result = true; // } // else // { // errMsg = LangConst.UpdateError; // } // } // else // { // errMsg = LangConst.PasswordError; // } // } //} } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); throw new Exception(LangConst.SysError); } return result; } public static PageData QueryDatatble(DataTable dt, int PageIndex, int PageSize) { if (PageSize <= 0) PageSize = 2000; int startRecord = (PageIndex - 1) * PageSize + 1; int endRecord = startRecord + PageSize - 1; try { int count = dt.Rows.Count; int PageCount = count / PageSize; if (count % PageSize > 0) PageCount += 1; if (dt != null && dt.Rows.Count > 0) { PageData PageDataItem = new PageData(); PageDataItem.PageIndex = PageIndex; PageDataItem.PageSize = PageSize; PageDataItem.PageCount = PageCount; PageDataItem.RowsCount = count; dt.TableName = "table"; PageDataItem.Dt = dt; return PageDataItem; } } catch (Exception ex) { } return null; } public static PageData QueryPageData(string _SQLText, string orderText, List WhereStringList, int PageIndex, int PageSize) { var sb = new StringBuilder(); sb.Append(_SQLText); if (WhereStringList != null && WhereStringList.Count > 0) { foreach (var item in WhereStringList) { sb.Append(" and "); sb.Append(item); } } return QueryPageSql(sb.ToString(), orderText, PageIndex, PageSize); } private static PageData QueryPageSql(string SQLText, string OrderText, int PageIndex, int PageSize) { if (PageSize <= 0) PageSize = 2000; int startRecord = (PageIndex - 1) * PageSize + 1; int endRecord = startRecord + PageSize - 1; string sql = string.Format("select * from (select ROW_NUMBER() Over (Order By {0}) as RN,a.* from ({1}) a) b where b.RN between {2} and {3}", OrderText, SQLText, startRecord, endRecord); string CountStr = string.Format("Select Count(1) From ({0}) t", SQLText); try { DataTable dt = null; int count = 0; TryCachHelper.TryExecute((db) => { dt = db.Ado.GetDataTable(sql); if (sql.Contains("dbo.WCS_TASK")) TaskWorkflow.DataTableAddColumn(dt, db); //else if (sql.Contains("[dbo].[WCS_EXCEPTION]")) ExceptionLogWorkflow.DataTableAddColumn(dt, db); count = Convert.ToInt32(db.Ado.GetScalar(CountStr)); }); int PageCount = count / PageSize; if (count % PageSize > 0) PageCount += 1; if (dt != null && dt.Rows.Count > 0) { PageData PageDataItem = new PageData(); PageDataItem.PageIndex = PageIndex; PageDataItem.PageSize = PageSize; PageDataItem.PageCount = PageCount; PageDataItem.RowsCount = count; dt.TableName = "table"; PageDataItem.Dt = dt; return PageDataItem; } } catch (Exception ex) { } return null; } public static PageData QueryPageData2(string _SQLText, string orderText, List WhereStringList, int PageIndex, int PageSize) { var sb = new StringBuilder(); sb.Append(_SQLText); if (WhereStringList != null && WhereStringList.Count > 0) { sb.Append(" and "); sb.Append(WhereStringList[0]); } return QueryPageSql2(sb.ToString(), orderText, PageIndex, PageSize); } private static PageData QueryPageSql2(string SQLText, string OrderText, int PageIndex, int PageSize) { if (PageSize <= 0) PageSize = 2000; int startRecord = (PageIndex - 1) * PageSize + 1; int endRecord = startRecord + PageSize - 1; string sql = string.Format("select * from (select ROW_NUMBER() Over (Order By {0}) as RN,a.* from ({1}) a) b where b.RN between {2} and {3}", OrderText, SQLText, startRecord, endRecord); string CountStr = string.Format("Select Count(1) From ({0}) t", SQLText); try { DataTable dt = null; int count = 0; TryCachHelper.TryExecute((db) => { List usersList = db.SqlQueryable(sql).ToList(); foreach (var item in usersList) { string binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT); string jsonstr = BinaryHelper.jiema(binaryStr); var user = jsonstr.ToObject(); item.GetUserInfo(user); } dt = DatatableConvertHelper.ToDataTable(usersList); count = Convert.ToInt32(db.Ado.GetScalar(CountStr)); }); int PageCount = count / PageSize; if (count % PageSize > 0) PageCount += 1; if (dt != null && dt.Rows.Count > 0) { PageData PageDataItem = new PageData(); PageDataItem.PageIndex = PageIndex; PageDataItem.PageSize = PageSize; PageDataItem.PageCount = PageCount; PageDataItem.RowsCount = count; dt.TableName = "table"; PageDataItem.Dt = dt; return PageDataItem; } } catch (Exception ex) { } return null; } public static DataTable CommonQueryUser(string sql) { DataTable dt = null; try { TryCachHelper.TryExecute((db) => { List usersList = db.SqlQueryable(sql).ToList(); foreach (var item in usersList) { var binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT); string jsonstr = BinaryHelper.jiema(binaryStr); var user = jsonstr.ToObject(); item.GetUserInfo(user); } dt = DatatableConvertHelper.ToDataTable(usersList); }); } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); } return dt; } public static DataTable CommonQuery(string sql) { DataTable dt = null; TryCachHelper.TryExecute((db) => { dt = db.Ado.GetDataTable(sql); }); return dt; } public static string AddEditUser(WCS_Users user) { string result = string.Empty; try { if (user.USER_NO == LangConst.DefaultUser) { result = LangConst.DefaultUserError; } else { var json = user.ToJson(); string binarystr = BinaryHelper.bianma(json); user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binarystr); TryCachHelper.TryExecute((db) => { var wcs_user = db.Queryable().First(v => v.USER_NO == user.USER_NO); if (wcs_user == null) { //默认密码 user.USER_PWD = Md5Helper.Md5Hash(LangConst.DefaultPwd); db.Insertable(user).ExecuteCommand(); } else { wcs_user.USER_TEXT = user.USER_TEXT; db.Updateable(wcs_user).UpdateColumns(it => it.USER_TEXT).ExecuteCommand(); } }); //using (MAction action = new MAction(TableEnum.WCS_Users)) //{ // if (action.Exists(user.USER_NO)) // { // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT); // string where = string.Format("USER_NO = '{0}'", user.USER_NO); // action.Update(where, false); // } // else // { // //默认密码 // user.USER_PWD = Md5Helper.Md5Hash(LangConst.DefaultPwd); // action.Set(WCS_UsersEnum.User_No, user.USER_NO); // action.Set(WCS_UsersEnum.User_Pwd, user.USER_PWD); // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT); // //插入信息 // bool insertresult = action.Insert(InsertOp.None); // } //} } } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); result = string.Format("{0}或{1}", LangConst.AddError, LangConst.UpdateError); } return result; } public static string DeleteUser(string user_no) { string result = string.Empty; try { if (user_no == LangConst.DefaultUser) { result = LangConst.DefaultUserError; } else { TryCachHelper.TryExecute((db) => { db.Deleteable().Where(v => v.USER_NO == user_no).ExecuteCommand(); }); } } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); result = LangConst.DeleteError; } return result; } public static string AdminModifyPwd(string user_no, string user_pwd) { string result = string.Empty; try { TryCachHelper.TryExecute((db) => { var user = db.Queryable().First(v => v.USER_NO == user_no); if (user == null) { result = LangConst.UserNotExists; } else { var binaryStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT); var useritem = BinaryHelper.jiema(binaryStr).ToObject(); useritem.Use_EditUserNo = CurrentHelper.User.USER_NO; useritem.Use_EditDateTime = DateTime.Now; var binStr = BinaryHelper.bianma(useritem.ToJson()); user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binStr); user.USER_PWD = Md5Helper.Md5Hash(user_pwd); db.Updateable(user).UpdateColumns(it => new { it.USER_TEXT, it.USER_PWD }).ExecuteCommand(); } }); //using (MAction action = new MAction(TableEnum.WCS_Users)) //{ // if (action.Exists(user_no)) // { // MDataTable mdt = action.Select(user_no); // var user = mdt.ToList()[0]; // var binaryStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT); // var useritem = BinaryHelper.jiema(binaryStr).ToObject(); // useritem.Use_EditUserNo = CurrentHelper.User.USER_NO; // useritem.Use_EditDateTime = DateTime.Now; // // useritem.User_Pwd = Md5Helper.Md5Hash(user_pwd); // var binStr = BinaryHelper.bianma(useritem.ToJson()); // user.USER_TEXT = BinaryHelper.BinaryStr2ByteArray(binStr); // action.Set(WCS_UsersEnum.User_Pwd, Md5Helper.Md5Hash(user_pwd)); // action.Set(WCS_UsersEnum.User_Text, user.USER_TEXT); // string where = string.Format("User_No = '{0}'", user.USER_NO); // action.Update(where, false); // } // else // { // result = LangConst.UserNotExists; // } //} } catch (Exception ex) { LogHelper.Sys_Log.WriteLog(ex.ToString()); result = LangConst.UpdateError; } return result; } public static DataTable QuerySex() { return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='Sex'")); } public static DataTable QueryUse_Role() { return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='RoleId'")); } public static DataTable QueryTaskType() { return CommonQuery(string.Format("SELECT * FROM WCS_Mappingentry where Mep_MappingType='COMTYPE'")); } public static void AddWCS_TASK_DTL(SqlSugarClient db, int task_id, int task_no, string posIdCur, string posIdNext, string msg) { var task_dtl = new WCS_TASK_DTL(); task_dtl.ID = Guid.NewGuid().ToString(); task_dtl.PARENTID = task_id; task_dtl.TASKNO = task_no.ToString(); task_dtl.POSIDCUR = posIdCur; task_dtl.POSIDNEXT = posIdNext; task_dtl.DESCRIPTION = msg; task_dtl.EXECUTEDATE = DateTime.Now; db.Insertable(task_dtl).ExecuteCommand(); } public static string UpdateTask(int taskid, TaskStatusType taskStatusType) { string result = string.Empty; //try //{ // TryCachHelper.TryExecute((db) => // { // var task = db.Queryable().First(v => v.ID == taskid); // if (taskStatusType == TaskStatusType.重下堆垛机) // { // if (task.STATUS == TaskStatus.堆垛机执行) // { // if (task.TYPE == WCS.Entity.TaskType.出库 || task.TYPE == WCS.Entity.TaskType.移库)//出库,移库 // { // task.TASK_WKSTATUS = 0; // task.ADDRFROM = task.ADDRFROM; // } // else if (task.TASK_COMTYPE == 1)//入库 // { // task.TASK_WKSTATUS = 2; // } // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // result = string.Format("任务[{0}]重下堆垛机成功。", task.TASK_NO); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // else // { // result = string.Format("任务[{0}]不需要重下堆垛机。", task.TASK_NO); // } // } // else if (taskStatusType == TaskStatusType.重下输送机) // { // if (task.TASK_WKSTATUS != (int)WkStatus.堆垛机执行) // { // if (task.TASK_COMTYPE == 1 || task.TASK_COMTYPE == 4)//入库,移动 // { // task.TASK_WKSTATUS = 0; // task.TASK_POSIDNEXT = task.TASK_POSIDFROM; // task.TASK_POSIDCUR = task.TASK_POSIDFROM; // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // result = string.Format("任务[{0}]重下输送机成功。"); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // else // { // //出库,移库 // result = string.Format("出库和移库任务[{0}]不能重下输送机。", task.TASK_NO); // } // } // else // { // result = string.Format("任务[{0}]状态为[堆垛机执行]不能重下输送机。", task.TASK_NO); // } // } // else if (taskStatusType == TaskStatusType.重下RGV上料 && task.TASK_WKSTATUS == (int)WkStatus.RGV上料执行) // { // task.TASK_WKSTATUS = 2; // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // var task_dtlSet = db.Queryable().Where(v => v.PARENTID == task.TASK_NO).ToList(); // var task_dtl = task_dtlSet.FirstOrDefault(v => v.DESCRIPTION.Contains("上料到RGV工位")); // int index = task_dtl.DESCRIPTION.IndexOf("上料到RGV工位"); // int tempindex = task_dtl.DESCRIPTION.IndexOf('[', index); // string conveyerNo = task_dtl.DESCRIPTION.Substring(tempindex + 1, 4); // //解锁 // db.Updateable().UpdateColumns(it => new WCS_EQUIPMENTLOCK { ISLOCK = false }).Where(v => v.EQUIPMENTNO == conveyerNo).ExecuteCommand(); // result = string.Format("任务[{0}]重下RGV上料成功。"); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // else if (taskStatusType == TaskStatusType.重下RGV下料 && task.TASK_WKSTATUS == (int)WkStatus.RGV下料执行) // { // var task_dtlSet = db.Queryable().Where(v => v.PARENTID == task.TASK_NO).ToList(); // var task_dtl = task_dtlSet.FirstOrDefault(v => v.DESCRIPTION.Contains("上料到RGV工位")); // task.TASK_WKSTATUS = 3; // task.TASK_POSIDNEXT = task_dtl.POSIDNEXT; // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // int index = task_dtl.DESCRIPTION.IndexOf("上料到RGV工位"); // int tempindex = task_dtl.DESCRIPTION.IndexOf('[', index); // string conveyerNo = task_dtl.DESCRIPTION.Substring(tempindex + 1, 4); // //解锁 // db.Updateable().UpdateColumns(it => new WCS_EQUIPMENTLOCK { ISLOCK = false }).Where(v => v.EQUIPMENTNO == conveyerNo).ExecuteCommand(); // result = string.Format("任务[{0}]重下RGV下料成功。", task.TASK_NO); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // else if (taskStatusType == TaskStatusType.重下任务) // { // if (task.TASK_COMTYPE == 1)//入库 // { // if (task.TASK_POSIDTO.Length < 10) // { // //未分配货位,可重下 // task.TASK_WKSTATUS = 0; // task.TASK_POSIDNEXT = task.TASK_POSIDFROM; // task.TASK_POSIDCUR = task.TASK_POSIDFROM; // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // result = string.Format("任务[{0}]重新下发成功。", task.TASK_NO); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // } // else if (task.TASK_COMTYPE == 4)//移动 // { // if (task.TASK_WKSTATUS == 0) // { // result = string.Format("任务[{0}]未下发,不需要重下任务。", task.TASK_NO); // } // else // { // //移动任务,可重下 // task.TASK_WKSTATUS = 0; // task.TASK_POSIDNEXT = task.TASK_POSIDFROM; // task.TASK_POSIDCUR = task.TASK_POSIDFROM; // task.TASK_EDITUSERNO = CurrentHelper.User.USER_NO; // task.TASK_EDITDATETIME = DateTime.Now; // db.Updateable(task).UpdateColumns(it => new { it.TASK_WKSTATUS, it.TASK_POSIDNEXT, it.TASK_POSIDCUR, it.TASK_EDITUSERNO, it.TASK_EDITDATETIME }).ExecuteCommand(); // result = string.Format("任务[{0}]重新下发成功。", task.TASK_NO); // AddWCS_TASK_DTL(db, task.TASK_NO, task.TASK_NO, task.TASK_POSIDCUR, task.TASK_POSIDNEXT, result + "操作用户:" + CurrentHelper.User.USER_NO); // } // } // else if (task.TASK_COMTYPE == 2 || task.TASK_COMTYPE == 3)//出库,移库 // { // result = string.Format("任务[{0}]是出库或移库任务,请使用[重下堆垛机]功能。", task.TASK_NO); // } // } // if (string.IsNullOrWhiteSpace(result)) // { // throw new Exception(string.Format("任务[{0}]该状态下不支持[{1}]", task.TASK_NO, taskStatusType)); // } // }); //} //catch (Exception ex) //{ // result = ex.Message; // LogHelper.Sys_Log.WriteLog(ex.ToString()); //} return result; } /// /// 任务完成 /// /// /// 设备编号 /// 任务号 /// 类型 1:入库任务完成 2:堆垛机出库任务完成 3.移库完成 4:出库任务完成 5:任务取消 6:码盘 6:拆盘 public static string TaskComplete(int taskno, int temptype) { string result = string.Empty; string errorresult = TryCachHelper.TryExecute((db) => { string status = "N"; string MESSAGE = string.Empty; var outputResult = db.Ado.UseStoredProcedure(() => { string spName = "BZ_TASKCOMPLETE"; var p1 = new SugarParameter("@TEMPTASKNO", taskno);// 任务号 var p2 = new SugarParameter("@TEMPTYPE", temptype);//类型(出库任务完成) var p3 = new SugarParameter("@STATUS", null, true);//反馈状态 Y:成功 N:失败 var p4 = new SugarParameter("@MESSAGE", null, true);//反馈消息 var dbResult = db.Ado.ExecuteCommand(spName, new SugarParameter[] { p1, p2, p3, p4 }); status = p3.Value.ToString(); MESSAGE = p4.Value.ToString(); return dbResult; }); if (status.Trim().ToUpper() == "N") { result = string.Format("任务[{0}]手动完成失败,传递参数:任务号[{1}]类型[{2}]反馈消息:[{3}]", taskno, taskno, temptype, MESSAGE); } else { result = string.Format("任务[{0}]手动完成成功。", taskno); } }); if (!string.IsNullOrEmpty(errorresult)) result = errorresult; return result; } public static DateTime QuerySystemDate() { DateTime dt = DateTime.MinValue; TryCachHelper.TryExecute((db) => { dt = db.Ado.GetDateTime("select sysdate from dual"); }); return dt; } public static void Equipment_UpdateLock(string equipmentNo, bool islock) { TryCachHelper.TryExecute((db) => { db.Updateable().UpdateColumns(it => new WCS_EQUIPMENTLOCK() { ISLOCK = islock, UPDATETIME = DateTime.Now }) .Where(it => it.EQUIPMENTNO == equipmentNo).ExecuteCommand(); }); } public static List QueryStackerdDataDDJ(List plcnameSet) { var stackerdDataSet = new List(); TryCachHelper.TryExecute((db) => { stackerdDataSet = db.Queryable().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList(); }); return stackerdDataSet; } public static List QueryStackerdDataRGV(List plcnameSet) { var stackerdDataSet = new List(); TryCachHelper.TryExecute((db) => { stackerdDataSet = db.Queryable().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList(); }); return stackerdDataSet; } public static List QueryTasks() { var tasks = new List(); TryCachHelper.TryExecute((db) => { tasks = db.Queryable().ToList(); }); return tasks; } public static void TaskUpdatePriority(SqlSugarClient db, int task_no, int priority) { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { Priority = priority, }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("任务[{0}]修改优先级为[{0}]失败", task_no, priority)); } } /// /// 任务完成 /// /// /// /// /// public static bool BZ_TASKCOMPLETE(int task_no, int finishType, out string message) { message = string.Empty; return true; } /// /// 任务取消 /// /// 任务号 /// 消息 /// 是否取消成功 public static bool TaskCancel(int task_no, out string msg) { msg = string.Empty; return true; } public static string RestartTask(int task_no) { string result = TryCachHelper.TryExecute((db) => { var task = db.Queryable().First(v => v.ID == task_no); if (task == null) { throw new Exception(string.Format("未查询到[{0}]信息", task_no)); } else { if (task.TYPE == WCS.Entity.TaskType.出库 && task.STATUS > 0 && task.STATUS < WCS.Entity.TaskStatus.已完成) { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { STATUS = 0, UPDATETIME = DateTime.Now }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("任务[{0}]重置失败", task_no)); } } else { throw new Exception(string.Format("任务[{0}]不是出库任务或者是已完成的出库不能执行[重下任务]", task_no)); } } }); return result; } public static string FinishTask(int task_no) { string result = TryCachHelper.TryExecute((db) => { var task = db.Queryable().First(v => v.ID == task_no); if (task == null) { throw new Exception(string.Format("未查询到[{0}]信息", task_no)); } else { if (task.STATUS > WCS.Entity.TaskStatus.新建) { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { STATUS = WCS.Entity.TaskStatus.已完成, UPDATEUSER = CurrentHelper.User.USER_NO, UPDATETIME = DateTime.Now }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("任务[{0}]手动完成失败", task_no)); } } else { throw new Exception(string.Format("任务[{0}]未执行,不能执行[手动完成].", task_no)); } } }); return result; } public static string ClearTask(int task_no) { string result = TryCachHelper.TryTranExecute((db) => { var task = db.Queryable().First(v => v.ID == task_no); if (task == null) { throw new Exception(string.Format("未查询到[{0}]信息", task_no)); } else { if (task.STATUS < WCS.Entity.TaskStatus.已完成) { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { STATUS = WCS.Entity.TaskStatus.已取消, UPDATETIME = DateTime.Now }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("任务[{0}]取消失败", task_no)); } } else { throw new Exception(string.Format("任务[{0}]已完成或已取消,不能执行取消动作。", task_no)); } } }); return result; } public static string UdpateEndAddress(int task_no, string whid, string srm) { string nextAddress = string.Empty; var dicSet = new Dictionary(); string result = TryCachHelper.TryTranExecute((db) => { if (string.IsNullOrWhiteSpace(srm)) { throw new Exception(string.Format("请选择要变更的堆垛机")); } if (whid == "原料库") { dicSet.Add("srm01", "1092"); dicSet.Add("srm02", "1094"); dicSet.Add("srm03", "1096"); dicSet.Add("srm04", "1098"); dicSet.Add("srm05", "1100"); } else if (whid == "成品库") { dicSet.Add("srm06", "2324"); dicSet.Add("srm07", "2320"); dicSet.Add("srm08", "2316"); dicSet.Add("srm09", "2312"); dicSet.Add("srm10", "2308"); dicSet.Add("srm11", "2304"); } else { throw new Exception(string.Format("仓库[{0}]错误。", whid)); } nextAddress = dicSet[srm]; var task = db.Queryable().First(v => v.ID == task_no); if (task == null) { throw new Exception(string.Format("未查询到[{0}]信息", task_no)); } else { if (task.ADDRTO.Length >= 10) { throw new Exception(string.Format("任务[{0}]已经分配货位,不能变更目标地址。", task_no)); } else { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { ADDRNEXT = nextAddress, ADDRTO = srm, DEVICE = srm, TUNNEL = srm, UPDATEUSER = CurrentHelper.User.Use_Name, UPDATETIME = DateTime.Now }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("任务[{0}]修改目标地址失败", task_no)); } string msg = string.Format("任务[{0}]手动修改下个地址为[{1}]目标地址为[{2}]成功。", task_no, nextAddress, srm); var task_dtl = new WCS_TASK_DTL(); task_dtl.ID = Guid.NewGuid().ToString(); task_dtl.PARENTID = task_no; task_dtl.TASKNO = task_no.ToString(); //task_dtl.POSIDCUR = task.ADDRFROM; task_dtl.POSIDNEXT = nextAddress; task_dtl.DESCRIPTION = msg; task_dtl.EXECUTEDATE = DateTime.Now; db.Insertable(task_dtl).ExecuteCommand(); } } }); if (string.IsNullOrWhiteSpace(result)) { result = string.Format("任务[{0}]修改下个地址为[{1}]目标地址为[{2}]成功。", task_no, nextAddress, srm); } return result; } public static string UpdateTaskPriority(int task_no, int priority) { string result = TryCachHelper.TryTranExecute((db) => { var task = db.Queryable().First(v => v.ID == task_no); if (task == null) { throw new Exception(string.Format("未查询到WCS任务[{0}]信息", task_no)); } else { if (db.Updateable() .UpdateColumns(it => new WCS_TASK { Priority = priority, UPDATEUSER = CurrentHelper.User.Use_Name, UPDATETIME = DateTime.Now }) .Where(v => v.ID == task_no).ExecuteCommand() < 0) { throw new Exception(string.Format("WCS任务[{0}]调整优先级失败", task_no)); } string msg = string.Format("任务[{0}]调整优先级为[{1}]成功。", task_no, priority); } }); if (string.IsNullOrWhiteSpace(result)) { result = string.Format("任务[{0}]调整优先级[{1}]成功。", task_no, priority); } return result; } } }