111
cjs
3 天以前 7fda4aeb36beda46d767a78082573692e7b85651
111
1个文件已添加
10个文件已修改
206 ■■■■ 已修改文件
.vs/VSWorkspaceState.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/农夫林芝/v17/.wsuo 补丁 | 查看 | 原始文档 | blame | 历史
.vs/农夫林芝/v17/DocumentLayout.backup.json 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/农夫林芝/v17/DocumentLayout.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/Program.cs 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/api/ApiHelper.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/core/WCSCore.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs 75 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/VSWorkspaceState.json
@@ -2,6 +2,6 @@
  "ExpandedNodes": [
    ""
  ],
  "SelectedNode": "\\C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u519C\u592B\u6797\u829D",
  "SelectedNode": "\\HH.WCS.Mobox3.NFLZ.sln",
  "PreviewInSolutionExplorer": false
}
.vs/Å©·òÁÖÖ¥/v17/.wsuo
Binary files differ
.vs/Å©·òÁÖÖ¥/v17/DocumentLayout.backup.json
New file
@@ -0,0 +1,65 @@
{
  "Version": 1,
  "WorkspaceRootPath": "C:\\software\\A-\u5DE5\u4F5C\\\u6E90\u7801\\GIT\\\u519C\u592B\u6797\u829D\\",
  "Documents": [],
  "DocumentGroupContainers": [
    {
      "Orientation": 0,
      "VerticalTabListWidth": 256,
      "DocumentGroups": [
        {
          "DockedWidth": 12,
          "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}"
            }
          ]
        }
      ]
    }
  ]
}
.vs/Å©·òÁÖÖ¥/v17/DocumentLayout.json
@@ -34,10 +34,6 @@
            {
              "$type": "Bookmark",
              "Name": "ST:129:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}"
            },
            {
              "$type": "Bookmark",
              "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}"
            }
          ]
        },
HH.WCS.Mobox3.NongFuLinZhi/Program.cs
@@ -98,10 +98,10 @@
                //tasks.Add(GetTask(Monitor.CheckDevice));
                tasks.Add(GetTask(Monitor.BottleBlankTransportation)); //接驳位入库
                tasks.Add(GetTask(Monitor.PPFDFullIn)); //瓶坯翻斗机非急产满框区补满托
                tasks.Add(GetTask(Monitor.PGFDFullIn)); //瓶盖翻斗机非急产满框区补满托
                tasks.Add(GetTask(Monitor.PGFDFullInJC)); //瓶盖翻斗机急产满框区补满托 ç©ºæ‰˜åŒºåŸŸè¡¥ç©ºæ‰˜
                tasks.Add(GetTask(Monitor.PPFDFullInEmpty)); //瓶坯注塑机非急产空框区补空托
                tasks.Add(GetTask(Monitor.PPFDFullIn)); //瓶坯翻斗机非即产满框区补满托
                tasks.Add(GetTask(Monitor.PGFDFullIn)); //瓶盖翻斗机非即产满框区补满托
                tasks.Add(GetTask(Monitor.PGFDFullInJC)); //瓶盖翻斗机即产满框区补满托 ç©ºæ‰˜åŒºåŸŸè¡¥ç©ºæ‰˜
                tasks.Add(GetTask(Monitor.PPFDFullInEmpty)); //瓶坯注塑机非即产空框区补空托
                tasks.Add(GetTask(Monitor.PGXBZZY)); //瓶盖小包装盖转运
