111
lss
2025-07-09 00ecab4ee5cec0d04665ca16d0eb30c1ba4ea1f3
HH.WCS.Mobox3/HH.WCS.Mobox3.JiaTong/api/ApiHelper.cs
@@ -47,6 +47,7 @@
        /// <returns></returns>
        internal static Result Createtask(CreateTask model)
        {
            Result result = new Result() { code = "0", msg = "创建成功" };
            if (model == null)
            {
@@ -187,14 +188,7 @@
                                }
                            }
                            //else
                            //{
                            //    result.code = "1";
                            //    result.msg = $"根据起点{Start},未找到托盘货位绑定关系";
                            //    AddErrorInfo("托盘查找失败", result.msg, Source);
                            //    return result;
                            //}
                        }
                        else
                        {
@@ -589,6 +583,15 @@
                                AddErrorInfo("库区查找失败", result.msg);
                                return result;
                            }
                            int pri = 1;
                            var area = Settings.wareLoc.Where(a => a.AreaCode == endloc.S_WH_CODE).First();
                            if (area != null)
                            {
                                if (area.XbAreaCodes.Contains(endloc.S_AREA_CODE))
                                {
                                    pri = 2;
                                }
                            }
                            //创建wcs任务
                            var wcsTask = new WCSTask
                            {
@@ -603,7 +606,7 @@
                                S_END_AREA = endloc.S_AREA_CODE,
                                N_SCHEDULE_TYPE = 1,
                                S_CNTR_CODE = CntrCode,
                                N_PRIORITY = taskData.priority,
                                N_PRIORITY = pri,
                                Z_TYPE = n_type,
                                N_START_LAYER = 1,
                                N_END_LAYER = 1,
@@ -768,7 +771,7 @@
                {
                    //创建托盘数据绑定关系
                    if (ContainerHelper.CreateCntrItem(model.Rfid, model.PartNumber, model.PartDesc, model.LotNumber, model.Weight, model.Qty, model.ProductionTime, model.MaturityTime))
                    if (ContainerHelper.CreateCntrItemTray(model.Rfid, model.PartNumber, model.PartDesc, model.LotNumber, model.Weight, model.Qty, model.ProductionTime, model.MaturityTime, model.PowderType))
                    {
                        //创建成功流程
                    }
@@ -961,6 +964,7 @@
                            S_CNTR_CODE = model.Rfid,
                            N_START_LAYER = 1,
                            N_END_LAYER = 1,
                            N_PRIORITY = 1,
                            Z_TYPE = n_type
                        };
                        LogHelper.Info("创建入平库任务:" + JsonConvert.SerializeObject(wcsTask));
@@ -1089,27 +1093,51 @@
                    #region 根据物料编码计算出库货位,送往线边位置
                    Location Endloc = null;
                    //根据物料编码计算出库货位
                    var loc = airlift(areacode, itemcode, model.PartLevel);
                    var loc = airlift(areacode, itemcode, model.PartLevel, model.PowderType);
                    if (loc != null)
                    {
                        Start = loc.S_CODE;
                        //根据出库货位找到绑定托盘,获取入机台货位
                        var CntrRel = LocationHelper.GetLocCntrRel(loc.S_CODE).FirstOrDefault();
                        CntrCode = CntrRel.S_CNTR_CODE;
                        Endloc = Computeloc(CntrCode, model.WorkCenter, cntrType);
                        if (Endloc != null)
                        //给终点用终点,没给终点用机台库区计算货位
                        if (string.IsNullOrEmpty(model.TargetLocation))
                        {
                            End = Endloc.S_CODE;
                            Endloc = Computeloc(CntrCode, model.WorkCenter, cntrType);
                            if (Endloc != null)
                            {
                                End = Endloc.S_CODE;
                            }
                            else
                            {
                                result.code = "1";
                                result.msg = $"Computeloc==》根据机台编码:{model.WorkCenter},工装类型:{cntrType} 未找到空货位数据,请检查货位表";
                                LogHelper.Info($"ItemBack:{result.msg}");
                                AddErrorInfo("查找库区失败", result.msg, Source);
                                return result;
                            }
                        }
                        else
                        {
                            result.code = "1";
                            result.msg = $"Computeloc==》根据机台编码:{model.WorkCenter},工装类型:{cntrType} 未找到空货位数据,请检查货位表";
                            LogHelper.Info($"ItemBack:{result.msg}");
                            AddErrorInfo("查找库区失败", result.msg, Source);
                            return result;
                            Endloc = db.Queryable<Location>().Where(a => a.S_CODE == model.TargetLocation).First();
                            if (Endloc != null)
                            {
                                End = Endloc.S_CODE;
                            }
                            else
                            {
                                result.code = "1";
                                result.msg = $"Computeloc==》根据终点货位:{model.TargetLocation} 未找到货位数据,请检查货位表";
                                LogHelper.Info($"ItemBack:{result.msg}");
                                AddErrorInfo("查找库区失败", result.msg, Source);
                                return result;
                            }
                        }
                    }
                    else
                    {
@@ -1159,6 +1187,7 @@
                        S_CNTR_CODE = CntrCode,
                        N_START_LAYER = 1,
                        N_END_LAYER = 1,
                        N_PRIORITY = 1,
                        Z_TYPE = n_type
                    };
@@ -1418,6 +1447,8 @@
                            S_CNTR_CODE = model.Rfid,
                            N_START_LAYER = 1,
                            N_END_LAYER = endlayer,
                            N_PRIORITY = 1,
                            S_B_STATE="等待推送",
                            Z_TYPE = 5
                        };
                        LogHelper.Info("创建空托回库任务:" + JsonConvert.SerializeObject(wcsTask));
