kazelee
2025-06-30 3512011e94f013955b7b1e2de8558b8861db86b7
api/ApiHelper.cs
@@ -23,13 +23,15 @@
            var taskName = TaskName.产品入库;
            var db = new SqlHelper<object>().GetInstance();
            var startAreas = Settings.Areas[AreaIndex.Q取货区];
            try {
                // 起点位置必须:为空、无锁、启用、属于收发区域
                var startLoc = db.Queryable<TN_Location>()
                    .Where(a => a.S_CODE == model.StartLoc)
                    .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y")
                    //.Where(a => a.N_CURRENT_NUM == 0)
                    .Where(a => Settings.Areas[0].Contains(a.S_AREA_CODE)) // 收发区
                    .Where(a => startAreas.Contains(a.S_AREA_CODE))
                    .First();
                if (startLoc == null) {
@@ -150,13 +152,15 @@
            var taskName = TaskName.产品入库;
            var db = new SqlHelper<object>().GetInstance();
            var startAreas = Settings.Areas[AreaIndex.Q取货区];
            try {
                // 起点位置必须:为空、无锁、启用、属于收发区域
                var startLoc = db.Queryable<TN_Location>()
                    .Where(a => a.S_CODE == model.StartLoc)
                    .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y")
                    //.Where(a => a.N_CURRENT_NUM == 0)
                    .Where(a => Settings.Areas[0].Contains(a.S_AREA_CODE)) // 收发区
                    .Where(a => startAreas.Contains(a.S_AREA_CODE))
                    .First();
                if (startLoc == null) {
@@ -261,6 +265,8 @@
            var db = new SqlHelper<object>().GetInstance();
            var endAreas = Settings.Areas[AreaIndex.H货架区];
            try {
                // 任务号存在:终点货架和终点位置为空,且任务为产品入库(PDA)
                var task = db.Queryable<TN_Task>()
@@ -305,7 +311,7 @@
                        .Where(a => a.S_CODE == model.EndLoc)
                        .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y")
                        .Where(a => a.N_CURRENT_NUM == 0)
                        .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE))
                        .Where(a => endAreas.Contains(a.S_AREA_CODE))
                        .Where(a => a.N_LAYER <= 2)
                        .First();
                }
@@ -314,7 +320,7 @@
                        .Where(a => a.S_CODE == model.EndLoc)
                        .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y")
                        .Where(a => a.N_CURRENT_NUM == 0)
                        .Where(a => Settings.Areas[1].Contains(a.S_AREA_CODE))
                        .Where(a => endAreas.Contains(a.S_AREA_CODE))
                        .OrderBy(a => a.N_LAYER > 2 ? 0 : 1) // 优先取大于2的
                        //.Where(a => a.N_LAYER <= 3)
                        .First();
@@ -375,11 +381,15 @@
            var taskName = TaskName.产品部分出库;
            var db = new SqlHelper<object>().GetInstance();
            var startAreas = Settings.Areas[AreaIndex.H货架区];
            var endAreas = Settings.Areas[AreaIndex.X卸货区];
            try {
                // 起点位置:货架(有货、没有锁、已启用)
                var startLoc = db.Queryable<TN_Location>()
                    .Where(a => a.S_CODE == model.startLoc)
                    .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y")
                    .Where(a => startAreas.Contains(a.S_AREA_CODE))
                    .Where(a => a.N_CURRENT_NUM == 1)
                    .First();
@@ -393,7 +403,7 @@
                    return BuildSimpleResult(3, $"起点位置 {model.startLoc} 没有绑定容器,无可出库的物料");
                }
                var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && Settings.Areas[0].Contains(a.S_AREA_CODE));
                var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE));
                if (endLoc == null) {
                    return BuildSimpleResult(4, $"终点位置 {model.endLoc} 不具备放货条件");
@@ -446,9 +456,12 @@
            var taskName = TaskName.产品部分回库;
            var db = new SqlHelper<object>().GetInstance();
            var startAreas = Settings.Areas[AreaIndex.X卸货区];
            var endAreas = Settings.Areas[AreaIndex.H货架区];
            try {
                // 起点位置:取放货区(有货物、没有锁、已启用)
                var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && Settings.Areas[0].Contains(a.S_AREA_CODE));
                var startLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.startLoc && a.N_CURRENT_NUM == 1 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && startAreas.Contains(a.S_AREA_CODE));
                if (startLoc == null) {
                    return BuildSimpleResult(2, $"起点位置 {model.startLoc} 不符合回库条件");
                }
@@ -459,7 +472,7 @@
                }
                // 终点位置:货架(没有货物,没有锁)
                var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y");
                var endLoc = db.Queryable<TN_Location>().First(a => a.S_CODE == model.endLoc && a.N_CURRENT_NUM == 0 && a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "无" && a.C_ENABLE == "Y" && endAreas.Contains(a.S_AREA_CODE));
                if (endLoc == null) {
                    return BuildSimpleResult(4, $"终点位置 {model.endLoc} 不具备放货条件");
                }