HH.WCS.Mobox3.NongFuLinZhi/api/ApiHelper.cs
@@ -721,6 +721,7 @@
        internal static ReturnResult JBIn(JBInModel model)
        {
            ReturnResult result = new ReturnResult() { ResultCode = -1 };
            var db = new SqlHelper<object>().GetInstance();
            string cntrCode = Guid.NewGuid().ToString("N");
            string batch = "";
            if (model.S_ITEM_TYPE == "小包装盖")
@@ -740,12 +741,21 @@
                batch = "大包装盖";
            }
            //创建作业
            var locInfo = db.Queryable<Location>().Where(a => a.S_CODE == model.S_LOC_CODE && a.S_LOCK_STATE == "无").First();
            if(locInfo != null)
            {
            LogHelper.Info($"JBIn:{model.S_LOC_CODE},{cntrCode},{"指定库区-" + model.S_END_AREA}");
            if(WMSHelper.CreateOpTask(model.S_LOC_CODE, "", "入库", "接驳位入库", cntrCode, "指定库区-" + model.S_END_AREA))
            {
                TaskProcess.BindLocCntr(model.S_LOC_CODE, cntrCode, model.S_ITEM_CODE, batch);
                result.ResultCode = 0;
            }
            }
            else
            {
                result.ResultMsg = $"该点位不存在或者有锁,货位编码:{model.S_LOC_CODE}";
            }
            return result;
        }
HH.WCS.Mobox3.NongFuLinZhi/core/Monitor.cs
@@ -107,7 +107,7 @@
        }
        /// <summary>
        /// ç“¶å¯ç¿»æ–—机非急产满框区补满托
        /// ç“¶å¯ç¿»æ–—机非即产满框区补满托
        /// </summary>
        internal static void PPFDFullIn()
        {
@@ -132,7 +132,7 @@
                            {
                                string cntrCode = getCntrCode(db,location);
                                //创建作业
                                WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非急产补满框", cntrCode, "瓶坯");
                                WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非即产补满框", cntrCode, "瓶坯");
                            }
                        }
                    }
@@ -206,7 +206,7 @@
                                {
                                    string cntrCode = getCntrCode(db, location);
                                    //创建作业
                                    WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非急产补满框大包装", cntrCode, "瓶盖");
                                    WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非即产补满框大包装", cntrCode, "瓶盖");
                                }
                            }
                            if (itemCount.Count == 2)
@@ -252,7 +252,7 @@
                                        {
                                            string cntrCode = getCntrCode(db, location);
                                            //创建作业
                                            WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非急产补满框大包装", cntrCode, "瓶盖");
                                            WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非即产补满框大包装", cntrCode, "瓶盖");
                                        }
                                    }
                                }
@@ -263,7 +263,7 @@
                                    {
                                        string cntrCode = getCntrCode(db, location);
                                        //创建作业
                                        WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非急产补满框大包装", cntrCode, "瓶盖");
                                        WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶盖非即产补满框大包装", cntrCode, "瓶盖");
                                    }
                                }
                            }
@@ -293,7 +293,8 @@
                var LocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM > 0).ToList();
                if(LocList.Count <= 1)
                {
                    var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "瓶坯非急产补空框" && a.S_B_STATE != "完成" && a.S_B_STATE != "取消").First();
                    LogHelper.Info($"瓶坯非即产补空框 {JsonConvert.SerializeObject(LocList)}");
                    var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "瓶坯非即产补空框" && a.S_B_STATE != "完成" && a.S_B_STATE != "取消").First();
                    if(taskInfo == null)
                    {
                        //需要从库区补充空托
@@ -303,14 +304,16 @@
                        {
                            string cntrCode = getCntrCode(db, location);
                            //创建作业
                            WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非急产补空框", cntrCode, "瓶坯");
                            WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非即产补空框", cntrCode, "瓶坯");
                        }
                    }
                }
                LocList = db.Queryable<Location>().Where(a => a.S_AREA_CODE == areaInfo.areaCode && a.N_CURRENT_NUM == a.N_CAPACITY).ToList();
                if (LocList.Count > 2)
                {
                    var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "瓶坯非急产空框入库" && a.S_B_STATE != "完成" && a.S_B_STATE != "取消" && a.S_B_STATE != "卸货完成" && a.S_B_STATE != "开始卸货" && a.S_B_STATE != "取货完成").First();
                    LogHelper.Info($"瓶坯非即产空托入库 {JsonConvert.SerializeObject(LocList)}");
                    var taskInfo = db.Queryable<WCSTask>().Where(a => a.S_TYPE == "瓶坯非即产空框入库" && a.S_B_STATE != "完成" && a.S_B_STATE != "取消" && a.S_B_STATE != "卸货完成" && a.S_B_STATE != "开始卸货" && a.S_B_STATE != "取货完成").First();
                    if(taskInfo == null)
                    {
                        //需要将空托转运到库区
@@ -321,7 +324,7 @@
                                //生成任务
                                string cntrCode = getCntrCode(db, a);
                                //创建作业
                                WMSHelper.CreateOpTask(a.S_CODE, "", "入库", "瓶坯非急产空框入库", cntrCode, "瓶坯");
                                WMSHelper.CreateOpTask(a.S_CODE, "", "入库", "瓶坯非即产空框入库", cntrCode, "瓶坯");
                                break;
                            }
                        }
