|
@@ -177,12 +177,12 @@ namespace WCS.Service.Works.Station
|
|
|
pld.Code = position;
|
|
|
pld.TaskList.Add(agvtask);
|
|
|
|
|
|
- if (Ltc.Do(agvtask, agvtask => agvtask.Status == AGVTaskStatus.新建))
|
|
|
+ if (agvtask.Status == AGVTaskStatus.新建)
|
|
|
{
|
|
|
var qty = db.Default.Set<WCS_AGVTask>().Where(v => v.TaskType == AGVTaskType.叫料 && v.Status > AGVTaskStatus.新建 && v.Status < AGVTaskStatus.完成)
|
|
|
.Where(v => v.Position == agvtask.Position).Count();
|
|
|
- //TODO:暂时不考虑单卷叫料
|
|
|
- if (Ltc.Do(qty, OutTaskQty => OutTaskQty > 8))
|
|
|
+ //最多两个AGV任务
|
|
|
+ if (qty >= 2)
|
|
|
{
|
|
|
throw new Exception($"{agvtask.Position}正在执行的叫料任务数量已达{qty},暂停出库");
|
|
|
}
|
|
@@ -217,13 +217,13 @@ namespace WCS.Service.Works.Station
|
|
|
db.Default.SaveChanges();
|
|
|
});
|
|
|
}
|
|
|
- else if (Ltc.Do(agvtask, v => v.AGVStatus == AGVTaskStatus.完成))
|
|
|
+ else if (agvtask.AGVStatus == AGVTaskStatus.完成)
|
|
|
{
|
|
|
agvtask.Status = agvtask.AGVStatus;
|
|
|
agvtask.UpdateTime = DateTime.Now;
|
|
|
db.Default.SaveChanges();
|
|
|
}
|
|
|
- else if (Ltc.Do(agvtask, v => v.AGVStatus == AGVTaskStatus.取消))
|
|
|
+ else if (agvtask.AGVStatus == AGVTaskStatus.取消)
|
|
|
{
|
|
|
agvtask.Status = agvtask.AGVStatus;
|
|
|
agvtask.UpdateTime = DateTime.Now;
|
|
@@ -243,60 +243,60 @@ namespace WCS.Service.Works.Station
|
|
|
var taskIds = new List<int>();
|
|
|
obj.Items.ToList().ForEach(dev => taskIds.Add(dev.Data2.Tasknum));
|
|
|
DB.Do(db =>
|
|
|
- {
|
|
|
- var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID));
|
|
|
- if (taskList == null) throw new WarnException($"WCS任务号{JsonConvert.SerializeObject(taskIds)}不存在");
|
|
|
- if (taskList.Any(v => v.TYPE != TaskType.出库)) throw new WarnException("有任务的类型不是出库");
|
|
|
- if (taskList.Any(v => v.AgvTask == 0)) throw new WarnException("人工出库任务,请手动搬走");
|
|
|
- var agvtask = db.Default.Set<WCS_AGVTask>().Find(taskList.FirstOrDefault().AgvTask);
|
|
|
- if (agvtask == null) throw new WarnException($"AGV任务号{taskList.FirstOrDefault().AgvTask}不存在");
|
|
|
+ {
|
|
|
+ var taskList = db.Default.Set<WCS_TASK>().Where(v => taskIds.Contains(v.ID));
|
|
|
+ if (taskList == null) throw new WarnException($"WCS任务号{JsonConvert.SerializeObject(taskIds)}不存在");
|
|
|
+ if (taskList.Any(v => v.TYPE != TaskType.出库)) throw new WarnException("有任务的类型不是出库");
|
|
|
+ if (taskList.Any(v => v.AgvTask == 0)) throw new WarnException("人工出库任务,请手动搬走");
|
|
|
+ var agvtask = db.Default.Set<WCS_AGVTask>().Find(taskList.FirstOrDefault().AgvTask);
|
|
|
+ if (agvtask == null) throw new WarnException($"AGV任务号{taskList.FirstOrDefault().AgvTask}不存在");
|
|
|
|
|
|
- if (agvtask.Status == AGVTaskStatus.确认)
|
|
|
- {
|
|
|
- var flag = db.Default.Set<WCS_AGVTask>().Where(v => v.TaskType == AGVTaskType.叫料)
|
|
|
- .Where(v => v.Status > AGVTaskStatus.确认 && v.Status < AGVTaskStatus.取放完成).Count();
|
|
|
- if (flag > 2) throw new Exception("有2未完成的AGV出库任务");
|
|
|
+ if (agvtask.Status == AGVTaskStatus.确认)
|
|
|
+ {
|
|
|
+ var flag = db.Default.Set<WCS_AGVTask>().Where(v => v.TaskType == AGVTaskType.叫料)
|
|
|
+ .Where(v => v.Status > AGVTaskStatus.确认 && v.Status < AGVTaskStatus.取放完成).Count();
|
|
|
+ if (flag > 2) throw new Exception("有2未完成的AGV出库任务");
|
|
|
|
|
|
- taskList.ToList().ForEach(task =>
|
|
|
- {
|
|
|
- task.STATUS = WCS.Entity.TaskStatus.已完成;
|
|
|
- task.UPDATETIME = DateTime.Now;
|
|
|
- task.ENDTIME = DateTime.Now;
|
|
|
- });
|
|
|
+ taskList.ToList().ForEach(task =>
|
|
|
+ {
|
|
|
+ task.STATUS = WCS.Entity.TaskStatus.已完成;
|
|
|
+ task.UPDATETIME = DateTime.Now;
|
|
|
+ task.ENDTIME = DateTime.Now;
|
|
|
+ });
|
|
|
|
|
|
- agvtask.Station = obj.Entity.CODE;
|
|
|
- agvtask.Status = AGVTaskStatus.执行;
|
|
|
- agvtask.UpdateTime = DateTime.Now;
|
|
|
- db.Default.SaveChanges();
|
|
|
- }
|
|
|
- else if (agvtask.Status < agvtask.AGVStatus)
|
|
|
- {
|
|
|
- if (agvtask.AGVStatus == AGVTaskStatus.请求_允许)
|
|
|
- {
|
|
|
- if (agvtask.Status < AGVTaskStatus.执行) throw new WarnException($"AGV状态错误-{agvtask.Status}");
|
|
|
- if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.RES1))) throw new WarnException("任务清零信号未清除");
|
|
|
+ agvtask.Station = obj.Entity.CODE;
|
|
|
+ agvtask.Status = AGVTaskStatus.执行;
|
|
|
+ agvtask.UpdateTime = DateTime.Now;
|
|
|
+ db.Default.SaveChanges();
|
|
|
+ }
|
|
|
+ else if (agvtask.Status < agvtask.AGVStatus)
|
|
|
+ {
|
|
|
+ if (agvtask.AGVStatus == AGVTaskStatus.请求_允许)
|
|
|
+ {
|
|
|
+ if (agvtask.Status < AGVTaskStatus.执行) throw new WarnException($"AGV状态错误-{agvtask.Status}");
|
|
|
+ if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.RES1))) throw new WarnException("任务清零信号未清除");
|
|
|
|
|
|
- agvtask.Status = agvtask.AGVStatus;
|
|
|
- agvtask.UpdateTime = DateTime.Now;
|
|
|
- db.Default.SaveChanges();
|
|
|
- }
|
|
|
- else if (agvtask.AGVStatus == AGVTaskStatus.取放完成)
|
|
|
- {
|
|
|
- if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.RES1))) throw new WarnException("任务清零信号未清除");
|
|
|
- if (obj.Items.Any(v => !v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new WarnException("AGV取货完成后依然有光电信号");
|
|
|
- if (agvtask.Status < AGVTaskStatus.请求_允许) throw new WarnException("AGV任务状态有误");
|
|
|
+ agvtask.Status = agvtask.AGVStatus;
|
|
|
+ agvtask.UpdateTime = DateTime.Now;
|
|
|
+ db.Default.SaveChanges();
|
|
|
+ }
|
|
|
+ else if (agvtask.AGVStatus == AGVTaskStatus.取放完成)
|
|
|
+ {
|
|
|
+ if (obj.Items.Any(v => v.Data2.Status.HasFlag(IstationStatus.RES1))) throw new WarnException("任务清零信号未清除");
|
|
|
+ if (obj.Items.Any(v => !v.Data2.Status.HasFlag(IstationStatus.光电状态))) throw new WarnException("AGV取货完成后依然有光电信号");
|
|
|
+ if (agvtask.Status < AGVTaskStatus.请求_允许) throw new WarnException("AGV任务状态有误");
|
|
|
|
|
|
- agvtask.Status = agvtask.AGVStatus;
|
|
|
- agvtask.UpdateTime = DateTime.Now;
|
|
|
- db.Default.SaveChanges();
|
|
|
+ agvtask.Status = agvtask.AGVStatus;
|
|
|
+ agvtask.UpdateTime = DateTime.Now;
|
|
|
+ db.Default.SaveChanges();
|
|
|
|
|
|
- obj.Items.ToList().ForEach(dev =>
|
|
|
+ obj.Items.ToList().ForEach(dev =>
|
|
|
{
|
|
|
dev.Data2.Status = IstationStatus.RES1;
|
|
|
});
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
}
|
|
|
|