| | |
| | | private readonly IPdaSoServer _pdaSoSvc;//空托出库Svc |
| | | private readonly IPdaAsnServer _paAsnSvc;//空托跺绑定 |
| | | private readonly IStockServer _stockSvc;//AGV任务完成箅 |
| | | private readonly IPdaCrServer _pdaCrServer; // PDA任务调度 |
| | | private static readonly object OLock = new object(); |
| | | |
| | | public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc) |
| | | public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc,IPdaCrServer pdaCrServer) |
| | | { |
| | | _config = setting.Value; |
| | | _exNoticeSvc = exNoticeSvc; |
| | |
| | | _taskSvc = taskSvc; |
| | | _pdaSoSvc = pdaSoSvc; |
| | | _paAsnSvc = paAsnSvc; |
| | | _stockSvc = stockSvc; |
| | | _stockSvc = stockSvc; |
| | | _pdaCrServer = pdaCrServer; |
| | | } |
| | | |
| | | #region WMS接口 调用下游系统接口 |
| | |
| | | [HttpPost] |
| | | public IActionResult RequestRoadWay(RequestLocate model) |
| | | { |
| | | var logStr = ""; |
| | | lock (OLock) { |
| | | var logStr = ""; |
| | | |
| | | logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | logStr = $@".\log\WCS\WCS申请巷道" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | |
| | | try |
| | | { |
| | | |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr); |
| | | if (model.TaskModel == "1") |
| | | try |
| | | { |
| | | var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请巷道:( {jsonData} ),", logStr); |
| | | if (model.TaskModel == "1") |
| | | { |
| | | var list = _asnPalletBindSvc.RequestRoadWayModel(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | else |
| | | { |
| | | |
| | | var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的成功信息", 2); |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | else |
| | | { |
| | | |
| | | var list = _asnPalletBindSvc.RequestRoadWay(model.PalletNo, model.HouseNo); |
| | | |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2); |
| | | |
| | | return Ok(new { Success = 0, Message = "申请巷道成功", TaskList = list }); |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请巷道返回:( {e.Message} ),", logStr); |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo, |
| | | "申请巷道", $"申请巷道托盘号:{model.PalletNo}的失败信息", 2); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | |
| | | //} |
| | | |
| | | //string palletno = model.PalletNo; |
| | | var logStr = ""; |
| | | if (model.PalletNo.Length == 9) |
| | | lock (OLock) |
| | | { |
| | | logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | |
| | | try |
| | | { |
| | | var logStr = ""; |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr); |
| | | logStr = $@".\log\WCS\WMS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr); |
| | | logStr = $@".\log\WCS\WCS申请储位" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | } |
| | | |
| | | } |
| | | string pallet = model.PalletNo.Substring(0, 8); |
| | | OutCommandDto list; |
| | | if (model.TaskModel == "1") |
| | | try |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | else |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WMS申请储位:( {jsonData} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS申请储位:( {jsonData} ),", logStr); |
| | | |
| | | } |
| | | string pallet = model.PalletNo.Substring(0, 8); |
| | | OutCommandDto list; |
| | | if (model.TaskModel == "1") |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocationModel(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | else |
| | | { |
| | | list = _asnPalletBindSvc.RequestLocation(pallet, model.HouseNo, model.RoadwayNo); |
| | | } |
| | | |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的成功信息", 2);// int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位成功:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | } |
| | | |
| | | return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);//int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr); |
| | | return Ok(new { Success = 0, Message = "申请储位成功", TaskList = list }); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr); |
| | | } |
| | | if (model.PalletNo.Length == 9) |
| | | { |
| | | new OperationASNServer().AddLogOperationAsn("入库作业", "入库日志", model.PalletNo.Substring(0, 8), "申请储位", $"申请储位托盘号:{model.PalletNo.Substring(0, 8)}的失败信息", 2);//int.Parse(userId) |
| | | LogFile.SaveLogToFile($"WMS申请储位失败返回:( {e.Message} ),", logStr); |
| | | } |
| | | else if (model.PalletNo.Length == 8) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请储位返回:( {e.Message} ),", logStr); |
| | | } |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | } |
| | | |
| | |
| | | [HttpPost] |
| | | public IActionResult BindPlnInHouseWcs(PalletsBind model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请空托跺绑定" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var logStr = $@".\log\WCS\WCS又叠托机申请空托入库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | var strMsg = _paAsnSvc.BindNullPallets(model); |
| | | |
| | | return Ok(new { Success = 0, Message = "空托跺绑定成功", TaskList = strMsg }); |
| | | return Ok(new { Success = 0, Message = "空托跺绑定成功"}); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | public IActionResult IssuePlnOutHouseWcs(OutModePalletVm model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | List<OutCommandDto> _list = _pdaSoSvc.IssuePlnOutHouseWcs(model,0); |
| | |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WMS拣货申请空托出库 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult IssuePlnCheckHouseWcs(CheckModePalletVm model) |
| | | { |
| | | var logStr = $@".\log\WCS\WMS拣货申请空托出库" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | string list = _pdaSoSvc.IssuePlnCehckHouseWcs(model, 0,_config.AgvHost+_config.GenAgvSchedulingTask); |
| | | |
| | | return Ok(new { Success = 0, Message = "拣货叫空托盘成功"}); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WMS拣货申请空托出库异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS申请是否缠膜 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | |
| | | public IActionResult RequestPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackWcs(model.PalletNo); |
| | |
| | | public IActionResult RequestUnPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestUnPackWcs(model.PalletNo); |
| | |
| | | public IActionResult RequestPackedWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackedWcs(model.PalletNo); |
| | |
| | | public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请拆垛托盘信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model); |
| | |
| | | public IActionResult ResultBoxInfoExportWcs(BoxInfoCheck model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请成品箱码拆垛拣货信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"任务反馈:( {jsonData} ),", logStr); |
| | | try |
| | | { |
| | | //返回出库分拣装车口 |
| | | var list = _exNoticeSvc.BoxInfoExportWcs(model.BoxNo); |
| | | return Ok(new { Success = 1, Message = "成品箱码拆垛拣货成功", loadubgAddre = list }); |
| | | return Ok(new { Success = "1", Message = "成品箱码拆垛拣货成功", loadingAddre = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请成品箱码拆垛拣货异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | return Ok(new { Success = "-1", Message = e.Message, loadingAddre = "" }); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region AGV |
| | | |
| | |
| | | var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | |
| | | //测试接口用 |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskCode,"0");// 判断单据类型入出移 |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskCode, "0");// 判断单据类型入出移 |
| | | |
| | | var taskType = _taskSvc.GetTaskType(model.TaskCode);//根据任务号获取任务类型 |
| | | switch (orderType) |
| | | { |
| | | case "0"://入库任务执行 |
| | | _stockSvc.ArriveFinish(model.TaskCode); |
| | | if (model.Method == "mid") //AGV到达入库口,请求放货 |
| | | { |
| | | //下发WCS放货请求 |
| | | var ret = _taskSvc.GetWcsPuttype(model.TaskCode,_config.WcsHost + _config.HttpInRequest); |
| | | if (ret.Contains("-1")) |
| | | { |
| | | logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | LogFile.SaveLogToFile($"放货请求WCS失败,反馈执行通知:( {model.CurrentCallCode} ),", logStr); |
| | | return Ok(new OutCommanAgvDto { Code = "1", Message = "失败", ReqCode = model.ReqCode }); |
| | | } |
| | | } |
| | | else if (model.Method == "end")//AGV放货到入库口完成 |
| | | { |
| | | _stockSvc.ArriveFinish(model.TaskCode,_config.WcsHost + _config.HttpInFinish); |
| | | } |
| | | |
| | | break; |
| | | |
| | | case "1"://出库任务执行 |
| | | _stockSvc.SoFinish(model.TaskCode); |
| | | _stockSvc.SoFinish(model.TaskCode,_config.MesHost + _config.MesBeiLiaoUrl); |
| | | break; |
| | | |
| | | case "2"://盘库任务执行 |
| | | |
| | | case "3"://移库任务执行 |
| | | _stockSvc.MoveFinish(model.TaskCode); |
| | | _stockSvc.MoveFinish(model.TaskCode, _config.MesHost + _config.MesBeiLiaoUrl); |
| | | break; |
| | | // return Ok(new OutCommanAgvDto { Code = "0", Message = "成功", ReqCode = model.ReqCode }); |
| | | |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return Ok(new WcsModel |
| | | return Ok(new OutCommanAgvDto |
| | | { |
| | | StatusCode = -1, |
| | | Msg = ex.Message |
| | | Code = "1", |
| | | Message = ex.Message |
| | | }); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// 任务继续执行接口 |
| | | /// 调用AGV任务模板continueTask,WCS调用接口返回该工位可放信号 |
| | | /// </summary> |
| | | /// <param name="model">入库口信息</param> |
| | | /// <returns></returns> |
| | | [HttpPost] |
| | | public IActionResult AgcontinueTask(PutModel model) |
| | | { |
| | | try |
| | | { |
| | | //记录log |
| | | var logStr = $@".\log\WCS\任务反馈" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | var jsonData = JsonConvert.SerializeObject(model); |
| | | LogFile.SaveLogToFile($"WCS任务反馈执行通知:( {jsonData} ),", logStr); |
| | | |
| | | //下发AGV继续执行 |
| | | _pdaCrServer.AgvContinue(model.TaskNo,_config.AgvHost+_config.ContinueTask); |
| | | |
| | | |
| | | return Ok(new HttpReturnModel { Success = "0", Message = "成功"}); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return Ok(new HttpReturnModel { Success = "1", Message = ex.ToString() }); |
| | | throw ex; |
| | | } |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #endregion |
| | | |
| | | |
| | | #region PDA |
| | | |