@@ -345,7 +348,7 @@
            //            {
            //                string cntrCode = getCntrCode(db, location);
            //                //创建作业
            //                WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非急产补空框", cntrCode, "瓶坯");
            //                WMSHelper.CreateOpTask(location.S_CODE, locInfo.S_CODE, "入库", "瓶坯非即产补空框", cntrCode, "瓶坯");
            //            }
            //        }
            //    }
@@ -376,7 +379,7 @@
                        {
                            //创建作业
                            string cntrCode = getCntrCode(db, startLoca);
                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo.S_CODE, "出库", "瓶坯急产补满框", cntrCode, "");
                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo.S_CODE, "出库", "瓶坯即产补满框", cntrCode, "");
                        }
                    }
                }
@@ -393,7 +396,7 @@
                        {
                            //创建作业
                            string cntrCode = getCntrCode(db, startLoca);
                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo[0].S_CODE, "出库", "瓶坯急产补空框", cntrCode, "");
                            WMSHelper.CreateOpTask(startLoca.S_CODE, locInfo[0].S_CODE, "出库", "瓶坯即产补空框", cntrCode, "");
                        }
                    }
                }
@@ -455,7 +458,7 @@
                        if (startLoca != null)
                        {
                            string cntrCode = getCntrCode(db, startLoca);
                            WMSHelper.CreateOpTask(startLoca.S_CODE, endLoca.S_CODE, "出库", "瓶盖非急产补满框小包装", cntrCode, "");
                            WMSHelper.CreateOpTask(startLoca.S_CODE, endLoca.S_CODE, "出库", "瓶盖非即产补满框小包装", cntrCode, "");
                        }
                    }
                }
