111
cjs
2025-06-17 8cb4f66c6cf5639280a27e0ef28360cd46842197
111
2个文件已添加
7个文件已修改
334 ■■■■ 已修改文件
HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/Program.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs 94 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs 24 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/.vs/HH.WCS.Mobox3.NFLZ/v17/DocumentLayout.json
New file
@@ -0,0 +1,65 @@
{
  "Version": 1,
  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u519C\u592B\u6797\u829D\\HH.WCS.Mobox3.NongFuLinZhi\\",
  "Documents": [],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 200,
          "SelectedChildIndex": -1,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{eefa5220-e298-11d0-8f78-00a0c9110057}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{3ae79031-e1bc-11d0-8f78-00a0c9110057}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:128:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{b1e99781-ab81-11d0-b683-00aa00a3ee26}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
            }
          ]
        },
        {
          "DockedWidth": 22,
          "SelectedChildIndex": -1,
          "Children": [
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{d78612c7-9962-4b83-95d9-268046dad23a}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{34e76e81-ee4a-11d0-ae2e-00a0c90fffc3}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:1:0:{e8034f19-ab72-4f06-83fd-f6832b41aa63}"
            }
          ]
        }
      ]
    }
  ]
}
HH.WCS.Mobox3.NongFuLinZhi/HH.WCS.Mobox3.NFLZ.sln
New file
@@ -0,0 +1,22 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.12.35707.178 d17.12
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HH.WCS.Mobox3.NFLZ", "HH.WCS.Mobox3.NFLZ.csproj", "{2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}"
EndProject
Global
    GlobalSection(SolutionConfigurationPlatforms) = preSolution
        Debug|Any CPU = Debug|Any CPU
        Release|Any CPU = Release|Any CPU
    EndGlobalSection
    GlobalSection(ProjectConfigurationPlatforms) = postSolution
        {2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
        {2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
        {2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
        {2C0C3BD1-8DCF-4417-8C6B-E67EC9314F4E}.Release|Any CPU.Build.0 = Release|Any CPU
    EndGlobalSection
    GlobalSection(SolutionProperties) = preSolution
        HideSolutionNode = FALSE
    EndGlobalSection
EndGlobal
HH.WCS.Mobox3.NongFuLinZhi/Program.cs
@@ -97,7 +97,7 @@
                //添加自定义线程
                //tasks.Add(GetTask(Monitor.CheckDevice));
                tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //瓶盖转运
                tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //接驳位入库
                //tasks.Add(GetTask(Monitor.BCPWorkSurveillance)); //半成品工单监控
                Task.WaitAll(tasks.ToArray());
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -4,6 +4,7 @@
using HH.WCS.Mobox3.NFLZ.wms;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading;
@@ -46,33 +47,81 @@
        }
        /// <summary>
        /// 瓶盖转运
        /// 转运任务
        /// </summary>
        internal static void BottleBlankTransportation()
        {
            var db = new SqlHelper<object>().GetInstance();
            var jbwInfo = Settings.areaInfos.Where(a => a.areaName == "瓶盖入库接驳位" && a.enable == 1).FirstOrDefault();
            if (jbwInfo != null)
            #region 瓶盖满托入库
            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶盖入库接驳" && a.enable == 1).FirstOrDefault();
            if (areaInfo != null)
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == jbwInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "无").Includes(a => a.LocCntrRel).First();
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "无").Includes(a => a.LocCntrRel).First();
                if (locInfo != null)
                {
                    LogHelper.Info($"【瓶盖转运】瓶坯接驳位查询到需入库的瓶坯,货位编码:{locInfo.S_CODE}");
                    LogHelper.Info($"【瓶盖满托转运】瓶坯接驳位查询到需入库的瓶坯,货位编码:{locInfo.S_CODE}");
                    if (locInfo.LocCntrRel != null)
                    {
                        //创建作业
                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "瓶盖转运", locInfo.LocCntrRel.S_CNTR_CODE, "瓶盖");
                        WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "接驳位入库", locInfo.LocCntrRel.S_CNTR_CODE, "瓶盖");
                    }
                    else
                    {
                        LogHelper.Info($"【瓶盖转运】当前货位未绑定托盘码,货位编码:{locInfo.S_CODE}");
                        LogHelper.Info($"【瓶盖满托转运】当前货位未绑定托盘码,货位编码:{locInfo.S_CODE}");
                    }
                }
            }
            else
            {
                LogHelper.Info("【瓶盖转运】瓶坯接驳位未配置");
                LogHelper.Info("【瓶盖满托转运】瓶盖入库接驳 未配置");
            }
            #endregion
            #region 瓶坯空托入库
            areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶盖非即产空框" && a.enable == 1).FirstOrDefault();
            if(areaInfo != null)
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY && a.S_LOCK_STATE == "无").Includes(a => a.LocCntrRel).First();
                if(locInfo != null && locInfo.LocCntrRel != null)
                {
                    //创建作业
                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "瓶盖空托入库", locInfo.LocCntrRel.S_CNTR_CODE, "瓶盖");
                }
            }
            else
            {
                LogHelper.Info("【瓶盖空托转运】瓶盖非即产空框 未配置");
            }
            #endregion
            #region 瓶坯满托入库
            areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚入库接驳" && a.enable == 1).FirstOrDefault();
            if (areaInfo != null)
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY && a.S_LOCK_STATE == "无").First();
                if (locInfo != null)
                {
                    string cntr = "";
                    var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList();
                    if (cntrList.Count > 0)
                    {
                        foreach (var a in cntrList)
                        {
                            cntr = cntr + a.S_CNTR_CODE + ",";
                        }
                    }
                    cntr = cntr.TrimEnd(',');
                    //创建作业
                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "接驳位入库", cntr, "瓶坯");
                }
            }
            else
            {
                LogHelper.Info("【瓶坯满托转运】瓶胚入库接驳 未配置");
            }
            #endregion
        }
        /// <summary>
