.vs/VSWorkspaceState.json | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
.vs/slnx.sqlite | 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/api/MoboxController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/core/WCSCore.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/core/WMSCore.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/models/TN_Material.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
.vs/VSWorkspaceState.json
New file @@ -0,0 +1,7 @@ { "ExpandedNodes": [ "" ], "SelectedNode": "\\E:\\项目\\Weili", "PreviewInSolutionExplorer": false } .vs/slnx.sqliteBinary files differ
HH.WCS.Mobox3.WeiLi/HH.WCS.Mobox3.WeiLi.sln
New file @@ -0,0 +1,25 @@ Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio Version 16 VisualStudioVersion = 16.0.33529.622 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.WeiLi", "HH.WCS.Mobox3.WeiLi.csproj", "{E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Debug|Any CPU.Build.0 = Debug|Any CPU {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.ActiveCfg = Release|Any CPU {E98DD345-9B0E-46C8-B0AB-20B9915ACAEA}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {D73F8D67-E77E-493C-A8A2-A6CFB6FDDE06} EndGlobalSection EndGlobal HH.WCS.Mobox3.WeiLi/api/ApiHelper.cs
@@ -207,6 +207,30 @@ return result; } internal static SimpleResult ErrorOperation(MoboxOperationBase model) { var result = new SimpleResult(); var db = new SqlHelper<object>().GetInstance(); var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == model.OperationNo).First(); if (wmsTask != null) { LogHelper.Info($"清除错误作业 解绑托盘 托盘{wmsTask.S_CNTR_CODE}"); db.Deleteable<LocCntrRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); db.Deleteable<CntrItemRel>().Where(a => a.S_CNTR_CODE == wmsTask.S_CNTR_CODE).ExecuteCommand(); var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == wmsTask.S_START_LOC).First(); if (locInfo != null) { LogHelper.Info($"清除错误作业 重置货位状态 货位{locInfo.S_CODE}"); locInfo.N_CURRENT_NUM = 0; locInfo.N_LOCK_STATE = 0; locInfo.S_LOCK_STATE = "无"; db.Updateable(locInfo).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand(); } } return result; } internal static TaskStateresutl GetTaskState(GetTaskStateModel model) { var db = new SqlHelper<object>().GetInstance(); @@ -785,9 +809,13 @@ //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成") //{ TaskProcess.OperateStatus(task, 6); if (task.S_TYPE.Contains("入库")) if (task.S_OP_NAME =="入库") { WMSHelper.AddChange(task); } if (task.S_OP_NAME == "出库") { WMSHelper.DeleteChange(task); } if (task.S_TYPE == "分拣回") { @@ -849,28 +877,28 @@ } } else { LogHelper.Info($"{locinfo.N_ROADWAY} 巷道找不到可入货位 随机分配货位"); endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); if (endbit != null) { LogHelper.Info($"查找到改道货位为{endbit.S_CODE}"); //修改任务数据 终点 备注:改位 LocationHelper.LockLoc(endbit.S_CODE, 1); wmstask.S_END_LOC = endbit.S_CODE; db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); task.S_END_LOC = endbit.S_CODE; task.S_NOTE = "改位"; db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); if (agvBit != null) { result.new_locate_no = agvBit.PlcLocation; } } } //else //{ // LogHelper.Info($"{locinfo.N_ROADWAY} 巷道找不到可入货位 随机分配货位"); // endbit = WMSHelper.GetLiKuLocationIn(locinfo.S_AREA_CODE, 0, locinfo.S_TYPE); // if (endbit != null) // { // LogHelper.Info($"查找到改道货位为{endbit.S_CODE}"); // //修改任务数据 终点 备注:改位 // LocationHelper.LockLoc(endbit.S_CODE, 1); // wmstask.S_END_LOC = endbit.S_CODE; // db.Updateable(wmstask).UpdateColumns(it => new { it.S_END_LOC }).ExecuteCommand(); // task.S_END_LOC = endbit.S_CODE; // task.S_NOTE = "改位"; // db.Updateable(task).UpdateColumns(it => new { it.S_END_LOC, it.S_NOTE }).ExecuteCommand(); // // var agvBit = db.Queryable<PeiZhi>().Where(it => it.BitCode == endbit.S_CODE).First(); // if (agvBit != null) // { // result.new_locate_no = agvBit.PlcLocation; // } // } //} } internal static SimpleResult OutboundOrderExecute(OutboundOrderCheck model) { @@ -1631,46 +1659,98 @@ { WeiLiResult result = new WeiLiResult(); var db = new SqlHelper<object>().GetInstance(); var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); if (tasks.Count >= 1) { //流程任务数量执行超过一条 任务不允许取消 result.code = 500; result.msg = "流程任务执行中途不允许取消"; return result; } //var tasks = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).ToList(); //if (tasks.Count >= 1) //{ // //流程任务数量执行超过一条 任务不允许取消 // result.code = 500; // result.msg = "流程任务执行中途不允许取消"; // return result; //} //var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); //if (task != null) //{ // if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) // { // result.code = 500; // result.msg = "任务已取货完成 不允许取消"; // return result; // } // if (task.N_B_STATE == 0) // { // //等待直接修改状态为取消 // WCSHelper.UpdateStatus(model.orderNo, 5); // //result.msg = "任务等待,直接取消"; // } // else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) // { // if (task.S_TYPE == "杭奥") // { // //通知立库取消任务 // } // else // { // //已推送但是没有完成或者取消,通知hosttoagv // NDCHelper.Cancel(task.S_CODE.Trim()); // //result.msg = "任务取消已经发送给小车"; // } // } // else // { // result.code = 500; // result.msg = "任务已结束"; // } //} //else //{ // result.code = 500; // result.msg = "任务不存在"; //} var task = db.Queryable<WCSTask>().Where(a => a.S_OP_CODE == model.orderNo).OrderByDescending(a => a.T_CREATE).First(); if (task != null) { if (WCSHelper.CheckActionRecordExist(task.S_CODE, 4)) var wmsTask = WMSHelper.GetWmsTask(task.S_OP_CODE); if (wmsTask != null) { result.code = 500; result.msg = "任务已取货完成 不允许取消"; return result; } if (task.N_B_STATE == 0) { //等待直接修改状态为取消 WCSHelper.UpdateStatus(model.orderNo, 5); //result.msg = "任务等待,直接取消"; } else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) { if (task.S_TYPE == "杭奥") if (task.N_B_STATE == 0) { //通知立库取消任务 //等待直接修改状态为取消 WCSHelper.UpdateStatus(task.S_CODE, 4); wmsTask.N_B_STATE = 6; WMSHelper.UpdateTaskState(wmsTask); LocationHelper.UnLockLoc(task.S_START_LOC); LocationHelper.UnLockLoc(task.S_END_LOC); LocationHelper.UnLockLoc(wmsTask.S_END_LOC); result.msg = "任务等待,直接取消"; } else if (task.N_B_STATE != 3 && task.N_B_STATE != 4) { if (task.S_SCHEDULE_TYPE == "NDC") { //已推送但是没有完成或者取消,通知hosttoagv NDCApi.CancelOrder(task.S_CODE.Trim()); } else { TaskProcess.Cancel(task); TaskProcess.OperateStatus(task, 7); WCSHelper.Fail(task); WMSHelper.Fail(task); } result.msg = "任务取消已经发送给小车"; } else { //已推送但是没有完成或者取消,通知hosttoagv NDCHelper.Cancel(task.S_CODE.Trim()); //result.msg = "任务取消已经发送给小车"; result.msg = "任务已结束"; } } else { result.code = 500; result.msg = "任务已结束"; result.msg = "任务所处的作业不存在"; } } else @@ -1678,6 +1758,7 @@ result.code = 500; result.msg = "任务不存在"; } return result; } HH.WCS.Mobox3.WeiLi/api/MoboxController.cs
@@ -30,6 +30,7 @@ var wmsTask = WMSHelper.GetWmsTask(task.S_OP_CODE); if (wmsTask != null) { if (task.N_B_STATE == 0) { //等待直接修改状态为取消 @@ -49,7 +50,7 @@ //已推送但是没有完成或者取消,通知hosttoagv NDCApi.CancelOrder(task.S_CODE.Trim()); } else else { TaskProcess.Cancel(task); TaskProcess.OperateStatus(task, 7); @@ -64,8 +65,9 @@ result.resultCode = 1; result.resultMsg = "任务已结束"; } } else else { result.resultCode = 1; result.resultMsg = "任务所处的作业不存在"; @@ -98,7 +100,7 @@ WMSHelper.UpdateTaskState(op); result.resultMsg = "任务等待,直接取消"; } else if (op.N_B_STATE ==1) else if (op.N_B_STATE == 1) { //已推送但是没有完成或者取消,通知hosttoagv //NDCHelper.Cancel(task.S_CODE.Trim()); @@ -270,7 +272,18 @@ return ApiHelper.WeiLiDisbutionIn(model); } /// <summary> /// PDA分拣回 /// </summary> /// <param name="model"></param> /// <returns></returns> [HttpPost] [Route("ErrorOperation")] public SimpleResult ErrorOperation(MoboxOperationBase model) { LogHelper.Info($"清除错误作业 入参={JsonConvert.SerializeObject(model)}"); return ApiHelper.ErrorOperation(model); } ///// <summary> ///// 呼叫空框 HH.WCS.Mobox3.WeiLi/core/WCSCore.cs
@@ -46,10 +46,10 @@ case 4: WCSHelper.UpdateStatus(TN_Task, "取货完成"); TaskProcess.OperateStatus(TN_Task, 4); if (TN_Task.S_OP_NAME == "出库") { WMSHelper.DeleteChange(TN_Task); } //if (TN_Task.S_OP_NAME == "出库") //{ // WMSHelper.DeleteChange(TN_Task); //} break; case 5: WCSHelper.UpdateStatus(TN_Task, "开始卸货"); @@ -86,6 +86,8 @@ { //安全请求等 TaskProcess.AddTaskAction(model); WCSHelper.AddActionRecord(model.task_no, model.State, model.forklift_no, model.ext_data); //TaskProcess.OperateReq(TN_Task, model.State, model.forklift_no, model.ext_data); } } HH.WCS.Mobox3.WeiLi/core/WMSCore.cs
@@ -359,10 +359,15 @@ }; if (WCSHelper.CreateTask(wcsTask)) { LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态"); //更新作业状态为执行 a.N_B_STATE = 1; a.S_B_STATE = "执行"; WMSHelper.UpdateTaskState(a); } else { LogHelper.Info($"作业{a.S_CODE} 创建任务失败"); } } else @@ -472,6 +477,7 @@ if (WCSHelper.CreateTask(wcsTask)) { LogHelper.Info($"作业{a.S_CODE} 创建任务成功 修改作业状态"); //更新作业状态为执行 a.N_B_STATE = 1; a.S_B_STATE = "执行"; HH.WCS.Mobox3.WeiLi/models/TN_Material.cs
@@ -9,6 +9,7 @@ { public string S_ITEM_CODE { get; set; } public string S_ITEM_NAME { get; set; } public string S_HEIGHT { get; set; } public string S_MP_TYPE { get; set; } public Nullable<float> F_WEIGHT { get; set; } public string S_MATERIAL { get; set; } HH.WCS.Mobox3.WeiLi/wms/WCSHelper.cs
@@ -104,15 +104,21 @@ internal static bool AddActionRecord(string no, int state, string forkliftNo, string extData) { var db = new SqlHelper<TaskAction>().GetInstance(); var action = new TaskAction() var result = true; var info = db.Queryable<TaskAction>().Where(a => a.S_TASK_CODE == no && a.N_ACTION_CODE == state).First(); if (info == null) { N_ACTION_CODE = state, S_TASK_CODE = no, S_EQ_CODE = forkliftNo, S_EQ_TYPE = "agv", S_DATA = extData }; return db.Insertable(action).ExecuteCommand() > 0; var action = new TaskAction() { N_ACTION_CODE = state, S_TASK_CODE = no, S_EQ_CODE = forkliftNo, S_EQ_TYPE = "agv", S_DATA = extData }; result= db.Insertable(action).ExecuteCommand() > 0; } return result; } internal static bool CheckActionRecordExist(string no, int code) { var db = new SqlHelper<TaskAction>().GetInstance(); HH.WCS.Mobox3.WeiLi/wms/WMSHelper.cs
@@ -714,12 +714,12 @@ db.Updateable(InventoryCntr).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); } var InventoryCntr2 = db.Queryable<PlanInventory>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE && a.N_B_STATE == 3).First(); if (InventoryCntr2 != null && task.S_TYPE == "盘点回") { InventoryCntr2.N_B_STATE = 4; db.Updateable(InventoryCntr2).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); } //var InventoryCntr2 = db.Queryable<PlanInventory>().Where(a => a.S_CNTR_CODE == task.S_CNTR_CODE && a.N_B_STATE == 3).First(); //if (InventoryCntr2 != null && task.S_TYPE == "盘点回") //{ // InventoryCntr2.N_B_STATE = 4; // db.Updateable(InventoryCntr2).UpdateColumns(it => new { it.N_B_STATE }).ExecuteCommand(); //} } @@ -1098,6 +1098,26 @@ { LogHelper.Info($"该料框无特殊规格 不需区分高低货位"); } if (a.S_END_AREA == "11TLKQ") { //托盘高度从物料表中获取 var itemList = db.Queryable<CntrItemRel>().Where(it => it.S_CNTR_CODE == a.S_CNTR_CODE).ToList(); foreach (var item in itemList) { var itemInfo = db.Queryable<TN_Material>().Where(it => it.S_ITEM_CODE == item.S_ITEM_CODE).First(); if (itemInfo != null) { loctype = itemInfo.S_HEIGHT; if (loctype == "高货位") { break; } } } } //终点为立库的任务 result = GetLiKuLocationIn(a.S_END_AREA, 0, loctype); if (result != null)