czw
2025-06-23 91af36651929bdd77afaedc517e9c3c2106fd8e1
HH.WCS.QingXiNongfu/core/Monitor.cs
@@ -96,7 +96,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);
@@ -119,7 +119,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 == "自动移库")
@@ -179,7 +179,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 = "完成";
@@ -303,7 +303,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 = "起点已经没有货了,移库完成";
@@ -322,7 +322,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 = "终点满了,移库完成";
@@ -419,11 +419,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)
@@ -431,7 +444,8 @@
            //        return;
            //    }
            //}
            LocationHelper.SetRowLock(new RowLock { S_AREA_CODE = startBit.S_AREA_CODE, N_ROW = startBit.N_ROW, S_LOCK_STATE = msg }, sign);
            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-"))
            //    return;
@@ -440,9 +454,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"
                            });