| | |
| | | using Model.ModelVm.PdaVm; |
| | | using WMS.IBLL.IPdaServer; |
| | | using Model.ModelVm; |
| | | using WMS.IBLL.IDataServer; |
| | | |
| | | namespace Wms.Controllers |
| | | { |
| | |
| | | private readonly ITaskServer _taskSvc;//任务Svc |
| | | private readonly IPdaSoServer _pdaSoSvc;//空托出库Svc |
| | | private readonly IPdaAsnServer _paAsnSvc;//空托跺绑定 |
| | | private readonly IStockServer _stockSvc;//AGV任务完成箅 |
| | | |
| | | public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc) |
| | | public DownApiController(IOptions<ApiUrlConfig> setting, IExportNoticeServer exNoticeSvc, IPalletBindServer asnPalletBindSvc, IStockCheckServer crCheckSvc, ITaskServer taskSvc, IPdaSoServer pdaSoSvc,IPdaAsnServer paAsnSvc,IStockServer stockSvc) |
| | | { |
| | | _config = setting.Value; |
| | | _exNoticeSvc = exNoticeSvc; |
| | |
| | | _taskSvc = taskSvc; |
| | | _pdaSoSvc = pdaSoSvc; |
| | | _paAsnSvc = paAsnSvc; |
| | | _stockSvc = stockSvc; |
| | | } |
| | | |
| | | #region WMS接口 调用下游系统接口 |
| | |
| | | } |
| | | //接收时间 |
| | | var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskNo);// 判断单据类型入出移 |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskNo,model.TaskType);// 判断单据类型入出移 |
| | | switch (orderType) |
| | | { |
| | | case "0"://入库完成任务 |
| | | if (model.TaskType == "0")//0:入库 1:出库 2:移库 |
| | | { |
| | | _asnPalletBindSvc.ArrivalSuccess(model.TaskNo, 0); |
| | | return Ok(new WcsModel { StatusCode = 0, Msg = "入库完成" }); |
| | | return Ok(new WcsModel { StatusCode = 0, Msg = "入库完成" }); |
| | | } |
| | | break; |
| | | case "1"://出库完成任务 |
| | | if (model.TaskType == "1")//0:入库 1:出库 2:移库 |
| | | { |
| | | _exNoticeSvc.ExportSuccess(model.TaskNo, 0); |
| | | _exNoticeSvc.ExportSuccess(model.TaskNo, 0, _config.AgvHost + _config.GenAgvSchedulingTask); |
| | | return Ok(new WcsModel { StatusCode = 0, Msg = "出库完成" }); |
| | | } |
| | | else if (model.TaskType == "2") |
| | |
| | | var bl = _exNoticeSvc.EmptyException(model); |
| | | |
| | | LogFile.SaveLogToFile($"空取异常:(执行结果成功),", logStr); |
| | | return Ok(new { Success = 0, Message = "" }); |
| | | return Ok(new { Success = 0,StatusCode = 0, Message = "" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | var list = _asnPalletBindSvc.FullException(model); |
| | | |
| | | LogFile.SaveLogToFile($"满入异常:( {JsonConvert.SerializeObject(list)} ),", logStr); |
| | | return Ok(new { Success = 0, Message = "", TaskList = list }); |
| | | return Ok(new { Success = 0, StatusCode = 0, Message = "", TaskList = list }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS申请是否缠膜 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackWcs(model.PalletNo); |
| | | LogFile.SaveLogToFile($"WCS申请缠膜入库请求,请求托盘呈:( {model.PalletNo} ),", logStr); |
| | | |
| | | return Ok(new { Success = t, Message = "缠膜指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请缠膜入库异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS申请是否拆膜 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestUnPackWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestUnPackWcs(model.PalletNo); |
| | | |
| | | return Ok(new { Success = t, Message = "拆膜指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请拆膜出库异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// WCS反馈缠膜完成 |
| | | /// </summary> |
| | | /// <param name="model"></param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult RequestPackedWcs(RequesIsBale model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请缠膜拆膜" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | int t = _asnPalletBindSvc.RequestPackedWcs(model.PalletNo); |
| | | |
| | | return Ok(new { Success = t, Message = "缠膜完成指令发送成功" }); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请缠膜完成异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message }); |
| | | } |
| | | } |
| | | |
| | | ///// <summary> |
| | | ///// 成品箱码拆垛拣货 |
| | |
| | | |
| | | //车间叫料 |
| | | |
| | | //WCS申请拆垛信息 |
| | | /// <summary> |
| | | /// 成品箱码拆垛拣货 |
| | | /// </summary> |
| | | /// <param name="model">入库单信息</param> |
| | | /// <returns></returns> |
| | | [AllowAnonymous] |
| | | [HttpPost] |
| | | public IActionResult ResultBoxInfoCheckWcs(BoxInfoCheck model) |
| | | { |
| | | var logStr = $@".\log\WCS\WCS申请拆垛托盘信息" + DateTime.Now.ToString("yyyyMMdd") + ".txt"; |
| | | try |
| | | { |
| | | RequestBoxInfoCheck list = _exNoticeSvc.BoxInfoCheckWcs(model); |
| | | return Ok(new { Success = 1,Message = "拆垛信息获取成功",data = list}); |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | LogFile.SaveLogToFile($"WCS申请托盘拆垛异常返回:( {e.Message} ),", logStr); |
| | | |
| | | return Ok(new ErpModel { Success = -1, Message = e.Message}); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | #region AGV |
| | | |
| | |
| | | /// AGV 执行回调的方法,包含任务开始,走出储位,任务完成及任务取消。 |
| | | /// 取消通知为任务单,其他通知为单个任务组或子任务。注意:是否通知需要在任务模板配置 |
| | | /// </summary> |
| | | /// <param name="model">入库单信息</param> |
| | | /// <returns></returns> |
| | | /// <exception cref="Exception"></exception> |
| | | [HttpPost] |
| | | public IActionResult AgvCallback(AgvContinueTask model) |
| | | public IActionResult AgvCallback(AgvTaskDto model) |
| | | { |
| | | try |
| | | { |
| | |
| | | |
| | | //接收时间 |
| | | var time1 = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskCode);// 判断单据类型入出移 |
| | | |
| | | //测试接口用 |
| | | var orderType = _taskSvc.GetTaskOrderType(model.TaskCode,"0");// 判断单据类型入出移 |
| | | |
| | | var taskType = _taskSvc.GetTaskType(model.TaskCode);//根据任务号获取任务类型 |
| | | switch (orderType) |
| | | { |
| | | case "0"://入库任务执行 |
| | | if (model.TaskTyp == "mid") //AGV到达入库口,请求放货 |
| | | { |
| | | //下发WCS放货请求 |
| | | |
| | | } |
| | | else if (model.TaskTyp == "end")//AGV放货到入库口完成 |
| | | { |
| | | _stockSvc.ArriveFinish(model.TaskCode); |
| | | } |
| | | |
| | | break; |
| | | |
| | | case "1"://出库任务执行 |
| | | _stockSvc.SoFinish(model.TaskCode); |
| | | break; |
| | | |
| | | case "2"://盘库任务执行 |
| | | |
| | | case "3"://移库任务执行 |
| | | return Ok(new OutCommanAgvDto { Code = "0", Message = "成功", ReqCode = model.ReqCode }); |
| | | _stockSvc.MoveFinish(model.TaskCode); |
| | | break; |
| | | // return Ok(new OutCommanAgvDto { Code = "0", Message = "成功", ReqCode = model.ReqCode }); |
| | | |
| | | default: |
| | | return Ok(new OutCommanAgvDto { Code = "1", Message = "失败", ReqCode = model.ReqCode }); |
| | | } |
| | | return Ok(new OutCommanAgvDto { Code = "0", Message = "成功", ReqCode = model.ReqCode }); |
| | | |
| | | } |
| | | catch (Exception ex) |