|
|
@@ -0,0 +1,91 @@
|
|
|
+using ServiceCenter.Extensions;
|
|
|
+using ServiceCenter.Logs;
|
|
|
+using ServiceCenter.SqlSugars;
|
|
|
+using System;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.ComponentModel;
|
|
|
+using System.Linq;
|
|
|
+using System.Text;
|
|
|
+using System.Threading.Tasks;
|
|
|
+using WCS.Core;
|
|
|
+using WCS.Entity;
|
|
|
+using WCS.WorkEngineering.Extensions;
|
|
|
+using WCS.WorkEngineering.Protocol.Station;
|
|
|
+using WCS.WorkEngineering.WebApi.Controllers;
|
|
|
+using WCS.WorkEngineering.Worlds;
|
|
|
+using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
|
|
|
+
|
|
|
+namespace WCS.WorkEngineering.Systems
|
|
|
+{
|
|
|
+ /// <summary>
|
|
|
+ /// 出库任务处理
|
|
|
+ /// </summary>
|
|
|
+ [BelongTo(typeof(MainWorld))]
|
|
|
+ [Description("出库任务处理")]
|
|
|
+ public class 出库任务处理 : DeviceSystem<Device<IStation520, IStation521, IStation523>>
|
|
|
+ {
|
|
|
+ protected override bool ParallelDo => true;
|
|
|
+ protected override bool SaveLogsToFile => true;
|
|
|
+ List<Station> devs = new List<Station>();
|
|
|
+ public 出库任务处理()
|
|
|
+ {
|
|
|
+ devs = Device.All.Where(v => v.HasFlag(DeviceFlags.出货口)).Select(v => new Station(v, this.World)).ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+ public override void Do(Device<IStation520, IStation521, IStation523> obj)
|
|
|
+ {
|
|
|
+ WCS_TaskInfo task = null;
|
|
|
+ if (obj.Data2.TaskNumber <= 0)
|
|
|
+ return;
|
|
|
+ if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status) || !obj.Data3.Status.HasFlag(StationStatus.OT_Status))
|
|
|
+ return;
|
|
|
+ if (obj.Data2.GoodsEnd != obj.Entity.Code.ToShort()) return;
|
|
|
+ if (obj.Data2.Request == 0)
|
|
|
+ {
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ //找到对应任务
|
|
|
+ var taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber);
|
|
|
+ if (taskInfo == null) throw new KnownException($"未找到对应WCS任务{obj.Data2.TaskNumber}", LogLevelEnum.High);
|
|
|
+ if (taskInfo.AddrTo == obj.Entity.Code && taskInfo.Type == TaskType.OutDepot)
|
|
|
+ {
|
|
|
+ taskInfo.Status = Entity.TaskStatus.Finish;
|
|
|
+ taskInfo.EditTime = DateTime.Now;
|
|
|
+ taskInfo.EedTime = DateTime.Now;
|
|
|
+
|
|
|
+ db.Default.Updateable(taskInfo).ExecuteCommand();
|
|
|
+ taskInfo.AddWCS_TASK_DTL(db, obj.Entity.Code, taskInfo.AddrNext, $"出库任务完成");
|
|
|
+ task = taskInfo;
|
|
|
+ taskInfo.CompleteOrCancelTasks(db);
|
|
|
+ WmsApi.CompleteTask(task.ID);
|
|
|
+
|
|
|
+ obj.Data.TaskNumber = 0;
|
|
|
+ obj.Data.VoucherNo++;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SqlSugarHelper.Do(db =>
|
|
|
+ {
|
|
|
+ //找到对应任务
|
|
|
+ var taskInfo = db.Default.Queryable<WCS_TaskInfo>().First(v => v.ID == obj.Data2.TaskNumber);
|
|
|
+ if (taskInfo != null) throw new KnownException($"WCS任务{obj.Data2.TaskNumber}未完成,请联系相关人员查明原因", LogLevelEnum.High);
|
|
|
+ //出货口货取走后去叠盘机叠盘
|
|
|
+ obj.Data.TaskNumber = obj.Entity.Code.ToShort();
|
|
|
+ if (obj.Entity.Code == "8263" || obj.Entity.Code == "8269")
|
|
|
+ {
|
|
|
+ obj.Data.GoodsEnd = 8262;
|
|
|
+ }
|
|
|
+ obj.Data.VoucherNo++;
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public override bool Select(Device dev)
|
|
|
+ {
|
|
|
+ return dev.HasFlag(DeviceFlags.出货口);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|