@@ -1597,6 +1628,7 @@
                            N_START_LAYER = 1,
                            N_END_LAYER = 1,
                            Z_TYPE = 5,
                            N_PRIORITY = 1,
                            S_NOTE = "粉料"
                        };
                        LogHelper.Info("创建呼叫空托任务:" + JsonConvert.SerializeObject(wcsTask));
@@ -1821,6 +1853,7 @@
                            S_CNTR_CODE = model.Rfid,
                            N_START_LAYER = 1,
                            N_END_LAYER = 1,
                            N_PRIORITY = 1,
                            Z_TYPE = 5
                        };
@@ -2072,6 +2105,7 @@
                        S_CNTR_CODE = CntrCode,
                        N_START_LAYER = 1,
                        N_END_LAYER = 1,
                        N_PRIORITY = 1,
                        //  N_TYPE = n_type
@@ -2208,6 +2242,7 @@
                        S_CNTR_CODE = cntr.S_CNTR_CODE,
                        N_END_LAYER = 1,
                        Z_TYPE = 6,
                        N_PRIORITY = 1,
                        S_B_STATE = "电梯推送"
                    };
@@ -2288,7 +2323,7 @@
            }
            try
            {
                if (model.prepare=="1")
                if (model.prepare == "1")
                {
                    var db = new SqlHelper<object>().GetInstance();
                    //修改对应电梯任务进行推送
@@ -2300,9 +2335,9 @@
                    result.msg = $"一楼电梯搬运任务推送失败 prepare{model.prepare}不为1";
                    LogHelper.Info(result.msg);
                    return result;
                }
                }
            }
            catch(Exception ex)
            catch (Exception ex)
            {
                result.code = "1";
                result.msg = $"电梯任务推送失败 错误信息:{ex}";
@@ -2478,10 +2513,9 @@
                    var location = db.Queryable<Location>().Where(a => a.S_CODE.Trim() == loc).First();
                    if (location != null)
                    {
                        var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc).ToList();
                        var loccntr = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE.Trim() == loc.Trim()).ToList();
                        if (loccntr.Count > 0)
                        {
                            var cntrcodes = loccntr.Select(a => a.S_CNTR_CODE.Trim()).ToList();
                            if (LocationHelper.Clear(loc, cntrcodes))
                            {
@@ -2665,8 +2699,10 @@
        /// <param name="areacode"></param>
        /// <param name="itemcode"></param>
        /// <param name="level">物料等级</param>
        /// <param name="powderType">机型</param>
        /// <returns></returns>
        internal static Location airlift(string areacode, string itemcode, string level = "")
        internal static Location
            airlift(string areacode, string itemcode, string level, string powderType)
        {
            var db = new SqlHelper<object>().GetInstance();
            Location result = null;
@@ -2723,8 +2759,8 @@
            //}
            #endregion
            var loc = LocationHelper.GetLocByItemCode(areacode, itemcode, level);
            LogHelper.Info($"airlift=>根据库区编码:{areacode},物料编码:{itemcode},物料等级计算出有托盘货位{JsonConvert.SerializeObject(loc)}");
            var loc = LocationHelper.GetLocByItemCode(areacode, itemcode, level, powderType);
            LogHelper.Info($"airlift=>根据库区编码:{areacode},物料编码:{itemcode},机型{powderType},物料等级计算出有托盘货位{JsonConvert.SerializeObject(loc)}");
            // result = FindStartcolByLoclist(loc);
            if (loc.Count > 0)
            {
@@ -2806,16 +2842,20 @@
            lock (_lockLocation)
            {
                var loc = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无").First();
                if (loc != null)
                if (string.IsNullOrEmpty(cntrType))
                {
                    End = loc;
                    End = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim()  && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无").First();
                }
                else
                {
                    End = db.Queryable<Location>().Where(a => a.S_AREA_CODE.Trim() == jtcode.Trim() && a.S_NOTE == cntrType && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无").First();
                }
                if (End == null)
                {
                    LogHelper.Info($"Computeloc==》根据机台分组:{jtcode},工装类型:{cntrType} 未找到空货位数据,请检查货位表");
                }
            }
            return End;
        }
@@ -2859,6 +2899,48 @@
        }
        /// <summary>
        /// 合肥佳通接口调用信息
        /// </summary>
        /// <param name="source">系统来源</param>
        /// <param name="name">接口名称</param>
        /// <param name="type">请求地址类型</param>
        /// <param name="body">请求参数</param>
        /// <param name="url">请求地址</param>
        /// <param name="err">错误信息</param>
        /// <returns></returns>
        public static bool AddInfo(string source, string name, string body, string err, string type, string url)
        {
            bool result = false;
            var db = new SqlHelper<object>().GetInstance();
            try
            {
                var error = new GT_Interface_Exc
                {
                    S_SOURCE = source,
                    S_NAME = name,
                    S_TYPE = type,
                    S_URL = url,
                    S_BODY = body,
                    S_ERR = err
                };
                if (result = db.Insertable<GT_Interface_Exc>(error).ExecuteCommand() > 0)
                {
                }
                //else
                //{
                //    //添加失败重新添加
                //    AddErrorInfo(errorInfo, remake, areacode, taskno);
                //}
            }
            catch (Exception ex)
            {
                LogHelper.Info($"AddInfo Error:{ex.Message}");
            }
            return result;
        }
        /// <summary>
        /// 找终点空货位
        /// </summary>
        /// <param name="locations"></param>