锐腾搅拌上料功能
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

405 lines
18 KiB

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Base.Config.AppConfig;
namespace ICSSoft.Frame.Data.DAL
{
public class ICSLOTONWIPDetailDAL
{
//public class OrdinalComparer : System.Collections.Generic.IComparer<String>
//{
// public int Compare(DateTime x, DateTime y)
// {
// return DateTime.Compare(x, y);
// }
//}
public static void Suspend(string dsconn, ICSLOTONWIPDetail wipDetailInfo)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region 更新ICSLOTONWIPDetail表状态
//bool isnew=false;
//var wipDetailline = db.ICSLOTONWIPDetail.OrderByDescending(a => a.MTIME)
// .FirstOrDefault(a => a.LOTNO == wipDetailInfo.LOTNO
// && a.ROUTECODE == wipDetailInfo.ROUTECODE
// && a.OPCODE == wipDetailInfo.OPCODE
// && a.MUSER == wipDetailInfo.MUSER
// && a.CollectStatus != "COLLECT_BEGIN"
// && a.WorkPoint == wipDetailInfo.WorkPoint);
//if (wipDetailline == null)
//{
// isnew = true;
// wipDetailline == new ICSLOTONWIPDetail();
// wipDetailline.ID = wipDetailInfo.ID;
//}
//wipDetailline.AutoStatus = wipDetailInfo.AutoStatus;
//wipDetailline.BeginDateTime = wipDetailInfo.BeginDateTime;
//wipDetailline.CollectStatus = wipDetailInfo.CollectStatus;
//wipDetailline.DeptNo = wipDetailInfo.DeptNo;
//wipDetailline.EATTRIBUTE1 = wipDetailInfo.EATTRIBUTE1;
//wipDetailline.ECCode = wipDetailInfo.ECCode;
//wipDetailline.ECDesc = wipDetailInfo.ECDesc;
//wipDetailline.EndDateTime = wipDetailInfo.EndDateTime;
//wipDetailline.ITEMCODE = wipDetailInfo.ITEMCODE;
//wipDetailline.LOTNO = wipDetailInfo.LOTNO;
//wipDetailline.LOTSEQ = wipDetailInfo.LOTSEQ;
//wipDetailline.MTIME = wipDetailInfo.MTIME;
//wipDetailline.MUSER = wipDetailInfo.MUSER;
//wipDetailline.MUSERName = wipDetailInfo.MUSERName;
//wipDetailline.OPCODE = wipDetailInfo.OPCODE;
//wipDetailline.ROUTECODE = wipDetailInfo.ROUTECODE;
//wipDetailline.Status = wipDetailInfo.Status;
//wipDetailline.TransNO = wipDetailInfo.TransNO;
//wipDetailline.Type = wipDetailInfo.Type;
//wipDetailline.WorkCenter = wipDetailInfo.WorkCenter;
//wipDetailline.WorkPoint = wipDetailInfo.WorkPoint;
//if (isnew)
//{
// db.ICSLOTONWIPDetail.InsertOnSubmit(line);
//}
var line = db.ICSLOTONWIPDetail.FirstOrDefault(a => a.ID == wipDetailInfo.ID);
if (line == null)
{
throw new Exception(wipDetailInfo.ID + "已被删除!");
}
line.CollectStatus = wipDetailInfo.CollectStatus;
line.Status = "更新";
db.SubmitChanges();
#endregion
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static void Suspend(ICSLOTONWIPDetail wipDetailInfo, ICSLOTPAUSE ztinfo, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region ICSLOTONWIPDetail表
var wipDetailLine = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == wipDetailInfo.ID);
if (wipDetailLine == null)
{
throw new Exception("工序采集记录子表数据错误,本次开工记录不存在,暂停失败!");
}
wipDetailLine.CollectStatus = wipDetailInfo.CollectStatus;
db.SubmitChanges();
#endregion
#region ICSLOTPAUSE表
int notFinish = db.ICSLOTPAUSE.Where(a => a.WIPDetailID == wipDetailInfo.ID && a.BeginTime != null && a.EndTime == null).Count();
if (notFinish > 0)
{
throw new Exception("上次暂停还未结束,你的账号是否在多处登录报工界面并对同一[跟踪单-工序]进行操作?请退出所有此[跟踪单-工序]的报工,重新登陆");
}
int seq = db.ICSLOTPAUSE.Where(a => a.LOTNO == ztinfo.LOTNO
&& a.ROUTECODE == ztinfo.ROUTECODE
&& a.OPCODE == ztinfo.OPCODE
&& a.MUSER == ztinfo.MUSER
&& a.WorkPoint == ztinfo.WorkPoint).Count();
ztinfo.SEQ = seq + 1;//暂停纪录序号
db.ICSLOTPAUSE.InsertOnSubmit(ztinfo);
db.SubmitChanges();
#endregion
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static void Continue(string ID_wipDetail, string ID_PAUSE, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region ICSLOTONWIPDetail表
var wipDetailLine = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == ID_wipDetail);
if (wipDetailLine == null)
{
throw new Exception("工序采集记录子表数据错误,本次开工记录不存在,[取消暂停]失败!");
}
wipDetailLine.CollectStatus = "COLLECT_BEGIN";
db.SubmitChanges();
#endregion
#region ICSLOTPAUSE表
var ztline = db.ICSLOTPAUSE.SingleOrDefault(a => a.ID == ID_PAUSE);
if (ztline == null)
{
throw new Exception("暂停表数据获取错误,本次暂停记录不存在,[取消暂停]失败!");
}
if (ztline.EndTime != null)
{
throw new Exception("本次暂停已结束,你的账号是否在多处登录报工界面并对同一[跟踪单-工序]进行操作?请退出所有此[跟踪单-工序]的报工,重新登陆");
}
ztline.EndTime = DateTime.Now;
db.SubmitChanges();
#endregion
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static void EndUserOP(ICSLOTONWIP onwip, ICSLOTONWIPDetail detail, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region ICSLOTONWIP表
var lineOnwip = db.ICSLOTONWIP.SingleOrDefault(a => a.LOTNO == onwip.LOTNO && a.OPCODE == onwip.OPCODE && a.WorkPoint == onwip.WorkPoint);
if (lineOnwip == null)
{
throw new Exception("跟踪单-工序状态数据获取错误,[完工]失败!");
}
lineOnwip.ACTION = onwip.ACTION;
lineOnwip.GOODQTY = onwip.GOODQTY;
lineOnwip.NGQTY = onwip.NGQTY;
db.SubmitChanges();
#endregion
#region ICSLOTONWIPDetail表
var lineWipDetail = db.ICSLOTONWIPDetail.SingleOrDefault(a => a.ID == detail.ID);
if (lineWipDetail == null)
{
throw new Exception("跟踪单-工序子表数据错误,[完工]失败!");
}
lineWipDetail.OKQty = detail.OKQty;
lineWipDetail.NGQty = detail.NGQty;
lineWipDetail.EndDateTime = DateTime.Now;
lineWipDetail.CollectStatus = detail.CollectStatus;
lineWipDetail.SEGCODE = detail.SEGCODE;
lineWipDetail.SGroup = detail.SGroup;
db.SubmitChanges();
#endregion
#region ICSLOTSIMULATION表
var lineSim = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == onwip.LOTNO && a.WorkPoint == onwip.WorkPoint);
if (lineSim == null)
{
throw new Exception("跟踪单状态数据获取错误,[完工]失败!");
}
if (lineOnwip.EATTRIBUTE1 == "串行")
{
lineSim.GOODQTY = lineOnwip.GOODQTY;
}
if (detail.NGQty > 0)
{
lineSim.LACTION = "NG";
lineSim.PRODUCTSTATUS = "NG";
lineSim.ACTIONLIST = "NG";
}
db.SubmitChanges();
#endregion
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static int QueryAllOPUserState(string lot, string route, string op, string workpoint, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
try
{
var wipDetailLine = db.ICSLOTONWIPDetail.Select(a => a.LOTNO == lot && a.ROUTECODE == route && a.OPCODE == op && a.WorkPoint == workpoint);
return wipDetailLine.Count();
}
catch (Exception ex)
{
throw ex;
}
}
public static void ReStart(ICSLOTONWIPDetail detail, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
db.ICSLOTONWIPDetail.InsertOnSubmit(detail);
db.SubmitChanges();
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
public static void CollectOPStart(ICSLOTSIMULATION siminfo, ICSLOTONWIP wipinfo, ICSLOTONWIPDetail wipDetailInfo, string dsconn)
{
FramDataContext db = new FramDataContext(dsconn);
db.Connection.Open();
db.Transaction = db.Connection.BeginTransaction();
try
{
#region ICSLOTSIMULATION表
if (siminfo != null)
{
//var simline = new ICSLOTSIMULATION();
//simline.ID = siminfo.ID;
//simline.LOTNO = siminfo.LOTNO;
//simline.LOTSEQ = siminfo.LOTSEQ;
//simline.LOTQTY = siminfo.LOTQTY;
//simline.MOSEQ = siminfo.MOSEQ;
//simline.MOCODE = siminfo.MOCODE;
//simline.GOODQTY = siminfo.GOODQTY;
//simline.NGQTY = siminfo.NGQTY;
//simline.LOTStatus = siminfo.LOTStatus;
//simline.MODELCODE = siminfo.MODELCODE;
//simline.ITEMCODE = siminfo.ITEMCODE;
//simline.ROUTECODE = siminfo.ROUTECODE;
//simline.OPCODE = siminfo.OPCODE;
//simline.EQPCODE = siminfo.EQPCODE;
//simline.PRODUCTSTATUS = siminfo.PRODUCTSTATUS;
//simline.LACTION = siminfo.LACTION;
//simline.ACTIONLIST = siminfo.ACTIONLIST;
//simline.NGTIMES = siminfo.NGTIMES;
//simline.ISCOM = siminfo.ISCOM;
//simline.ISHOLD = siminfo.ISHOLD;
//simline.CollectStatus = siminfo.CollectStatus;
//simline.BeginTime = siminfo.BeginTime;
//simline.EndTime = siminfo.EndTime;
//simline.MUSER = siminfo.MUSER;
//simline.MUSERName = siminfo.MUSERName;
//simline.MTIME = siminfo.MTIME;
//simline.WorkPoint = siminfo.WorkPoint;
//simline.OPList = siminfo.OPList;
//simline.OPListAttr = siminfo.OPListAttr;
//simline.EATTRIBUTE1 = siminfo.EATTRIBUTE1;
//simline.EATTRIBUTE2 = siminfo.EATTRIBUTE2;
db.ICSLOTSIMULATION.InsertOnSubmit(siminfo);
db.SubmitChanges();
}
#endregion
#region ICSLOTONWIP表
if (wipinfo != null)
{
//var wipline = new ICSLOTONWIP();
//wipline.ID = wipinfo.ID;
//wipline.LOTNO = wipinfo.LOTNO;
//wipline.LOTSEQ = wipinfo.LOTSEQ;
//wipline.MOCODE = wipinfo.MOCODE;
//wipline.MODELCODE = wipinfo.MODELCODE;
//wipline.ITEMCODE = wipinfo.ITEMCODE; ;
//wipline.ROUTECODE = wipinfo.ROUTECODE;
//wipline.OPCODE = wipinfo.OPCODE;
//wipline.EQPCODE = wipinfo.EQPCODE;
//wipline.SHIFTTYPECODE = wipinfo.SHIFTTYPECODE;
//wipline.ACTION = wipinfo.ACTION;
//wipline.ACTIONRESULT = wipinfo.ACTIONRESULT;
//wipline.NGTIMES = wipinfo.NGTIMES;
//wipline.MOSEQ = wipinfo.MOSEQ;
//wipline.Processed = wipinfo.Processed;
//wipline.LOTQTY = wipinfo.LOTQTY;
//wipline.GOODQTY = wipinfo.GOODQTY;
//wipline.NGQTY = wipinfo.NGQTY;
//wipline.UserCodeBegin = wipinfo.UserCodeBegin;
//wipline.UserCodeEnd = wipinfo.UserCodeEnd;
//wipline.BeginTime = wipinfo.BeginTime;
//wipline.EndTime = wipinfo.EndTime;
//wipline.MUSER = wipinfo.MUSER;
//wipline.MUSERName = wipinfo.MUSERName;
//wipline.MTIME = wipinfo.MTIME;
//wipline.WorkPoint = wipinfo.WorkPoint;
//wipline.EATTRIBUTE1 = wipinfo.EATTRIBUTE1;
var lineSim = db.ICSLOTSIMULATION.SingleOrDefault(a => a.LOTNO == wipinfo.LOTNO && a.LOTSEQ == wipinfo.LOTSEQ && a.WorkPoint == wipinfo.WorkPoint);
if (lineSim.OPListAttr == "并行" && wipinfo.EATTRIBUTE1 == "并行")
{
lineSim.OPList += ("," + wipinfo.OPSEQ.ToString());
}
else
{
lineSim.OPList = wipinfo.OPSEQ.ToString();
lineSim.OPListAttr = wipinfo.EATTRIBUTE1;
}
lineSim.LOTQTY = Convert.ToDecimal(wipinfo.LOTQTY);
db.SubmitChanges();
db.ICSLOTONWIP.InsertOnSubmit(wipinfo);
db.SubmitChanges();
}
#endregion
#region ICSLOTONWIPDetail表
if (wipDetailInfo != null)
{
//ICSLOTONWIPDetail wipDetailline = new ICSLOTONWIPDetail();
//wipDetailline.AutoStatus = wipDetailInfo.AutoStatus;
//wipDetailline.BeginDateTime = wipDetailInfo.BeginDateTime;
//wipDetailline.CollectStatus = wipDetailInfo.CollectStatus;
//wipDetailline.DeptNo = wipDetailInfo.DeptNo;
//wipDetailline.EATTRIBUTE1 = wipDetailInfo.EATTRIBUTE1;
//wipDetailline.ECCode = wipDetailInfo.ECCode;
//wipDetailline.ECDesc = wipDetailInfo.ECDesc;
//wipDetailline.EndDateTime = wipDetailInfo.EndDateTime;
//wipDetailline.ID = wipDetailInfo.ID;
//wipDetailline.ITEMCODE = wipDetailInfo.ITEMCODE;
//wipDetailline.LOTNO = wipDetailInfo.LOTNO;
//wipDetailline.LOTSEQ = wipDetailInfo.LOTSEQ;
//wipDetailline.MTIME = wipDetailInfo.MTIME;
//wipDetailline.MUSER = wipDetailInfo.MUSER;
//wipDetailline.MUSERName = wipDetailInfo.MUSERName;
//wipDetailline.OPCODE = wipDetailInfo.OPCODE;
//wipDetailline.ROUTECODE = wipDetailInfo.ROUTECODE;
//wipDetailline.Status = wipDetailInfo.Status;
//wipDetailline.TransNO = wipDetailInfo.TransNO;
//wipDetailline.EQPCode = wipDetailInfo.EQPCode;
//wipDetailline.EQPDesc = wipDetailInfo.EQPDesc;
//wipDetailline.Type = wipDetailInfo.Type;
//wipDetailline.WorkCenter = wipDetailInfo.WorkCenter;
//wipDetailline.WorkPoint = wipDetailInfo.WorkPoint;
db.ICSLOTONWIPDetail.InsertOnSubmit(wipDetailInfo);
db.SubmitChanges();
}
#endregion
db.Transaction.Commit();
}
catch (Exception ex)
{
db.Transaction.Rollback();
throw ex;
}
}
}
}