@@ -130,6 +179,33 @@
        }
        internal static void JBDEIN()
        {
            var db = new SqlHelper<object>().GetInstance();
            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚入库接驳" && a.enable == 1).FirstOrDefault();
            if(areaInfo != null)
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY && a.S_LOCK_STATE == "无").First();
                if(locInfo != null)
                {
                    string cntr = "";
                    var cntrList = db.Queryable<LocCntrRel>().Where(a => a.S_LOC_CODE == locInfo.S_CODE).ToList();
                    if(cntrList.Count > 0)
                    {
                        foreach(var a in cntrList)
                        {
                            cntr = cntr + a.S_CNTR_CODE + ",";
                        }
                    }
                    cntr = cntr.TrimEnd(',');
                    //创建作业
                    WMSHelper.CreateOpTask(locInfo.S_CODE, "", "入库", "接驳位入库", cntr, "瓶坯");
                }
            }
            else
            {
                LogHelper.Info("瓶胚入库接驳 未配置");
            }
        }
    }
}
HH.WCS.Mobox3.NongFuLinZhi/core/WMSCore.cs
@@ -63,6 +63,13 @@
                                LocationHelper.LockLoc(end.S_CODE, 1);
                                var startinfo = db.Queryable<Location>().Where(it => it.S_CODE == a.S_START_LOC).First();
                                var endinfo = db.Queryable<Location>().Where(it => it.S_CODE == end.S_CODE).First();
                                int startLayer = startinfo.N_CURRENT_NUM;
                                int endlayer = endinfo.N_CURRENT_NUM + 1;
                                if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库")
                                {
                                    startLayer = 1;
                                    endlayer = 1;
                                }
                                var wcsTask = new WCSTask
                                {
                                    S_OP_CODE = a.S_CODE,
HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
@@ -841,7 +841,7 @@
                                taskType = $"注塑库存空托上线({machine})";
                            }
                            
                            Location startLoca = TaskProcess.getMStartLoc(db);
                            Location startLoca = TaskProcess.getMStartLoc(db,workInfo.S_UsingNow);
                            if (startLoca != null)
                            {
                                //创建作业
HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -33,13 +33,13 @@
            {
                Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_START_LOC}取货完成,起点解绑容器{mst.S_CNTR_CODE}");
                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList());
                LocationHelper.UnBindingLoc(mst.S_START_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_TYPE);
            }
            else
            {
                Console.WriteLine($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}");
                LogHelper.Info($"任务{mst.S_CODE} 货位{mst.S_END_LOC}卸货完成,终点绑定容器{mst.S_CNTR_CODE}");
                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList());
                LocationHelper.BindingLoc(mst.S_END_LOC, mst.S_CNTR_CODE.Split(',').ToList(),mst.S_TYPE);
            }
        }
