using ServiceCenter.Extensions;
using ServiceCenter.Logs;
using ServiceCenter.SqlSugars;
using System;
using System.Collections;
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.BCR;
using WCS.WorkEngineering.Protocol.SRM;
using WCS.WorkEngineering.Protocol.Station;
using WCS.WorkEngineering.WebApi.Controllers;
using WCS.WorkEngineering.Worlds;
using static System.Runtime.InteropServices.JavaScript.JSType;
using DeviceFlags = WCS.WorkEngineering.Extensions.DeviceFlags;
namespace WCS.WorkEngineering.Systems
{
///
/// 装箱区呼叫空托盘组及隔板
///
[BelongTo(typeof(MainWorld))]
[Description("装箱区呼叫空托盘组及隔板")]
public class 装箱区呼叫空托盘组及隔板 : DeviceSystem>
{
protected override bool ParallelDo => true;
protected override bool SaveLogsToFile => true;
private List devs = new List();
private List srms = new List();
public override void Do(Device obj)
{
World.Log($"设备号{obj.Entity.Code}PH_Status{obj.Data3.Status.HasFlag(StationStatus.PH_Status)}-Run{obj.Data3.Status.HasFlag(StationStatus.Run)}-OT_Status{obj.Data3.Status.HasFlag(StationStatus.OT_Status)}-UnassignedTask{obj.Data3.Status.HasFlag(StationStatus.UnassignedTask)}-Auto{obj.Data3.Status.HasFlag(StationStatus.Auto)}");
if (!obj.Data3.Status.HasFlag(StationStatus.PH_Status) //无光电
&& !obj.Data3.Status.HasFlag(StationStatus.Run) //未运行
&& !obj.Data3.Status.HasFlag(StationStatus.OT_Status) //无任务
&& !obj.Data3.Status.HasFlag(StationStatus.UnassignedTask)) //未分配任务
//&& obj.Data3.Status.HasFlag(StationStatus.Auto))//自动
{
SqlSugarHelper.Do(_db =>
{
var target = (obj.Entity.Code.ToShort() + 1).ToString();
var db = _db.Default;
//找到对应任务
var taskInfo = db.Queryable().First(v => v.AddrTo == target);
//未找到对应任务
if (taskInfo == null)
{
//向WMS申请空托盘组出库任务及隔板
if (obj.Entity.Code == "8027")
{
WmsApi.I_WCS_GetOutTask("TPC", target);
}
else
WmsApi.I_WCS_GetOutTask("Jiangeban", target);
}
});
}
}
public override bool Select(Device dev)
{
return dev.Code == "8027" || dev.Code == "8087" || dev.Code == "8093" || dev.Code == "8312";
}
}
}