Log::Trace("", __FUNCTION__, "*******更新炼钢连铸制造命令板坯表tpssmmabw03开始*******");
//根据[铸坯材料]==获取一条代表信息,根据此[ingot_code]获取对应的虚拟材料管理单位[01]/[02]=按炉批/按件管理。详见代码[PM2D]
//===========
//MM的管理单位的控制,已经在[命令确定]点进行了处理。
//[01]=按炉批管理,炉批号:命令材料号 = 1:1
//[02]=按件管理 ,炉批号:命令材料号= 1:N
//SO ,新增 TPSSMMABW03表的时候,根据命令材料号进行分组汇总,即可。 UPDATE on 2013/9/3 9:24:08
v_ctrl_flag = tpmommabw01.CTRL_FLAG;//物料管理单位。
//根据[命令材料号]==进行分组循环处理。
//===========
v_melt_lot_no = ""; //炉批号。
v_pono_mat_no = "";//命令材料号。
v_total_num = 0;
v_total_wt = 0;
Log::Trace("", __FUNCTION__, "产线类型=[{0}]", tpmommabw01.LINE_TYPE);
c_sql_condition = " select t.prec_mat_no,NVL(SUM(t.MAT_NUM),0),NVL(SUM(t.MAT_WT),0) "
" from tpmommabw01 t "
" where t.cast_lot_no = @cast_lot_no "
" GROUP BY t.prec_mat_no " //命令材料号
" ORDER BY t.prec_mat_no ";
Log::Trace("", __FUNCTION__, "c_sql_condition=[{0}]", c_sql_condition);
sqlstr = c_sql_condition;
cmd_sql.SetCommandText(c_sql_condition);// 设置执行的SQL语句
// 设置SQL中的变量
cmd_sql.Parameters.Set("cast_lot_no", tpmommabw01.CAST_LOT_NO);
cmd_sql.ExecuteReader();
while (cmd_sql.Read())
{
v_pono_mat_no = cmd_sql.GetString(1); //命令材料号。
v_total_num = cmd_sql.GetDecimal(2);//总个数。
v_total_wt = cmd_sql.GetDecimal(3);//总重量
Log::Trace("", __FUNCTION__, "命令板坯号=[{0}]", v_pono_mat_no);
Log::Trace("", __FUNCTION__, "总个数=[{0}]", v_total_num);
Log::Trace("", __FUNCTION__, "总重量=[{0}]", v_total_wt);
//根据[命令材料号],获取一条代表信息。
//===================
c_sql_condition3 = " select t.* from tpmommabw01 t "
" where t.prec_mat_no = @pono_mat_no " // 根据 命令材料号。
" order by t.prec_mat_no "
;
Log::Trace("", __FUNCTION__, "c_sql_condition3=[{0}]", c_sql_condition);
sqlstr = c_sql_condition3;
cmd_sql3.SetCommandText(c_sql_condition3);// 设置执行的SQL语句
// 设置SQL中的变量
cmd_sql3.Parameters.Set("pono_mat_no", v_pono_mat_no);
cmd_sql3.ExecuteReader();
if (cmd_sql3.Read()) //一个[命令材料号] ,随机获取一条信息。
{
cmd_sql3.Fetch(tpmommabw01);
}
cmd_sql3.Close();
tpmommabw01.TrimOrBlank();
tpssmmabw03.Reset();
tpssmmabw03.REC_CREATOR = userid; //记录创建责任者
tpssmmabw03.REC_CREATE_TIME = systime; //记录创建时刻
tpssmmabw03.REC_REVISOR = ""; //记录修改责任者
tpssmmabw03.REC_REVISE_TIME = systime; //记录修改时刻
//tpssmmabw03.ARCHIVE_FLAG; //归档标记
tpssmmabw03.FACTORY_DIV = tpmommabw01.FACTORY_DIV; //主工序代码
Log::Trace("", __FUNCTION__, "FACTORY_DIV=[{0}]", tpmommabw01.FACTORY_DIV);
tpssmmabw03.CAST_LOT_NO = tpmommabw01.CAST_LOT_NO; //浇铸批号
Log::Trace("", __FUNCTION__, "CAST_LOT_NO=[{0}]", tpmommabw01.CAST_LOT_NO);
Log::Trace("", __FUNCTION__, "tpmommabw01.PREC_MAT_NO[{0}]", tpmommabw01.PREC_MAT_NO);
tpssmmabw03.SLAB_NO = tpmommabw01.PREC_MAT_NO; //命令材料号
tpssmmabw03.LG_ST = tpmommabw01.LG_ST;
tpssmmabw03.PONO = tpmommabw01.PONO; //制造命令号
tpssmmabw03.STRAND_NO = tpmommabw01.STRAND_NO; //流号
tpssmmabw03.BILLET_TYPE = tpmommabw01.BILLET_TYPE; //钢坯类型
if (tpssmmabw03.BILLET_TYPE.Trim() == "")
{//应小何 要求,若铸坯类型为空,则默认= 1 ,ON 2014-2-8 14:22:28
tpssmmabw03.BILLET_TYPE = "1"; //钢坯类型= 1=板坯。
}
//===tpssmmabw03.SLAB_GROUP_NO; //板坯组号
//tpssmmabw03.VARIETY_CODE; //品种代码
//tpssmmabw03.STEEL_CODE = ""; //钢种代码
tpssmmabw03.SLAB_THICK = tpmommabw01.NOM_SLAB_THICK; //板坯厚度
tpssmmabw03.SLAB_WIDTH = tpmommabw01.NOM_SLAB_WIDTH; //板坯宽度
tpssmmabw03.SLAB_LEN = tpmommabw01.NOM_SLAB_LEN; //板坯长度
tpssmmabw03.SLAB_MAX_LEN = tpmommabw01.SLAB_MAX_NOM_LEN; //板坯长度最大值
tpssmmabw03.SLAB_MIN_LEN = tpmommabw01.SLAB_MIN_NOM_LEN; //板坯长度最小值
//和PSSMMABW-何云飞 讨论确定,如下信息暂定给0. by zy on 2013/11/13 13:06:48
//向萍要求,放开赋值, on 2015-8-10 15:11:26
tpssmmabw03.SLAB_MAX_WT = tpmommabw01.SLAB_MAX_NOM_WT; //板坯重量最大值
tpssmmabw03.SLAB_MIN_WT = tpmommabw01.SLAB_MIN_NOM_WT; //板坯重量最小值
tpssmmabw03.SLAB_NUM = v_total_num; //板坯块数=一个[命令材料号]下的材料总个数。
tpssmmabw03.SLAB_WT = v_total_wt; //板坯重量=一个[命令材料号]下的材料总重量。
tpssmmabw03.INFUR_SLAB_WID = 0; //进加热炉板坯宽度
tpssmmabw03.INFUR_SLAB_LEN = 0; //进加热炉板坯长度
tpssmmabw03.INFUR_SLAB_MAX_LEN = 0; //进加热炉板坯最大长度
tpssmmabw03.INFUR_SLAB_MIN_LEN = 0; //进加热炉板坯最小长度
tpssmmabw03.INFUR_SLAB_WT = 0; //进加热炉板坯重量
tpssmmabw03.INFUR_SLAB_MAX_WT = 0; //进加热炉板坯最大重量
tpssmmabw03.INFUR_SLAB_MIN_WT = 0; //进加热炉板坯最小重量
tpssmmabw03.PLAN_TYPE = ""; //计划类型
tpssmmabw03.SLAB_DEST = tpmommabw01.SLAB_DEST; //板坯去向
//2016.03.17 tpssmmabw03.HOT_SEND_FLAG = tpmommabw01.NOM_HOT_SEND_FLAG; //热送标记
tpssmmabw03.HOT_SEND_FLAG = tpmommabw01.HOT_SEND_FLAG;
/*柳钢方坯去向最多有2个*/
Log::Trace("", __FUNCTION__, "方坯归并合同去向设定,产线类型[{0}],合同号[{1}]", tpmommabw01.LINE_TYPE, tpmommabw01.ORDER_NO);
if (tpmommabw01.LINE_TYPE == "BW")
{
slab_dest_count = 0;
//判断是否是归并合同
c_sql_condition = " select count(distinct a.slab_dest) from tqmtomatb11 a ,tpmogma02 b where a.order_no = b.order_no \
and a.whole_backlog_no = b.whole_backlog_no and b.merg_order_no = @var_order_no ";
sqlstr = c_sql_condition;
CDbCommand cmd_sql_union(conn);
cmd_sql_union.SetCommandText(c_sql_condition);
cmd_sql_union.Parameters.Set("var_order_no", tpmommabw01.ORDER_NO);
cmd_sql_union.ExecuteReader(); //执行读取
if (cmd_sql_union.Read()) //只读取单记录,可用IF 语句。
{
v_merge_count = cmd_sql_union.GetDecimal(1);
}
cmd_sql_union.Close(); //关闭游标
if (v_merge_count > 2)
{
sprintf(s.msg, "归并合同下工序代码多于2个,柳钢方坯合同归并只有2个去向");
throw CApplicationException(-1, s.msg, log.Location);
}
else if (v_merge_count > 0)
{
c_sql_condition = " select distinct a.slab_dest from tqmtomatb11 a ,tpmogma02 b where a.order_no = b.order_no \
and a.whole_backlog_no = b.whole_backlog_no and b.merg_order_no = @var_order_no order by a.slab_dest ";
sqlstr = c_sql_condition;
CDbCommand cmd_sql_merge(conn);
cmd_sql_merge.SetCommandText(c_sql_condition);
cmd_sql_merge.Parameters.Set("var_order_no", tpmommabw01.ORDER_NO);
cmd_sql_merge.ExecuteReader();
while (cmd_sql_merge.Read())
{
v_slab_dest_code = cmd_sql_merge.GetString(1);
slab_dest_count++;
Log::Trace("", __FUNCTION__, "当前去向个数[{0}]", slab_dest_count);
if (slab_dest_count == 1)
{
tpssmmabw03.SLAB_DEST = v_slab_dest_code;
}
else if (slab_dest_count == 2)
{
tpssmmabw03.SLAB_DEST_1 = v_slab_dest_code;
}
}
cmd_sql_merge.Close();
}
else
{
Log::Trace("", __FUNCTION__, "非归并合同");
}
}
//===========PSSMMABW表中的热装标记= 材料申请类型。
//==========================================
tpssmmabw03.HOT_CHARGE_FLAG = tpmommabw01.APP_TYPE; //热装标记=材料申请类型。
tpssmmabw03.MEND_FLAG = "0"; //修磨标志
tpssmmabw03.PREC_ROLL_PLAN_NO = ""; //预定轧制计划号
//tpssmmabw03.PREC_ROLL_SEQ_NO = tpmommabw01.MAT_SEQ_NO; //预定轧制计划顺序号
tpssmmabw03.STEEL_LATEST_DATE = tpmommabw01.STEEL_APP_DATE; //炼钢最晚结束日期=炼钢申请日期。
tpssmmabw03.SLAB_COOL_IND = tpssmmabw01.SLAB_COOL_IND; //板坯缓冷指示
tpssmmabw03.LSLAB_T_B_FLAG = "1"; //长坯头尾标记
//tpssmmabw03.SLAB_COOL_CODE; //板坯冷却基准代码
tpssmmabw03.INGOT_CODE = tpmommabw01.INGOT_CODE; //锭型代码
if (tpssmmabw03.INGOT_CODE.Trim() == "")
{
tpssmmabw03.INGOT_CODE = "0000";
}
//tpssmmabw03.SAMPLE_LOT_NO; //试批号
tpssmmabw03.ORDER_REMAIN_DIV = "1"; //合同材/预备材区分= 1/0=有合同/无合同。
if (tpmommabw01.ORDER_NO.Trim() == "")
{//若合同号为空,是无委的铸坯。
tpssmmabw03.ORDER_REMAIN_DIV = "0";
//应向萍要求,若是无合同的命令材料信息,则令热装标志= ‘0’=冷状态。
//============update by zy on 2014-5-19 15:35:48
tpssmmabw03.HOT_CHARGE_FLAG = "0"; //tpmommabw01.APP_TYPE; //热装标记
}
else
{//若是有合同的铸坯,根据[合同号]获取以下信息。
//tqmtomatb11
tpssmmabw03.SLAB_FINISH_CODE = ""; //板坯精整基准代码
//tpssmmabw03.FLAME_CLEAN_DIV = ""; //火焰清理区分2020年10月29日 夏鹏程处理 未辨明该字段在宝钢系统所对应的字段
c_sql_condition2 = " select t.* from tqmtomatb11 t "
" where t.order_no = @order_no "
" and t.whole_backlog = @whole_backlog "
;
sqlstr = c_sql_condition2;
cmd_sql2.SetCommandText(c_sql_condition2);// 设置执行的SQL语句
// 设置SQL中的变量
cmd_sql2.Parameters.Set("order_no", tpmommabw01.ORDER_NO);
cmd_sql2.Parameters.Set("whole_backlog", tpmommabw01.WHOLE_BACKLOG);
cmd_sql2.ExecuteReader();
if (cmd_sql2.Read())
{
cmd_sql2.Fetch(tqmtomatb11);
tqmtomatb11.TrimOrBlank();
}
cmd_sql2.Close();
tpssmmabw03.SLAB_FINISH_CODE = tqmtomatb11.SLAB_FINISH_CODE;
/*tpssmmabw03.FLAME_CLEAN_DIV = tqmtomatb11.FLAME_CLEAN_DIV; 2020年10月29日 夏鹏程处理 未辨明该字段在宝钢系统所对应的字段*/
//tompoma01
tpssmmabw03.ORDER_NO = tpmommabw01.ORDER_NO; //合同号
c_sql_condition2 = " select t.ORDER_LEN_MAX,t.ORDER_LEN_MIN "
" ,t.ORDER_SHORT_MAX,t.ORDER_SHORT_MIN,t.ORDER_SHORT_RATE "
" ,t.NEW_TEST_NO,t.SG_STD,t.MIC,t.PSR,t.APN from tompoma01 t "
" where t.order_no = @order_no "
;
sqlstr = c_sql_condition2;
cmd_sql2.SetCommandText(c_sql_condition2);// 设置执行的SQL语句
// 设置SQL中的变量
cmd_sql2.Parameters.Set("order_no", tpmommabw01.ORDER_NO);
cmd_sql2.ExecuteReader();
if (cmd_sql2.Read())
{
tpssmmabw03.ORDER_LEN_MAX = cmd_sql2.GetDecimal(1); //订货长度上限
tpssmmabw03.ORDER_LEN_MIN = cmd_sql2.GetDecimal(2); //订货长度下限
tpssmmabw03.ORDER_SHORT_MAX = cmd_sql2.GetDecimal(3); //订货最大短尺
tpssmmabw03.ORDER_SHORT_MIN = cmd_sql2.GetDecimal(4); //订货最小短尺
tpssmmabw03.ORDER_SHORT_RATE = cmd_sql2.GetDecimal(5); //订货短尺率
tpssmmabw03.NEW_TEST_NO = cmd_sql2.GetString(6); //新试号
tpssmmabw03.SG_STD = cmd_sql2.GetString(7);
tpssmmabw03.MIC = cmd_sql2.GetString(8);
tpssmmabw03.PSR = cmd_sql2.GetString(9);
tpssmmabw03.APN = cmd_sql2.GetString(10);
}
cmd_sql2.Close();
}
//新增字段, on 2015-4-10 10:32:58
tpssmmabw03.SLAB_SEQ_1 = tpmommabw01.SLAB_SEQ_1; //炉流内板坯顺序号
tpssmmabw03.SLAB_SEQ_2 = tpmommabw01.SLAB_SEQ_2; //流内板坯顺序号
tpssmmabw03.STRAND_NUM = atoi(tpmommabw01.STRAND_NO); //流数
tpssmmabw03.LSLAB_NO = tpmommabw01.LSLAB_NO; //长坯号
//新增字段, ON 2015-11-3 10:44:16
tpssmmabw03.WHOLE_BACKLOG_NO = tpmommabw01.WHOLE_BACKLOG_NO;
tpssmmabw03.WHOLE_BACKLOG = tpmommabw01.WHOLE_BACKLOG;
tpssmmabw03.WHOLE_BACKLOG_SEQ = tpmommabw01.WHOLE_BACKLOG_SEQ; //炼钢工序序号。
tpssmmabw03.WHOLE_BACKLOG_CODE = tpmommabw01.WHOLE_BACKLOG_CODE;
/*柳钢新增字段*/
tpssmmabw03.SG_SIGN = tpmommabw01.SG_SIGN;
Log::Trace("", __FUNCTION__, "产线类型=[{0}],是否后备[{1}]", tpmommabw01.LINE_TYPE, tpmommabw01.REMARK);
if (tpmommabw01.LINE_TYPE != "HP")
{
tpssmmabw03.LSLAB_NO = tpssmmabw03.SLAB_NO;
}
//20170509厚板模铸向萍要求增加长坯号赋值
if (tpmommabw01.LINE_TYPE == "HP" && tpmommabw01.MODEL_CAST_DIV == "I")
{
tpssmmabw03.LSLAB_NO = tpssmmabw03.SLAB_NO;
}
Log::Trace("", __FUNCTION__, "tpssmmabw03内部 tpmommabw01.ROLL_PLAN_NO=[{0}],tpmommabw01.ROLL_SEQ_NO=[{1}]", tpmommabw01.ROLL_PLAN_NO, tpmommabw01.ROLL_SEQ_NO);
tpssmmabw03.PREC_ROLL_PLAN_NO = tpmommabw01.ROLL_PLAN_NO; //轧制计划号
tpssmmabw03.PREC_ROLL_SEQ_NO = tpmommabw01.ROLL_SEQ_NO; //轧制计划顺序号
tpssmmabw03.SLAB_PROD_FLAG = "0"; //板坯产出标记 20161027周平要求置为0
tpssmmabw03.LINE_TYPE = tpmommabw01.LINE_TYPE;//201610 应向萍要求添加
tpssmmabw03.IC_CC_FLAG = tpmommabw01.MODEL_CAST_DIV;//20180409 应吴振南要求增加
tpssmmabw03.TrimOrBlank();
tpssmmabw03.Print();
sqlstr = CString::Format("insert tpssmmabw03. PREC_MAT_NO[%s]", (const char*)tpssmmabw03.SLAB_NO);
tpssmmabw03.Insert();
Log::Trace("", __FUNCTION__, "*******更新炼钢连铸制造命令板坯表tpssmmabw03结束*******");
}
cmd_sql.Close(); //关闭游标 ===某个LOT 下的多个命令材料循环==END.
}
//tpssmmabw03==end