@@ -1436,22 +1436,53 @@
            return result;
        }
        internal static Location getMStartLoc(SqlSugarClient db)
        internal static Location getMStartLoc(SqlSugarClient db, string usingNow)
        {
            Location result = null;
            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶坯注塑机空托" && a.enable == 1).FirstOrDefault();
            if(areaInfo != null)
            if(usingNow == "Y")
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "无").Includes(a => a.LocCntrRel).First();
                if(locInfo != null)
                //即产即用
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产空框" && a.enable == 1).FirstOrDefault();
                if (areaInfo != null)
                {
                    result = locInfo;
                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0 && a.S_LOCK_STATE == "无").Includes(a => a.LocCntrRel).First();
                    if (locInfo != null)
                    {
                        result = locInfo;
                    }
                }
                else
                {
                    LogHelper.Info("瓶胚即产空框未配置");
                }
            }
            else
            {
                LogHelper.Info("瓶坯注塑机空托未配置");
                //非即产即用
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚非即产空框" && a.enable == 1).FirstOrDefault();
                if (areaInfo != null)
                {
                    var locList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0).OrderBy(a => a.N_ROW).OrderByDescending(a => a.N_COL).Take(1).PartitionBy(a => a.N_ROW).Includes(a => a.LocCntrRel).ToList();
                    if(locList.Count > 0)
                    {
                        foreach(var a in locList)
                        {
                            int row = a.N_ROW;
                            var lockInfo = db.Queryable<Location>().Where(b => b.S_AREA_CODE == areaInfo.areaCode && b.N_ROW == row && b.S_LOCK_STATE.Contains("锁")).First();
                            if(lockInfo == null)
                            {
                                result = a;
                                break;
                            }
                        }
                    }
                }
                else
                {
                    LogHelper.Info("瓶胚非即产空框未配置");
                }
            }
            return result;
        }
@@ -1469,55 +1500,59 @@
            LogHelper.Info($"瓶坯注塑满托下线:类型:{taskName},物料编码:{itemCode}");
            if (taskName.Contains("即产"))
            {
                //即产即用工单,下线到即产即用库区
                //即产即用库区有两个线边库,如果即产即用A库区满,则放到即产即用B库区,若即产即用库区都满,则放到瓶坯库区
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶坯即产即用A" && a.enable == 1).FirstOrDefault();
                //注塑机急产即用下线,首先下线到即产即用满框线边,满眶线边满了,下到即产即用满框缓存区,满框缓存区满了,下到入库接驳堆叠位
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚即产满框" && a.enable == 1).FirstOrDefault();
                if(areaInfo != null)
                {
                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).First();
                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_ROW).First();
                    if(locInfo != null)
                    {
                        result = locInfo;
                    }
                }
                else
                {
                    LogHelper.Info($"瓶坯注塑满托下线:瓶坯即产即用A 未配置");
                    LogHelper.Info($"瓶坯注塑满托下线:瓶胚即产满框 未配置");
                }
                if (result == null)
                {
                    result = TaskProcess.BCPInOrOut(db, true, "瓶坯即产即用B", itemCode);
                    result = TaskProcess.BCPInOrOut(db, true, "瓶胚即产满框缓存区", itemCode);
                }
                if(result == null)
                {
                    result = TaskProcess.BCPInOrOut(db, true, "瓶坯库区", itemCode);
                    //result = TaskProcess.BCPInOrOut(db, true, "瓶坯库区", itemCode);
                    result = getJBLoc(db, result);
                }
            }
            else
            {
                //非即产即用工单,下线到非即产即用库区
                //非即产即用库区只有一个线边库,如果线边库满,则放到瓶坯库区
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶坯非即产即用" && a.enable == 1).FirstOrDefault();
                if (areaInfo != null)
                {
                    var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).First();
                    if (locInfo != null)
                    {
                        result = locInfo;
                    }
                result = getJBLoc(db, result);
            }
            return result;
        }
        private static Location getJBLoc(SqlSugarClient db, Location result)
        {
            //注塑机非即产即用下线,下到入库接驳堆叠位
            var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶胚入库接驳" && a.enable == 1).FirstOrDefault();
            if (areaInfo != null)
            {
                var locInfo = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM < a.N_CAPACITY && a.S_LOCK_STATE == "无").OrderBy(a => a.N_COL).First();
                if (locInfo != null)
                {
                    result = locInfo;
                }
                else
                {
                    LogHelper.Info($"瓶坯注塑满托下线:瓶坯非即产即用 未配置");
                }
                if (result == null)
                {
                    result = TaskProcess.BCPInOrOut(db, true, "瓶坯库区", itemCode);
                    LogHelper.Info("瓶坯注塑满托下线:瓶坯入库接驳位暂时未查询到可用货位");
                }
            }
            else
            {
                LogHelper.Info($"瓶坯注塑满托下线:瓶胚入库接驳 未配置");
            }
            return result;
        }
