| | |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_Core.BaseServices; |
| | | using WIDESEAWCS_Core.Enums; |
| | | using WIDESEAWCS_Core.Utilities; |
| | | using WIDESEAWCS_DTO.Enum; |
| | | using WIDESEAWCS_DTO.TaskInfo; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | |
| | | using WIDESEAWCS_QuartzJob.Models; |
| | | using WIDESEAWCS_QuartzJob.Service; |
| | | using static Microsoft.IO.RecyclableMemoryStreamManager; |
| | | |
| | | namespace WIDESEAWCS_TaskInfoService |
| | | { |
| | |
| | | public string urlWMSTask = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlWMSTask"]; |
| | | public string urlTaskCompleted = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlTaskCompleted"]; |
| | | public string urlWMSMovelibraryTask = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlWMSMovelibraryTask"]; |
| | | public string urlRelocationTaskCompleted = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlRelocationTaskCompleted"]; |
| | | public string urlQueryinventory = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlQueryinventory"]; |
| | | public string urlEmptyOutbound = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlEmptyOutbound"]; |
| | | public string urlRawmaterialout = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlRawmaterialout"]; |
| | | public string urlPalletQueryinventory = WIDESEAWCS_Core.Helper.AppSettings.Configuration["urlPalletQueryinventory"]; |
| | | /// <summary> |
| | | /// æ¥æ¶WMSä»»å¡ä¿¡æ¯ |
| | | /// </summary> |
| | |
| | | Dt_Task task = _mapper.Map<Dt_Task>(item); |
| | | task.TaskState = (int)TaskOutStatusEnum.OutNew; |
| | | task.Roadway = task.Roadway == "1" ? task.Roadway = "SC01" : task.Roadway = "SC02"; |
| | | task.CreateDate = DateTime.Now; |
| | | tasks.Add(task); |
| | | } |
| | | BaseDal.AddData(tasks); |
| | | _taskExecuteDetailService.AddTaskExecuteDetail(tasks.Select(x => x.TaskNum).ToList(), "æ¥æ¶WMSä»»å¡"); |
| | | |
| | | content = WebResponseContent.Instance.OK("æå"); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | PalletCode = palletCode |
| | | }; |
| | | content = HttpHelper.Post<WebResponseContent>($"{urlWMSTask}", generate); |
| | | WriteLog.GetLog("å
¥åºä»»å¡æ¥æ¶").Write(JsonConvert.SerializeObject(content), "å
¥åºä»»å¡æ¥æ¶"); |
| | | Dt_Task task = new Dt_Task(); |
| | | if (content != null) |
| | | { |
| | |
| | | task.TaskState = (int)TaskInStatusEnum.Line_InFinish; |
| | | task.Roadway = task.Roadway == "1" ? task.Roadway = "SC01" : task.Roadway = "SC02"; |
| | | BaseDal.AddData(task); |
| | | return content = WebResponseContent.Instance.Error(); |
| | | return content; |
| | | } |
| | | } |
| | | |
| | | |
| | | return content = WebResponseContent.Instance.Error(); |
| | | } |
| | | catch (Exception ex) |
| | |
| | | |
| | | throw; |
| | | } |
| | | |
| | | /*WebResponseContent content = new WebResponseContent(); |
| | | GenerateInv generate = new GenerateInv() |
| | | { |
| | | SourceAddress = "", |
| | | PalletCode = palletCode |
| | | }; |
| | | content = HttpHelper.Post<WebResponseContent>($"{urlQueryinventory}", generate); |
| | | if (content != null) |
| | | { |
| | | if (content.Status) |
| | | { |
| | | return content; |
| | | } |
| | | } |
| | | return content = WebResponseContent.Instance.Error();*/ |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æçå·ãèµ·å§å°ååWMS请æ±ä»»å¡ |
| | |
| | | task.Roadway = task.Roadway == "1" ? task.Roadway = "SC01" : task.Roadway = "SC02"; |
| | | BaseDal.AddData(task); |
| | | return content = WebResponseContent.Instance.OK(); |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("PLCæ¥å¿åºåºæ¥å¿").Write($"空æåºåºå¤±è´¥ï¼è¯¦æ
ï¼{content.Message}", "éè¦ç©ºæ"); |
| | | } |
| | | } |
| | | return content = WebResponseContent.Instance.Error(); |
| | |
| | | } |
| | | } |
| | | |
| | | |
| | | public WebResponseContent RequestWMSTask4() |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | |
| | | return content = HttpHelper.Get<WebResponseContent>($"{urlPalletQueryinventory}"); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content = WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æ ¹æ®æ·±åºä½åwmsç³è¯·å¤ææµ
åºä½æ¯å¦æè´§ï¼æ¯å¦éè¦è¿è¡ç§»åºæä½ |
| | | /// </summary> |
| | |
| | | task = JsonConvert.DeserializeObject<Dt_Task>(content.Data.ToString()); |
| | | if (task.TaskNum != _Task.TaskNum) |
| | | { |
| | | |
| | | WriteLog.GetLog("æ¥æ¶ä»»å¡").Write("ç§»åºä»»å¡ï¼"+JsonConvert.SerializeObject(task), "æ¥æ¶ä»»å¡"); |
| | | task.TaskState = (int)TaskRelocationTypeEnum.Relocation; |
| | | task.Roadway = task.Roadway == "1" ? task.Roadway = "SC01" : task.Roadway = "SC02"; |
| | | task.TaskNum = task.TaskNum; |
| | |
| | | return task; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("PLCæ¥å¿").Write($"失败信æ¯ï¼{content.Message}", "ç§»åºä¿¡æ¯"); |
| | | return null; |
| | | |
| | | } |
| | | } |
| | | |
| | | return _Task; |
| | | } |
| | | |
| | | |
| | | public Dt_Task RequestWMSTaskMovelibrary2(Dt_Task _Task) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlWMSMovelibraryTask}?TaskNum={_Task.TaskNum}&SourceAddress={_Task.TargetAddress}"); |
| | | Dt_Task task = new Dt_Task(); |
| | | if (content != null) |
| | | { |
| | | if (content.Status) |
| | | { |
| | | if (content.Data != null) |
| | | { |
| | | task = JsonConvert.DeserializeObject<Dt_Task>(content.Data.ToString()); |
| | | if (task.TaskNum != _Task.TaskNum) |
| | | { |
| | | WriteLog.GetLog("æ¥æ¶ä»»å¡").Write("ç§»åºä»»å¡ï¼" + JsonConvert.SerializeObject(task), "æ¥æ¶ä»»å¡"); |
| | | task.TaskState = (int)TaskRelocationTypeEnum.Relocation; |
| | | task.Roadway = task.Roadway == "1" ? task.Roadway = "SC01" : task.Roadway = "SC02"; |
| | | task.TaskNum = task.TaskNum; |
| | | task.Grade = 3; |
| | | task.TaskType = (int)TaskRelocationTypeEnum.Relocation; |
| | | BaseDal.AddData(task); |
| | | return task; |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | WriteLog.GetLog("PLCæ¥å¿").Write($"失败信æ¯ï¼{content.Message}", "ç§»åºä¿¡æ¯"); |
| | | return null; |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | else |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.CurrentAddress == currentAddress && (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.Line_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.OutNew), TaskOrderBy); |
| | | } |
| | | |
| | | public List<Dt_Task> CraneTaskList(string deviceNo) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && (x.TaskState == (int)TaskInStatusEnum.Line_InFinish || x.TaskState == (int)TaskOutStatusEnum.OutNew),TaskOrderBy); |
| | | } |
| | | |
| | | public Dt_Task CutStackerCraneTask(string deviceNo) |
| | | { |
| | | Dt_Task dt_Task = BaseDal.QueryFirst(x => x.Roadway == deviceNo && (x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting || x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish || x.TaskState == (int)TaskInStatusEnum.SC_InExecuting || x.TaskState == (int)TaskInStatusEnum.SC_InFinish)); |
| | | return dt_Task; |
| | | } |
| | | |
| | | public Dt_Task IngStackerCraneTask(string deviceNo) |
| | | { |
| | | //string deviceNot = deviceNo == "SC01" ? "1" : "2"; |
| | |
| | | public Dt_Task IngStackerCraneTask2(string deviceNo) |
| | | { |
| | | //string deviceNot = deviceNo == "SC01" ? "1" : "2"; |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting); |
| | | try |
| | | { |
| | | return BaseDal.QueryFirst(x => x.Roadway == deviceNo && x.TaskState == (int)TaskOutStatusEnum.SC_OutExecuting); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | public List<Dt_Task> QueryStationIsOccupiedOutTasks(string deviceNo, string SourceAddress) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && SourceAddress.Contains(x.SourceAddress), TaskOrderBy); |
| | | } |
| | | |
| | | public List<Dt_Task> QueryStationIsOccupiedOutTasks2(string deviceNo, string TargetAddress) |
| | | { |
| | | return BaseDal.QueryData(x => x.Roadway == deviceNo && TargetAddress.Contains(x.SourceAddress), TaskOrderBy); |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | { |
| | | /*List<Dt_Router> routers = _routerService.QueryNextRoutes(task.NextAddress, task.TargetAddress); |
| | | if (!routers.Any()) return WebResponseContent.Instance.Error($"æªæ¾å°è®¾å¤è·¯ç±ä¿¡æ¯");*/ |
| | | |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}"); |
| | | task.TaskState = (int)TaskOutStatusEnum.OutFinish; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); |
| | | |
| | | wcs_PLCto09("åºåºä»»å¡",$"æ¡ç ï¼{task.PalletCode},ä»»å¡å·ï¼{task.TaskNum}",$"è°åwmsä»»å¡åé¦ï¼{JsonConvert.SerializeObject(content)}"); |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.DeleteData(task); |
| | | _task_HtyService.AddTaskHty(task); |
| | |
| | | } |
| | | else if (task.TaskType == (int)TaskInboundTypeEnum.Inbound && task.TaskState == (int)TaskInStatusEnum.SC_InExecuting) |
| | | { |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}"); |
| | | task.TaskState = (int)TaskInStatusEnum.InFinish; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); |
| | | |
| | | wcs_PLCto09("å
¥åºä»»å¡", $"æ¡ç ï¼{task.PalletCode},ä»»å¡å·ï¼{task.TaskNum}", $"è°åwmsä»»å¡åé¦ï¼{JsonConvert.SerializeObject(content)}"); |
| | | //todo |
| | | //int nextStatus = task.TaskState.GetNextNotCompletedStatus<TaskInStatusEnum>(); |
| | | task.TaskState = (int)TaskInStatusEnum.InFinish; |
| | | task.ModifyDate = DateTime.Now; |
| | | task.Modifier = "System"; |
| | | BaseDal.DeleteData(task); |
| | |
| | | } |
| | | else if (task.TaskType == (int)TaskRelocationTypeEnum.Relocation) |
| | | { |
| | | GenerateInv2 generate = new GenerateInv2() |
| | | { |
| | | PalletCode = task.PalletCode, |
| | | SourceAddress = task.SourceAddress, |
| | | TargetAddress = task.TargetAddress |
| | | task.TaskState = (int)TaskOutStatusEnum.OutRest; |
| | | BaseDal.UpdateData(task); |
| | | |
| | | }; |
| | | content = HttpHelper.Post<WebResponseContent>($"{urlRelocationTaskCompleted}", generate); |
| | | task.TaskState = (int)TaskOutStatusEnum.SC_OutFinish; |
| | | content = HttpHelper.Get<WebResponseContent>($"{urlTaskCompleted}?TaskNum={task.TaskNum}&HowWorks=2"); |
| | | |
| | | wcs_PLCto09("å
¥åºä»»å¡", $"æ¡ç ï¼{task.PalletCode},ä»»å¡å·ï¼{task.TaskNum}", $"è°åwmsä»»å¡åé¦ï¼{JsonConvert.SerializeObject(content)}"); |
| | | |
| | | task.ModifyDate = DateTime.Now; |
| | | BaseDal.DeleteData(task); |
| | | _task_HtyService.AddTaskHty(task); |
| | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å®æå¼å¸¸,ä»»å¡å·:ã{taskNum}ã"); |
| | | content = WebResponseContent.Instance.Error($"ä»»å¡å®æå¼å¸¸,ä»»å¡å·:ã{taskNum}ãï¼åå ï¼{ex.Message}"); |
| | | } |
| | | return content; |
| | | } |
| | |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// å 餿°æ® |
| | | /// </summary> |
| | | /// <param name="keys">䏻鮿°ç»</param> |
| | | /// <returns></returns> |
| | | public virtual WebResponseContent DeleteData(object[] keys) |
| | | { |
| | | try |
| | | { |
| | | List<Dt_Task> tasks = BaseDal.QureyDataByIds(keys); |
| | | foreach (Dt_Task task in tasks) |
| | | { |
| | | _task_HtyService.AddTaskHty(task); |
| | | } |
| | | |
| | | |
| | | if (typeof(Dt_Task).GetNavigatePro() == null) |
| | | return BaseDal.DeleteDataByIds(keys) ? WebResponseContent.Instance.OK() : WebResponseContent.Instance.Error(); |
| | | else |
| | | { |
| | | if (keys != null) |
| | | { |
| | | Type detailType = typeof(Dt_Task).GetDetailType(); |
| | | string name = typeof(Dt_Task).GetMainIdByDetail(); |
| | | List<object> dynamicDelKeys = new List<object>(); |
| | | |
| | | for (int i = 0; i < keys.Length; i++) |
| | | { |
| | | dynamicDelKeys.Add(keys[i]); |
| | | } |
| | | ((SqlSugarClient)BaseDal.Db).BeginTran(); |
| | | |
| | | if (dynamicDelKeys.Count > 0) |
| | | BaseDal.Db.Deleteable<object>().AS(detailType.Name).Where($"{name} in (@id)", new { id = dynamicDelKeys.ToArray() }).ExecuteCommandHasChange(); |
| | | |
| | | BaseDal.DeleteDataByIds(keys); |
| | | |
| | | ((SqlSugarClient)BaseDal.Db).CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | else |
| | | { |
| | | return WebResponseContent.Instance.Error("åæ°é误"); |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | ((SqlSugarClient)BaseDal.Db).RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent ReceiveWCSTask(int tasknum) |
| | | { |
| | | Dt_Task tasks = BaseDal.QueryFirst(x => x.TaskNum == tasknum); |
| | | if(tasks == null) |
| | | { |
| | | return WebResponseContent.Instance.Error(); |
| | | } |
| | | else |
| | | { |
| | | try |
| | | { |
| | | _task_HtyService.AddTaskHty(tasks); |
| | | BaseDal.DeleteData(tasks); |
| | | WriteLog.Write_Log("WMSæå¨å é¤ä»»å¡", "å 餿å", $"ç³è¯·å é¤çæ¡ç ï¼{tasks.TaskNum},æçæ¡ç ï¼{tasks.PalletCode}", new { ä¿¡æ¯ = "å 餿å" }); |
| | | return WebResponseContent.Instance.OK(); |
| | | |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | WriteLog.Write_Log("WMSæå¨å é¤ä»»å¡", "å é¤å¤±è´¥", $"ç³è¯·å é¤çæ¡ç ï¼{tasks.TaskNum},æçæ¡ç ï¼{tasks.PalletCode}", new { ä¿¡æ¯ = ex.Message }); |
| | | return WebResponseContent.Instance.Error(); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | public void wcs_PLCto09(string SCLLinStack, string Logtype, string Magessadd) |
| | | { |
| | | WriteLog.Write_Log("ä»»å¡å®æäº¤äº", SCLLinStack, Logtype, new { ä¿¡æ¯ = Magessadd }); |
| | | } |
| | | } |
| | | } |