pulg
2025-06-23 62d49f6df86a43aadaf5b5fab89e3ac8ee8c0727
Merge branch 'master' of http://121.37.118.194:8000/r/WMSPrjInstance/HH-0014_NongFu_QingXi
1个文件已修改
63 ■■■■■ 已修改文件
HH.WCS.QingXiNongfu/core/Monitor.cs 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -95,7 +95,7 @@
                        {
                            if (item.SQL_State != "完成")
                            {
                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                                WCSHelper.Do(db =>
                                {
                                    LogHelper.Info("移库工单数量完成" + item.SQL_WorkNo);
@@ -118,7 +118,7 @@
                        {
                            LogHelper.Info($"{item.Turn_Type}工单{item.SQL_WorkNo} 手动完成,处理解锁,");
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                            WCSHelper.Do(db =>
                            {
                                if (item.Turn_Type == "自动移库")
@@ -178,7 +178,7 @@
                            {
                                //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                                //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
                                ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                                LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "起排无货 或 终排已满 无法移库");
                                item.SQL_State = "完成";
@@ -302,7 +302,7 @@
                        {
                            //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                            //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                            LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "起点已经没有货了,移库完成");
                            item.SQL_State = "完成";
                            item.Note = "起点已经没有货了,移库完成";
@@ -321,7 +321,7 @@
                        {
                            //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.start_row, N_ROW = srow }, 0);
                            //LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = item.end_row, N_ROW = erow }, 0);
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO));
                            ROW_LOCK(LocationHelper.GetLocList(x => x.S_AREA_CODE == item.start_area && x.N_ROW == srow).FirstOrDefault(), LocationHelper.GetLocList(x => x.S_AREA_CODE == item.end_area && x.N_ROW == erow).FirstOrDefault(), "", 0, string.IsNullOrEmpty(item.FROM_NO), item.SQL_WorkNo);
                            LogHelper.Info($"{item.Turn_Type}工单,完成" + item.SQL_WorkNo + "终点满了,移库完成");
                            item.SQL_State = "完成";
                            item.Note = "终点满了,移库完成";
@@ -418,11 +418,24 @@
            }
        }
        static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true)
        static void ROW_LOCK(Location startBit, Location EndBit, string msg, int sign, bool up = true, string WorkNo = "")
        {
            LogHelper.Info("dooooooooooooooooooooooooooooooooooooooooooooo" + msg + "---" + sign);
            LogHelper.Info(JsonConvert.SerializeObject(startBit));
            LogHelper.Info(JsonConvert.SerializeObject(EndBit));
            bool j解锁起点库区排 = true;
            if (!string.IsNullOrEmpty(WorkNo) && sign == 0)
            {
                //解锁时,有工单号。  查查除了这个工单号以外的其他 指定出库排执行
                var orders = WCSHelper.GetWorkOrder2();
                var thisOrder = orders.Find(x => x.SQL_WorkNo == WorkNo);
                if (thisOrder != null)
                {
                    var other = orders.Find(x => x.SQL_WorkNo != WorkNo && x.start_area == thisOrder.start_area && x.start_row == thisOrder.start_row);
                    if (other != null)
                        j解锁起点库区排 = false;
                }
            }
            //if (sign == 1)
            //{
            //    if (LocationHelper.GetRowLock(x => x.S_AREA_CODE == startBit.S_AREA_CODE && x.N_ROW == startBit.N_ROW).Count > 0)
@@ -430,6 +443,7 @@
            //        return;
            //    }
            //}
            if (j解锁起点库区排)
            LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign);
            LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = EndBit.S_AREA_CODE, N_ROW = EndBit.N_ROW, S_LOCK_STATE = msg }, sign);
            //if (EndBit == null || EndBit.S_AREA_CODE.StartsWith("BHQ-"))
@@ -439,9 +453,12 @@
                {
                    case 0:
                        {
                            var lst = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC };
                            if (!j解锁起点库区排)
                                lst = new List<string> { EndBit.S_Fule_LOC };
                            var req = JsonConvert.SerializeObject(new
                            {
                                areaNum = new List<string> { startBit.S_Fule_LOC, EndBit.S_Fule_LOC },
                                areaNum = lst,
                                repoNo = Settings.repoNo,
                                areaLock = "2"
                            });
@@ -4036,10 +4053,10 @@
                var locS = LocationHelper.GetAreaNormalLocList(ODs.Key);
                foreach (var od in ODs)
                {
                    LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》");
                    if (string.IsNullOrEmpty(od.S_ZZ_AREA) || string.IsNullOrEmpty(od.S_END_AREA))
                    LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 开始 》》》");
                    if (string.IsNullOrEmpty(od.S_ZZ_AREA) && string.IsNullOrEmpty(od.S_END_AREA))
                    {
                        LogHelper.CError($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 数据缺失。无法完成移库。");
                        LogHelper.CError($"YWL_ZX_Turn from{od.S_START_AREA} to{od.S_END_AREA} 数据缺失。无法完成移库。");
                        continue;
                    }
                    var rows = locS.FindAll(x => x.N_ROW == od.N_START_ROW);
@@ -4056,13 +4073,23 @@
                            var lastful = rows.FindAll(x => x.N_CURRENT_NUM > 0).OrderBy(x => x.N_COL).LastOrDefault();
                            if (lastful != null)
                            {
                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。");
                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。");
                                var crs = LocationHelper.GetLocCntrRel(lastful.S_LOC_CODE);
                                var cntritems = ContainerHelper.GetCntrItemRel(crs.FirstOrDefault()?.S_CNTR_CODE);
                                if (!cntritems.Any())
                                    continue;
                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。接驳是否被锁?:{InworkLock}");
                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA}to{od.S_END_AREA} 找到移库起点》{lastful.S_LOC_CODE}。接驳是否被锁?:{InworkLock}");
                                var cir1 = cntritems.First();
                                if (!string.IsNullOrEmpty(od.S_ITEM_CODE))
                                {
                                    ///给移库单 写上转运的物料数据。
                                    od.S_ITEM_CODE = cir1.S_ITEM_CODE;
                                    od.S_ITEM_NAME = cir1.S_ITEM_NAME;
                                    od.S_CJ_NAME = cir1.S_CJ_NAME;
                                    WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand());
                                }
                                if (od.S_ZZ_AREA == "YWLWJJB")
                                {
                                    if (InworkLock)
@@ -4092,24 +4119,16 @@
                                        Endbit = zzrloclist.Find(x => x.N_COL > (_cl2?.N_COL ?? 0));
                                    if (Endbit != null)
                                    {
                                        LogHelper.Info($"入中转区{od.S_ZZ_AREA}使用{Endbit.S_LOC_CODE}");
                                        LogHelper.Info($"入中转区{nextarea}使用{Endbit.S_LOC_CODE}");
                                        break;
                                    }
                                }
                                LogHelper.Info($"from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库终点》{Endbit?.S_LOC_CODE}");
                                LogHelper.Info($"YWL_ZX_Turn from{od.S_START_AREA} mid:{od.S_ZZ_AREA} to{od.S_END_AREA} 找到移库终点》{Endbit?.S_LOC_CODE}");
                                if (Endbit != null)
                                {
                                    //生成接驳区任务,标记为终点库区。
                                    var b = TaskProcess.CreateTransport(od.S_ID, lastful.S_LOC_CODE, Endbit.S_LOC_CODE, "原物料搬运-纸箱", crs.Select(x => x.S_CNTR_CODE).ToList(), 1, 1, crs.Count, 50, nextarea == od.S_END_AREA ? "" : od.S_END_AREA);
                                    if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;
                                    if (!string.IsNullOrEmpty(od.S_ITEM_CODE))
                                    {
                                        ///给移库单 写上转运的物料数据。
                                        od.S_ITEM_CODE = cir1.S_ITEM_CODE;
                                        od.S_ITEM_NAME = cir1.S_ITEM_NAME;
                                        od.S_CJ_NAME = cir1.S_CJ_NAME;
                                        WCSHelper.Do(db => db.Updateable(od).UpdateColumns(it => new { it.S_ITEM_NAME, it.S_ITEM_CODE, it.S_CJ_NAME }).ExecuteCommand());
                                    }
                                    break;
                                }
                                else if (od.S_ZZ_AREA == "YWLWJJB") InworkLock = false;