⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stockprocess.cpp

📁 这是一个工厂的生产线的仓库管理.有计划,实绩,库存等
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	strSQL=String::Concat(strSQL,S"					and a.stock_type='1'										");
	strSQL=String::Concat(strSQL,S"					and a.stock_qty<>0											");
	strSQL=String::Concat(strSQL,S"					AND a.LOT IS NOT NULL										");
	strSQL=String::Concat(strSQL,S"					AND b.stock_ymd IS NULL										");
	strSQL=String::Concat(strSQL,S"					group by b.lot,b.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S"					order by b.RESLUT_YMD,lot asc								");
	strSQL=String::Concat(strSQL,S"			) cc on																");
	strSQL=String::Concat(strSQL,S"					aa.lot=cc.lot												");
	strSQL=String::Concat(strSQL,S"					and aa.ymd=cc.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S" where																		");
	//如果移动实绩=生产实际就表示数量全部出掉,这条数据不进行显示

	strSQL=String::Concat(strSQL,S"   aa.stock_qty - nvl(cc.deliver_qty,0)<>0									");

	
	if (!DBTmp->blnCnnOpen()) {
		MessageBox::Show(S"Open Oracle Error!! ",S"lot");
		return false;
	}
	dRowTmp = DBTmp->dRowSQL_Select(strSQL);

	try
	{
		strTmp1=String::Format("{0:######}",dRowTmp->Item[S"STOCK_QTY"]);

		intstockqty=System::Int32::Parse(strTmp1);
		
		if ((strstockqty>intstockqty)==true)
		{
			return false;
		}
		else
		{
			return true;
		}
		
	}
	catch (...) {
		
		return false;

	}

	return true;

}


//返回批次号,采用先进先出(FiFo)
void FAP::StockProcess::strGetSplitLot1(int strstockqty,DBBase * DBTmp,String * strproductcode)
{
	String * strSQL;
	DataSet * dSetTmp ;
	DataTable * dTableTmp;

	int intstockqty;
	int intsumstockqty;
	String * sumstrPartChCode;
	String * strPartChCode;
	String * strTmp1;
	int inc;

	sumstrPartChCode=S"";

	intsumstockqty=strstockqty;

	strSQL=S"";
	strSQL=String::Concat(strSQL,S"  select aa.stock_qty - nvl(cc.deliver_qty,0) as STOCK_QTY,					");
	strSQL=String::Concat(strSQL,S"         aa.product_code,													");
	strSQL=String::Concat(strSQL,S"			aa.lot as lot,														");
	strSQL=String::Concat(strSQL,S"			aa.ymd	as ymd														");
	strSQL=String::Concat(strSQL,S" from																		");
	//查找生产实际的日期,按生产日期进行先进先出,但查出来的是生产实绩的数量

	strSQL=String::Concat(strSQL,S"			(Select																");
	strSQL=String::Concat(strSQL,S"						distinct												");
	//strSQL=String::Concat(strSQL,S"					b.product_QTY,												");
	strSQL=String::Concat(strSQL,S"					a.stock_qty,												");
	strSQL=String::Concat(strSQL,S"					a.product_code,												");
	strSQL=String::Concat(strSQL,S"					a.lot as lot,												");
	strSQL=String::Concat(strSQL,S"			nvl(to_char(b.YMD,'yyyymmdd'),'9999-12-31') as YMD					");
	//strSQL=String::Concat(strSQL,S"					b.YMD														");
	strSQL=String::Concat(strSQL,S"			from																");
	strSQL=String::Concat(strSQL,S"					stock_data a												");
	strSQL=String::Concat(strSQL,S"			left outer join product_result_data b on							");
	strSQL=String::Concat(strSQL,S"					a.lot=b.lot													");
	strSQL=String::Concat(strSQL,S"			where																");
	strSQL=String::Concat(strSQL,S"					a.product_code='",strproductcode,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_pos='",cboRespon->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type<>2 										");
	strSQL=String::Concat(strSQL,S"					and a.stock_qty<>0											");
	strSQL=String::Concat(strSQL,S"					AND a.LOT IS NOT NULL										");
	strSQL=String::Concat(strSQL,S"					order by b.YMD,lot asc										");
	strSQL=String::Concat(strSQL,S"			) aa																");
	strSQL=String::Concat(strSQL,S" left outer join																");
		//查找出库的移动实际(生产实际-移动实际=库存)
	strSQL=String::Concat(strSQL,S"			(																	");
	strSQL=String::Concat(strSQL,S"			select																");
	strSQL=String::Concat(strSQL,S"					sum(b.deliver_qty) as deliver_qty,							");
	strSQL=String::Concat(strSQL,S"					b.lot,														");
	strSQL=String::Concat(strSQL,S"				nvl(to_char(b.RESLUT_YMD,'yyyymmdd'),'9999-12-31') as RESLUT_YMD");
	//strSQL=String::Concat(strSQL,S"					b.RESLUT_YMD												");
	strSQL=String::Concat(strSQL,S"			from																");
	strSQL=String::Concat(strSQL,S"					stock_data a												");
	strSQL=String::Concat(strSQL,S"			left outer join deliver_data b on									");
	strSQL=String::Concat(strSQL,S"					a.lot=b.lot													");
	strSQL=String::Concat(strSQL,S"			where																");
	strSQL=String::Concat(strSQL,S"					a.product_code='",strproductcode,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_pos='",cboRespon->Text,S"'						");
	strSQL=String::Concat(strSQL,S"					and a.stock_type<>2 										");
	strSQL=String::Concat(strSQL,S"					and a.stock_qty<>0											");
	strSQL=String::Concat(strSQL,S"					AND a.LOT IS NOT NULL										");
	strSQL=String::Concat(strSQL,S"					AND b.stock_ymd IS NULL										");
	strSQL=String::Concat(strSQL,S"					group by b.lot,b.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S"					order by b.RESLUT_YMD,lot asc								");
	strSQL=String::Concat(strSQL,S"			) cc on																");
	strSQL=String::Concat(strSQL,S"					aa.lot=cc.lot												");
	strSQL=String::Concat(strSQL,S"					and aa.ymd=cc.RESLUT_YMD									");
	strSQL=String::Concat(strSQL,S" where																		");
	//如果移动实绩=生产实际就表示数量全部出掉,这条数据不进行显示

	strSQL=String::Concat(strSQL,S"   aa.stock_qty - nvl(cc.deliver_qty,0)<>0									");
	strSQL=String::Concat(strSQL,S" order by aa.ymd,aa.lot asc													");
 
	dSetTmp = DBTmp->dSetSQL_Select(strSQL,S"stock_data",0);

	dTableTmp = dSetTmp->Tables->Item[S"stock_data"];

	DBTmp->blnCnnClose();

	System::Collections::IEnumerator* emnFapRow = dTableTmp->Rows->GetEnumerator();

	emnFapRow->Reset();

	inc=0;

	saG_stock_qty = new String __gc * [8];

	saG_stock_ymd = new String __gc * [8];

	while (emnFapRow->MoveNext())
	{

		inc++;


		DataRow *dRowTmp = __try_cast<DataRow*>(emnFapRow->Current);

		strPartChCode=dRowTmp->Item[S"lot"]->ToString();

		strTmp1 = String::Format("{0:######}",dRowTmp->Item[S"STOCK_QTY"]);
		
		saG_stock_qty[inc-1]=strTmp1;

		saG_stock_ymd[inc-1]=String::Format("{0:yyyyMMdd}",dRowTmp->Item[S"ymd"]);

		intstockqty=System::Int32::Parse(strTmp1);

		intsumstockqty=intsumstockqty-intstockqty;

		if (intsumstockqty>0)
		{
			sumstrPartChCode=String::Concat(sumstrPartChCode,strPartChCode,S",");

			txtLot->Text = sumstrPartChCode;
			
			txtProCode->Text=Convert::ToString(intsumstockqty + (intsumstockqty * (-2)));
		}
		else
		{
			sumstrPartChCode=String::Concat(sumstrPartChCode,strPartChCode);
			
			txtLot->Text = sumstrPartChCode;
			
			txtProCode->Text=Convert::ToString(intsumstockqty + (intsumstockqty * (-2)));

			return ;
		}

		
	}
	return ;
}


void StockProcess::OutputExcel(void)
{
	System::Object			* oMissing;
	Excel::ApplicationClass	* pExcel;
	Excel::Workbook			* pWorkBook;
	Excel::Worksheet		* pActiveSheet;

	System::Object			* MissingValue;

	//Excel行

	int						 ERowi;
	//Excel列

	int						 EComi;	
	
	//Excel列

	int						 EComi1;

	//Excel列

	int						 EComi2;

	//Excel列

	int						 EComi3;

	//分割
	String *Stris=",";

	Char chars[]={','};

	String * strnum[];

	String *strlotnum;

	strlotnum=txtLot->Text->TrimEnd(Stris->ToCharArray());

	strnum=strlotnum->Split(chars);

	String * strlotnull;

	MissingValue=Type::Missing;

	String * strStock_qty;

	String * strStock_ymd;

	try {
		oMissing = System::Reflection::Missing::Value;

		pExcel = new Excel::ApplicationClass();
		pExcel->Visible = true;

		pWorkBook  = pExcel->Workbooks->Open(vstrDateTime,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue,MissingValue,MissingValue,
		MissingValue);

		
		//Worksheet Rename
		static_cast<Excel::Worksheet*>(pExcel->ActiveWorkbook->Sheets->Item[__box(1)])->Select(oMissing);
		pActiveSheet = static_cast<Excel::Worksheet*>(pExcel->ActiveSheet);
		pActiveSheet->Name = S"Test";

		//Cell Edit
//		static_cast<Excel::Range*>(pSheet1->Cells->get_Item(1,1))->Value2 = str; 

		pActiveSheet->Cells->set_Item(__box(3), __box(4), sFactory);

		pActiveSheet->Cells->set_Item(__box(2), __box(10),String::Format("{0:yyyyMMdd}",__box(DateTime::Now)));

		pActiveSheet->Cells->set_Item(__box(4), __box(4), S"报废");

		pActiveSheet->Cells->set_Item(__box(4), __box(7), cboRespon->Text);

		if (System::String::Equals(sLine,S"L001"))
		{		
			sLine=S"R";
		}
		else
		{
			sLine=S"V";
		}


		pActiveSheet->Cells->set_Item(__box(4), __box(10), sLine);

		ERowi=7;
		EComi=4;
		EComi1=7;
		EComi2=8;
		EComi3=10;

		for (int ix=0;ix<strnum->Length;ix++)
		{
			ERowi++;
			
			strlotnull=strnum[ix];

			//材料编码
			pActiveSheet->Cells->set_Item(__box(ERowi), __box(EComi), cmbProCode->Text);
			
			//批号
			pActiveSheet->Cells->set_Item(__box(ERowi), __box(EComi1), strlotnull);

			if (ix==strnum->Length - 1)
			{
				//数量
				strStock_qty=Convert::ToString(Int32::Parse(saG_stock_qty[ix])-(System::Int32::Parse(txtProCode->Text)));

				//strStock_qty=Convert::ToString(intGetStockNum(txtFromNo->Text,txtProCode->Text,DBDeliver,strlotnull,1) - (System::Int32::Parse(labnumber->Text)));
			}
			else
			{
				//数量
				strStock_qty=saG_stock_qty[ix];

				//strStock_qty=Convert::ToString(intGetStockNum(txtFromNo->Text,txtProCode->Text,DBDeliver,strlotnull,1));

			}

			strStock_ymd=saG_stock_ymd[ix];

			pActiveSheet->Cells->set_Item(__box(ERowi), __box(EComi2), strStock_qty);

			pActiveSheet->Cells->set_Item(__box(ERowi), __box(EComi3), strStock_ymd);

		}

		//WorkSheet Add

/*
		//Save File
		pWorkBook->Save();
*/
		//Quit Excel
   		//pWorkBook->Close(false, oMissing, oMissing);
   		System::Runtime::InteropServices::Marshal::ReleaseComObject(pWorkBook);
   		//pExcel->Quit();
	 	System::Runtime::InteropServices::Marshal::ReleaseComObject(pExcel);
   		GC::Collect();
   	}
   	catch(Exception* e)	{

		//	;
	}


}


String * StockProcess::reason_name(String * strreasonname,DBBase * dbTmp,int iLanguage)
{
	String * strSQL;
	DataRow * dRowTmp;
	String * strFdName;

	switch(iLanguage) {
	case FapLan_EN:
		strFdName = S"REASON_E";			
		break;
	case FapLan_JP:
		strFdName = S"REASON_J";
		break;
	case FapLan_CN:
		strFdName = S"REASON_C";
		break;
	default:
		strFdName = S"REASON_E";		
		}

	strSQL = S"";
	strSQL = String::Concat(strSQL,S" Select REASON_CODE from reason_mst where ",strFdName,S"='",strreasonname,S"'");


	if (!dbTmp->blnCnnOpen()) {
		MessageBox::Show(S"Open Oracle Error!! ",S"lot");
		return S"";
     }
	
	dRowTmp = dbTmp->dRowSQL_Select(strSQL);
	
	try
	{
		return dRowTmp->Item[S"REASON_CODE"]->ToString();
	}
	catch (...) {
		
		return S"";

	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -