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
原文:https://www.cnblogs.com/yjy1412/p/14680096.html