HH.WCS.Mobox3.NongFuLinZhi/core/WCSCore.cs
@@ -1,4 +1,5 @@
using HH.WCS.Mobox3.NFLZ.dispatch;
using HH.WCS.Mobox3.NFLZ.api;
using HH.WCS.Mobox3.NFLZ.dispatch;
using HH.WCS.Mobox3.NFLZ.process;
using HH.WCS.Mobox3.NFLZ.util;
using HH.WCS.Mobox3.NFLZ.wms;
@@ -85,7 +86,12 @@
                            if (AlterControlSwitch01 == "1") TaskProcess.GeneralInterFaceFunc(TN_Task, model.state.ToString(), model.forklift_no);
                        }
                    }
                    else {
                    else if(model.state == 8)
                    {
                        TaskProcess.cancelTask(TN_Task);
                    }
                    else
                    {
                        LogHelper.Info("安全请求交互");
                        //安全请求等
                        TaskProcess.OperateReq(model.task_no, model.state, model.forklift_no, model.ext_data);
HH.WCS.Mobox3.NongFuLinZhi/process/DeviceProcess.cs
@@ -723,6 +723,7 @@
                            {
                                LogHelper.Info($"getFDSXArea:查询到物料编码:{itemInfo.S_ITEM_CODE}");
                                LogHelper.Info($"getFDSXArea:查询到物料批次:{itemInfo.S_BATCH_NO}");
                                if (workInfo.S_PLineNo.Contains("瓶坯")) workInfo.S_ITEM_TYPE = "";
                                if (itemInfo.S_ITEM_CODE + itemInfo.S_BATCH_NO == workInfo.S_ItemCode + workInfo.S_ITEM_TYPE)
                                {
                                    result = a;
HH.WCS.Mobox3.NongFuLinZhi/process/TaskProcess.cs
@@ -11,6 +11,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Threading.Tasks;
using System.Xml.Linq;
using static HH.WCS.Mobox3.NFLZ.api.OtherModel;
using static HH.WCS.Mobox3.NFLZ.dispatch.NDCApi;
@@ -677,7 +678,7 @@
        /// <exception cref="NotImplementedException"></exception>
        public static void EmptyTask(WCSTask mst)
        {
            //瓶盖注塑机空托上线,若急产急用库区没有多余的空托,则在非急产急用空托区拿空托
            //瓶盖注塑机空托上线,若即产急用库区没有多余的空托,则在非即产急用空托区拿空托
            var db = new SqlHelper<object>().GetInstance();
            Location startLoca = null;
@@ -1105,7 +1106,7 @@
                        Extend2 = db.Queryable<Location>().Where(a => a.S_CODE == mst.S_END_LOC).First().S_AGV_SITE;
                        if (mst.N_START_LAYER > 1)
                        {
                            if(mst.S_TYPE != "瓶坯非急产空框入库" && mst.S_TYPE != "瓶坯接驳位入库" && mst.S_TYPE != "瓶盖空托入库")
                            if(mst.S_TYPE != "瓶坯非即产空框入库" && mst.S_TYPE != "瓶坯接驳位入库" && mst.S_TYPE != "瓶盖空托入库")
                            {
                                Extend1 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_START_LOC && a.N_LAYER == mst.N_START_LAYER).First().S_AGV_SITE;
                            }
@@ -1115,7 +1116,7 @@
                        {
                            Extend2 = db.Queryable<LocationExt>().Where(a => a.S_LOC_CODE == mst.S_END_LOC && a.N_LAYER == mst.N_END_LAYER).First().S_AGV_SITE;
                        }
                        if(mst.S_TYPE == "瓶坯非急产补满框" || mst.S_TYPE == "瓶盖非急产补满框大包装" || mst.S_TYPE == "瓶坯非急产补空框" || mst.S_TYPE == "瓶盖非急产补空框" || mst.S_TYPE == "注塑即产满托下线(瓶坯)")
                        if(mst.S_TYPE == "瓶坯非即产补满框" || mst.S_TYPE == "瓶盖非即产补满框大包装" || mst.S_TYPE == "瓶坯非即产补空框" || mst.S_TYPE == "瓶盖非即产补空框" || mst.S_TYPE == "注塑即产满托下线(瓶坯)")
                        {
                            Extend2 = Settings.dXSites.Where(it => it.loc == mst.S_END_LOC).First().site.ToString();
                        }
@@ -1358,7 +1359,7 @@
                                                    else
                                                    {
                                                        //查询后面当前货位后一个
                                                        result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && b.N_COL > a.N_COL && b.S_LOCK_STATE == "无").OrderBy(b => b.N_COL).First();
                                                        result = db.Queryable<Location>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.N_ROW == a.N_ROW && b.N_COL > a.N_COL && a.N_CURRENT_NUM < a.N_CAPACITY && b.S_LOCK_STATE == "无").OrderBy(b => b.N_COL).First();
                                                    }
                                                    if (result != null)
                                                    {
@@ -1571,7 +1572,7 @@
            LogHelper.Info($"瓶坯注塑满托下线:类型:{taskName},物料编码:{itemCode}");
            if (taskName.Contains("即产"))
            {
                //注塑机急产即用下线,首先下线到即产即用满框线边,满眶线边满了,下到即产即用满框缓存区,满框缓存区满了,下到入库接驳堆叠位
                //注塑机即产即用下线,首先下线到即产即用满框线边,满眶线边满了,下到即产即用满框缓存区,满框缓存区满了,下到入库接驳堆叠位
                var areaInfo = Settings.areaInfos.Where(a => a.areaName == "瓶坯即产满框" && a.enable == 1).FirstOrDefault();
                if(areaInfo != null)
                {
@@ -1942,11 +1943,16 @@
                        var Con = db.Queryable<Container>().Where(a => a.S_CODE == cntrCode).First();
                        if(Con == null)
                        {
                            int detallCount = 0;
                            if (!string.IsNullOrEmpty(itemCode))
                            {
                                detallCount = 1;
                            }
                            if(db.Insertable<Container>(new Container
                            {
                                S_CODE = cntrCode,
                                N_TYPE = 1,
                                N_DETAIL_COUNT = 1
                                N_DETAIL_COUNT = detallCount
                            }).ExecuteCommand() > 0)
                            {
                                LogHelper.Info($"容器表绑定成功,托盘号:{cntrCode}");
@@ -2485,11 +2491,20 @@
                {
                    foreach (var a in locList)
                    {
                        var cntrInfo = db.Queryable<LocCntrRel>().Where(b => b.S_LOC_CODE == a.S_CODE).First();
                        if(cntrInfo != null)
                        {
                            var itemInfo = db.Queryable<CntrItemRel>().Where(b => b.S_CNTR_CODE == cntrInfo.S_CNTR_CODE).First();
                            if(itemInfo == null)
                            {
                        var rowInfo = db.Queryable<RowLock>().Where(b => b.S_AREA_CODE == a.S_AREA_CODE && b.S_ROW == a.S_ROW && b.S_LOCK_STATE == "无").First();
                        if(rowInfo != null && a.S_LOCK_STATE == "无")
                        {
                            result = a;
                            break;
                                }
                            }
                        }
                    }
                }
@@ -2501,5 +2516,53 @@
            return result;
        }
        /// <summary>
        /// å–消任务
        /// </summary>
        /// <param name="tN_Task"></param>
        /// <exception cref="NotImplementedException"></exception>
        internal static void cancelTask(WCSTask TN_Task)
        {
            if(!WCSHelper.CheckActionRecordExist(TN_Task.S_CODE, 4))
            {
                //取消任务
                WCSHelper.UpdateStatus(TN_Task.S_CODE, 4);
                if (TN_Task.S_TYPE == "接驳位入库")
                {
                    new SqlHelper<object>().GetInstance().Deleteable<CntrItemRel>().Where(a => TN_Task.S_CNTR_CODE.Contains(a.S_CNTR_CODE)).ExecuteCommand();
                    new SqlHelper<object>().GetInstance().Deleteable<LocCntrRel>().Where(a => TN_Task.S_CNTR_CODE.Contains(a.S_CNTR_CODE)).ExecuteCommand();
                }
            }
            else
            {
                WCSHelper.UpdateStatus(TN_Task.S_CODE, 3);
            }
            var op = WMSHelper.GetWmsTask(TN_Task.S_OP_CODE);
            if (op != null)
            {
                if (op.N_B_STATE == 0)
                {
                    //等待直接修改状态为取消
                    op.N_B_STATE = 3;
                }
                else if (op.N_B_STATE == 1)
                {
                    if (WCSHelper.CheckActionRecordExist(TN_Task.S_CODE, 4))
                    {
                        op.N_B_STATE = 2;
                    }
                    else
                    {
                        op.N_B_STATE = 3;
                    }
                }
                WMSHelper.UpdateTaskState(op);
            }
            NDCApi.CancelOrder(TN_Task.S_CODE.Trim());
            OperateStatus(TN_Task, 7);
        }
    }
}
HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
@@ -703,7 +703,7 @@
                else
                {
                    LogHelper.Info($"入库任务 è®¡ç®—终点,任务类型:{a.S_OP_DEF_NAME}");
                    if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库" || a.S_OP_DEF_NAME == "瓶坯非急产空框入库" || a.S_OP_DEF_NAME == "瓶坯接驳位入库")
                    if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库" || 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();