| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 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.出货口);        }    }}
 |