111
cjs
2025-06-17 8cb4f66c6cf5639280a27e0ef28360cd46842197
HH.WCS.Mobox3.NongFuLinZhi/wms/WMSHelper.cs
@@ -323,7 +323,6 @@
                            S_CNTR_CODE = task.S_CNTR_CODE,
                            S_BATCH_NO = item.S_BATCH_NO,
                            S_SERIAL_NO = item.S_SERIAL_NO,
                            D_PRD_DATE = item.D_PRD_DATE,
                            F_QTY = item.F_QTY
                        };
                        db.Insertable(info).ExecuteCommand();
@@ -631,7 +630,7 @@
            }
        }
        public static bool CreateOpTask(string startLoc, string endLoc, string sType, string taskType, string trayCode,string note = "")
        public static bool CreateOpTask(string startLoc, string endLoc, string sType, string taskType, string trayCode, string note = "", string trayType = "", string workNo = "", string itemCode = "")
        {
            bool result = false;
            int nType = sType == "入库" ? 1 : 2;
@@ -645,7 +644,10 @@
                S_TYPE = sType,
                S_OP_DEF_CODE = "",
                S_OP_DEF_NAME = taskType,
                S_NOTE = note
                S_NOTE = note,
                S_TRAY_TYPE = trayType,
                S_WORK_NO = workNo,
                S_ITEM_CODE = itemCode,
            };
            result = WMSHelper.CreateWmsTask(wmsTask);
            if (result)
@@ -695,44 +697,44 @@
                if (a.N_TYPE == 2)
                {
                    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 == "瓶盖转运" || a.S_OP_DEF_NAME == "接驳位移库")
                    if (a.S_OP_DEF_NAME == "接驳位入库" || a.S_OP_DEF_NAME == "瓶盖空托入库")
                    {
                        result = TaskProcess.BCPInOrOut(db, true, a.S_START_LOC,a.S_NOTE + "库区");
                        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)
                            {
                                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("满托下线(瓶坯)"))
                    {
                        result = TaskProcess.BCPFullOut(db,a.S_OP_DEF_NAME,a.S_START_LOC);
                        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.BCPFullOut(db, a.S_OP_DEF_NAME, itemInfo.S_ITEM_CODE);
                            }
                        }
                    }
                    if (a.S_OP_DEF_NAME.Contains("空托下线"))
                    {
                        result = TaskProcess.BCPEmptyOut(db,a.S_OP_DEF_NAME);
                        result = TaskProcess.BCPEmptyOut(db, a.S_OP_DEF_NAME);
                    }
                    //其他库区
                    //var endlist = db.Queryable<Location>()
                    //.Where(it => it.S_AREA_CODE == a.S_END_AREA && it.N_CURRENT_NUM < it.N_CAPACITY)