# mes_cx_ydm_bc_outlist_new_hand 存储过程（什么什么热轧）

## 模板下载

[模板](../InitScript/Origin/mes_cx_ydm_bc_outlist_new_hand.sql)

用{0}表达 当前月份 替换成02

用{1}表达 下个月份 替换成03

用{2}表达 下个月份 替换成01

## 执行过程

`查询ydm_bc_outlist数据，结合mvm_order_matno_info视图（时效性和可靠性不太好），将该补的字段补好，最终写入结果表cx_ydm_bc_outlist 半成品出库`
执行过程多了一些判定条件，而且是按入库的什么类型分的
`AND instock_type_code in ('800701', '800702', '800706')
       and belong_code in ('100101', '100102', '100105')
       and supply_unit_code = '120504' `


## 原始脚本内容

```sql
CREATE OR REPLACE procedure MES_CX_YDM_BC_OUTLIST_NEW_hand is
  a                 number(4);
  b                 varchar(200);
  cxdata            mvm_order_matno_info%rowtype;
  prod_name_cx      varchar(200);
  prod_code_cx      varchar(200);
  sg_grade_cx       varchar(200);
  sg_gradename_cx   varchar(200);
  sg_sign_cx        varchar(200);
  sg_signname_cx    varchar(200);
  wall_thickness_cx varchar(200);
  material_code_cx  varchar(200);
  MATERIAL_NAME_cx  varchar(200);
  outer_diam_cx     varchar(200);

  CURSOR OPOrder_Cursor IS
  
    select substr(t1.bal_year_month, 0, 4) || '-' ||
           substr(t1.bal_year_month, 5, 2) bal_year_month,
           --记账日期
           '天淮中间库' ckmc,
           t1.judge_stove_no,
           --库存地名称,
           spec_code,
           --产品规格代码,
           spec_name,
           -- 产品规格描述,
           max(std_code) std_code,
           --执行标准代码,
           max(std_name) std_name,
           --执行标准名称,
           produccode,
           --品名代码,
           producname,
           --品名描述,
           gradecode,
           --钢种代码,
           gradename,
           --钢种名称,
           steelcode,
           --钢级代码,
           steelname,
           --钢级名称,
           0 act_count,
           --期初库存支数,
           0 act_weight,
           --期初库存重量,
           0 act_in_count,
           --本期入库支数,
           0 act_in_weight,
           --本期入库重量,
           sum(act_count) act_out_count,
           --本期出库支数,
           sum(act_weight) act_out_weight,
           --本期出库重量,
           getislljg(t1.judge_stove_no,
                     nvl(replace(PRO_ORDER_NO, '/', ''),
                         replace(get_cp_order(t1.judge_stove_no), '/', ''))) is_lljg,
           --是否来料加工,
           (case process_desc
             when '轧制' then
              '热轧'
             when '加工线' then
              '加工'
             else
              process_desc
           end) process_name,
           --工序,
           
           --'否' is_ckc,
           --是否出口材
           (case
             when nvl(mvm.if_export, '内贸') = '内贸' then
              '否'
             when nvl(mvm.if_export, '内贸') = '外贸' then
              '是'
             else
              '否'
           end) is_ckc,
           
           act_dimater dimater,
           --外径
           act_height height,
           --壁厚
           nvl(replace(PRO_ORDER_NO, '/', ''),
               replace(get_cp_order(t1.judge_stove_no), '/', '')) orderid,
           --合同号
           model_desc,
           -- 扣型描述
           outstock_type_name,
           --入库类型名称
           get_cp_buyer(get_cp_order(t1.judge_stove_no)) buyer,
           --客户名称
           get_cp_pass(get_cp_order(t1.judge_stove_no)) pass --孔型
    
      from ydm_bc_outlist t1, mvm_order_matno_info mvm --增加MVN
    
     where nvl(replace(pro_order_no, '/', ''),
               replace(get_cp_order(t1.judge_stove_no), '/', '')) =
           mvm.CONTRACTNO_NUM
       and t1.bal_year_month in ('202601')
       and t1.belong_code = '002023005'
       and outstock_type_code in ('800809', '800808','800806')
       and nvl(replace(pro_order_no, '/', ''),
               replace(get_cp_order(t1.judge_stove_no), '/', '')) not like
           'ZZBY%'
            and t1.judge_stove_no in('A25080210','A25070249','A25070271')
     group by bal_year_month,
              spec_code,
              --产品规格代码,
              produccode,
              --品名代码,
              producname,
              gradecode,
              --钢种代码,
              gradename,
              steelcode,
              --钢级代码,
              steelname,
              judge_stove_no,
              process_desc,
              act_dimater,
              --外径
              act_height,
              --壁厚
              model_desc,
              t1.pro_order_no,
              t1.order_no,
              t1.order_seq,
              spec_code,
              spec_name,
              mvm.if_export,outstock_type_name;

  curoporder oporder_cursor%rowtype;

begin

  open oporder_cursor;
  loop
    fetch oporder_cursor
      into curoporder;
    exit when oporder_cursor%notfound;
  
    select count(*)
      into a
      from mvm_order_matno_info t
     where t.contractno_num = curoporder.orderid
       AND MATERIAL_CODE IS NOT NULL;
  
    if a > 0 then
      select outer_diam,
             prod_code,
             prod_name,
             SG_GRADE_CODE,
             sg_grade,
             SG_SIGN_CODE,
             sg_sign,
             wall_thickness,
             material_code,
             MATERIAL_NAME
        into outer_diam_cx,
             prod_code_cx,
             prod_name_cx,
             sg_grade_cx,
             sg_gradename_cx,
             sg_sign_cx,
             sg_signname_cx,
             wall_thickness_cx,
             material_code_cx,
             MATERIAL_NAME_cx
        from mvm_order_matno_info t
       where t.contractno_num = curoporder.orderid
         AND MATERIAL_CODE IS NOT NULL
         and rownum = 1;
    
    elsif substr(curoporder.orderid, 1, 2) in ('TH', 'XS') then
      select count(*)
        into a
        from mvm_order_matno_info t
       where substr(t.contractno_num, 3) = substr(curoporder.orderid, 3)
         AND MATERIAL_CODE IS NOT NULL
         and rownum = 1;
      if a > 0 then
        select outer_diam,
               prod_code,
               prod_name,
               SG_GRADE_CODE,
               sg_grade,
               SG_SIGN_CODE,
               sg_sign,
               wall_thickness,
               material_code,
               MATERIAL_NAME
          into outer_diam_cx,
               prod_code_cx,
               prod_name_cx,
               sg_grade_cx,
               sg_gradename_cx,
               sg_sign_cx,
               sg_signname_cx,
               wall_thickness_cx,
               material_code_cx,
               MATERIAL_NAME_cx
          from mvm_order_matno_info t
         where substr(t.contractno_num, 3) = substr(curoporder.orderid, 3)
           AND MATERIAL_CODE IS NOT NULL
           and rownum = 1;
      end if;
    end if;
  
    if a > 0 then
      insert into CX_YDM_BC_OUTLIST
        (bal_year_month,
         ckmc,
         material_no,
         material_name,
         spec_code,
         spec_name,
         std_code,
         std_name,
         produccode,
         producname,
         gradecode,
         gradename,
         steelcode,
         steelname,
         act_count,
         act_weight,
         act_in_count,
         act_in_weight,
         act_out_count,
         act_out_weight,
         is_lljg,
         process_name,
         is_ckc,
         dimater,
         height,
         pass,
         model_desc,
         buyer,
         orderid,
         bc_type,
         judge_stove_no,
         INSERT_TIME,bak1)
      values
        (curoporder.bal_year_month,
         curoporder.ckmc,
         material_code_cx,
         MATERIAL_NAME_cx,
         curoporder.spec_code,
         outer_diam_cx || '*' || wall_thickness_cx,
         curoporder.std_code,
         curoporder.std_name,
         prod_code_cx,
         prod_name_cx,
         sg_grade_cx,
         sg_gradename_cx,
         sg_sign_cx,
         sg_signname_cx,
         curoporder.act_count,
         curoporder.act_weight,
         curoporder.act_in_count,
         curoporder.act_in_weight,
         curoporder.act_out_count,
         curoporder.act_out_weight,
         curoporder.is_lljg,
         curoporder.process_name,
         curoporder.is_ckc,
         curoporder.dimater,
         curoporder.height,
         curoporder.pass,
         curoporder.model_desc,
         curoporder.buyer,
         curoporder.orderid,
         '半成品出库',
         curoporder.judge_stove_no,
         sysdate,curoporder.outstock_type_name);
    else
      insert into CX_YDM_BC_OUTLIST
        (bal_year_month,
         ckmc,
         material_no,
         material_name,
         spec_code,
         spec_name,
         std_code,
         std_name,
         produccode,
         producname,
         gradecode,
         gradename,
         steelcode,
         steelname,
         act_count,
         act_weight,
         act_in_count,
         act_in_weight,
         act_out_count,
         act_out_weight,
         is_lljg,
         process_name,
         is_ckc,
         dimater,
         height,
         pass,
         model_desc,
         buyer,
         orderid,
         bc_type,
         judge_stove_no,bak1)
      values
        (curoporder.bal_year_month,
         curoporder.ckmc,
         null,
         null,
         curoporder.spec_code,
         null,
         curoporder.std_code,
         curoporder.std_name,
         null,
         null,
         null,
         null,
         null,
         null,
         curoporder.act_count,
         curoporder.act_weight,
         curoporder.act_in_count,
         curoporder.act_in_weight,
         curoporder.act_out_count,
         curoporder.act_out_weight,
         curoporder.is_lljg,
         curoporder.process_name,
         curoporder.is_ckc,
         curoporder.dimater,
         curoporder.height,
         curoporder.pass,
         curoporder.model_desc,
         curoporder.buyer,
         curoporder.orderid,
         '半成品出库',
         curoporder.judge_stove_no,
         curoporder.outstock_type_name);
    end if;
  
  end loop;
  close oporder_cursor;
  commit;

  /*
  
  exception
    when others then
      null;*/
end MES_CX_YDM_BC_OUTLIST_new_hand;
```
