| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020 | 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 static WCS_Client.Frm.WCS_RGV523;using static WCS_Client.Frm.WCS_SC537;using static WCS_Client.Frm.WCS_STATION523;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<WCS_Users>().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<WCS_Users>();                            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<WCS_Users>();                //    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<WCS_Users>();                //            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<UserInfo>();                //                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            {                                if (dt != null && dt.Rows.Count > 0)                {                    int count = dt.Rows.Count;                    int PageCount = count / PageSize;                    if (count % PageSize > 0)                        PageCount += 1;                    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<string> 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)                {                    //设备报警赋值                    if (dt.Rows[0][1].ToString() == "设备报警")                    {                        for (int i = 0; i < dt.Rows.Count; i++)                        {                            TryCachHelper.TryExecute((db) =>                            {                                Type eType;                                if (dt.Rows[i]["DEVICECODE"].ToString().Substring(0, 3) == "RGV")                                {                                    eType = typeof(RGVFault);                                }                                else if (dt.Rows[i]["DEVICECODE"].ToString().Substring(0, 2) == "SC")                                {                                    eType = typeof(SCAlarm);                                }                                else                                {                                    eType = typeof(StationFault);                                }                                var eItem = Enum.Parse(eType, dt.Rows[i]["alarm"].ToString());                                var a = Enum.Parse(eType, "65");                                dt.Rows[i]["ALARAMMSG"] = eItem.ToString();                            });                        }                    }                    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<string> 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<WCS_Users> usersList = db.SqlQueryable<WCS_Users>(sql).ToList();                    foreach (var item in usersList)                    {                        string binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT);                        string jsonstr = BinaryHelper.jiema(binaryStr);                        var user = jsonstr.ToObject<WCS_Users>();                        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<WCS_Users> usersList = db.SqlQueryable<WCS_Users>(sql).ToList();                    foreach (var item in usersList)                    {                        var binaryStr = BinaryHelper.ByteArray2BinaryStr(item.USER_TEXT);                        string jsonstr = BinaryHelper.jiema(binaryStr);                        var user = jsonstr.ToObject<WCS_Users>();                        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<WCS_Users>().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<WCS_Users>().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<WCS_Users>().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<WCS_Users>();                        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<WCS_Users>()[0];                //        var binaryStr = BinaryHelper.ByteArray2BinaryStr(user.USER_TEXT);                //        var useritem = BinaryHelper.jiema(binaryStr).ToObject<WCS_Users>();                //        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<WCS_TASK>().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<WCS_TASK_DTL>().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<WCS_EQUIPMENTLOCK>().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<WCS_TASK_DTL>().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<WCS_EQUIPMENTLOCK>().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;        }        /// <summary>        /// 任务完成        /// </summary>        /// <param name="db"></param>        /// <param name="conveyorOut">设备编号</param>        /// <param name="taskno">任务号</param>        /// <param name="temptype">类型  1:入库任务完成  2:堆垛机出库任务完成  3.移库完成 4:出库任务完成    5:任务取消 6:码盘 6:拆盘</param>        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<dynamic>(() =>                {                    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<WCS_EQUIPMENTLOCK>().UpdateColumns(it => new WCS_EQUIPMENTLOCK() { ISLOCK = islock, UPDATETIME = DateTime.Now })                                              .Where(it => it.EQUIPMENTNO == equipmentNo).ExecuteCommand();            });        }        public static List<Frm.WCS_SC521> QueryStackerdDataDDJ(List<string> plcnameSet)        {            var stackerdDataSet = new List<Frm.WCS_SC521>();            TryCachHelper.TryExecute((db) =>            {                stackerdDataSet = db.Queryable<Frm.WCS_SC521>().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList();            });            return stackerdDataSet;        }        public static List<Frm.WCS_RGV521> QueryStackerdDataRGV(List<string> plcnameSet)        {            var stackerdDataSet = new List<Frm.WCS_RGV521>();            TryCachHelper.TryExecute((db) =>            {                stackerdDataSet = db.Queryable<Frm.WCS_RGV521>().Where(v => plcnameSet.Contains(v.DEVICECODE) && v.ISLAST == true).ToList();            });            return stackerdDataSet;        }        public static List<WCS_TASK> QueryTasks()        {            var tasks = new List<WCS_TASK>();            TryCachHelper.TryExecute((db) =>            {                tasks = db.Queryable<WCS_TASK>().ToList();            });            return tasks;        }        public static void TaskUpdatePriority(SqlSugarClient db, int task_no, int priority)        {            if (db.Updateable<WCS_TASK>()                  .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));            }        }        /// <summary>        /// 任务完成        /// </summary>        /// <param name="task_no"></param>        /// <param name="finishType"></param>        /// <param name="message"></param>        /// <returns></returns>        public static bool BZ_TASKCOMPLETE(int task_no, int finishType, out string message)        {            message = string.Empty;            return true;        }        /// <summary>        /// 任务取消        /// </summary>        /// <param name="task_no">任务号</param>        /// <param name="msg">消息</param>        /// <returns>是否取消成功</returns>        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<WCS_TASK>().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<WCS_TASK>()                              .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<WCS_TASK>().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<WCS_TASK>()                             .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<WCS_TASK>().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<WCS_TASK>()                              .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, string>();            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<WCS_TASK>().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<WCS_TASK>()                              .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<WCS_TASK>().First(v => v.ID == task_no);                if (task == null)                {                    throw new Exception(string.Format("未查询到WCS任务[{0}]信息", task_no));                }                else                {                    if (db.Updateable<WCS_TASK>()                          .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;        }        public static string CMByWorkShop(string txtcbworkshopno, string txtcbprolineno)        {            string result = TryCachHelper.TryTranExecute((db) =>            {                //创建AGV任务                var agvtask = new Frm.WCS_AGVTask()                {                    AGVStatus = Frm.AGVTaskStatus.新建,                    Status = Frm.AGVTaskStatus.新建,                    Position = txtcbprolineno,                    TaskType = Frm.AGVTaskType.叫料,                    CreateTime = DateTime.Now,                    UpdateTime = DateTime.Now,                    Workshop = int.Parse(txtcbworkshopno),                    Station = "G1340"                };                int task_id = db.Insertable(agvtask).ExecuteReturnIdentity();                if (task_id <= 0)                {                    throw new Exception(string.Format("WCS任务[{0}]添加agv任务失败", task_id));                }            });            if (string.IsNullOrWhiteSpace(result))            {                result = string.Format("车间叫料成功!");            }            return result;        }    }}
 |