using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; using yunneiWCS.ORM; using yunneiWCS.EnumDefine; using System.Threading; using Newtonsoft.Json; using yunneiWCS.data; using yunneiWCS.ExtendFunction; using yunneiWCS.EnumDefine.InStockOrder; using System.Threading.Tasks; using yunneiWCS.DataAccess; using yunneiWCS.Common; using yunneiWCS.SystemInteraction.tianyong; using yunneiWCS.Models; namespace yunneiWCS.wcf { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“yunneiWcf”。 public class yunneiWcf : IyunneiWcf { /// 天永安全交互 /// /// yunneiWCS.tianyong.AutoServiceSoapClient ty = new tianyong.AutoServiceSoapClient(); public static Mutex single = new Mutex(); /// 用户登录 /// /// /// 用户名 /// 密码 /// public resMsg login(string userName, string userPassword) { resMsg msg = new resMsg(); try { using (dbmodel mod = new dbmodel()) { var dd = mod.user.ToList(); List users = mod.user.Where(x => x.WorkNo == userName).ToList(); if (users.Count < 1) { msg.status = 400; msg.msg = "工号不存在!"; return msg; } else { if (users[0].Password == userPassword) { int roleid = (int)users[0].roleId; List moduele = mod.roleVsModule.Where(x => x.roleId == roleid).ToList(); msg.dateList = moduele.Select(x => x.value).ToList(); msg.date = users; msg.status = 200; msg.msg = "登录成功"; return msg; } else { msg.status = 400; msg.msg = "密码错误!"; return msg; } } } } catch (Exception ex) { msg.status = 400; msg.msg = "密码错误!"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString()); } return msg; } /// 添加角色 /// /// /// 角色名 /// 1=wms用户,2=PDA用户 /// 1=增加,2=删除 /// public resMsg addRole(string addName, int area, int operation) { resMsg msg = new resMsg(); try { using (dbmodel mod = new dbmodel()) { role newRole = mod.role.FirstOrDefault(x => x.roleName == addName); if (operation == 1) { if (newRole != null) { msg.status = 400; msg.msg = "此角色已存在"; return msg; } newRole = new role(); newRole.roleName = addName; newRole.area = area; newRole.createTime = DateTime.Now; mod.role.Add(newRole); } else//删除角色 { if (newRole == null) { msg.status = 400; msg.msg = "没有此用户"; return msg; } List delmoule = mod.roleVsModule.Where(x => x.roleId == newRole.id).ToList(); foreach (var item in delmoule) { mod.roleVsModule.Remove(item); } mod.role.Remove(newRole); } int saveOk = mod.SaveChanges(); if (saveOk > 0) { //msg.status = 200; //msg.msg = "创建成功"; if (operation == 1) { #region MyRegion string[] roleModule = { }; if (area == 1) { roleModule = new string[] { "入库", "出库", "库存查询", "任务管理", "状态预览", "出入库记录", "报警记录查询", "清理库存查询", "权限管理", "库位维护", "物料维护" }; } else { roleModule = new string[] { "缸体下线", "刚盖下线", "任务管理" }; } for (int i = 0; i < roleModule.Length; i++) { roleVsModule addRole = new roleVsModule(); addRole.roleId = newRole.id; addRole.value = roleModule[i]; mod.roleVsModule.Add(addRole); } saveOk = mod.SaveChanges(); if (saveOk > 1) { msg.status = 200; msg.msg = "创建成功"; } else { msg.status = 400; msg.msg = "保存失败"; } #endregion } else { msg.status = 200; msg.msg = "修改成功"; } } else { msg.status = 400; msg.msg = "保存失败"; } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString()); } return msg; } /// 查询角色列表 /// /// /// 分页 /// 角色名 /// public resMsg findRole(paging page, string roleName) { resMsg msg = new resMsg(); try { List roleList = new List(); using (dbmodel mod = new dbmodel()) { if (roleName == "") { roleList = mod.role.ToList(); } else { roleList = mod.role.Where(x => x.roleName == roleName).ToList(); } } List fenyeRerult = new List(); if (roleList.Count > 0) { msg.status = 200; msg.total = roleList.Count; // msg.date = takeStock; //假如每页数量 大于盘点数据 if (page.pagesize > roleList.Count) { msg.date = roleList; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)roleList.Count / a); int d = roleList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(roleList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString()); } return msg; } /// 添加和删除角色菜单 /// /// /// 彩带名 /// 角色名 /// 1=添加,2=删除 public void addModule(string module, string roleName, int operation) { try { using (dbmodel mod = new dbmodel()) { role addRole = mod.role.FirstOrDefault(x => x.roleName == roleName); if (operation == 1)//添加菜单 { if (addRole != null) { roleVsModule addmodule = new roleVsModule(); addmodule.roleId = addRole.id; addmodule.value = module; mod.roleVsModule.Add(addmodule); } } else//删除菜单 { if (addRole != null) { roleVsModule delmoule = mod.roleVsModule.FirstOrDefault(x => x.value == module && x.roleId == addRole.id); mod.roleVsModule.Remove(delmoule); } } mod.SaveChanges(); } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "addModule", ex.ToString()); } } /// 查找用户 /// /// /// 分页 /// 用户名 /// public resMsg findUser(paging page, string userName) { resMsg msg = new resMsg(); try { List userList = new List(); using (dbmodel mod = new dbmodel()) { if (userName == "") { userList = mod.userAndRole.ToList(); } else//contains { userList = mod.userAndRole.Where(x => x.WorkNo.Contains(userName) || x.UserName.Contains(userName)).ToList(); } } List fenyeRerult = new List(); if (userList.Count > 0) { msg.status = 200; msg.total = userList.Count; // msg.date = takeStock; //假如每页数量 大于盘点数据 if (page.pagesize > userList.Count) { msg.date = userList; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)userList.Count / a); int d = userList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(userList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString()); } return msg; } /// 用户增删改查 /// /// /// 用户对象 /// 创建/修改人 /// 增=1删=2改=3 /// public resMsg addUser(user addName, string creator, int operation) { resMsg msg = new resMsg(); msg.status = 400; if (operation > 3 || operation < 1 || addName == null) { msg.msg = "参数异常"; return msg; } try { using (dbmodel mod = new dbmodel()) { if (operation == 2) { user delUser = mod.user.FirstOrDefault(x => x.WorkNo == addName.WorkNo); if (delUser != null) { mod.user.Remove(delUser); msg.msg = "删除成功"; } else { msg.msg = "删除失败"; } } else { if (operation == 1) { user addUsers = new user(); addUsers.WorkNo = addName.WorkNo.Trim(); addUsers.UserName = addName.UserName.Trim(); addUsers.Password = WZ.Useful.Commons.MD5Util.GetMD5_32(addName.Password.Trim()); addUsers.roleId = addName.roleId; addUsers.Status = 1; addUsers.creatDate = DateTime.Now; mod.user.Add(addUsers); } else { user upUser = mod.user.FirstOrDefault(x => x.WorkNo == addName.WorkNo); upUser.UserName = addName.UserName; if (addName.Password.Trim() != "") { upUser.Password = WZ.Useful.Commons.MD5Util.GetMD5_32(addName.Password.Trim()); } upUser.roleId = addName.roleId; upUser.modifierTime = DateTime.Now; } } int saveOk = mod.SaveChanges(); if (saveOk == 1) { msg.status = 200; } else { msg.msg = "执行失败"; } } } catch (Exception ex) { msg.msg = "执行异常"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "login", ex.ToString()); } return msg; } /// 分配空库位 /// /// /// 库位类型,库口=0,空库位=1,缸体=2,缸盖=3 /// public string findStock(int positionType) { string toplace = ""; try { toplace = Form1.findStorage(positionType); } catch (Exception) { toplace = ""; } return toplace; } /// 物料查询 /// /// /// /// /// /// public resMsg findMaterial(paging page, string materialName, string materialCode) { resMsg msg = new resMsg(); List materials = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 if (materialName.Trim() == "" && materialCode.Trim() == "") { materials = mod.material.ToList(); } else { if (materialName.Trim() != "" && materialCode.Trim() != "") { materials = mod.material.Where(x => x.materialCode.Contains(materialCode.Trim()) || x.materialName.Contains(materialName.Trim())).ToList(); } else { if (materialName.Trim() != "") { materials = mod.material.Where(x => x.materialName.Contains(materialName.Trim())).ToList(); } else { materials = mod.material.Where(x => x.materialCode.Contains(materialCode.Trim())).ToList(); } } } #endregion //分页计算 List fenyeRerult = new List(); if (materials.Count > 0) { msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > materials.Count) { msg.date = materials; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)materials.Count / a); msg.total = c; int d = materials.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(materials[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findMaterial", ex.ToString()); } return msg; } /// 物料增删改 /// /// /// 1=新建,2=编辑,3=删除 /// 编辑时物料ID /// 编辑时传物料编号 /// 编辑时传物料名称 /// 新建物料时 物料类型 0=缸盖,1=缸体 /// 机型 /// public string materialOP(int types, int ID, string materialCode, string materialName, int materialType, string version) { string res = ""; try { using (dbmodel mod = new dbmodel()) { switch (types) { #region 物料增删改 case 1: material newmat = mod.material.FirstOrDefault(x => x.materialCode == materialCode); if (newmat != null) { return "此物料编号已存在,不能重发创建"; } material addmat = new material(); addmat.materialCode = materialCode; addmat.materialName = materialName; addmat.materialType = materialType; addmat.version = version; addmat.createTime = DateTime.Now; addmat.modifierTime = DateTime.Now; mod.material.Add(addmat); break; case 2: material editmat = mod.material.Find(ID); if (editmat != null) { editmat.materialType = materialType; editmat.materialName = materialName; editmat.materialCode = materialCode; editmat.version = version; editmat.modifierTime = DateTime.Now; } else { return "修改失败-无此物料"; } break; case 3: material delmat = mod.material.Find(ID); if (delmat != null) { mod.material.Remove(delmat); } else { return "删除失败-无此物料"; } break; default: break; #endregion } int result = mod.SaveChanges(); if (result < 1) { result = mod.SaveChanges(); if (result < 1) { return "保存失败请重试"; } } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "materialOP", ex.ToString()); return "保存失败请检查参数"; } return res; } /// 查找入库单 /// /// /// 分页 /// 入库单号 /// 物料编号 /// 入库单状态 /// 筛选日期 /// public resMsg findInStock(paging page, string materialName, string materialCode, int status) { resMsg msg = new resMsg(); List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 #region 查找数据 string sql = "SELECT * FROM [LA20025].[dbo].[inStockOrder] where orderCodeId > 0"; DateTime selectTime = Convert.ToDateTime("0002-01-01 0:00:00"); if (page.startDateTime > selectTime) { sql = sql + " and createDate>'" + page.startDateTime + "'"; } if (page.endDateTime > selectTime) { sql = sql + " and createDate<'" + page.endDateTime + "'"; } if (materialName.Trim() != "") { sql = sql + " and productName='" + materialName.Trim() + "'"; } if (materialCode.Trim() != "") { sql = sql + " and productCode='" + materialCode.Trim() + "'"; } if (status != 0) { sql = sql + " and status=" + status; } sql = sql + " order by orderCodeId desc"; dataList = mod.Database.SqlQuery(sql).ToList(); #endregion #endregion //分页计算 List fenyeRerult = new List(); if (dataList.Count > 0) { msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStock", ex.ToString()); } return msg; } /// 查找入库单,新版 [EditBy shaocx,2022-01-14] /// /// /// 分页 /// public resMsg findInStockNewVersion(paging page, v_inStockOrder value) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { string sql = "SELECT * FROM [LA20025].[dbo].[v_inStockOrder] "; sql = sql + " WHERE 1=1 "; if (!string.IsNullOrEmpty(value.sourcePlace))//起点 { sql = sql + " and sourcePlace='" + value.sourcePlace + "' "; } if (!string.IsNullOrEmpty(value.toPlace))//目标点 { sql = sql + " and toPlace='" + value.toPlace + "' "; } if (!string.IsNullOrEmpty(value.containerCode))//托盘号 { sql = sql + " and containerCode like'%" + value.containerCode + "%' "; } if (!string.IsNullOrEmpty(value.productCode))//物料编号 { sql = sql + " and productCode like '%" + value.productCode + "%'"; } if (!string.IsNullOrEmpty(value.productName))//物料名称 { sql = sql + " and productName like '%" + value.productName + "%' "; } if (!string.IsNullOrEmpty(value.version))//机型 { sql = sql + " and version like '%" + value.version + "%' "; } if (!string.IsNullOrEmpty(value.supplier))//供应商 { sql = sql + " and supplier like '%" + value.supplier + "%'"; } if (value.status != null && value.status != 0) { sql = sql + " and status = '" + value.status + "' "; } //if (value.positionType == (byte)positionType.余料回库)//是否查询余料 //{ // sql = sql + " and positionType =" + value.positionType; //} if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and createDate >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and createDate <'" + page.endDateTime + "'"; } sql = sql + " order by createDate desc"; List dataList = mod.Database.SqlQuery(sql).ToList(); if (dataList.Count > 0) { msg.quantity = (int)dataList.Sum(x => x.quantity); msg.totalNum = dataList.Count; msg.dateAll = dataList; //分页计算 List fenyeRerult = new List(); msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 200; msg.msg = "查找数据为0,请更换查询条件"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStockNewVersion", ex.ToString()); } return msg; } /// 查找入库单流水号 /// /// /// /// public resMsg findInStockList(string inStockCode) { resMsg res = new resMsg(); res.status = 400; try { using (dbmodel mod = new dbmodel()) { inStockOrder stockCode = mod.inStockOrder.FirstOrDefault(x => x.orderCode == inStockCode.Trim()); if (stockCode != null) { List instockList = mod.inStockOrderList.Where(x => x.orderCodeId == stockCode.orderCodeId).ToList(); if (instockList.Count > 0) { res.status = 200; res.date = instockList; } else { res.msg = "查不到明细"; } } else { res.msg = "查不入库单"; } } } catch (Exception) { res.msg = "查询异常"; } return res; } /// 修改入库单流水号 /// /// /// /// public resMsg modfiyInStockList(List value) { resMsg msg = new resMsg(); msg.status = 400; try { if (value.Count > 0) { using (dbmodel mod = new dbmodel()) { int orderCode = (int)value[0].orderCodeId; List deleteList = mod.inStockOrderList.Where(x => x.orderCodeId == orderCode).ToList(); if (deleteList.Count > 0) { mod.inStockOrderList.RemoveRange(deleteList); } foreach (var addItem in value) { inStockOrderList newList = new inStockOrderList(); newList.orderCodeId = addItem.orderCodeId; newList.productCode = addItem.productCode; newList.productName = addItem.productName; newList.serialNumber = addItem.serialNumber; mod.inStockOrderList.Add(newList); } int res = mod.SaveChanges(); if (res > 0) { msg.status = 200; msg.msg = "修改成功"; } } } else { msg.msg = "至少留一个明细"; } } catch (Exception) { msg.msg = "执行错误"; } return msg; } /// 手动作废入库单 /// /// /// /// public resMsg deleteInStock(string inStockCode) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { inStockOrder inOrder = mod.inStockOrder.FirstOrDefault(x => x.orderCode == inStockCode.Trim()); if (inOrder != null) { //inOrder.status = 5; inOrder.status = (int)InStockOrderStatus.已作废; int res = mod.SaveChanges(); if (res == 1) { msg.status = 200; msg.msg = "作废成功"; } else { msg.msg = "保存失败"; } } else { msg.msg = "查无此单"; } } } catch (Exception) { msg.msg = "查无异常"; } return msg; } /// 查找库位 /// /// /// 分页 /// 库位名称 /// 是否锁定 /// 是否有货 /// public resMsg findPosition(paging page, string position, int islock, int isfree) { resMsg msg = new resMsg(); List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 if (position.Trim() == "" && islock == 0 && isfree == 0) { dataList = mod.position.ToList(); } else { string sql = "SELECT * FROM [LA20025].[dbo].[position] where positionId>0"; if (position.Trim() != "") { sql = sql + " and positionName='" + position.Trim() + "'"; } if (islock == 1 && isfree == 1) { sql = sql + " and (isLock=" + islock + " or isfree=" + isfree + ")"; } else { if (islock == 1) { sql = sql + " and isLock=" + islock; } if (isfree == 1) { sql = sql + " and isfree=" + isfree; } } dataList = mod.Database.SqlQuery(sql).ToList(); } #endregion //分页计算 List fenyeRerult = new List(); if (dataList.Count > 0) { msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findPosition", ex.ToString()); } return msg; } /// 查找指定库位 /// /// /// 库位名称 /// public resMsg findSinglePosition(string position) { resMsg msg = new resMsg(); List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 string sql = "SELECT * FROM [LA20025].[dbo].[position] where positionId>0"; if (position.Trim() != "") { sql = sql + " and positionName='" + position.Trim() + "'"; } dataList = mod.Database.SqlQuery(sql).ToList(); #endregion if (dataList.Count > 0) { msg.status = 200; msg.date = dataList; msg.total = 1; } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findSinglePosition", ex.ToString()); } return msg; } #region 人工推送天永消息 ///// 人工推送天永消息,原先的方法 ///// ///// ///// ///// //public resMsg safetySignalByPerson(int taskId) //{ // resMsg msg = new resMsg(); // msg.status = 400; // try // { // string station = ""; // int OutOrIn = 0;//1=进,2=出 // using (dbmodel mod = new dbmodel()) // { // task sf = mod.task.FirstOrDefault(x => x.taskId == taskId); // if (sf != null) // { // taskType _taskType = (taskType)Enum.Parse(typeof(taskType), sf.taskType.ToString()); // switch (_taskType) // { // case taskType.缸盖上线: // case taskType.缸体上线: // OutOrIn = 1; // station = sf.toPlace; // break; // case taskType.空托回库: // case taskType.余料回库: // OutOrIn = 2; // station = sf.sourcePlace; // break; // default: // msg.msg = "任务类型必须是缸盖上线/缸体上线/空托回库/余料回库"; // return msg; // } // var result = TianYongSystem.safetySignal(station, OutOrIn, taskId, "人工推送天永消息"); // if (result) // { // sf.isSendTotianyong = 1; // sf.isSendTotianyongName = "是"; // sf.SendTotianyongTime = DateTime.Now; // mod.SaveChanges(); // msg.status = 200; // msg.msg = "推送给天永机器人消息成功"; // } // else // { // msg.msg = "推送给天永机器人消息失败"; // } // } // else // { // msg.msg = "查无此单"; // } // } // } // catch (Exception ex) // { // msg.msg = "异常" + ex.Message; // } // return msg; //} /// 人工推送天永消息,新的方法 /// /// /// /// public resMsg safetySignalByPerson(int taskId) { resMsg msg = new resMsg(); msg.status = 400; try { string station = ""; using (dbmodel mod = new dbmodel()) { task sf = mod.task.FirstOrDefault(x => x.taskId == taskId); if (sf != null) { taskType _taskType = (taskType)Enum.Parse(typeof(taskType), sf.taskType.ToString()); switch (_taskType) { case taskType.缸盖上线: case taskType.缸体上线: case taskType.缸盖下线直接去上线点: case taskType.缸体下线直接去上线点: case taskType.空托回库: case taskType.余料回库: case taskType.旁路工位缸体空托回库: case taskType.旁路工位缸体余料回库: case taskType.缸体下线直接去旁路工位: case taskType.缸体上线去旁路工位: break; default: msg.msg = "任务类型不正确,必须是去往天永站点或离开天永站点的任务类型"; return msg; } var result = TianYongSystem.UpdateStoreByTaskID(mod, sf, station, taskId, "人工推送天永消息"); var res = mod.SaveChanges(); if (result && res > 0) { msg.status = 200; msg.msg = "人工推送给天永机器人消息成功"; } else { msg.msg = "人工推送给天永机器人消息失败"; } } else { msg.msg = "查无此单"; } } } catch (Exception ex) { msg.msg = "异常" + ex.Message; } return msg; } #endregion #region AGV系统使用的接口 /// 机器人上料 安全交互信号 /// /// /// 站点号 /// 1=进2=出 /// 任务id /// public bool safetySignal(string station, int OutOrIn, string agvTaskNo) { bool res = false; try { return TianYongSystem.safetySignal(station, OutOrIn, agvTaskNo, "wcf接口调用,应该是agv调用的"); } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "safetySignal", ex.ToString()); } return res; } #endregion /// 查找任务 /// /// /// 分页 /// 任务ID /// 任务类型 /// 起始位目标位 /// public resMsg findTask(paging page, int taskId, int taskType, string place, string order, string taskName, string materialCode, string materialName) { resMsg msg = new resMsg(); List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 string sql = "SELECT * FROM [LA20025].[dbo].[task] where taskId>0"; if (taskId > 0) { sql = sql + " and taskId=" + taskId; } if (taskType > 0)// { sql = sql + " and taskStatus=" + taskType; } if (!string.IsNullOrEmpty(materialCode))//物料编号 { sql = sql + " and materialCode = '" + materialCode + "'"; } if (!string.IsNullOrEmpty(materialName))//物料名称 { sql = sql + " and materialName = '" + materialName + "' "; } if (place != "") { sql = sql + " and (sourcePlace= '" + place + "' or toPlace='" + place + "' or containerCode='" + place + "' )"; } if (order != "") { sql = sql + " and (createListCode= '" + order + "')"; } if (taskName != "") { //转换成taskType的枚举 taskType _taskType = (taskType)Enum.Parse(typeof(taskType), taskName); sql = sql + " and (taskType= '" + (int)_taskType + "')"; } if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and createTime >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and createTime <'" + page.endDateTime + "'"; } sql = sql + " order by taskId desc"; dataList = mod.Database.SqlQuery(sql).ToList(); #endregion //分页计算 List fenyeRerult = new List(); if (dataList.Count > 0) { msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findTask", ex.ToString()); } return msg; } /// 查找子任务 /// /// /// 任务ID /// public resMsg findTaskChild(string taskId) { resMsg msg = new resMsg(); msg.status = 400; List dataList = new List(); try { long TaskId = 0; bool parseok = long.TryParse(taskId, out TaskId); if (parseok) { using (dbmodel mod = new dbmodel()) { dataList = mod.taskRecord.Where(x => x.taskId == TaskId).ToList(); if (dataList.Count > 0) { msg.date = dataList; msg.status = 200; } else { msg.msg = "此任务没有子任务!"; } } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findTaskChild", ex.ToString()); } return msg; } /// 任务作废 /// /// /// 任务ID /// public resMsg deleteTask(string taskId) { resMsg msg = new resMsg(); msg.status = 400; task _task = new task(); try { long TaskId = 0; bool parseok = long.TryParse(taskId, out TaskId); if (parseok) { using (dbmodel mod = new dbmodel()) { _task = mod.task.FirstOrDefault(x => x.taskId == TaskId); if (_task != null) { //验证 if (_task.taskStatus == (int)taskStatus.作废 || _task.taskStatus == (int)taskStatus.完成) { msg.msg = "该任务状态是作废或完成,不允许操作"; return msg; } taskStatus changeStatus = taskStatus.作废; _task.taskStatus = (int)changeStatus; //dataList.taskStatus = 6; //解锁目标位置和起点位置和中间位置 【EditBy shaocx,2022-03-04】 var sourcePosition = mod.position.FirstOrDefault(x => x.positionName == _task.sourcePlace); if (sourcePosition != null) { //sourcePosition.isLock = false; PositionHandler.Lock(false, sourcePosition, "任务作废", SysGloble.WCSNAME, _task); } var toPosition = mod.position.FirstOrDefault(x => x.positionName == _task.toPlace); if (toPosition != null) { //toPosition.isLock = false; PositionHandler.Lock(false, toPosition, "任务作废", SysGloble.WCSNAME, _task); } if (!string.IsNullOrEmpty(_task.middlePlace)) { var midPosition = mod.position.FirstOrDefault(x => x.positionName == _task.middlePlace); if (midPosition != null) { //midPosition.isLock = false; PositionHandler.Lock(false, midPosition, "任务作废", SysGloble.WCSNAME, _task); } } int res = mod.SaveChanges(); if (res > 0) { msg.msg = "作废成功"; msg.status = 200; } else { msg.msg = "保存失败"; } } else { msg.msg = "无此任务!"; } } } } catch (Exception ex) { msg.msg = "修改异常!"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "deleteTask", ex.ToString()); } return msg; } /// 任务强制完成 /// /// /// 任务ID /// public resMsg forceCompleteTask(string taskId, string user, string forceCompleteReason) { resMsg msg = new resMsg(); msg.status = 400; task _task = new task(); try { long TaskId = 0; bool parseok = long.TryParse(taskId, out TaskId); if (parseok) { using (dbmodel mod = new dbmodel()) { _task = mod.task.FirstOrDefault(x => x.taskId == TaskId); if (_task != null) { //验证 if (_task.taskStatus == (int)taskStatus.作废 || _task.taskStatus == (int)taskStatus.完成) { msg.msg = "该任务状态是作废或完成,不允许操作"; return msg; } _task.isForceComplete = 1; _task.isForceCompleteName = "是"; _task.forceCompleteTime = DateTime.Now; _task.forceCompleteUser = user; _task.forceCompleteReason = forceCompleteReason; int res = mod.SaveChanges(); if (res > 0) { msg.msg = "标记任务强制完成成功"; msg.status = 200; } else { msg.msg = "标记任务强制完成失败"; } } else { msg.msg = "无此任务!"; } } } } catch (Exception ex) { msg.msg = "修改异常!"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "forceCompleteTask", ex.ToString()); } return msg; } /// 寻找菜单权限 /// /// /// 分页 /// 角色名 /// public resMsg findRoleModule(paging page, string roleName) { resMsg msg = new resMsg(); msg.status = 400; if (roleName == "") { return msg; } List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { #region 查找数据 role roleID = mod.role.FirstOrDefault(x => x.roleName == roleName); if (roleID == null) { return msg; } dataList = mod.roleVsModule.Where(x => x.roleId == roleID.id).ToList(); #endregion //分页计算 List fenyeRerult = new List(); if (dataList.Count > 0) { msg.status = 200; msg.total = dataList.Count; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.total = 1; msg.date = null; } return msg; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findRoleModule", ex.ToString()); } return msg; } /// 库存查询 /// /// /// 分页 /// public resMsg findProductStock(paging page, VproductStock value) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { string sql = "SELECT * FROM [LA20025].[dbo].[VproductStock] where stockId>0 "; if (!string.IsNullOrEmpty(value.positionName))//库位名称 { sql = sql + " and positionName='" + value.positionName + "' "; } if (!string.IsNullOrEmpty(value.containerCode))//托盘号 { sql = sql + " and containerCode like'%" + value.containerCode + "%' "; } if (!string.IsNullOrEmpty(value.materialCode))//物料编号 { sql = sql + " and materialCode = '" + value.materialCode + "'"; } if (!string.IsNullOrEmpty(value.materialName))//物料名称 { sql = sql + " and materialName = '" + value.materialName + "' "; } if (!string.IsNullOrEmpty(value.version))//机型 { sql = sql + " and version = '" + value.version + "' "; } if (!string.IsNullOrEmpty(value.supplier))//供应商 { sql = sql + " and supplier like '%" + value.supplier + "%'"; } if (value.positionType == (byte)positionType.余料回库)//是否查询余料 { sql = sql + " and positionType =" + value.positionType; } if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and createTime >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and createTime <'" + page.endDateTime + "'"; } if (page.IsAscOrderBy) { sql = sql + " order by createTime asc"; } else { sql = sql + " order by createTime desc"; } List dataList = mod.Database.SqlQuery(sql).ToList(); #region 增加对流水号的筛选 【EditBy shaocx,2022-09-07】 if (!string.IsNullOrEmpty(page.serialNumber))//供应商 { //stockId字段是库位表的positionId var productStockList_sql = " SELECT stockId FROM productStockList WHERE serialNumber='" + page.serialNumber + "' "; List stockIdList = mod.Database.SqlQuery(productStockList_sql).ToList(); if (stockIdList == null || stockIdList.Count == 0) {//查无数据 msg.status = 200; msg.msg = "查找数据为0,请更换查询条件"; return msg; } //按照流水号进行过滤 dataList if (dataList != null && dataList.Count > 0) { dataList = dataList.Where(x => stockIdList.Contains(x.positionId)).ToList(); } } #endregion if (dataList.Count > 0) { msg.quantity = (int)dataList.Sum(x => x.quantity); msg.totalNum = dataList.Count; msg.dateAll = dataList; //分页计算 List fenyeRerult = new List(); msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 200; msg.msg = "查找数据为0,请更换查询条件"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findProductStock", ex.ToString()); } return msg; } /// /// 查询所有库存 /// /// public List findAllProductStock() { List list = new List(); try { string sql = @"SELECT dbo.position.positionName, dbo.position.isLock, dbo.position.isfree, dbo.material.materialCode, dbo.material.materialName, dbo.productStock.quantity, dbo.productStock.taskType, dbo.productStock.status, dbo.productStock.createTime, dbo.productStock.updateTime, dbo.position.enable, dbo.productStock.positionId, dbo.productStock.materialId, dbo.productStock.productCode, dbo.productStock.containerCode, dbo.position.positionType, dbo.productStock.supplier, dbo.material.version FROM dbo.position LEFT JOIN dbo.productStock ON dbo.position.positionId = dbo.productStock.positionId LEFT JOIN dbo.material ON dbo.productStock.materialId = dbo.material.materialId WHERE [position].row=1 OR [position].row=2"; using (dbmodel mod = new dbmodel()) { list = mod.Database.SqlQuery(sql).ToList(); } return list; } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findAllProductStock", ex.ToString()); } return null; } /// 查找库位流水号明细 /// /// /// 库位号 /// public resMsg findStockList(string positionName) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { var position = mod.position.FirstOrDefault(x => x.positionName == positionName); if (position != null) { var stocks = mod.productStockList.Where(x => x.stockId == position.positionId).ToList(); if (stocks.Count > 0) { msg.status = 200; msg.date = stocks; } else { msg.msg = "没有明细"; } } else { msg.msg = "没有这个库位"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findStockList", ex.ToString()); } return msg; } /// 修改库存流水号 /// /// /// /// public resMsg modfiyStockList(List value, long taskId) { resMsg msg = new resMsg(); msg.status = 400; try { if (value.Count > 0) { using (dbmodel mod = new dbmodel()) { long stockid = (long)value[0].stockId; productStock modfiyStock = mod.productStock.FirstOrDefault(x => x.positionId == stockid); VproductStock currentStock = mod.VproductStock.FirstOrDefault(x => x.positionId == stockid); string code = value[0].productCode; material getMaterial = mod.material.FirstOrDefault(x => x.materialCode == code); if (modfiyStock != null && getMaterial != null) { modfiyStock.materialId = getMaterial.materialId; modfiyStock.quantity = value.Count; } List all_serialNumberList = new List();//全部的流水号 List now_serialNumberList = new List();//删除后的全部的流水号 List deleteList = mod.productStockList.Where(x => x.stockId == stockid).ToList(); if (deleteList.Count > 0) { mod.productStockList.RemoveRange(deleteList); foreach (var item in deleteList) { all_serialNumberList.Add(item.serialNumber); } } foreach (var addItem in value) { now_serialNumberList.Add(addItem.serialNumber); productStockList newList = new productStockList(); newList.stockId = addItem.stockId; newList.productCode = addItem.productCode; newList.productName = addItem.productName; newList.serialNumber = addItem.serialNumber; mod.productStockList.Add(newList); } List record_delteList = new List(); var realDeleteList = all_serialNumberList.Where(x => !now_serialNumberList.Contains(x)).ToList(); foreach (var item in deleteList) { if (realDeleteList.Contains(item.serialNumber)) { record_delteList.Add(item); //记录日志 [EditBy shaocx,2022-03-16] StockClearLog _StockClearLog = new StockClearLog() { ID = Guid.NewGuid().ToString(), serialNumber = item.serialNumber, containerCode = modfiyStock.containerCode, materialCode = item.productCode, materialName = item.productName, positionName = currentStock != null ? currentStock.positionName : "", qty = modfiyStock.quantity, supplier = modfiyStock.supplier, version = currentStock != null ? currentStock.version : "", Remark = "人工删除库存", CreateTime = DateTime.Now, LastModifyTime = DateTime.Now, Creator = "", LastModifier = "" }; mod.StockClearLog.Add(_StockClearLog); } } var preLog = "普通删除"; if (taskId > 0) {//说明是 出库分拣 【Editby shaocx,2022-03-02】 var task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault(); if (task == null) { msg.msg = "根据任务号" + taskId + "未找到出库分拣任务"; return msg; } if (task.taskStatus != (int)taskStatus.待分拣) { msg.msg = "根据任务号" + taskId + "找到的任务状态不是待分拣状态,不允许操作"; return msg; } task.taskStatus = (int)taskStatus.分拣完成; preLog = "人工分拣"; } OutInStockRecord_V2_MesHandler.AddRecordForPersonDelete(mod, OutInFlag.出库, "人工删除库存:" + preLog, record_delteList, modfiyStock);//堆垛机任务完成后的出库 int res = mod.SaveChanges(); if (res > 0) { msg.status = 200; msg.msg = "修改成功"; } } } else { msg.msg = "至少留一个明细"; } } catch (Exception) { msg.msg = "执行错误"; } return msg; } /// 返回上线点和输送线状态 /// /// /// public resMsg stationStatus() { resMsg msg = new resMsg(); msg.status = 200; try { using (dbmodel mod = new dbmodel()) { var stations = mod.position.Where(x => x.positionType == 0).ToList(); msg.date = stations; } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "stationStatus", ex.ToString()); } return msg; } /// 读取上线点数据 /// /// /// public resMsg UpStationInfo() { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { var stations = mod.position.Where(x => x.positionType == 7 || x.positionType == 8).ToList(); if (stations.Count > 0) { msg.status = 200; msg.date = stations; } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "UpStationInfo", ex.ToString()); } return msg; } /// 解锁库位 /// /// /// 库位名称 /// public resMsg unlockPosition(string postionName) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { var stations = mod.position.FirstOrDefault(x => x.positionName == postionName); if (stations != null) { //stations.isLock = false; PositionHandler.Lock(false, stations, "人工操作unlockPosition", SysGloble.WCSNAME, null); // stations.isfree = false; int res = mod.SaveChanges(); if (res == 1) { msg.status = 200; } } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "unlockPosition", ex.ToString()); } return msg; } /// 解锁、锁定库位 /// /// /// 库位名称 /// 锁定原因 public resMsg unlockAndLockPosition(bool isLock, string postionName, string lockRemark, string lockUser) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { var stations = mod.position.FirstOrDefault(x => x.positionName == postionName); if (stations != null) { PositionHandler.Lock(isLock, stations, "人工操作:" + lockRemark, lockUser, null); int res = mod.SaveChanges(); if (res == 1) { msg.status = 200; } } } } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "unlockAndLockPosition", ex.ToString()); } return msg; } /// AGV发送状态 /// /// /// public string[] findAgvInfo() { try { return Form1.agvSendStatus; } catch (Exception) { throw; } } /// 堆垛机任务重发 /// /// /// 任务ID /// 起始位置 /// 目标位置 /// 1=不是任务重发,2=任务重发 /// 是否是线下发的任务,true表示是线下任务,false是线上任务 public string srmTaskReSend(long taskId, string SourcePlace, string ToPlace, int isref, bool isUnLineTask) { string res = ""; try { //增加验证,必须满足设备允许下发任务的条件 if (!MyExtendHelper.IsAllowSendNewTaskToSrm()) { res = "堆垛机必须满足模式是自动,状态是待机,任务执行是复位,无报警情况下才可下发任务"; return res; } task _task = null; if (isUnLineTask == false) {//自动任务 using (dbmodel mod = new dbmodel()) { _task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault(); } if (_task == null) { return "没有找到任务ID是" + taskId + "的任务"; } } baseData.sendSrmTask(_task, taskId, SourcePlace, ToPlace, isref); res = ""; } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "srmTaskReSend", "发送异常:" + JsonConvert.SerializeObject(ex)); res = "发送异常:" + ex.Message; } return res; } /// AGV任务重发 /// /// /// 任务id /// 起始位置 /// 目标位置 /// public string AgvTaskReSend(long taskId, string sourcePlace, string toPlace) { try { task _task = null; using (dbmodel mod = new dbmodel()) { _task = mod.task.Where(x => x.taskId == taskId).FirstOrDefault(); } if (_task == null) { return "没有找到任务ID是" + taskId + "的任务"; } string res = baseData.sendAgvTask(_task, taskId, sourcePlace, toPlace, 2); return res; } catch (Exception) { return "发送失败"; } } /// 大屏显示 /// /// /// 1是缸体侧 2是缸盖 /// public resMsg TaskDisplay(int arae) { resMsg msg = new resMsg(); msg.status = 400; List dataList = new List(); try { using (dbmodel mod = new dbmodel()) { dataList = mod.task.Where(x => x.area == arae).OrderByDescending(x => x.taskId).Take(10).ToList(); if (dataList.Count > 0) { msg.status = 200; msg.date = dataList; } } } catch (Exception ex) { msg.status = 400; msg.msg = "查找失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "TaskDisplay", ex.ToString()); } return msg; } /// 空托盘回库 /// /// /// public void emptyBack(string station) { try { HTTPService api = new HTTPService(" http://localhost:1025/pda/"); List serialNumbers = new List(); using (dbmodel mod = new dbmodel()) { VproductStock backStock = mod.VproductStock.FirstOrDefault(x => x.positionName == station); if (backStock == null) { messages mes = new messages(2, "回库失败,找不到回库库存数据"); mes.Show(); return; } List stockList = mod.productStockList.Where(x => x.stockId == backStock.positionId).ToList(); if (stockList.Count > 0) { for (int i = 0; i < stockList.Count; i++) { inStockOrderList serialNumber = new inStockOrderList(); serialNumber.serialNumber = stockList[i].productCode + "**" + stockList[i].serialNumber; serialNumbers.Add(serialNumber); } } else { messages mes = new messages(2, "回库失败,找不到回库站点数据"); mes.Show(); return; } } var data = new { station = station, datalist = serialNumbers }; string paprm = JsonConvert.SerializeObject(data); Guid guid = System.Guid.NewGuid(); api.postContentForString("EmptyBack", paprm, guid); } catch (Exception) { } } /// 获取堆垛机状态 /// /// /// public srmEntity getSrmStatus() { try { return Form1.srm; } catch (Exception) { return null; } } /// 获取输送线状态 /// /// /// public List getConvStatus() { try { return Form1.convs; } catch (Exception) { return null; } } /// 出入库记录 /// /// /// 分页 /// 物料名称 /// 物料编号 /// 任务类型 /// public resMsg getTakeRecord(paging page, string materialName, string materialCode, int taskType) { resMsg msg = new resMsg(); msg.status = 400; try { List dataList = new List(); using (dbmodel mod = new dbmodel()) { DateTime selectTime = Convert.ToDateTime("0002-01-01 0:00:00"); #region 查找数据 if (materialName.Trim() == "" && materialCode.Trim() == "" && taskType == 0)//&& page.selectDay < selectTime { dataList = mod.outInStockRecord.OrderByDescending(x => x.taskId).ToList(); } else { string sql = "SELECT * FROM [LA20025].[dbo].[outInStockRecord] where taskId>0"; if (materialName.Trim() != "") { sql = sql + " and materialName like '%" + materialName.Trim() + "%' "; } if (materialCode.Trim() != "")// { sql = sql + " and materialCode like '%" + materialCode.Trim() + "%' "; } if (taskType != 0) { sql = sql + " and taskType like '%" + taskType + "%' "; } //if (page.selectDay > selectTime) //{ // DateTime beforeDawn = Convert.ToDateTime(page.selectDay.ToString("D"));//当天0时0秒 // DateTime afterDawn = Convert.ToDateTime(page.selectDay.AddDays(1).ToString("D")).AddSeconds(-1);//当天23时59秒 // sql = sql + " and createTime>'" + beforeDawn + "' and createTime<'" + afterDawn+"'"; //} sql = sql + " order by taskId desc"; dataList = mod.Database.SqlQuery(sql).ToList(); } #endregion //分页计算 List fenyeRerult = new List(); if (dataList.Count > 0) { msg.status = 200; msg.totalNum = dataList.Count; msg.dateAll = dataList.Take(2000).ToList(); //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.total = 1; msg.date = null; msg.msg = "此条件查不到数据"; } } } catch (Exception) { msg.total = 1; msg.date = null; msg.msg = "查询异常"; } return msg; } /// 出入库记录,新版 [EditBy shaocx,2022-01-14] /// /// /// 分页 /// public resMsg getOutInStockRecord(paging page, Wms_outInStockRecord value) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { string sql = "SELECT * FROM [LA20025].[dbo].[Wms_outInStockRecord] "; sql = sql + " WHERE 1=1 "; if (!string.IsNullOrEmpty(value.sourcePlace))//起点 { sql = sql + " and sourcePlace='" + value.sourcePlace + "' "; } if (!string.IsNullOrEmpty(value.toPlace))//目标点 { sql = sql + " and toPlace='" + value.toPlace + "' "; } if (!string.IsNullOrEmpty(value.containerCode))//托盘号 { sql = sql + " and containerCode like'%" + value.containerCode + "%' "; } if (!string.IsNullOrEmpty(value.materialCode))//物料编号 { sql = sql + " and materialCode = '" + value.materialCode + "'"; } if (!string.IsNullOrEmpty(value.materialName))//物料名称 { sql = sql + " and materialName = '" + value.materialName + "' "; } if (!string.IsNullOrEmpty(value.version))//机型 { sql = sql + " and version = '" + value.version + "' "; } if (!string.IsNullOrEmpty(value.supplier))//供应商 { sql = sql + " and supplier like '%" + value.supplier + "%'"; } if (!string.IsNullOrEmpty(value.taskTypeName)) { sql = sql + " and taskTypeName = '" + value.taskTypeName + "' "; } if (!string.IsNullOrEmpty(value.outInFlagName)) { sql = sql + " and outInFlagName = '" + value.outInFlagName + "' "; } if (page.materilaSalverFlag == 1) { sql = sql + " and (materialCode !='GG-KTP' and materialCode !='GT-KTP' and materialCode !='') "; } else if (page.materilaSalverFlag == 2) { sql = sql + " and (materialCode ='GG-KTP' or materialCode ='GT-KTP' or materialCode ='') "; } if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and CreateTime >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and CreateTime <'" + page.endDateTime + "'"; } sql = sql + " order by CreateTime desc"; List dataList = mod.Database.SqlQuery(sql).ToList(); if (dataList.Count > 0) { var outQuery = (int)OutInFlag.出库; var inQuery = (int)OutInFlag.入库; msg.title = "入库数量:" + (int)dataList.Where(x => x.outInFlag == inQuery).Sum(x => x.qty) + ",出库数量:" + (int)dataList.Where(x => x.outInFlag == outQuery).Sum(x => x.qty); msg.totalNum = dataList.Count; msg.dateAll = dataList; //分页计算 List fenyeRerult = new List(); msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 400; msg.msg = "查找数据为0,请更换查询条件"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "getOutInStockRecord", ex.ToString()); } return msg; } /// 查找出库单,新版 [EditBy shaocx,2022-01-14] /// /// /// 分页 /// public resMsg getOutStockOrderNewVersion(paging page, v_outStockList value) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { string sql = "SELECT * FROM [LA20025].[dbo].[v_outStockList] "; sql = sql + " WHERE 1=1 "; if (!string.IsNullOrEmpty(value.sourcePlace))//起点 { sql = sql + " and sourcePlace='" + value.sourcePlace + "' "; } if (!string.IsNullOrEmpty(value.toPlace))//目标点 { sql = sql + " and toPlace='" + value.toPlace + "' "; } if (!string.IsNullOrEmpty(value.containerCode))//托盘号 { sql = sql + " and containerCode like'%" + value.containerCode + "%' "; } if (!string.IsNullOrEmpty(value.materialCode))//物料编号 { sql = sql + " and materialCode like '%" + value.materialCode + "%'"; } if (!string.IsNullOrEmpty(value.materialName))//物料名称 { sql = sql + " and materialName like '%" + value.materialName + "%' "; } if (!string.IsNullOrEmpty(value.version))//机型 { sql = sql + " and version like '%" + value.version + "%' "; } if (!string.IsNullOrEmpty(value.supplier))//供应商 { sql = sql + " and supplier like '%" + value.supplier + "%'"; } //if (value.status != null && value.status != 0) //{ // sql = sql + " and status = '" + value.status + "' "; //} //if (value.positionType == (byte)positionType.余料回库)//是否查询余料 //{ // sql = sql + " and positionType =" + value.positionType; //} if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and createTime >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and createTime <'" + page.endDateTime + "'"; } sql = sql + " order by createTime desc"; List dataList = mod.Database.SqlQuery(sql).ToList(); if (dataList.Count > 0) { msg.quantity = (int)dataList.Sum(x => x.quantity); msg.totalNum = dataList.Count; msg.dateAll = dataList; //分页计算 List fenyeRerult = new List(); msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 200; msg.msg = "查找数据为0,请更换查询条件"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findInStockNewVersion", ex.ToString()); } return msg; } /// ACK确认 /// /// public void sendSrmACK() { try { baseData.sendSrmACK(); } catch (Exception) { } } /// 任务确认 /// /// public void srmConfirm() { try { baseData.srmConfirm(); } catch (Exception) { } } /// 解除报警 /// /// public void srmAlarmReset() { try { baseData.srmAlarmReset(); } catch (Exception) { } } /// 根据库位删除数据 /// /// /// 库位名称 /// public FunctionReturnEntity deleteProduct(string positionName, string user) { string res = ""; try { using (dbmodel mod = new dbmodel()) { var b_result = MyExtend.deleteProduct(true, user, mod, positionName, null, ref res, "人工直接删除库存"); if (b_result == false) { return FunctionReturnEntity.Fail("删除失败:" + res); } int result = mod.SaveChanges(); if (result > 0) { return FunctionReturnEntity.Success("删除成功"); } else { return FunctionReturnEntity.Fail("删除失败:保存数据失败"); } } } catch (Exception ex) { res = "删除异常,请检查参数"; return FunctionReturnEntity.Fail("删除失败,异常:" + ex.Message); WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "TaskDisplay", ex.ToString()); } } /// 库位编辑 /// /// /// 库位对象 /// public string editPlace(position place) { string res = "修改失败"; try { using (dbmodel mod = new dbmodel()) { if (place != null) { if (place.positionId != 0) { position editplace = mod.position.Find(place.positionId); if (editplace != null) { //editplace.isLock = place.isLock; //editplace.isfree = place.isfree; PositionHandler.LockAndFree((bool)place.isLock, (bool)place.isfree, editplace, "人工库位编辑", SysGloble.WCSNAME, null); editplace.positionType = place.positionType; editplace.enable = place.enable; int result = mod.SaveChanges(); if (result > 0) { res = "修改成功"; } } } } } } catch (Exception) { res = "修改异常"; } return res; } /// /// 查询下拉列表数据 [EditBy shaocx,2021-01-13] /// /// /// public FunctionReturnEntity> GetSelectList(string type) { FunctionReturnEntity> fr = new FunctionReturnEntity>(); using (dbmodel context = new dbmodel()) { if (type == "version") {//机型 string sql = " SELECT DISTINCT version FROM [LA20025].[dbo].[material] where ISNULL(version, '')<> '' "; List dataList = context.Database.SqlQuery(sql).ToList(); fr.resData = dataList; fr.result = true; return fr; } else if (type == "materialCode") {//materialCode string sql = " SELECT DISTINCT materialCode FROM [LA20025].[dbo].[material] where ISNULL(materialCode, '')<> '' "; List dataList = context.Database.SqlQuery(sql).ToList(); fr.resData = dataList; fr.result = true; return fr; } else if (type == "materialName") {//materialName string sql = " SELECT DISTINCT materialName FROM [LA20025].[dbo].[material] where ISNULL(materialName, '')<> '' "; List dataList = context.Database.SqlQuery(sql).ToList(); fr.resData = dataList; fr.result = true; return fr; } } return fr; } /// /// 查询枚举下拉列表数据 [EditBy shaocx,2021-01-13] /// /// /// public FunctionReturnEntity> GetEnumSelectList(string enumName, bool isAddEmpty) { FunctionReturnEntity> fr = new FunctionReturnEntity>(); List dataList = new List(); if (isAddEmpty) { ListItem li = new ListItem() { Text = "不筛选", Value = "" }; dataList.Add(li); } if (enumName == "taskType") {//任务类型 List eeList = EnumberHelper.EnumToList(); foreach (var item in eeList) { ListItem li = new ListItem() { Text = item.EnumName, Value = item.EnumValue.ToString() }; dataList.Add(li); } fr.resData = dataList; fr.result = true; return fr; } else if (enumName == "OutInFlag") {//出入库类型 List eeList = EnumberHelper.EnumToList(); foreach (var item in eeList) { ListItem li = new ListItem() { Text = item.EnumName, Value = item.EnumValue.ToString() }; dataList.Add(li); } fr.resData = dataList; fr.result = true; return fr; } return fr; } /// /// 创建人工出库任务 [EditBy shaocx,2022-03-02] /// /// 1:人工出库 2:出库分拣 3:人工空托盘出库 /// /// 起点 /// 目标点 /// public FunctionReturnEntity CreateTaskForHandOutStore(int flag, string userName, string source_station, string to_station) { resMsg res = new resMsg(); res.status = 400; try { var pre_createListCode = ""; taskType _taskType = default(taskType); if (flag == 1) { _taskType = taskType.手动出库; pre_createListCode = "SDCK"; } else if (flag == 2) { _taskType = taskType.出库分拣; pre_createListCode = "CKFJ"; } else if (flag == 3) { _taskType = taskType.空托人工出库; pre_createListCode = "KTRGCK"; } else { return FunctionReturnEntity.Fail("标记错误"); } using (dbmodel mod = new dbmodel()) { VproductStock stationIsHave = mod.VproductStock.FirstOrDefault(x => x.positionName == to_station); if (stationIsHave != null) { res.msg = "出库口" + to_station + "已经有货"; return FunctionReturnEntity.Fail(res.msg); } string sourcePlace = ""; //起点 VproductStock OutStock = mod.VproductStock.OrderBy(x => x.createTime).FirstOrDefault(x => x.positionName == source_station); if (OutStock == null) { res.msg = "没有找到库位" + to_station + "的库存"; return FunctionReturnEntity.Fail(res.msg); } //判断站点是否有任务被占用 var isStationHasDoingTaskResult = MyExtendHelper.IsStationHasDoingTask(mod, to_station); if (isStationHasDoingTaskResult.result == false) return isStationHasDoingTaskResult; isStationHasDoingTaskResult = MyExtendHelper.IsStationHasDoingTask(mod, OutStock.positionName); if (isStationHasDoingTaskResult.result == false) return isStationHasDoingTaskResult; //判断站点是否空闲状态 var isStationAllowCreateNewTask = MyExtendHelper.IsStationAllowCreateNewTask(mod, to_station); if (isStationAllowCreateNewTask.result == false) return isStationAllowCreateNewTask; isStationAllowCreateNewTask = MyExtendHelper.IsStationAllowCreateNewTask(mod, OutStock.positionName); if (isStationAllowCreateNewTask.result == false) return isStationAllowCreateNewTask; List stockSerialNumber = null; int quantity = 0; if (_taskType == taskType.手动出库 || _taskType == taskType.出库分拣) { stockSerialNumber = mod.productStockList.Where(x => x.stockId == OutStock.positionId).ToList(); if (stockSerialNumber.Count < 1) { res.msg = "此库存无流水号明细"; return FunctionReturnEntity.Fail(res.msg); } quantity = stockSerialNumber.Count; } sourcePlace = OutStock.positionName; task newTask = new task(); newTask.createListCode = pre_createListCode + DateTime.Now.ToString("yyMMddHHmmss"); newTask.taskType = (int)_taskType; newTask.taskTypeName = _taskType.ToString(); newTask.taskName = _taskType.ToString(); newTask.taskStatus = (int)taskStatus.未下发; newTask.sourcePlace = sourcePlace; newTask.toPlace = to_station.Trim(); newTask.middlePlace = ""; newTask.area = MyExtendHelper.GetTaskAreaByOutStorePostion(to_station); newTask.priority = 1; newTask.materialCode = OutStock.materialCode; newTask.materialName = OutStock.materialName; newTask.quantity = quantity; newTask.createTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); newTask.sendMesed = 1;//1=未发送,2=发送成功,3=发送失败 newTask.mesReply = "未发送"; newTask.supplier = OutStock.supplier;//供应商 【EditBy shaocx,2022-01-15】 newTask.containerCode = OutStock.containerCode;//托盘号 【EditBy shaocx,2022-01-15】 newTask.version = OutStock.version;//机型 newTask.creator = SysGloble.WCSNAME; //记录PLC任务号和AGV任务号 【EditBy shaocx,2022-03-28】 newTask.PlcTaskNo = TaskNoHelper.CreatePlcTaskIdForSrmTaskPublic(1); newTask.AgvTaskNo = TaskNoHelper.CreateTaskIdForAgvTask(newTask.PlcTaskNo); mod.task.Add(newTask); outStockList outStockRecord = new outStockList(); outStockRecord.outStockOrder = newTask.createListCode; outStockRecord.materialName = OutStock.materialName; outStockRecord.materialCode = OutStock.materialCode; outStockRecord.quantity = quantity; outStockRecord.creator = userName; outStockRecord.createTime = newTask.createTime; outStockRecord.version = OutStock.version;//机型 【EditBy shaocx,2022-01-18】 mod.outStockList.Add(outStockRecord); OutStock.isLock = true; //起点和目标点锁定 position p_sourcePlace = mod.position.FirstOrDefault(x => x.positionName == newTask.sourcePlace); position p_toPlace = mod.position.FirstOrDefault(x => x.positionName == newTask.toPlace); //p_sourcePlace.isLock = true; //p_toPlace.isLock = true; PositionHandler.Lock(true, p_sourcePlace, "创建人工出库任务,锁定该库位", SysGloble.WCSNAME, newTask); PositionHandler.Lock(true, p_toPlace, "创建人工出库任务,锁定该库位", SysGloble.WCSNAME, newTask); int ress = mod.SaveChanges(); if (ress > 0) { res.status = 200; return FunctionReturnEntity.Success("成功"); } else { res.status = 400; res.msg = "保存数据失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", "保存数据失败"); return FunctionReturnEntity.Fail(res.msg); } } } catch (Exception ex) { res.status = 400; res.msg = "保存异常:" + ex.Message; WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "CreateTaskForOutStore", ex.ToString()); return FunctionReturnEntity.Fail(res.msg); } } #region 输送线交互 /// /// 输送线写入上料完成信号 /// /// 输送线索引(0,1,2,3) /// public FunctionReturnEntity Trans_LoadMaterialConfirm(int index) { try { TransService.LoadMaterialConfirm(index); return FunctionReturnEntity.Success("成功"); } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "Trans_LoadMaterialConfirm", "输送线写入上料完成信号:" + JsonConvert.SerializeObject(ex)); return FunctionReturnEntity.Fail(ex.Message); } } /// /// 输送线清除工件记忆 /// /// 输送线索引(0,1,2,3) /// public FunctionReturnEntity ClearGJJY(int index) { try { TransService.ClearGJJY(index); return FunctionReturnEntity.Success("成功"); } catch (Exception ex) { WZ.Useful.Commons.LogTextHelper.WriteLine("yunneiWcf", "ClearGJJY", "输送线清除工件记忆:" + JsonConvert.SerializeObject(ex)); return FunctionReturnEntity.Fail(ex.Message); } } #endregion /// 清除库存查询 /// /// /// 分页 /// public resMsg findStockClearLog(paging page, StockClearLog value) { resMsg msg = new resMsg(); msg.status = 400; try { using (dbmodel mod = new dbmodel()) { string sql = "SELECT * FROM [LA20025].[dbo].[StockClearLog] where 1=1 "; if (!string.IsNullOrEmpty(value.positionName))//库位名称 { sql = sql + " and positionName='" + value.positionName + "' "; } if (!string.IsNullOrEmpty(value.containerCode))//托盘号 { sql = sql + " and containerCode like'%" + value.containerCode + "%' "; } if (!string.IsNullOrEmpty(value.materialCode))//物料编号 { sql = sql + " and materialCode like '%" + value.materialCode + "%'"; } if (!string.IsNullOrEmpty(value.materialName))//物料名称 { sql = sql + " and materialName like '%" + value.materialName + "%' "; } if (!string.IsNullOrEmpty(value.version))//机型 { sql = sql + " and version like '%" + value.version + "%' "; } if (!string.IsNullOrEmpty(value.supplier))//供应商 { sql = sql + " and supplier like '%" + value.supplier + "%'"; } if (page.startDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.startDateTime != DateTime.Parse("0001-01-01 0:00:00"))//起始时间 { sql = sql + " and CreateTime >'" + page.startDateTime + "'"; } if (page.endDateTime != DateTime.Parse("1900-01-01 0:00:00") && page.endDateTime != DateTime.Parse("0001-01-01 0:00:00"))//截止时间 { sql = sql + " and CreateTime <'" + page.endDateTime + "'"; } sql = sql + " order by createTime desc"; List dataList = mod.Database.SqlQuery(sql).ToList(); if (dataList.Count > 0) { msg.quantity = 0; msg.totalNum = dataList.Count; msg.dateAll = dataList; //分页计算 List fenyeRerult = new List(); msg.status = 200; //假如每页数量 大于盘点数据 if (page.pagesize > dataList.Count) { msg.date = dataList; msg.total = 1; } else { #region 分页计算 int a = page.pagesize; int b = page.pagenum; int c = (int)Math.Ceiling((double)dataList.Count / a); msg.total = c; int d = dataList.Count % a; int e = 0; int f = a * (b - 1); if (d != 0 && b == c) { e = d + f; } else { e = a + f; } for (int i = f; i < e; i++) { fenyeRerult.Add(dataList[i]); } msg.date = fenyeRerult; #endregion } } else { msg.status = 200; msg.msg = "查找数据为0,请更换查询条件"; } } } catch (Exception ex) { msg.msg = "查询失败"; WZ.Useful.Commons.LogTextHelper.WriteLine("IyunneiWcf", "findStockClearLog", ex.ToString()); } return msg; } /// /// 获取 指定供应商出库配置的供应商名称 /// /// /// public String GetBasicDataSetForSupplier() { return BasicDataSetHandler.GetBasicDataSetForSupplier(); } public String GetBasicDataSetForStayMonths() { return BasicDataSetHandler.GetBasicDataSetForStayMonths(); } /// /// 修改出库配置的供应商数据 /// /// /// /// public FunctionReturnEntity UpdateBasicDataSetForSupplier(string supplier, string user) { return BasicDataSetHandler.UpdateBasicDataSetForSupplier(supplier, user); } /// /// 修改 呆滞库位时长 /// /// /// /// public FunctionReturnEntity UpdateBasicDataSetForStayMonths(int stayMonths, string user) { return BasicDataSetHandler.UpdateBasicDataSetForStayMonths(stayMonths, user); } /// /// 获取缺料任务 /// /// public FunctionReturnEntity GetQueLiao() { try { task _task = null; var status1 = (int)taskStatus.新建; using (dbmodel mod = new dbmodel()) { var taskList = mod.task.Where(x => x.isQueLiao == 1 && x.taskStatus == status1).OrderBy(x => x.createTime).ToList(); if (taskList != null && taskList.Count > 0) { _task = taskList.First(); } } return FunctionReturnEntity.Success("成功", _task); } catch (Exception ex) { return FunctionReturnEntity.Fail("异常:" + ex.Message); } } /// /// 手动创建AGV任务号 /// /// public string CreateTaskIdForAgvTaskByHand() { return TaskNoHelper.CreateTaskIdForAgvTaskByHand(); } /// /// 创建设备任务号 /// /// public DeviceTaskNoEntity CreateTaskId() { DeviceTaskNoEntity entity = null; var plcTaskNo = TaskNoHelper.CreatePlcTaskIdForSrmTaskPublic(1); var agvTaskNo = TaskNoHelper.CreateTaskIdForAgvTask(plcTaskNo); entity = new DeviceTaskNoEntity() { PlcTaskNo = plcTaskNo, AgvTaskNo = agvTaskNo }; return entity; } /// /// 下发旁路工位的任务 /// /// /// public FunctionReturnEntity IssueTaskForPangLuGongWei(int taskId, string midStorePosition) { var errMsg = ""; var res = TaskHelper.IssueTaskForPangLuGongWei(taskId, midStorePosition, ref errMsg); if (res) { return FunctionReturnEntity.Success("成功"); } else { return FunctionReturnEntity.Fail("失败:" + errMsg); } } } }