using ServiceCenter.SqlSugars; using System.ComponentModel; using WCS.Core; using WCS.Entity; using WCS.Entity.Protocol.Station; using WCS.WorkEngineering.Extensions; using WCS.WorkEngineering.WebApi.Controllers; using WCS.WorkEngineering.WebApi.Models.WMS.Response; using WCS.WorkEngineering.Worlds; using TaskStatus = WCS.Entity.TaskStatus; namespace WCS.WorkEngineering.Systems { /// /// UpLoadSystems /// [BelongTo(typeof(UpLoadWorld))] [Description("UpLoadSystems")] public class UpLoadSystems : DeviceSystem> { protected override bool ParallelDo => true; protected override bool SaveLogsToFile => true; public override void Do(Device obj) { //更新出库放货完成状态 SqlSugarHelper.Do(_db => { var taskIdList = new List(); var nowTime = DateTime.Now; var db = _db.Default; var taskList = db.Queryable().Where(x => x.Type == TaskType.OutDepot && x.Status == TaskStatus.ConveyorExecution && x.Uploaded != TaskStatus.ConveyorExecution).ToList(); foreach (var task in taskList) { var res = WmsApi.SrmPickOutCompleted(task.ID); if (res.ResCode == ResponseStatusCodeEnum.Sucess) taskIdList.Add(task.ID); //更新成功 else World.Log($"出库放货完成状态同步失败:{task.ID}[{res.ResMsg}]"); } //拆分防止锁表 foreach (var taskId in taskIdList) { var task = db.Queryable().First(x => x.ID == taskId); task.Uploaded = TaskStatus.ConveyorExecution; task.EditTime = DateTime.Now; db.Updateable(task).ExecuteCommand(); task.AddWCS_TASK_DTL(db, "", $"同步出库任务放货完成状态同步至WMS"); } }); //环形库组盘任务/立库入库任务/二楼立库出库 更新完成 SqlSugarHelper.Do(_db => { var taskIdList = new List(); var nowTime = DateTime.Now; var db = _db.Default; var taskList = db.Queryable().SplitTable(x => x.Take(2)) .Where(x => ((x.Type == TaskType.SetPlate && x.WarehouseCode.Contains("R")) || ((x.Type == TaskType.EnterDepot || x.Type == TaskType.OutDepot) && !x.WarehouseCode.Contains("R"))) && x.Status == TaskStatus.Finish && x.Uploaded != TaskStatus.Finish).ToList(); foreach (var task in taskList) { var res = WmsApi.CompleteTask(task.Id); if (res.ResCode == ResponseStatusCodeEnum.Sucess) taskIdList.Add(task.Id); else World.Log($"入库完成状态同步失败:{task.Id}[{res.ResMsg}]"); } //拆分防止锁表 foreach (var taskId in taskIdList) { var task = db.Queryable().SplitTable(x => x.Take(2)).First(x => x.Id == taskId); task.Uploaded = TaskStatus.Finish; task.EditTime = nowTime; db.Updateable(task).SplitTable(x => x.Take(2)).ExecuteCommand(); task.AddWCS_TASK_DTL(db, "", $"同步入库完成状态同步至WMS"); } }); ////立库二楼出库更新完成 //SqlSugarHelper.Do(_db => //{ // var taskIdList = new List(); // var nowTime = DateTime.Now; // var db = _db.Default; // var taskList = db.Queryable().SplitTable(x => x.Take(2)) // .Where(x => ((x.Type == TaskType.SetPlate && x.WarehouseCode.Contains("R")) || (x.Type == TaskType.EnterDepot && !x.WarehouseCode.Contains("R"))) // && x.Status == TaskStatus.Finish // && x.Uploaded != TaskStatus.Finish).ToList(); // foreach (var task in taskList) // { // var res = WmsApi.CompleteTask(task.Id); // if (res.ResCode == ResponseStatusCodeEnum.Sucess) taskIdList.Add(task.Id); // else World.Log($"入库完成状态同步失败:{task.Id}[{res.ResMsg}]"); // } // //拆分防止锁表 // foreach (var taskId in taskIdList) // { // var task = db.Queryable().SplitTable(x => x.Take(2)).First(x => x.Id == taskId); // task.Uploaded = TaskStatus.Finish; // task.EditTime = nowTime; // db.Updateable(task).SplitTable(x => x.Take(2)).ExecuteCommand(); // task.AddWCS_TASK_DTL(db, "", $"同步入库完成状态同步至WMS"); // } //}); } public override bool Select(Device dev) { return dev.Code == nameof(UpLoadSystems); } } }