using NPOI.SS.Formula.PTG;
using PlcSiemens.Core.Extension;
using ServiceCenter.Redis;
using ServiceCenter.SqlSugars;
using SqlSugar;
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.Worlds;
namespace WCS.WorkEngineering.Systems
{
///
/// 获取出库任务
///
[BelongTo(typeof(MainWorld))]
[Description("获取出库任务")]
[Order(order: OrderType.Before, typeof(堆垛机))]
public class 获取出库任务 : DeviceSystem>
{
protected override bool ParallelDo => true;
public override void Do(EntityEx obj)
{
SqlSugarHelper.Do(db =>
{
//每5fenzhong重置出库缓存位数量,防止异常导致数量不对影响出库效率
if (DateTime.Now.Minute % 5== 0 && DateTime.Now.Second == 0)
{
var tasks = db.Default.Queryable().Where(w => w.BusType == "装箱码垛"
&& w.Type == TaskType.OutDepot && w.Status > Entity.TaskStatus.NewBuild
&& w.Status < Entity.TaskStatus.码垛缓存放行
&& !SqlFunc.IsNullOrEmpty(w.AddrTo)
).ToList();
tasks.GroupBy(g => g.AddrTo).Select(s => new { addTo = s.Key, cnt = s.Count() }).ForEach(task =>
{
if (!string.IsNullOrEmpty(task.addTo)&& MainWorld.Redis.Exists($"stockOperateNum{task.addTo}"))
{
MainWorld.Redis.Del($"stockOperateNum{task.addTo}");
MainWorld.Redis.IncrBy($"stockOperateNum{task.addTo}", task.cnt);
}
});
}
var srmStockTasks = db.Default.SqlQueryable("select * from V_TaskOut").ToList();
if (srmStockTasks == null || !srmStockTasks.Any())
return;
MainWorld.Redis.Del("StockTasks");
srmStockTasks.ForEach(item =>
{
MainWorld.Redis.HSet("StockTasks", item.SRM, item);
});
});
}
public override bool Select(Device dev)
{
return dev.Code == "SXOut";
}
}
}