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
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;
|
|
}
|
|
}
|
|
}
|
|
}
|