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