liudl
2025-02-16 7ab32aab1cfd8b71940ade95fa69aec0b95e95c3
Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6
4个文件已修改
246 ■■■■■ 已修改文件
Admin.NET/WCS.Application/Model/TaskRequest.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs 170 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/PLC/PLCService.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Util/HttpService.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Admin.NET/WCS.Application/Model/TaskRequest.cs
@@ -568,3 +568,23 @@
    public string FinishQty { get; set; }
}
public class PortModel
{
    /// <summary>
    /// 入库口
    /// </summary>
    public string Port { get; set; }
}
public class PortRequestModel
{
    /// <summary>
    /// 入库口
    /// </summary>
    public string Port { get; set; }
    /// <summary>
    /// 任务号
    /// </summary>
    public string TaskNo { get; set; }
}
Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs
@@ -1,4 +1,5 @@
using Dm.filter;
using DocumentFormat.OpenXml.Drawing.Charts;
using DocumentFormat.OpenXml.Presentation;
using Elastic.Clients.Elasticsearch;
using Furion.Logging;
@@ -398,4 +399,173 @@
        }
    }
    /// <summary>
    /// WCS接受WMS入库放货确认接口
    /// </summary>
    /// <param name="models"></param>
    /// <returns>反馈信息</returns>
    [HttpPost]
    [AllowAnonymous]
    public IsBaleModel2 HttpInConfirm(PortModel models)
    {
        try
        {
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port+"入库口");
            var portno = "";
            switch (models.Port)
            {
                case "033":
                    portno = "33";
                    break;
                case "039":
                    portno = "39";
                    break;
                case "044":
                    portno = "44";
                    break;
                case "051":
                    portno = "51";
                    break;
            }
            //检测入库口状态,120为可放,占用则修改为130
            WcsDeviceDto mod = new WcsDeviceDto();
            var plcConn = mod.PLCUtil;
            //获取工位点位信息
            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First();
            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "PLC流程字").First();
            var (res1, val) = plcConn.GetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos);
            if (val.ToString() == "120")
            {
                //读取成功后写入130
                modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First();
                var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "130");//占用此工位
                if (ret.IsSucceed)
                {
                    //回传WMS可放信号
                    return new IsBaleModel2() { Success = 0, Message = "接受成功" };
                }
            }
            return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" };
        }
        catch (Exception ex)
        {
            return new IsBaleModel2() { Success = -1, Message = ex.Message };
        }
    }
    /// <summary>
    /// WCS接受WMS入库放货请求接口
    /// </summary>
    /// <param name="models"></param>
    /// <returns>反馈信息</returns>
    [HttpPost]
    [AllowAnonymous]
    public IsBaleModel2 HttpInRequest(PortRequestModel models)
    {
        try
        {
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口");
            var portno = "";
            switch (models.Port)
            {
                case "033":
                    portno = "33";
                    break;
                case "039":
                    portno = "39";
                    break;
                case "044":
                    portno = "44";
                    break;
                case "051":
                    portno = "51";
                    break;
            }
            WcsDeviceDto mod = new WcsDeviceDto();
            var plcConn = mod.PLCUtil;
            //获取工位点位信息
            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s=>s.LedIP != null && s.StationNum == portno).First();
            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "任务号").First();
            plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, models.TaskNo);//写入任务号
                                                                                                              //
            modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First();
            var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "140");//写入开始放货信号
            if (ret.IsSucceed)
            {
                //回传WMS放货信号
                return new IsBaleModel2() { Success = 0, Message = "接受成功" };
            }
            return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" };
        }
        catch (Exception ex)
        {
            return new IsBaleModel2() { Success = -1, Message = ex.Message };
        }
    }
    /// <summary>
    /// WCS接受WMS小车放完成接口
    /// </summary>
    /// <param name="models"></param>
    /// <returns>反馈信息</returns>
    [HttpPost]
    [AllowAnonymous]
    public IsBaleModel2 HttpInFinish(PortModel models)
    {
        try
        {
            string str = JsonConvert.SerializeObject(models);
            Log.Information("接收WMS入库放货确认,放货口:" + models.Port + "入库口");
            var portno = "";
            switch (models.Port)
            {
                case "033":
                    portno = "33";
                    break;
                case "039":
                    portno = "39";
                    break;
                case "044":
                    portno = "44";
                    break;
                case "051":
                    portno = "51";
                    break;
            }
            WcsDeviceDto mod = new WcsDeviceDto();
            var plcConn = mod.PLCUtil;
            //获取工位点位信息
            var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First();
            var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS流程字").First();
            var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "160");//放完成
            if (ret.IsSucceed)
            {
                //回传WMS放货信号
                return new IsBaleModel2() { Success = 0, Message = "接受成功" };
            }
            return new IsBaleModel2() { Success = -1, Message = "读取PLC点位信息失败" };
        }
        catch (Exception ex)
        {
            return new IsBaleModel2() { Success = -1, Message = ex.Message };
        }
    }
}
Admin.NET/WCS.Application/PLC/PLCService.cs
@@ -1757,11 +1757,42 @@
                { // 获取工位任务号信息
                    var strMsg = "";
                    var http = new HttpService();
                    var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "托盘码");
                    var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos);
                    // 获取托盘任务号
                    var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "任务号");
                    var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos);
                    if (res1.IsSucceed)
                    {
                        string tasknoVal = val.ToString();
                        var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false);
                        if (modTask == null)
                        {
                            //读取成功后写入151
                            var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "151");//收到可放信号后写入151
                            if (ret.IsSucceed)
                            {
                                //回传WMS可放信号
                                strMsg = http.RequesContinueAgv(res1.ToString(),modTask.StationNum);
                                if (!strMsg.Contains("-1"))
                                {
                                    // 插入任务明细
                                    var modInsertTaskMonitor = new WcsTaskMonitor()
                                    {
                                        PlcId = modDevice.Id,
                                        PlcName = modDevice.Text,
                                        InteractiveMsg = $"写入指令151:{modDevice.StationNum}工位可接受AGV放货入库",
                                        PalletNo = modTask.PalletNo,
                                        Status = TaskStatusEnum.Complete,
                                        StartLocat = modDevice.StationNum
                                    };
                                    // 插入交互日志
                                    _db.Insertable(modInsertTaskMonitor).ExecuteCommand();
                                }
                            }
                            break;
                        }
                    }
                     //
                }
                break;
            #endregion
Admin.NET/WCS.Application/Util/HttpService.cs
@@ -419,6 +419,8 @@
        return result.Success.ToString();
    }
    /// <summary>
    /// 调用WMS接口反馈缠膜完成
    /// </summary>
@@ -490,4 +492,23 @@
        return result;
    }
    /// <summary>
    /// 调用WMS接口反馈AGV可放信号
    /// </summary>
    /// <param name="taskno">任务号</param>
    /// <param name="port">工位号</param>
    /// <returns></returns>
    public string RequesContinueAgv(string taskno,string port)
    {
        string url = Urls.WMSAddress + ":" + Urls.WMSPort;
        var str = new
        {
            TaskNo = taskno,
            Port = port
        };
        var result = (url + "/api/DownAPi/AgcontinueTask").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel>().Result;
        Log.Information("调用WMS接口反馈拆膜异常接口" + result.ToJson());
        return result.Success.ToString();
    }
}