菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
202
0

tpssmmabw03表更新

原创
05/13 14:22
阅读数 90445
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

 

发表评论

0/200
202 点赞
0 评论
收藏