dengjunjie
2024-10-30 680ccbedf08839143215f40dea5273dc2819100c
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_TaskInfoService/TaskService.cs
@@ -16,6 +16,7 @@
#endregion << ç‰ˆ æœ¬ æ³¨ é‡Š >>
using AutoMapper;
using Newtonsoft.Json;
using OfficeOpenXml.FormulaParsing.Excel.Functions.Text;
using SqlSugar;
using System;
@@ -27,9 +28,12 @@
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Common.TaskEnum;
using WIDESEAWCS_Common.WMSInfo;
using WIDESEAWCS_Core;
using WIDESEAWCS_Core.BaseServices;
using WIDESEAWCS_Core.Helper;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_DTO.WMSInfo;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
@@ -64,7 +68,6 @@
            _taskExecuteDetailRepository = taskExecuteDetailRepository;
            _mapper = mapper;
        }
        /// <summary>
        /// æŽ¥æ”¶WMS任务信息
        /// </summary>
@@ -120,34 +123,68 @@
            }
            return content;
        }
        /// <summary>
        /// æ ¹æ®æ‰˜ç›˜å·ã€èµ·å§‹åœ°å€å‘WMS请求任务
        /// è¾“送线入库完成向WMS申请入库/堆垛机申请入库
        /// </summary>
        /// <param name="palletCode">托盘号</param>
        /// <param name="sourceAddress">起始地址</param>
        /// <param name="task"></param>
        /// <returns></returns>
        public WebResponseContent RequestWMSTask(string palletCode, string sourceAddress)
        public WebResponseContent StackerCraneRequestInbound(Dt_Task task)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                WMSTaskDTO taskDTO = new WMSTaskDTO()
                ConveyorLineDTO lineDTO = new ConveyorLineDTO()
                {
                    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                    Grade = 1,
                    PalletCode = palletCode,
                    RoadWay = "SC01",
                    SourceAddress = sourceAddress,
                    TargetAddress = "SC01",
                    TaskState = (int)TaskInStatusEnum.InNew,
                    Id = 0,
                    TaskType = (int)TaskInboundTypeEnum.Inbound
                    stationCode = task.CurrentAddress,
                    TaskNum = task.TaskNum,
                    Barcode = task.PalletCode
                };
                var ResultData = HttpHelper.PostAsync(WMSIP.StackerCraneRequestInbound, lineDTO.ToJson(), headers: new Dictionary<string, string>());
                if (ResultData.Result == null) throw new Exception($"向WMS请求入库分配货位失败!任务号:{task.TaskNum}");
                content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
                if (content.Status)
                {
                    var receiveWMSInfo = JsonConvert.DeserializeObject<ReceiveWMSInfo>(content.Data.ToJson());
                    task.IsPickPlace = receiveWMSInfo.IsPickPlace;
                    task.TargetAddress = receiveWMSInfo.TargetAddress;
                    task.NextAddress = task.TargetAddress;
                    BaseDal.UpdateData(task);
                }
            }
            catch (Exception ex)
            {
                content.Error(ex.Message);
            }
            return content;
        }
                content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
        /// <summary>
        /// è¾“送线检测口向WMS申请入库
        /// </summary>
        /// <param name="palletCode">托盘号</param>
        /// <param name="sourceAddress">起始地址</param>
        /// <returns></returns>
        public WebResponseContent RequestWMSTask(ConveyorLineDTO lineDTO)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                #region å‘WMS申请
                var ResultData = HttpHelper.PostAsync(WMSIP.ConveyorLineRequestInbound, lineDTO.ToJson(), headers: new Dictionary<string, string>());
                if (ResultData.Result == null) throw new Exception($"向WMS请求入库失败!托盘号:{lineDTO.Barcode}");
                content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
                //if (content != null && content.Status)//任务转换
                //{
                //    var task = JsonConvert.DeserializeObject<Dt_Task>(content.Data.ToJson());
                //    #region ä»»åŠ¡ä¿¡æ¯å˜æ›´
                //    #endregion
                //    content.Data = task;
                //    content.Status = BaseDal.UpdateData(task);
                //}
                #endregion
            }
            catch (Exception ex)
            {
@@ -162,9 +199,9 @@
        /// <param name="deviceNo">设备编号</param>
        /// <param name="currentAddress">当前地址</param>
        /// <returns></returns>
        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress)
        public Dt_Task QueryConveyorLineTask(string deviceNo, string currentAddress, string Barcode)
        {
            return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskInStatusEnum.InNew || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
            return BaseDal.QueryFirst(x => (TaskInboundTypes.Contains(x.TaskType) && x.PalletCode == Barcode && x.TaskState == (int)TaskInStatusEnum.AGV_InFinish || TaskOutboundTypes.Contains(x.TaskType) && x.TaskState == (int)TaskOutStatusEnum.SC_OutFinish) && x.CurrentAddress == currentAddress, TaskOrderBy);
        }
        /// <summary>
@@ -466,23 +503,35 @@
                    task.TaskState = nextStatus;
                    task.ModifyDate = DateTime.Now;
                    task.Modifier = "System";
                    BaseDal.UpdateData(task);
                    _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
                    WMSTaskDTO taskDTO = new WMSTaskDTO()
                    #region å‘WMS反馈堆垛机任务完成
                    WMSTaskDTO WMStask = _mapper.Map<WMSTaskDTO>(task);
                    var ResultData = HttpHelper.PostAsync(WMSIP.UpdateTaskStatus, WMStask.ToJson(), headers: new Dictionary<string, string>());
                    if (ResultData.Result == null) throw new Exception($"任务状态同步到WMS失败!任务号:{task.TaskNum}");
                    content = JsonConvert.DeserializeObject<WebResponseContent>(ResultData.Result);
                    if (content.Status)
                    {
                        TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                        Grade = 1,
                        PalletCode = task.PalletCode + "S",
                        RoadWay = "SC01",
                        SourceAddress = task.TargetAddress,
                        TargetAddress = "CLOutAreaA",
                        TaskState = (int)TaskOutStatusEnum.OutNew,
                        Id = 0,
                        TaskType = (int)TaskOutboundTypeEnum.Outbound
                    };
                        BaseDal.UpdateData(task);
                        _taskExecuteDetailService.AddTaskExecuteDetail(task.TaskId, $"堆垛机入库完成");
                    }
                    #endregion
                    content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                    //WMSTaskDTO taskDTO = new WMSTaskDTO()
                    //{
                    //    TaskNum = Convert.ToInt32(DateTime.Now.ToString("HHmmss")),
                    //    Grade = 1,
                    //    PalletCode = task.PalletCode + "S",
                    //    RoadWay = "SC01",
                    //    SourceAddress = task.TargetAddress,
                    //    TargetAddress = "CLOutAreaA",
                    //    TaskState = (int)TaskOutStatusEnum.OutNew,
                    //    Id = 0,
                    //    TaskType = (int)TaskOutboundTypeEnum.Outbound
                    //};
                    //content = ReceiveWMSTask(new List<WMSTaskDTO> { taskDTO });
                }
                else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.RelocationGroup)
                {
@@ -645,7 +694,7 @@
                TaskType = (int)TaskOtherTypeEnum.RelocationCar,
                SourceAddress = SourceAddress,
                TargetAddress = TargetAddress,
                CurrentAddress = "",
                CurrentAddress = SourceAddress,
                NextAddress = TargetAddress,
                CreateDate = DateTime.Now,
                Creater = "WCS",