@@ -2472,5 +2507,7 @@
                }
            }
        }
    }
}
HH.WCS.Mobox3.NongFuLinZhi/wms/LocationHelper.cs
@@ -323,7 +323,7 @@
        /// <param name="loc"></param>
        /// <param name="cntrs"></param>
        /// <returns></returns>
        public static bool UnBindingLoc(string loc, List<string> cntrs)
        public static bool UnBindingLoc(string loc, List<string> cntrs, string type)
        {
            var res = false;
            var db = new SqlHelper<object>().GetInstance();
@@ -338,6 +338,12 @@
                {
                    location.N_CURRENT_NUM = 0;
                }
                if (type == "接驳位入库" || type == "瓶盖空托入库")
                {
                    location.N_CURRENT_NUM = 0;
                }
                location.S_LOCK_STATE = "无";
                location.N_LOCK_STATE = 0;
                db.Updateable(location).UpdateColumns(it => new { it.N_CURRENT_NUM, it.S_LOCK_STATE, it.N_LOCK_STATE }).ExecuteCommand();
@@ -356,7 +362,7 @@
        /// <param name="loc"></param>
        /// <param name="cntrs"></param>
        /// <returns></returns>
        public static bool BindingLoc(string loc, List<string> cntrs)
        public static bool BindingLoc(string loc, List<string> cntrs, string type)
        {
            var res = false;
            var db = new SqlHelper<object>().GetInstance();
@@ -376,9 +382,10 @@
                    }
                });
                location.N_CURRENT_NUM = lcrList.Count + count;
                if(type == "接驳位入库" || type == "瓶盖空托入库")
                {
                    location.N_CURRENT_NUM = location.N_CAPACITY;
                }
                location.N_LOCK_STATE = 0;
                location.S_LOCK_STATE = "无";
HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
@@ -699,39 +699,23 @@
                    LogHelper.Info($"作业终点不为接驳位 查找库区{a.S_END_AREA} 可用货位");
                    
                    //其他库区
                    //var endlist = db.Queryable<Location>()
                    //.Where(it => it.S_AREA_CODE == a.S_END_AREA && it.N_CURRENT_NUM < it.N_CAPACITY)
                    //.OrderBy(it => it.N_COL)
                    //.PartitionBy(it => it.N_ROW)
                    //.Take(1)
                    //.ToList();
                    //LogHelper.Info($"符合条件的数量{endlist.Count}");
                    //foreach (var item in endlist)
                    //{
                    //    var lockinfo = db.Queryable<Location>().Where(it => it.N_LOCK_STATE != 0 && it.S_AREA_CODE == item.S_AREA_CODE && it.N_ROW == item.N_ROW).First();
                    //    if (lockinfo == null)
                    //    {
                    //        result = item;
                    //        a.S_END_LOC = item.S_CODE;
                    //        break;
                    //    }
                    //    else LogHelper.Info($"货位{lockinfo.S_CODE} 有锁 当前排不可使用");
                    //}
                }
                else
                {
                    LogHelper.Info($"入库任务 计算终点,任务类型:{a.S_OP_DEF_NAME}");
                    if (a.S_OP_DEF_NAME == "瓶盖转运")
                    if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库")
                    {
                        string itemCode = "";
                        var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_START_LOC).First();
                        if(cntrInfo != null)
                        {
                            var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First();
                            if(itemInfo != null)
                            {
                                result = TaskProcess.BCPInOrOut(db, true, a.S_NOTE + "库区",itemInfo.S_ITEM_CODE );
                                itemCode = itemInfo.S_ITEM_CODE;
                            }
                        }
                        result = TaskProcess.BCPInOrOut(db, true, a.S_NOTE + "库区", itemCode);
                    }
                    if (a.S_OP_DEF_NAME.Contains("注塑") && a.S_OP_DEF_NAME.Contains("满托下线(瓶坯)"))
                    {