| | |
| | | { |
| | | var result = new WeiLiResult(); |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var cntrweight = model.cntrWeight == 1 ? 2 : model.cntrWeight == 2 ? 3 : model.cntrWeight == 3 ? 11 : model.cntrWeight == 4 ? 30 : model.cntrWeight == 5 ? 150 : 0; |
| | | var cntrweight = model.cntrWeight; |
| | | if (!string.IsNullOrEmpty(model.startBit) && !string.IsNullOrEmpty(model.endBit)) |
| | | { |
| | | if (!string.IsNullOrEmpty(model.TaskNo)) |
| | |
| | | var db = new SqlHelper<object>().GetInstance(); |
| | | var result = new PlcSendTaskres { requestPk = model.requestPk, code = "0" }; |
| | | string message = ""; |
| | | if (model.noticeType == "0" || model.noticeType == "ERROR") |
| | | try |
| | | { |
| | | //称重 |
| | | if (model.noticeType == "0") |
| | | if (model.noticeType == "0" || model.noticeType == "ERROR") |
| | | { |
| | | //外形检测成功 修改任务参数 |
| | | var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First(); |
| | | if (wcsTask != null) |
| | | //称重 |
| | | if (model.noticeType == "0") |
| | | { |
| | | wcsTask.N_ERR = 200; |
| | | db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR }).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //外形检测失败 修改任务参数 |
| | | var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First(); |
| | | if (wcsTask != null) |
| | | { |
| | | Location endLoc = null; |
| | | var Setting = Settings.ConnetAreas.Where(a => a.InLocList.Contains(wcsTask.S_END_LOC)).FirstOrDefault(); |
| | | if (Setting != null) |
| | | //外形检测成功 修改任务参数 |
| | | var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First(); |
| | | if (wcsTask != null) |
| | | { |
| | | if (Settings.DBAreas.Contains(wcsTask.S_START_AREA)) |
| | | wcsTask.N_ERR = 200; |
| | | db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR }).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | //外形检测失败 修改任务参数 |
| | | var wcsTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && it.N_B_STATE == 2 && it.S_SCHEDULE_TYPE == "NDC").First(); |
| | | if (wcsTask != null) |
| | | { |
| | | Location endLoc = null; |
| | | var Setting = Settings.ConnetAreas.Where(a => a.InLocList.Contains(wcsTask.S_END_LOC)).FirstOrDefault(); |
| | | if (Setting != null) |
| | | { |
| | | endLoc = db.Queryable<Location>().Where(a => a.S_CODE == wcsTask.S_START_LOC).First(); |
| | | } |
| | | else |
| | | { |
| | | var endArea = Setting.ErrorArea; |
| | | endLoc = db.Queryable<Location>().Where(a => a.S_AREA_CODE == endArea && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First(); |
| | | } |
| | | |
| | | if (endLoc != null) |
| | | { |
| | | var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == wcsTask.S_OP_CODE).First(); |
| | | if (wmsTask != null) |
| | | if (Settings.DBAreas.Contains(wcsTask.S_START_AREA)) |
| | | { |
| | | var PlcTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && (it.N_B_STATE == 2 || it.N_B_STATE == 1) && it.S_SCHEDULE_TYPE == "WCS").First(); |
| | | if (PlcTask != null) |
| | | { |
| | | TaskProcess.Cancel(PlcTask); |
| | | //取消plc任务 |
| | | TaskProcess.OperateStatus(PlcTask, 7); |
| | | WCSHelper.Fail(PlcTask); |
| | | } |
| | | LocationHelper.UnLockLoc(wmsTask.S_END_LOC); |
| | | LocationHelper.LockLoc(endLoc.S_CODE, 1); |
| | | LocationHelper.LockLoc(wcsTask.S_END_LOC, 2); |
| | | wcsTask.S_ERR_LOC = endLoc.S_CODE; |
| | | wcsTask.N_ERR = 500; |
| | | db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR, it.S_ERR_LOC }).ExecuteCommand(); |
| | | endLoc = db.Queryable<Location>().Where(a => a.S_CODE == wcsTask.S_START_LOC).First(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"外形检测失败 未找到退货终点"); |
| | | } |
| | | else |
| | | { |
| | | var endArea = Setting.ErrorArea; |
| | | endLoc = db.Queryable<Location>().Where(a => a.S_AREA_CODE == endArea && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0).First(); |
| | | } |
| | | |
| | | if (endLoc != null) |
| | | { |
| | | var wmsTask = db.Queryable<WMSTask>().Where(a => a.S_CODE == wcsTask.S_OP_CODE).First(); |
| | | if (wmsTask != null) |
| | | { |
| | | var PlcTask = db.Queryable<WCSTask>().Where(it => it.S_CNTR_CODE == model.contNo && (it.N_B_STATE == 2 || it.N_B_STATE == 1) && it.S_SCHEDULE_TYPE == "WCS").First(); |
| | | if (PlcTask != null) |
| | | { |
| | | TaskProcess.Cancel(PlcTask); |
| | | //取消plc任务 |
| | | TaskProcess.OperateStatus(PlcTask, 7); |
| | | WCSHelper.Fail(PlcTask); |
| | | } |
| | | LocationHelper.UnLockLoc(wmsTask.S_END_LOC); |
| | | LocationHelper.LockLoc(endLoc.S_CODE, 1); |
| | | LocationHelper.LockLoc(wcsTask.S_END_LOC, 2); |
| | | wcsTask.S_ERR_LOC = endLoc.S_CODE; |
| | | wcsTask.N_ERR = 500; |
| | | db.Updateable(wcsTask).UpdateColumns(it => new { it.N_ERR, it.S_ERR_LOC }).ExecuteCommand(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | LogHelper.Info($"外形检测失败 未找到退货终点"); |
| | | } |
| | | |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var task = WCSHelper.GetTask(model.requestPk); |
| | | if (task != null) |
| | | { |
| | | //if (!WCSHelper.CheckActionRecordExist(task.S_CODE, int.Parse(model.noticeType))) |
| | | //{ |
| | | switch (model.noticeType) |
| | | { |
| | | case "1": |
| | | //执行状态 |
| | | WCSHelper.Begin(task); |
| | | if (task.S_TYPE == "分拣出") |
| | | { |
| | | WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 3); |
| | | } |
| | | break; |
| | | case "5": |
| | | //取货无货(释放货位) |
| | | TaskProcess.OperateStatus(task, 4); |
| | | break; |
| | | case "2": |
| | | if (!WCSHelper.CheckActionRecordExist(task.S_CODE, 5)) |
| | | { |
| | | TaskProcess.OperateStatus(task, 4); |
| | | } |
| | | //完成状态 (出库任务生成第二段agv任务) 解绑起点终点 |
| | | //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成") |
| | | //{ |
| | | TaskProcess.OperateStatus(task, 6); |
| | | if (task.S_OP_NAME == "入库") |
| | | { |
| | | WMSHelper.AddChange(task); |
| | | } |
| | | if (task.S_OP_NAME == "出库") |
| | | { |
| | | WMSHelper.DeleteChange(task); |
| | | } |
| | | if (task.S_TYPE == "分拣回") |
| | | { |
| | | WMSHelper.PreparationState(task); |
| | | } |
| | | //TaskProcess.PlcSencondTask(task); |
| | | WCSHelper.End(task); |
| | | WMSHelper.End(task); |
| | | //} |
| | | break; |
| | | case "8": |
| | | //取货无货(释放货位) |
| | | quhuowuhuo(db, task); |
| | | break; |
| | | case "9": |
| | | //放货有货 (重分货位) |
| | | fanghuoyouhuo(db, result, task); |
| | | break; |
| | | } |
| | | WCSHelper.AddActionRecord(task.S_CODE, int.Parse(model.noticeType), "", ""); |
| | | //} |
| | | } |
| | | else |
| | | { |
| | | result.code = "1"; |
| | | result.msg = "该任务编号不存在"; |
| | | var task = WCSHelper.GetTask(model.requestPk); |
| | | if (task != null) |
| | | { |
| | | //if (!WCSHelper.CheckActionRecordExist(task.S_CODE, int.Parse(model.noticeType))) |
| | | //{ |
| | | switch (model.noticeType) |
| | | { |
| | | case "1": |
| | | //执行状态 |
| | | WCSHelper.Begin(task); |
| | | if (task.S_TYPE == "分拣出") |
| | | { |
| | | WCSHelper.UpdateStorStatus(task.S_CNTR_CODE, 3); |
| | | } |
| | | break; |
| | | case "5": |
| | | //取货无货(释放货位) |
| | | TaskProcess.OperateStatus(task, 4); |
| | | break; |
| | | case "2": |
| | | if (!WCSHelper.CheckActionRecordExist(task.S_CODE, 5)) |
| | | { |
| | | TaskProcess.OperateStatus(task, 4); |
| | | } |
| | | //完成状态 (出库任务生成第二段agv任务) 解绑起点终点 |
| | | //if (task.S_B_STATE != "取消" && task.S_B_STATE != "完成" && task.S_B_STATE != "关闭" && task.S_B_STATE != "强制完成") |
| | | //{ |
| | | TaskProcess.OperateStatus(task, 6); |
| | | if (task.S_OP_NAME == "入库") |
| | | { |
| | | WMSHelper.AddChange(task); |
| | | } |
| | | if (task.S_OP_NAME == "出库") |
| | | { |
| | | WMSHelper.DeleteChange(task); |
| | | } |
| | | if (task.S_TYPE == "分拣回") |
| | | { |
| | | WMSHelper.PreparationState(task); |
| | | } |
| | | //TaskProcess.PlcSencondTask(task); |
| | | WCSHelper.End(task); |
| | | WMSHelper.End(task); |
| | | //} |
| | | break; |
| | | case "8": |
| | | //取货无货(释放货位) |
| | | quhuowuhuo(db, task); |
| | | break; |
| | | case "9": |
| | | //放货有货 (重分货位) |
| | | fanghuoyouhuo(db, result, task); |
| | | break; |
| | | } |
| | | WCSHelper.AddActionRecord(task.S_CODE, int.Parse(model.noticeType), "", ""); |
| | | //} |
| | | } |
| | | else |
| | | { |
| | | result.code = "1"; |
| | | result.msg = "该任务编号不存在"; |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | LogHelper.Error($"WCS回报任务失败 异常信息{ex.Message}", ex); |
| | | result.code = "1"; |
| | | result.msg = $"WCS回报任务失败 异常信息{ex.Message}"; |
| | | } |
| | | |
| | | return result; |
| | | } |
| | | |