📄 feedformview.cpp
字号:
switch(condic_no)
{
case 1:
{// chi cun
cond_slab_h.Format("%d",m_sear_h);
cond_slab_w.Format("%d",m_sear_w);
cond_slab_l.Format("%d",m_sear_l);
theApp.open_mes();
// resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where MATERIAL_THICK ="+cond_slab_h+"and MATERIAL_WIDE ="+cond_slab_w+"and MATERIAL_LENGTH ="+cond_slab_l+"order by STEEL_TYPE, INPUT_DATE DESC");
resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where MATERIAL_THICK ="+cond_slab_h+"and MATERIAL_WIDE ="+cond_slab_w+"and MATERIAL_LENGTH ="+cond_slab_l+"and MATERIAL_AMOUNT_LEFT <>0 order by INPUT_DATE DESC,STEEL_TYPE");
//
SlabInfo_List_Update(m_cast,rs_slab_s);
theApp.cn.close();
break;
}
case 0:
{//steel code
m_sear_steel.GetLBText(m_sear_steel.GetCurSel(),cond_steel_code);
si.Format("'%s'",cond_steel_code);
theApp.open_mes();
// resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where STEEL_TYPE="+si+"order by MATERIAL_THICK DESC,MATERIAL_WIDE DESC,MATERIAL_LENGTH DESC,INPUT_DATE DESC");
resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where STEEL_TYPE="+si+"and MATERIAL_AMOUNT_LEFT <>0 order by INPUT_DATE DESC, MATERIAL_THICK DESC,MATERIAL_WIDE DESC,MATERIAL_LENGTH DESC");
SlabInfo_List_Update(m_cast,rs_slab_s);
theApp.cn.close();
break;
}
case 2:
{//furcode
m_edit_cast_id.TrimRight();
m_edit_cast_id.TrimLeft();
si.Format("'%s'",m_edit_cast_id);
theApp.open_mes();
resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where CAST_ID="+si+"order by INPUT_DATE DESC, STEEL_TYPE,MATERIAL_THICK DESC,MATERIAL_WIDE DESC,MATERIAL_LENGTH DESC");
SlabInfo_List_Update(m_cast,rs_slab_s);
theApp.cn.close();
break;
}
default:
{//all
theApp.open_mes();
resultset &rs_slab_s = *(theApp.cn).select ("select * from CAST_INF where MATERIAL_AMOUNT_LEFT <>0 order by INPUT_DATE DESC, STEEL_TYPE,MATERIAL_THICK DESC,MATERIAL_WIDE DESC,MATERIAL_LENGTH DESC");
SlabInfo_List_Update(m_cast,rs_slab_s);
theApp.cn.close();
break;
}
}
}
void CFeedFormView::OnSearchPlan() //按照时间和班次查询计划
{
// TODO: Add your control notification handler code here
m_plan.DeleteAllItems();
UpdateData(TRUE);
CString si,strTime,str_temp;
strTime = m_produce_data.Format("'%Y-%m-%d'"); //CTime->CString
m_shift.GetLBText(m_shift.GetCurSel(),si);
str_temp.Format("'%s'",si);
theApp.open_mes();
resultset &rs_plan = *(theApp.cn).select ("select * from PRODUCE_PLAN_TEMP where SHIFT="+str_temp+" and to_char(MANUFACTURE_DATE,'YYYY-MM-DD')="+strTime+" order by SHIFT_ID desc");
Planlist_Update(m_plan,rs_plan);
theApp.cn.close();
}
void CFeedFormView::OnFeed() //挂料操作
{
CString ki;
m_fur_no.GetLBText(m_fur_no.GetCurSel(),ki);
int in_fur_num;
if (ki!="2#")
{
in_fur_num=1;
}
else
in_fur_num=2;
UpdateData(TRUE);
m_feed_furcode.TrimLeft();
m_feed_furcode.TrimRight();
if(m_feed_furcode=="")
{
MessageBox("请选择坯料!","系统提示",MB_ICONWARNING);
return;
}
m_feed_plan_id.TrimLeft();
m_feed_plan_id.TrimRight();
if(m_feed_plan_id=="")
{
MessageBox("请选择计划!","系统提示",MB_ICONWARNING);
return;
}
theApp.open_mes();
statement &st = *(theApp.cn).prepare ("begin CELL_CREATE (:ca_id, :plan_id, :slab_amount, :furnace); end;");
st.bind(":ca_id", DT_TEXT) = m_feed_furcode;
st.bind (":plan_id", DT_TEXT) = m_feed_plan_id;
st.bind(":slab_amount", DT_NUMBER) = (long)m_feed_number;
st.bind (":furnace", DT_NUMBER) = (long)in_fur_num;
st.execute ();
st.release ();
m_feed.DeleteAllItems();
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
theApp.cn.close();
}
void CFeedFormView::OnSearchFeed() //查询当前挂料情况,该按钮同时刷新炉前队列
{
m_feed.DeleteAllItems();
m_after_weight.DeleteAllItems();
theApp.open_mes();
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE ORDER BY SLAB_ORDER");
Before_furnace_List_Update(m_after_weight,rs_before_furnace);
theApp.cn.close();
}
void CFeedFormView::OnCancelFeed() //撤销挂料
{
// TODO: Add your control notification handler code here
CString m_feed_furcode_cancel;
m_feed_furcode_cancel=this->m_feed.GetItemText(m_feed.GetSelectionMark(),0);
UpdateData(TRUE);
//////////////////////////////////////
theApp.open_mes();
statement &st = *(theApp.cn).prepare ("begin DELETE_SLAB_IN_WEIGHT (:v_id); end;");
st.bind(":v_id", DT_TEXT) = m_feed_furcode_cancel;
st.execute ();
st.release ();
///////////////////////////////////////
m_feed.DeleteAllItems();
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
theApp.cn.close();
}
void CFeedFormView::OnWeightModeChange() //称重模式切换按钮执行时,切换为自动模式和手动确认模式,将如下标签置位
{
CWnd* pWnd = GetDlgItem(IDC_WEIGHT_MODE_CHANGE);
pWnd = GetDlgItem(IDC_WEIGHT_HAND);
if(pWnd->IsWindowEnabled())
{
m_led_weight_mode.SetLedColor(1);
pWnd->EnableWindow(FALSE);
}
else
{
m_led_weight_mode.SetLedColor(0);
pWnd->EnableWindow(TRUE);
}
pOPCMemory->m_L2ToHMIBitReset.MES_to_HMI_trigger = 1;
pOPCMemory->m_L2ToHMIBitReset.W_state_tri = 1;
pOPCMemory->m_L2ToHMIBitReset.W_conf_man_tri = 0;
pOPCMemory->m_L2ToHMIBitReset.W_undo_man_tri = 0;
UpdateData(false);
HWND pHWnd=::FindWindow(NULL,strServerName);
if(pHWnd)
::SendMessage(pHWnd,WM_SEVER_CLIENT_OPC_MSG,0,0);
}
void CFeedFormView::OnWeightHand() //手动确认按钮执行时,将如下标签置位
{
// TODO: Add your control notification handler code here
pOPCMemory->m_L2ToHMIBitReset.MES_to_HMI_trigger = 1;
pOPCMemory->m_L2ToHMIBitReset.W_state_tri = 0;
pOPCMemory->m_L2ToHMIBitReset.W_conf_man_tri = 1;
pOPCMemory->m_L2ToHMIBitReset.W_undo_man_tri = 0;
HWND pHWnd=::FindWindow(NULL,strServerName);
if(pHWnd)
::SendMessage(pHWnd,WM_SEVER_CLIENT_OPC_MSG,0,0);
}
void CFeedFormView::OnWeightHandCancel() //手动撤销按钮执行时,将如下标签置位
{
// TODO: Add your control notification handler code here
pOPCMemory->m_L2ToHMIBitReset.MES_to_HMI_trigger = 1;
pOPCMemory->m_L2ToHMIBitReset.W_state_tri = 0;
pOPCMemory->m_L2ToHMIBitReset.W_conf_man_tri = 0;
pOPCMemory->m_L2ToHMIBitReset.W_undo_man_tri = 1;
HWND pHWnd=::FindWindow(NULL,strServerName);
if(pHWnd)
::SendMessage(pHWnd,WM_SEVER_CLIENT_OPC_MSG,0,0);
}
void CFeedFormView::OnDestroy() //关闭程序时,撤销内存所占空间
{
CFormView::OnDestroy();
// TODO: Add your message handler code here
if (lpData != NULL)
{
UnmapViewOfFile(lpData);
lpData = NULL;
}
if (hRecvMap!=NULL)
{
CloseHandle(hRecvMap);
hRecvMap = NULL;
}
m_isMemoryMap=false;
}
void CFeedFormView::ClientOPCEvent()
{
if (pOPCMemory->m_HMIToL2VarHold.W_confirm_state) //同步不同客户端的称重模式按钮和红绿灯的颜色
{ //标志位为1,是自动确认状态,显示为绿灯
CWnd* pWnd ;
pWnd = GetDlgItem(IDC_WEIGHT_HAND);
m_led_weight_mode.SetLedColor(1);
pWnd->EnableWindow(FALSE);
}
else //标志位为0,是手动确认状态,显示为红灯
{
CWnd* pWnd ;
pWnd = GetDlgItem(IDC_WEIGHT_HAND);
m_led_weight_mode.SetLedColor(0);
pWnd->EnableWindow(TRUE);
}
if (pOPCMemory->m_HMIToL2BitReset.Weigth_confirm_tri_MES) //收到称重确认完成的信号
{
float weight;
weight = pOPCMemory->m_HMIToL2BitReset.W_slb_weight; //收到实测重量,付给变量,显示到界面的LED框内
m_weight_data.Format("%.2f",weight);
m_led_weight.SetText(m_weight_data);
UpdateData(FALSE); //更新界面,同时读取称重等待表和炉前等待队列表
m_feed.DeleteAllItems();
m_after_weight.DeleteAllItems();
theApp.open_mes();
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE ORDER BY SLAB_ORDER");
Before_furnace_List_Update(m_after_weight,rs_before_furnace);
theApp.cn.close();
}
if(pOPCMemory->m_HMIToL2BitReset.W_undo_tri_MES) //收到手动撤销的信号,刷新称重等待队列和炉前队列
{
m_feed.DeleteAllItems();
m_after_weight.DeleteAllItems();
theApp.open_mes();
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE ORDER BY SLAB_ORDER");
Before_furnace_List_Update(m_after_weight,rs_before_furnace);
theApp.cn.close();
}
if (pOPCMemory->m_HMIToL2BitReset.BkFur_InIMS) //收到炉后返回的信号,调用炉后返回过程,并将标签置位,发消息给二级
{
theApp.open_mes();
statement &st = *(theApp.cn).prepare ("begin RETURN_FURNACE_PROCEDURE (); end;");
st.execute ();
st.release ();
theApp.cn.close();
pOPCMemory->m_L2ToHMIBitReset.MES_to_HMI_trigger2 = 1;
pOPCMemory->m_L2ToHMIBitReset.BkFur_InIMS_Ov = 1;
HWND pHWnd=::FindWindow(NULL,strServerName);
if(pHWnd)
::SendMessage(pHWnd,WM_SEVER_CLIENT_OPC_MSG,0,0);
}
}
///////////////////////////////////////////////////////////////////////
void CFeedFormView::OnClickListCast(NMHDR* pNMHDR, LRESULT* pResult) //单击板坯列表的某行信息,显示钢种相同的计划,条件是时间和班次
{
// TODO: Add your control notification handler code here
CString steel_grade_temp;
m_feed_furcode=this->m_cast.GetItemText(m_cast.GetSelectionMark(),0);
steel_grade_temp=this->m_cast.GetItemText(m_cast.GetSelectionMark(),5);
UpdateData(FALSE);
//读取计划信息
m_plan.DeleteAllItems();
UpdateData(TRUE);
CString si_shift,si_steel,strTime,str_temp;
strTime = m_produce_data.Format("'%Y-%m-%d'"); //CTime->CString
m_shift.GetLBText(m_shift.GetCurSel(),si_shift);
str_temp.Format("'%s'",si_shift);
si_steel.Format("'%s'",steel_grade_temp);
theApp.open_mes();
resultset &rs_plan = *(theApp.cn).select ("select * from PRODUCE_PLAN_TEMP where SHIFT="+str_temp+" and to_char(MANUFACTURE_DATE,'YYYY-MM-DD')="+strTime+" and STEEL_TYPE="+si_steel+"");
Planlist_Update(m_plan,rs_plan);
theApp.cn.close();
*pResult = 0;
}
void CFeedFormView::OnClickListPlan(NMHDR* pNMHDR, LRESULT* pResult) //单击计划时,将计划号读取出来,付给挂料的计划号编辑框
{
// TODO: Add your control notification handler code here
//读取计划中的计划号,付给界面变量
m_feed_plan_id=this->m_plan.GetItemText(m_plan.GetSelectionMark(),0);
UpdateData(FALSE);
*pResult = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -