xiaojiao
2025-12-28 44b83f33ff3a35edced78d89927a734f19de81ba
ÏîÄ¿´úÂë/WMS/WIDESEA_WMSServer/WIDESEA.Services/Common/GetEmptyLocationAction.cs
@@ -31,6 +31,19 @@
            List<Dt_taskinfo> inboundTask = Dt_taskinfoRepository.Instance.Find(r => r.task_type.Contains("Inbound"));
            List<int> listLayer = new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8 };
            //// æ›´æ”¹èŽ·å–è´§ä½çš„ä¿¡æ¯ è¿™é‡Œè¦å†™ä¸€ä¸ªå¾ªçޝ
            //List<Dt_taskinfo> outboundTask_temp = Dt_taskinfoRepository.Instance.Find(x => x.task_tolocationid == "10301" || x.task_endstation == "10301");
            //if (outboundTask_temp != null)
            //{
            //    string temp_layer = "";
            //    foreach (var item in outboundTask_temp)
            //    {
            //    }
            //}
            if (null != inboundTask && inboundTask.Count > 0)
            {
                foreach (var item in inboundTask)
@@ -44,24 +57,29 @@
                        listLayer.Remove(layer);
                    }
                }
                //List<string> fromStation = inboundTask.Select(r => r.task_tolocationid).ToList();
                //foreach (var item in fromStation)
                //{
                //    string[] location = item.Split('-');
                //    //获取当前有任务的层
                //    int layer = int.Parse(location[0]);
                //    listLayer.Remove(layer);
                //}
            }
            List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r => ((r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() /*|| r.task_type == TaskType.TaskType_CheckOutbound.ToString()*/)
      &&
  (r.task_state.Equals(TaskState.TaskState_RGV_Received.ToString()) || r.task_state.Equals(TaskState.TaskState_RGV_Finished.ToString())))
  || r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString());
            //          List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r => ((r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString())
            //    && (r.task_state.Equals(TaskState.TaskState_RGV_Received.ToString()) || r.task_state.Equals(TaskState.TaskState_RGV_Finished.ToString())))
            //|| r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString());
            List<Dt_taskinfo> outboundTask = Dt_taskinfoRepository.Instance.Find(r =>(r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString() || r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString())
            && (r.task_state != TaskState.TaskState_Create.ToString()));
            if (outboundTask.Count < 3)
            {
                int crtacount = 3 - outboundTask.Count;
                List<Dt_taskinfo> outboundcCrteateTask = Dt_taskinfoRepository.Instance.Find(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()
            && r.task_state == TaskState.TaskState_Create.ToString()).OrderBy(r=>r.task_createtime).Take(crtacount).ToList();
                outboundTask.AddRange(outboundcCrteateTask);
            }
            if (null != outboundTask && outboundTask.Count > 0)
            {
                List<string> fromStation = outboundTask.Select(r => r.task_fromlocationid).ToList();
                List<string> fromStation = outboundTask.Where(r=>r.task_type == TaskType.TaskType_Box_Pallet_Measure_Out.ToString()).Select(r => r.task_fromlocationid).ToList();
                fromStation.AddRange(outboundTask.Where(r => r.task_type == TaskType.TaskType_Box_Pallet_Measure_Back.ToString()).Select(r => r.task_tolocationid).ToList());
                foreach (var item in fromStation)
                {
                    string[] location = item.Split('-');
@@ -131,11 +149,6 @@
                    return locationinfo;
            }
            //Dt_locationinfo locationinfo = Dt_locationinfoRepository.Instance.Find(x => x.location_state == LocationState.LocationState_Empty.ToString() &&
            //!locationId.Contains(x.location_id) && !x.location_islocked).OrderBy(x => x.location_layer).ThenBy(x => x.location_column).FirstOrDefault();
            //if (null != locationinfo)
            //    return locationinfo;
            throw new Exception("暂无货位可分配");
        }
    }