华恒Mes鼎捷代码
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.

805 lines
31 KiB

using System;
using System.Collections;
using System.Reflection;
using System.Runtime.Remoting;
using System.Text.RegularExpressions;
using System.Linq;
using System.Data.Linq;
using System.Xml;
using System.IO;
using ICSSoft.Base.Config.AppConfig;
using System.Collections.Specialized;
using ICSSoft.Frame.Data.Entity;
using ICSSoft.Frame.DataConnect.Action;
using System.Data;
using ICSSoft.Frame.DataCollect;
using ICSSoft.Frame.Data.BLL;
using ICSSoft.Frame.Helper;
using System.Collections.Generic;
namespace ICSSoft.Frame.DataConnect
{
public class ICSQuery
{
private FramDataContext _domainDataProvider = null;
public ICSQuery(FramDataContext domainDataProvider)
{
this._domainDataProvider = domainDataProvider;
}
public FramDataContext DataProvider
{
get
{
return _domainDataProvider;
}
}
//获取未做过产量计算的最小序列号
public int GetMinSerialNotProcessed()
{
string sql = @"select MIN(Serial)
from ICSONWIP
WHERE processed='0'";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
if (objs == null || objs.Count < 1)
return 0;
else
return objs[0].Serial;
}
public List<ICSONWIP> GetWIPDataList(int i_Seq)
{
string sql = @"select distinct RCARD, MOCODE,RCARDSEQ
from ICSONWIP
where processed='0'and serial='" + i_Seq + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return (List<ICSONWIP>)objs;
}
public ICSONWIP GetWIPData(string rcard, string mocode, string rcardseq)
{
string sql = @"select RCARD, RCARDSEQ, MOCODE, MODELCODE, ITEMCODE, ROUTECODE, OPCODE,
SEGCODE, SSCODE, RESCODE, SHIFTTYPECODE, SHIFTCODE, TPCODE, SHIFTDAY,'
ACTION, ACTIONRESULT, NGTIMES, EATTRIBUTE1, Serial
from ICSONWIP
where RCARD='" + rcard + "' and MOCODE='" + mocode + "' and RCARDSEQ< ='" + rcardseq + "' ORDER BY RCARDSEQ DESC";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return (ICSONWIP)objs[0];
}
//MainProcess
public void MainProcess(List<ICSONWIP> onwiplist)
{
int LastMESEntitySerial;
int MESEntitySerial;
string OPControl;
string ActionList;
bool First;
bool AllGOOD;
bool AllGoodPerOP;
string OPLastResult;
string OPLastAttribute;
string OPLastResultForGood;
string OPLastAttributeForGood;
bool FirstWithLine;
bool AllGoodInLine;
bool AllGoodInLinePerOP;
ICSONWIP LastONWIPData;
ICSONWIP onwip;
ICSMESEntityList LastMESEntity;
ICSMESEntityList MESEntity;
ICSRPTSOQTY RPTSOQTY;
ICSRPTSOQTY LastRPTSOQTY;
ICSRPTLINEQTY RPTLINEQTY; ;
ICSRPTLINEQTY LastRPTLINEQTY; ;
ICSRPTOPQTY RPTOPQTY; ;
onwip = onwiplist[0];
MESEntity = new ICSMESEntityList();
MESEntity.BIGSSCODE = "";
MESEntity.MODELCODE = onwip.MODELCODE;
MESEntity.OPCODE = onwip.OPCODE;
MESEntity.SEGCODE = onwip.SEGCODE;
MESEntity.SSCODE = onwip.SSCODE;
MESEntity.RESCODE = onwip.RESCODE;
MESEntity.SHIFTTYPECODE = onwip.SHIFTTYPECODE;
MESEntity.SHIFTCODE = onwip.SHIFTCODE;
MESEntity.TPCODE = onwip.TPCODE;
MESEntity.FACCODE = GetFactoryCode(onwip.SEGCODE);
MESEntity.WorkPoint = AppConfig.WorkPointCode;
MESEntity.EATTRIBUTE1 = "";
string sql = @"select SEARIL from ICSMESEntityList
where BIGSSCODE = '" + MESEntity.BIGSSCODE + "'";
sql += "AND MODELCODE = '" + MESEntity.MODELCODE + "'";
sql += "AND OPCODE = '" + MESEntity.OPCODE + "'";
sql += "AND SEGCODE = '" + MESEntity.SEGCODE + "'";
sql += "AND SSCODE = '" + MESEntity.SSCODE + "'";
sql += "AND RESCODE = '" + MESEntity.RESCODE + "'";
sql += "AND SHIFTTYPECODE = '" + MESEntity.SHIFTTYPECODE + "'";
sql += "AND SHIFTCODE = '" + MESEntity.SHIFTCODE + "'";
sql += "AND TPCODE = '" + MESEntity.TPCODE + "'";
sql += "AND FACCODE = '" + MESEntity.FACCODE + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSMESEntityList>(sql).ToList();
if (objs == null || objs.Count < 1)
{
MESEntitySerial = 0;
this._domainDataProvider.ICSMESEntityList.InsertOnSubmit(objs[0]);
}
else
{
return;
}
AllGOOD = true;
AllGoodPerOP = true;
First = true;
OPLastResult = "";
OPLastAttribute = "";
OPLastResultForGood = "";
OPLastAttributeForGood = "";
FirstWithLine = true;
AllGoodInLine = true;
AllGoodInLinePerOP = true;
if (onwiplist.Count > 1)
{
for (int i = 1; i < onwiplist.Count; i++)
{
if ((onwiplist[i].OPCODE == onwip.OPCODE) && (onwiplist[i].MOCODE == onwip.MOCODE))
{
First = false;
if (onwiplist[i].ACTIONRESULT != "GOOD")
{
AllGoodPerOP = false;
}
if (OPLastResultForGood == "" || OPLastResultForGood == "")
{
OPLastResultForGood = onwiplist[i].ACTIONRESULT;
OPLastAttributeForGood = onwiplist[i].EATTRIBUTE1;
}
}
if (onwiplist[i].ACTIONRESULT != "GOOD")
{
AllGOOD = false;
}
if (onwiplist[i].MOCODE == onwip.MOCODE && onwiplist[i].SSCODE == onwip.SSCODE)
{
if (onwiplist[i].OPCODE == onwip.OPCODE)
{
FirstWithLine = false;
if (onwiplist[i].ACTIONRESULT != "GOOD")
{
AllGoodInLinePerOP = false;
}
}
if (onwiplist[i].ACTIONRESULT != "GOOD")
{
AllGoodInLine = false;
}
}
}
//Last record
if(onwiplist[1].MOCODE==onwip.MOCODE && onwiplist[1].OPCODE== onwip.OPCODE)
{
OPLastResult =onwiplist[1].ACTIONRESULT;
OPLastAttribute = onwiplist[1].EATTRIBUTE1;
}
}
// Get OPControl
OPControl = GetOPControl(onwip.ITEMCODE,onwip.ROUTECODE,onwip.OPCODE);
//Get SO Qty Report Entity
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(RPTSOQTY.ICSMESEntityList_serial==0)
{
RPTSOQTY.MOCODE=onwip.MOCODE;
RPTSOQTY.SHIFTDAY=Convert.ToInt32(onwip.SHIFTDAY);
RPTSOQTY.ITEMCODE =onwip.ITEMCODE;
RPTSOQTY.ICSMESEntityList_serial=MESEntitySerial;
//v_RPTSOQTY.addnew();
}
// Calculate qty
//RPTSOQTY.moinputcount OK
if( onwip.ACTION=="GOMO" && onwip.RCARDSEQ==1)
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
RPTSOQTY.MOInputCount= RPTSOQTY.MOInputCount + 1;
UpdateRPTSOQTY(RPTSOQTY);
}
//v_RPTSOQTY.mooutputcount OK
if(IsItemRouteLastOP(onwip.ITEMCODE,onwip.ROUTECODE ,onwip.OPCODE) == true)
{
if(onwip.ACTIONRESULT=="GOOD")
{
if(onwip.EATTRIBUTE1 == "GOOD")
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(First)
{
RPTSOQTY.MOOutputCount=RPTSOQTY.MOOutputCount + 1;
if(AllGOOD)
{
RPTSOQTY.MOWhiteCardCount= RPTSOQTY.MOWhiteCardCount + 1;
}
else if(OPLastResultForGood !="GOOD")
{
RPTSOQTY.MOOutputCount= RPTSOQTY.MOOutputCount + 1;
}
else if(OPLastAttributeForGood!="GOOD")
{
RPTSOQTY.MOOutputCount= RPTSOQTY.MOOutputCount + 1;
//解决最后一个工序有多个action时工单白卡数不更新的问题
if(AllGOOD)
{
RPTSOQTY.MOWhiteCardCount= RPTSOQTY.MOWhiteCardCount + 1;
}
}
}
}
UpdateRPTSOQTY(RPTSOQTY);
}
}
if(First =false && OPLastResult == "GOOD" && OPLastAttribute == "GOOD")
{
LastONWIPData=onwiplist[1];
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),LastMESEntitySerial);
if(LastRPTSOQTY.ICSMESEntityList_serial!= 0 )
{
LastRPTSOQTY.MOOutputCount= LastRPTSOQTY.MOOutputCount - 1;
if(AllGOOD)
{
LastRPTSOQTY.MOOutputWhiteCardCount= LastRPTSOQTY.MOOutputWhiteCardCount - 1;
}
UpdateRPTSOQTY(LastRPTSOQTY);
}
}
// END IF;
//END IF;
//RPTSOQTY.molineoutputcount
if( OPControl.Substring(16, 1) == "1")
{
if(onwip.ACTIONRESULT == "GOOD")
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(First)
{
RPTSOQTY.MOLineOutputCount= RPTSOQTY.MOLineOutputCount + 1;
if(AllGOOD)
{
RPTSOQTY.MOOutputWhiteCardCount= RPTSOQTY.MOOutputWhiteCardCount + 1;
}
else if(OPLastResultForGood!="GOOD")
{
RPTSOQTY.MOLineOutputCount= RPTSOQTY.MOLineOutputCount + 1;
}
}
UpdateRPTSOQTY(RPTSOQTY);
if(!First && OPLastResult == "GOOD")
{
//last record.molineoutputcount - 1
LastONWIPData =onwiplist[1];
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(LastRPTSOQTY.ICSMESEntityList_serial != 0 )
{
LastRPTSOQTY.MOLineOutputCount= LastRPTSOQTY.MOLineOutputCount - 1;
if (AllGOOD)
{
LastRPTSOQTY.MOOutputCount= LastRPTSOQTY.MOOutputCount - 1;
}
UpdateRPTSOQTY(LastRPTSOQTY);
}
}
}
}
//RPTSOQTY.lineinputcount, MidInput OK
if(OPControl.Substring(1,1)=="1" && First==true)
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE ,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
RPTSOQTY.LineInputCount = RPTSOQTY.LineInputCount + 1;
UpdateRPTSOQTY(RPTSOQTY);
}
//RPTSOQTY.lineoutputcount, MidOutput
if(OPControl.Substring(11,1)=="1")
{
if(onwip.ACTIONRESULT=="GOOD")
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(First)
{
RPTSOQTY.LineInputCount= RPTSOQTY.LineInputCount + 1;
if(OPLastResultForGood!="GOOD")
{
RPTSOQTY.LineOutputCount= RPTSOQTY.LineOutputCount + 1;
}
}
UpdateRPTSOQTY(RPTSOQTY);
if(!First && OPLastResult =="GOOD")
{
//last record.mooutputwhitecardcount - 1
LastONWIPData = onwiplist[1];
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTSOQTY = GetRPTSOQTY(LastONWIPData.MOCODE,LastONWIPData.ITEMCODE, Convert.ToInt32(LastONWIPData.SHIFTDAY),LastMESEntitySerial);
if(LastRPTSOQTY.ICSMESEntityList_serial !=0)
{
LastRPTSOQTY.LineOutputCount= LastRPTSOQTY.LineOutputCount - 1;
UpdateRPTSOQTY(LastRPTSOQTY);
}
}
}
}
//RPTSOQTY.opcount
if(onwip.ACTIONRESULT=="GOOD")
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(First)
{
RPTSOQTY.OpCount= RPTSOQTY.OpCount + 1;
if( OPLastResultForGood !="GOOD")
{ RPTSOQTY.OpCount= RPTSOQTY.OpCount + 1;
}
}
UpdateRPTSOQTY(RPTSOQTY);
if( !First && OPLastResult =="GOOD")
{
LastONWIPData = onwiplist[1];
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTSOQTY = GetRPTSOQTY(LastONWIPData.MOCODE,LastONWIPData.ITEMCODE,Convert.ToInt32(LastONWIPData.SHIFTDAY),LastMESEntitySerial);
if(LastRPTSOQTY.ICSMESEntityList_serial!=0)
{
LastRPTSOQTY.OpCount=LastRPTSOQTY.OpCount - 1;
UpdateRPTSOQTY(LastRPTSOQTY);
}
}
}
//v_RPTSOQTY.opwhitecardcount
if(AllGOOD)
{
if(onwip.ACTIONRESULT=="GOOD")
{
if(First)
{
RPTSOQTY = GetRPTSOQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
RPTSOQTY.OpWhiteCardCount= RPTSOQTY.OpWhiteCardCount + 1;
UpdateRPTSOQTY(RPTSOQTY);
}
else if(!First && AllGoodPerOP)
{
LastONWIPData = onwiplist[1];
if(LastONWIPData.OPCODE == onwip.OPCODE)
{
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTSOQTY = GetRPTSOQTY(LastONWIPData.MOCODE,LastONWIPData.ITEMCODE,Convert.ToInt32(LastONWIPData.SHIFTDAY),LastMESEntitySerial);
if(LastRPTSOQTY.ICSMESEntityList_serial!=0)
{
LastRPTSOQTY.OpWhiteCardCount= LastRPTSOQTY.OpWhiteCardCount - 1;
UpdateRPTSOQTY(LastRPTSOQTY);
}
}
}
}
}
//Step6 : Get Line Qty Report Entity
RPTLINEQTY = GetRPTLINEQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(RPTLINEQTY.ICSMESEntityList_serial== 0)
{
RPTLINEQTY.MOCODE=onwip.MOCODE;
RPTLINEQTY.SHIFTDAY=Convert.ToInt32(onwip.SHIFTDAY);
RPTLINEQTY.ITEMCODE= onwip.ITEMCODE;
RPTLINEQTY.ICSMESEntityList_serial= MESEntitySerial;
//RPTLINEQTY.addnew();
}
//Calculate Qty
//RPTLINEQTY.linewhitecardcount, MidOutput
if(OPControl.Substring(11,1)=="1")
{
if(onwip.ACTIONRESULT=="GOOD")
{
if(FirstWithLine && AllGoodInLine)
{
RPTLINEQTY = GetRPTLINEQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY), MESEntitySerial);
RPTLINEQTY.LineWhiteCardCount= RPTLINEQTY.LineWhiteCardCount + 1;
UpdateRPTLineQTY(RPTLINEQTY);
}
}
if(!FirstWithLine && AllGoodInLinePerOP)
{
LastONWIPData = onwiplist[1];
if(LastONWIPData.OPCODE==onwip.OPCODE && LastONWIPData.SSCODE==onwip.SSCODE)
{
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTLINEQTY = GetRPTLINEQTY(LastONWIPData.MOCODE,LastONWIPData.ITEMCODE,Convert.ToInt32(LastONWIPData.SHIFTDAY),LastMESEntitySerial);
if(LastRPTLINEQTY.ICSMESEntityList_serial!= 0)
{
LastRPTLINEQTY.LineWhiteCardCount= LastRPTLINEQTY.LineWhiteCardCount - 1;
UpdateRPTLineQTY(LastRPTLINEQTY);
}
}
};
}
//RPTLINEQTY.reswhitecardcount
if(AllGoodInLine)
{
if(onwip.ACTIONRESULT=="GOOD")
{
if(FirstWithLine)
{
RPTLINEQTY = GetRPTLINEQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
RPTLINEQTY.ResWhiteCardCount= RPTLINEQTY.ResWhiteCardCount + 1;
UpdateRPTLineQTY(RPTLINEQTY);
}
else if(FirstWithLine && AllGoodInLinePerOP)
{
LastONWIPData=onwiplist[1];
if(LastONWIPData.OPCODE == onwip.OPCODE && LastONWIPData.SSCODE == onwip.SSCODE)
{
LastMESEntitySerial = GetLastMESEntitySerial(LastONWIPData);
LastRPTLINEQTY = GetRPTLINEQTY(LastONWIPData.MOCODE, LastONWIPData.ITEMCODE, Convert.ToInt32(LastONWIPData.SHIFTDAY), LastMESEntitySerial);
if(LastRPTLINEQTY.ICSMESEntityList_serial!=0)
{
LastRPTLINEQTY.ResWhiteCardCount= LastRPTLINEQTY.ResWhiteCardCount - 1;
UpdateRPTLineQTY(LastRPTLINEQTY);
}
}
}
}
}
//Step7 : Get OP Qty Report Entity
RPTOPQTY = GetRPTOPQTY(onwip.MOCODE,onwip.ITEMCODE,Convert.ToInt32(onwip.SHIFTDAY),MESEntitySerial);
if(RPTOPQTY.ICSMESEntityList_serial== 0)
{
RPTOPQTY.MOCODE= onwip.MOCODE;
RPTOPQTY.SHIFTDAY =Convert.ToInt32(onwip.SHIFTDAY);
RPTOPQTY.ITEMCODE= onwip.ITEMCODE;
RPTOPQTY.ICSMESEntityList_serial= MESEntitySerial;
//RPTOPQTY.addnew();
}
// Calculate Qty
/*IF INSTR(v_ActionList, '|' || v_ONWIPData.action || '|') > 0 THEN
v_RPTOPQTY.inputtimes := v_RPTOPQTY.inputtimes + 1;
IF v_ONWIPData.actionresult = 'GOOD' THEN
v_RPTOPQTY.outputtimes := v_RPTOPQTY.outputtimes + 1;
END IF;
IF v_ONWIPData.actionresult = 'NG' THEN
v_RPTOPQTY.ngtimes := v_RPTOPQTY.ngtimes + 1;
END IF;
END IF;
*/
if(onwip.ACTIONRESULT == "GOOD")
{
if(First)
{
RPTOPQTY.INPUTTIMES= RPTOPQTY.INPUTTIMES + 1;
RPTOPQTY.OUTPUTTIMES= RPTOPQTY.OUTPUTTIMES + 1;
if( OPLastResultForGood!= "GOOD")
{
RPTOPQTY.INPUTTIMES= RPTOPQTY.INPUTTIMES + 1;
RPTOPQTY.OUTPUTTIMES= RPTOPQTY.OUTPUTTIMES+ 1;
}
}
else if(First)
{
RPTOPQTY.NGTIMES= RPTOPQTY.NGTIMES + 1;
RPTOPQTY.INPUTTIMES= RPTOPQTY.INPUTTIMES + 1;
if(OPLastResultForGood =="GOOD")
{
if(!AllGoodPerOP)
{
RPTOPQTY.NGTIMES= RPTOPQTY.NGTIMES + 1;
}
RPTOPQTY.OUTPUTTIMES= RPTOPQTY.OUTPUTTIMES - 1;
}
}
}
UpdateRPTOPQTY(RPTOPQTY);
}
//是否是产品途程的最后一道工序
public bool IsItemRouteLastOP(string itemcode, string routecode, string opcode)
{
string sql = @"select *
from ICSITEMROUTE2OP
where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and OPCODE ='" + opcode + "' and OPSEQ in (select MAX (OPSEQ) from ICSITEMROUTE2OP where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and OPCODE ='" + opcode + "' )";
var objs = this._domainDataProvider.ExecuteQuery<ICSITEMROUTE2OP>(sql).ToList();
if (objs == null || objs.Count < 1)
return false;
else
return true;
}
//获取最大MES实体组合表serial
public int GetLastMESEntitySerial(ICSONWIP LastONWIP)
{
ICSMESEntityList lastMESEntityList = new ICSMESEntityList();
lastMESEntityList.BIGSSCODE = "";
lastMESEntityList.MODELCODE = LastONWIP.MODELCODE;
lastMESEntityList.OPCODE = LastONWIP.OPCODE;
lastMESEntityList.SEGCODE = LastONWIP.SEGCODE;
lastMESEntityList.SSCODE = LastONWIP.SSCODE;
lastMESEntityList.RESCODE = LastONWIP.RESCODE;
lastMESEntityList.SHIFTTYPECODE = LastONWIP.SHIFTTYPECODE;
lastMESEntityList.SHIFTCODE = LastONWIP.SHIFTCODE;
lastMESEntityList.TPCODE = LastONWIP.TPCODE;
lastMESEntityList.FACCODE = GetFactoryCode(LastONWIP.SEGCODE);
lastMESEntityList.WorkPoint = AppConfig.WorkPointCode;
lastMESEntityList.EATTRIBUTE1 = "";
string sql = @"select SEARIL
from ICSMESEntityList
WHERE BIGSSCODE = '" + lastMESEntityList.BIGSSCODE + "'AND MODELCODE = '" + lastMESEntityList.MODELCODE + "'AND OPCODE = '" + lastMESEntityList.OPCODE + "'";
sql += "AND SEGCODE = '" + lastMESEntityList.SEGCODE + "'";
sql += "AND SSCODE = '" + lastMESEntityList.SSCODE + "'";
sql += "AND RESCODE = '" + lastMESEntityList.RESCODE + "'";
sql += "AND SHIFTTYPECODE = '" + lastMESEntityList.SHIFTTYPECODE + "'";
sql += "AND SHIFTCODE = '" + lastMESEntityList.SHIFTCODE + "'";
sql += "AND TPCODE = '" + lastMESEntityList.TPCODE + "'";
sql += "AND FACCODE = '" + lastMESEntityList.FACCODE + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSMESEntityList>(sql).ToList();
if (objs == null || objs.Count < 1)
return 0;
else
return objs[0].serial;
}
//根据车间代码查询工厂代码
public string GetFactoryCode(string segcode)
{
string sql = @"select a.FACCODE
from ICSFACTORY a
left join ICSSEG b on a.ID=b.FACID
where b.SEGCODE='" + segcode + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSFACTORY>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return objs[0].FACCODE;
}
//查询工序类型记录
public string GetOPControl(string itemcode, string routecode, string opcode)
{
string sql = @"select OPCONTROL
from ICSITEMROUTE2OP
where ITEMCODE='" + itemcode + "' and ROUTECODE='" + routecode + "' and OPCODE ='" + opcode + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSITEMROUTE2OP>(sql).ToList();
if (objs == null || objs.Count < 1)
{
string sql1 = @"select OPCONTROL
from ICSROUTE2OP
where ROUTECODE='" + routecode + "' and OPCODE ='" + opcode + "'";
var objs1 = this._domainDataProvider.ExecuteQuery<ICSROUTE2OP>(sql1).ToList();
if (objs1 == null || objs1.Count < 1)
{
string sql2 = @"select OPCONTROL
from ICSOP
where OPCODE ='" + opcode + "'";
var objs2 = this._domainDataProvider.ExecuteQuery<ICSOP>(sql2).ToList();
if (objs2 == null || objs2.Count < 1)
{
return null;
}
else
return objs2[0].OPCONTROL;
}
else
return objs1[0].OPCONTROL;
}
else
return objs[0].OPCONTROL;
}
//根据seq查找过账事件历史记录
public List<ICSONWIP> GetWIPDataList(string serial)
{
List<ICSONWIP> WIPList = new List<ICSONWIP>();
string sql = @"SELECT DISTINCT RCARD,MOCODE,RCARDSEQ
FROM ICSONWIP
WHERE Serial='" + serial + "' AND processed='0'";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
{
foreach (var obj in objs)
{
WIPList.Add(obj);
}
return WIPList;
}
}
//根据工单查询过账事件历史记录
public List<ICSONWIP> GetWIPDataListByMO(int serial, string mocode)
{
List<ICSONWIP> WIPList = new List<ICSONWIP>();
string sql=@"SELECT DISTINCT RCARD,MOCODE,RCARDSEQ
FROM ICSONWIP
WHERE Serial='"+serial+"' AND MOCODE='"+mocode+"'";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
{
foreach (var obj in objs)
{
WIPList.Add(obj);
}
return WIPList;
}
}
//根据生产订单号、存货编码、实体表serial、工作天查询统计个数
public ICSRPTSOQTY GetRPTSOQTY(string mocode, string itemcode, int shiftday, int serial)
{
string sql = @"select *
from ICSRPTSOQTY
where ITEMCODE='" + itemcode + "' and MOCODE='" + mocode + "' and SHIFTDAY ='" + shiftday + "' and SHIFTDAY ='" + shiftday + "' and ICSMESEntityList_serial='" + serial + "'";
var objs = this._domainDataProvider.ExecuteQuery<ICSRPTSOQTY>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return objs[0];
}
//更新ICSRPTSOQTY
public void UpdateRPTSOQTY(ICSRPTSOQTY soqty)
{
var line = this._domainDataProvider.ICSRPTSOQTY.SingleOrDefault(a => a.MOCODE == soqty.MOCODE && a.SHIFTDAY == soqty.SHIFTDAY && a.ITEMCODE == soqty.ITEMCODE && a.ICSMESEntityList_serial == soqty.ICSMESEntityList_serial);
if (line != null)
{
this._domainDataProvider.ICSRPTSOQTY.DeleteOnSubmit(line);
}
this._domainDataProvider.ICSRPTSOQTY.InsertOnSubmit(soqty);
}
//更新ICSRPTLINEQTY
public void UpdateRPTLineQTY(ICSRPTLINEQTY lineqty)
{
var line = this._domainDataProvider.ICSRPTLINEQTY.SingleOrDefault(a => a.MOCODE == lineqty.MOCODE && a.SHIFTDAY == lineqty.SHIFTDAY && a.ITEMCODE == lineqty.ITEMCODE && a.ICSMESEntityList_serial == lineqty.ICSMESEntityList_serial);
if (line != null)
{
this._domainDataProvider.ICSRPTLINEQTY.DeleteOnSubmit(line);
}
this._domainDataProvider.ICSRPTLINEQTY.InsertOnSubmit(lineqty);
}
//更新ICSRPTOPQTY
public void UpdateRPTOPQTY(ICSRPTOPQTY toqty)
{
var line = this._domainDataProvider.ICSRPTOPQTY.SingleOrDefault(a => a.MOCODE == toqty.MOCODE && a.SHIFTDAY == toqty.SHIFTDAY && a.ITEMCODE == toqty.ITEMCODE && a.ICSMESEntityList_serial == toqty.ICSMESEntityList_serial);
if (line != null)
{
this._domainDataProvider.ICSRPTOPQTY.DeleteOnSubmit(line);
}
this._domainDataProvider.ICSRPTOPQTY.InsertOnSubmit(toqty);
}
//根据工单查询报表数据
public void CollectReportDataByMO(string mocode)
{
int ProcessCounter = 0;
if (mocode == "")
{
return;
}
var line = this._domainDataProvider.ICSRPTSOQTY.Where(a => a.MOCODE == mocode);
this._domainDataProvider.ICSRPTSOQTY.DeleteAllOnSubmit(line);
var line2 = this._domainDataProvider.ICSRPTLINEQTY.Where(a => a.MOCODE == mocode);
this._domainDataProvider.ICSRPTLINEQTY.DeleteAllOnSubmit(line2);
var line3 = this._domainDataProvider.ICSRPTOPQTY.Where(a => a.MOCODE == mocode);
this._domainDataProvider.ICSRPTOPQTY.DeleteAllOnSubmit(line3);
string sql = @"select Serial from ICSONWIP where MOCODE='" + mocode + "' order by Serial asc";
var objs = this._domainDataProvider.ExecuteQuery<ICSONWIP>(sql).ToList();
for (int i = 0; i < objs.Count; i++)
{
List<ICSONWIP> onwiplist = GetWIPDataListByMO(objs[0].Serial, mocode);
if (onwiplist.Count > 0)
{
MainProcess(onwiplist);
ProcessCounter = ProcessCounter + 1;
}
}
}
//工单,产线和工序统计白卡数(MO,Line,OP)
public ICSRPTLINEQTY GetRPTLINEQTY(string mocode,string itemcode,int shiftday,int serial)
{
ICSRPTLINEQTY LINEQTY= new ICSRPTLINEQTY();
string sql=@" SELECT MOCODE,SHIFTDAY,ITEMCODE,
ICSMESENTITYLIST_SERIAL,LineWhiteCardCount,ResWhiteCardCount,EAttribute
FROM ICSRPTLINEQTY
WHERE MOCODE ='"+mocode+"' and SHIFTDAY='"+shiftday+"' and ITEMCODE='"+itemcode+"' and TBLMESENTITYLIST_SERIAL='"+serial+"'";
var objs = this._domainDataProvider.ExecuteQuery<ICSRPTLINEQTY>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return objs[0];
}
//根据工单号、产品料号、工作天、序列号查询次数报表(MO,OP)
public ICSRPTOPQTY GetRPTOPQTY(string mocode,string itemcode,int shiftday,int serial)
{
ICSRPTOPQTY OPQTY = new ICSRPTOPQTY();
string sql=@" SELECT *
FROM ICSRPTOPQTY
WHERE MOCODE ='"+mocode+"' and SHIFTDAY='"+shiftday+"' and ITEMCODE='"+itemcode+"' and TBLMESENTITYLIST_SERIAL='"+serial+"'";
var objs = this._domainDataProvider.ExecuteQuery<ICSRPTOPQTY>(sql).ToList();
if (objs == null || objs.Count < 1)
return null;
else
return objs[0];
}
}
}