lss
4 天以前 553f7744bedee0685635ed070a4a0e18b796238f
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/core/WCSCore.cs
@@ -5,8 +5,11 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IdentityModel.Protocols.WSTrust;
using System.Linq;
using System.Net.NetworkInformation;
using System.Security.Policy;
using System.Threading.Tasks;
using static HH.WCS.JiaTong.api.ApiModel;
using static HH.WCS.JiaTong.util.Settings;
@@ -57,6 +60,7 @@
                                {
                                    TaskProcess.OperateStatus(TN_Task, 6);
                                }
                                UpdateWait(TN_Task);
                                break;
                            #endregion
                            case 2:
@@ -82,89 +86,86 @@
                            TaskProcess.MESIteminfoback(TN_Task, urlitem);
                        }
                        //任务回报 任务来源 1.钢丝立库  2.胶片库  3.预备库 5.mes下发
                        if (TN_Task.Z_TYPE == 5)
                        {
                            //TN_Task = WCSHelper.GetTask(TN_Task.S_CODE);
                            string urlstate = Settings.tableUrls.Find(a => a.id == 4).url;
                            TaskProcess.MESReportback(TN_Task, model.state, urlstate);
                        }
                        else
                        {
                            //立库与wms任务回报
                            TableUrl url = null;
                            switch (TN_Task.Z_TYPE)
                            {
                                case 1:
                                    url = Settings.tableUrls.Find(a => a.id == 1);
                                    if (url != null)
                        //TN_Task = WCSHelper.GetTask(TN_Task.S_CODE);
                        string urlstate = Settings.tableUrls.Find(a => a.id == 4).url;
                        TaskProcess.MESReportback(TN_Task, model.state, urlstate);
                        //立库与wms任务回报
                        TableUrl url = null;
                        switch (TN_Task.Z_TYPE)
                        {
                            case 1:
                                url = Settings.tableUrls.Find(a => a.id == 1);
                                if (url != null)
                                {
                                    TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "ML");
                                }
                                else
                                {
                                    LogHelper.Info("原材料任务回报,根据id=1未找到地址配置文件,请检查配置文件");
                                }
                                break;
                            case 3:
                                url = Settings.tableUrls.Find(a => a.id == 9);
                                if (url != null)
                                {
                                    TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url, "YBK");
                                }
                                else
                                {
                                    LogHelper.Info("原材料任务回报,根据id=9未找到地址配置文件,请检查配置文件");
                                }
                                break;
                            case 4:
                                url = Settings.tableUrls.Find(a => a.id == 11);
                                if (url != null)
                                {
                                    Console.WriteLine($"原材料任务回报{TN_Task.S_EQ_NO}");
                                    if (TN_Task.S_TYPE.Contains("电梯"))
                                    {
                                        TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url,"ML");
                                    }
                                    else
                                    {
                                        LogHelper.Info("原材料任务回报,根据id=1未找到地址配置文件,请检查配置文件");
                                    }
                                    break;
                                case 3:
                                    url = Settings.tableUrls.Find(a => a.id == 9);
                                    if (url != null)
                                    {
                                        TaskProcess.Reportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url,"YBK");
                                    }
                                    else
                                    {
                                        LogHelper.Info("原材料任务回报,根据id=9未找到地址配置文件,请检查配置文件");
                                    }
                                    break;
                                case 4:
                                    url = Settings.tableUrls.Find(a => a.id == 11);
                                    if (url != null)
                                    {
                                        Console.WriteLine($"原材料任务回报{TN_Task.S_EQ_NO}");
                                        if (TN_Task.S_TYPE.Contains("电梯"))
                                        if (TN_Task.S_TYPE == "电梯1")
                                        {
                                            if (TN_Task.S_TYPE == "电梯1")
                                            if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4")
                                            {
                                                if (TN_Task.S_CODE == "1" || TN_Task.S_CODE == "3" || TN_Task.S_CODE == "4")
                                                {
                                                    TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                                }
                                            }
                                            else if (TN_Task.S_TYPE == "电梯2")
                                            {
                                                if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2")
                                                {
                                                    TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                                }
                                                TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                            }
                                        }
                                        else
                                        else if (TN_Task.S_TYPE == "电梯2")
                                        {
                                            var db = new SqlHelper<object>().GetInstance();
                                            var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList();
                                            TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                            if (TN_Task.S_CODE == "5" || TN_Task.S_CODE == "6" || TN_Task.S_CODE == "2")
                                            {
                                                TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        LogHelper.Info("原材料任务回报,根据id=11未找到地址配置文件,请检查配置文件");
                                        var db = new SqlHelper<object>().GetInstance();
                                        var mstbyEqno = db.Queryable<WCSTask>().Where(a => a.S_EQ_NO.Trim() == TN_Task.S_EQ_NO).ToList();
                                        TaskProcess.Reportbackmobox(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                    }
                                    break;
                                case 6:
                                    url = Settings.tableUrls.Find(a => a.id == 14);
                                    if (url != null)
                                    {
                                        TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                    }
                                    else
                                    {
                                        LogHelper.Info("原材料任务回报,根据id=14未找到地址配置文件,请检查配置文件");
                                    }
                                    break;
                            }
                                }
                                else
                                {
                                    LogHelper.Info("原材料任务回报,根据id=11未找到地址配置文件,请检查配置文件");
                                }
                                break;
                            case 6:
                                url = Settings.tableUrls.Find(a => a.id == 14);
                                if (url != null)
                                {
                                    TaskProcess.WmsReportback(TN_Task.S_EQ_NO, TN_Task.S_CODE, model.state, url.url);
                                }
                                else
                                {
                                    LogHelper.Info("原材料任务回报,根据id=14未找到地址配置文件,请检查配置文件");
                                }
                                break;
                        }
                    }
                    else
                    {
@@ -199,7 +200,7 @@
                        }
                        if (!string.IsNullOrEmpty(url))
                        {
                            TaskProcess.OperateReq(model, url, TN_Task,name);
                            TaskProcess.OperateReq(model, url, TN_Task, name);
                        }
                        else
                        {
@@ -208,6 +209,56 @@
                    }
                }
            }
        }
        /// <summary>
        /// 卸货完成如果有相邻库区的回库任务 推送任务
        /// </summary>
        internal static void UpdateWait(WCSTask mst)
        {
            var db = new SqlHelper<object>().GetInstance();
            try
            {
                var area = db.Queryable<Area>().Where(a => a.S_CODE.Trim() == mst.S_END_AREA).First();
                if (area != null)
                {
                    if (!string.IsNullOrEmpty(area.S_GROUP))
                    {
                        int code = int.Parse(area.S_GROUP.Substring(1, 1));
                        string areaName = area.S_GROUP.Substring(0, 1);
                        string[] AreaList = new string[] { areaName + (code - 1), areaName + (code + 1), area.S_GROUP };
                        LogHelper.Info($"任务{mst.S_CODE},终点区域{JsonConvert.SerializeObject(AreaList)}");
                        var AreasByGroup = db.Queryable<Area>().Where(a => AreaList.Contains(a.S_GROUP)).ToList();
                        if (AreasByGroup.Count > 0)
                        {
                            var AreaCodes = AreasByGroup.Select(a => a.S_CODE).ToList();
                            LogHelper.Info($"任务{mst.S_CODE},根据终点区域获取库区编码:{JsonConvert.SerializeObject(AreaCodes)}");
                            var updateMst = db.Queryable<WCSTask>().Where(a => AreaCodes.Contains(a.S_END_AREA.Trim()) && a.S_B_STATE == "等待推送").OrderBy(a => a.T_CREATE).First();
                            updateMst.S_B_STATE = "等待";
                            db.Updateable(updateMst).UpdateColumns(it => new { it.S_B_STATE }).ExecuteCommand();
                        }
                        else
                        {
                            LogHelper.Info($"任务{mst.S_CODE},终点区域{JsonConvert.SerializeObject(AreaList)},未找到对于分组库区,请检查库区表");
                        }
                    }
                    else
                    {
                        LogHelper.Info($"任务{mst.S_CODE},终点库区{mst.S_END_AREA}分组为空");
                    }
                }
                else
                {
                    LogHelper.Info($"任务{mst.S_CODE},终点库区{mst.S_END_AREA}未找到对于库区,请检查库区表");
                }
            }
            catch (Exception ex)
            {
                LogHelper.Info($"UpdateWait Error:{ex}");
            }
        }
        /// <summary>
@@ -232,11 +283,26 @@
                    }
                });
            }
        }
        /// <summary>
        /// 任务分发,根据调度类型发给不同的调度系统
        /// </summary>
        internal static void DispatchWait()
        {
            //查询任务
            //获取所有等待的任务
            //  Console.WriteLine("开始任务推送");
            var list = WCSHelper.GetTaskListByState("等待推送");
            if (list.Count > 0)
            {
                list.ForEach(task =>
                {
                    TaskProcess.WaitSend(task);
                });
            }
        }
    }
}