刘磊
2025-06-25 2de09bec5cc05bf875543fa8956167ca7db73021
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA_StoragIntegrationServices/AGV/Partial/agvCallback.cs
@@ -1,12 +1,20 @@
using Newtonsoft.Json;
using AngleSharp.Io;
using Mapster;
using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Comm;
using WIDESEA_Comm.AGVTask;
using WIDESEA_Core;
using WIDESEA_Core.Const;
using WIDESEA_Core.Helper;
using WIDESEA_Model.Models;
using WIDESEA_StorageBasicRepository;
using WIDESEA_StorageTaskRepository;
namespace WIDESEA_StoragIntegrationServices
@@ -18,38 +26,126 @@
        /// </summary>
        /// <param name="taskRespon"></param>
        /// <returns></returns>
        public WebResponseContent agvCallback(object taskRespon)
        public AGVResponBase agvCallback(object taskRespon)
        {
            WebResponseContent content = new WebResponseContent();
            agvTask task = new agvTask();
            AGVResponBase response = null;
            ContainerTask task = new ContainerTask();
            try
            {
                task = JsonConvert.DeserializeObject<agvTask>(taskRespon.ToString());
                task = JsonConvert.DeserializeObject<ContainerTask>(taskRespon.ToString());
                if (task == null)
                {
                    throw new Exception("AGV调用接口失败:无请求参数");
                    LogFactory.GetLog("AGV任务回调").Info(true, $"回调失败,未能读取到agv调取参数");
                }
                if (task.method.ToLower() == "apply")   //AGV放料申请
                if (task.method.ToString() == "outbin2")   //AGV取料完成
                {
                    //todo
                }
                if (task.method.ToLower() == "end") //AGV任务结束
                    Dt_CZInfo_mes CZInfotlist = _task_CZInfoRepository.QueryFirst(x => x.CurrentStatue == "4");
                    if (CZInfotlist != null)
                {
                        CZInfotlist.CurrentStatue = "5";
                        _task_CZInfoRepository.UpdateData(CZInfotlist);
                    }
                    //todo
                    //_taskRepository.QueryFirst(x=>x.SourceAddress == task.)
                    WCS_Set("3022");  //不管是否有写入成功,都完成agv任务
                    return response = new AGVResponBase
                    {
                        code = "0",
                        message = "成功",
                        reqCode = task.reqCode
                    };
                }
                if (task.method.ToString() == "end") //AGV任务结束反馈
                {
                    //并进行修改任务为完成
                    Dt_CZInfo_mes CZInfotlist = _task_CZInfoRepository.QueryFirst(x => x.CurrentStatue == "5");
                    //调取输送线接口,反馈输送线完成信号
                    WCS_Set(CZInfotlist.AGVaddres);
                    if(CZInfotlist != null)
                    {
                        CZInfotlist.CurrentStatue = "6";
                        _task_CZInfoRepository.UpdateData(CZInfotlist);
                        Dt_CZInfo_mes_hty stockInfo_Hty = CZInfotlist.Adapt<Dt_CZInfo_mes_hty>();
                        _CZInfo_Mes_HtyRepository.AddData(stockInfo_Hty);
                        _task_CZInfoRepository.DeleteData(CZInfotlist);
                }
                return content.OK();
                    //回调
                    return response = new AGVResponBase
                    {
                        code = "0",
                        message = "成功",
                        reqCode = task.reqCode
                    };
                }
                LogFactory.GetLog("AGV任务回调").Info(true, $"回调成功");
                return response;
            }
            catch (Exception ex)
            {
                return content.Error($"AGV回调异常:{ex.Message}");
                LogFactory.GetLog("AGV任务回调").Info(true, $"回调失败,错误信息:{ex.Message}");
                return response = new AGVResponBase
                 {
                     code = "1",
                     message = $"失败,原因:{ex.Message}",
                     reqCode = task.reqCode
                 };
            }
        }
        public bool WCS_Set(string CutAddress)
        {
            try
            {
                //调取wcs接口,写入输送线信号  SetPlcResponState
                var configs = _configService.GetConfigsByCategory(CateGoryConst.CONFIG_SYS_IPAddress);
                var ipAddress = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.WCSIPAddress)?.ConfigValue;
                var ReceiveByWMSTask = configs.FirstOrDefault(x => x.ConfigKey == SysConfigConst.SetPlcResponState)?.ConfigValue;
                if (ReceiveByWMSTask == null || ipAddress == null)
                {
                    throw new Exception("WMS IP æœªé…ç½®");
                }
                var wmsIpAddrss = ipAddress + ReceiveByWMSTask;
                var respon = HttpHelper.Post(wmsIpAddrss, JsonConvert.SerializeObject(CutAddress));   //http://localhost:9291/api/Task/ReceiveTask,
               if (respon != null)
                {
                    WebResponseContent respone = JsonConvert.DeserializeObject<WebResponseContent>(respon.ToString());
                    if (respone.Status)
                    {
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                }
                else
                {
                    return false;
                }
            }
            catch (Exception ex)
            {
                return false;
                throw;
            }
        }
    }
}