using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using Pcb.Common.Config;
using Pcb.Domain;
namespace Pcb.Common
{
///
/// PCB生产帮助类
///
public class PcbProductHeper
{
#region 工序是否允许过序列表
///
/// 生产协同工厂流程中哪些工序允许过序列表:0,1,0,0,0,1,0 (0允许1不允许)
///
///
///
///
public static string GetIsFlowList(string StepKeys, int JoinFactoryId)
{
LogHelper.Info(StepKeys + ":" + JoinFactoryId);
if (!string.IsNullOrEmpty(StepKeys))
{
var keys = GetIsFlowList(StepKeys.Split(','), JoinFactoryId);
return keys;
}
return string.Empty;
}
///
/// 生产协同工厂流程中哪些工序允许过序列表:0,1,0,0,0,1,0 (0允许1不允许)
///
///
///
///
public static string GetIsFlowList(IEnumerable StepKeys, int JoinFactoryId)
{
if (JoinFactoryId == 0) { return string.Empty; }
var cfgs = PcbQutoConfigHeler.GetFactoryTypes();
var cfg = cfgs._GetValue("JoinFactory");
if (cfg == null) { return string.Empty; }
var value = cfg._GetValue(JoinFactoryId.ToString());
if (string.IsNullOrEmpty(value)) { return string.Empty; }
var allowkeys = value.Split(',')._ToHashSet(t => t);
var lstisflows = new List();
foreach (var key in StepKeys)
{
if (string.IsNullOrEmpty(key)) { continue; }
lstisflows.Add(allowkeys.Contains(key) ? 0 : 1);
}
var isflows = string.Join(",", lstisflows);
return isflows;
}
#endregion
///
/// 更新拼版信息(包括片数、面积等)
///
///
public static List CalcPinBanInfo(List Models)
{
Models.ForEach(x =>
{
//x.Num = ControlCardManage.GetActualNum(x);
if (x.BoardType != "set")
{
int[] array = Array.ConvertAll(x.PinBanType.Split('x'), s => int.Parse(s));
int pinbannum = array[0] * array[1];
x.Num = Math.Ceiling(Convert.ToDecimal(x.Num) / Convert.ToDecimal(pinbannum)).ToInt2();
}
x.DeliveryDate = x.DeliveryDate.AddDays(-1);
if (x.OrderNo.Contains("ALL"))
{
x.OrderNoType = 2;
}
else
{
x.OrderNoType = 1;
}
if (x.DeliveryDays == 1 && x.OrderType == 2)
{
x.OrderType = 1;
}
if (x.BoardArea == null)
{
x.BoardArea = (x.BoardWidth * x.BoardHeight * x.Num / 1000000).ToDecimal2();
}
});
return Models;
}
}
}