diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_01.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_01.wql new file mode 100644 index 00000000..8d34b770 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/statistics/wql/statistical_report_query_01.wql @@ -0,0 +1,808 @@ +[交易说明] + 交易名: 压制性能分页查询 + 所属模块: + 功能简述: + 版权所有: + 表引用: + 版本经历: + +[数据库] + --指定数据库,为空采用默认值,默认为db.properties中列出的第一个库 + +[IO定义] + ################################################# + ## 表字段对应输入参数 + ################################################# + 输入.flag TYPEAS s_string + 输入.begin_time TYPEAS s_string + 输入.end_time TYPEAS s_string + 输入.begin_date TYPEAS s_string + 输入.end_date TYPEAS s_string + 输入.pcsn TYPEAS s_string + 输入.material_code TYPEAS s_string + 输入.bill_code TYPEAS s_string + 输入.io_type TYPEAS s_string + 输入.buss_type TYPEAS s_string + 输入.bill_type TYPEAS s_string + 输入.stor_id TYPEAS s_string + 输入.deptIds TYPEAS s_string + 输入.create_mode TYPEAS s_string + 输入.bill_status TYPEAS s_string + 输入.material_id TYPEAS s_string + 输入.org_id TYPEAS s_string + 输入.material_ids TYPEAS f_string + 输入.org_ids TYPEAS f_string + + +[临时表] + --这边列出来的临时表就会在运行期动态创建 + +[临时变量] + --所有中间过程变量均可在此处定义 + +[业务过程] + + ########################################## + # 1、输入输出检查 # + ########################################## + + + ########################################## + # 2、主过程前处理 # + ########################################## + + + ########################################## + # 3、业务主过程 # + ########################################## + + IF 输入.flag = "1" + PAGEQUERY + SELECT + MAX( mb.material_code ) AS material_code, + SUM( off.qty ) AS qty, + off.material_id, + off.pcsn, + wo.org_id, + MAX( off.create_time ) AS create_time, + MAX( off.create_name ) AS create_name, + MAX( wo.planend_time ) AS planend_time, + MAX( wo.realend_time ) AS realend_time, + datediff (MAX( wo.planend_time ),MAX( wo.realend_time )) AS off_days, + MAX( ext.old_mark) AS old_mark + FROM + pdm_bi_procedureoffline off + inner JOIN pdm_bi_workorder wo ON (wo.material_id = off.material_id and wo.pcsn = off.pcsn) + inner JOIN md_me_materialbase mb ON mb.material_id = off.material_id + inner JOIN md_me_producmaterialext ext ON ext.material_id = off.material_id + WHERE + 1=1 and wo.is_delete='0' + OPTION 输入.material_code <> "" + ( + mb.material_code like 输入.material_code + OR + mb.material_name like 输入.material_code + ) + ENDOPTION + OPTION 输入.pcsn <> "" + off.pcsn like 输入.pcsn + ENDOPTION + OPTION 输入.begin_time <> "" + off.create_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + off.create_time <= 输入.end_time + ENDOPTION + GROUP BY + off.material_id, + off.pcsn, + wo.org_id + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "01" + QUERY + SELECT + SUM( off.qty ) AS qty + FROM + pdm_bi_procedureoffline off + inner JOIN md_me_materialbase mb ON mb.material_id = off.material_id + WHERE + 1=1 + OPTION 输入.material_code <> "" + ( + mb.material_code like 输入.material_code + OR + mb.material_name like 输入.material_code + ) + ENDOPTION + OPTION 输入.pcsn <> "" + off.pcsn like 输入.pcsn + ENDOPTION + OPTION 输入.begin_time <> "" + off.create_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + off.create_time <= 输入.end_time + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "2" + PAGEQUERY + SELECT + mst.biz_date, + mst.iostorinv_id, + mst.bill_type, + mst.io_type, + mst.stor_name, + mst.input_optname, + dept.`name`, + sup.supp_name, + class.class_code, + class.class_name, + class2.class_code AS parent_class_code, + class2.class_name AS parent_class_name, + mst.bill_code, + mb.material_code, + mb.material_name, + dtl.pcsn, + dtl.qty_unit_name, + (case when io_type = '0' then '' + when io_type = '1' AND bill_type = '010701' then CONCAT('-',real_qty) + else dtl.real_qty end) AS out_qty, + (case when io_type = '1' then '' + when io_type = '0' AND bill_type = '000501' then CONCAT('-',real_qty) + else dtl.real_qty end) AS in_qty + FROM + st_ivt_iostorinvdtl dtl + LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id + LEFT JOIN sys_dept dept ON dept.dept_id = mst.sysdeptid + LEFT JOIN pcs_if_purchaseorderproc proc ON proc.id = dtl.base_billdtl_id + LEFT JOIN md_cs_supplierbase sup ON sup.ext_id = proc.VEND_ID + LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id + LEFT JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id + LEFT JOIN md_pb_classstandard class2 ON class2.class_id = class.parent_class_id + WHERE + 1 = 1 + AND + mst.is_delete = '0' + OPTION 输入.bill_code <> "" + mst.bill_code like 输入.bill_code + ENDOPTION + OPTION 输入.io_type <> "" + mst.io_type = 输入.io_type + ENDOPTION + OPTION 输入.buss_type <> "" + mst.buss_type like 输入.buss_type + ENDOPTION + OPTION 输入.bill_type <> "" + mst.bill_type = 输入.bill_type + ENDOPTION + OPTION 输入.stor_id <> "" + mst.stor_id = 输入.stor_id + ENDOPTION + OPTION 输入.deptIds <> "" + mst.sysdeptid in 输入.deptIds + ENDOPTION + OPTION 输入.bill_status <> "" + mst.bill_status = 输入.bill_status + ENDOPTION + OPTION 输入.begin_time <> "" + mst.input_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + mst.input_time <= 输入.end_time + ENDOPTION + OPTION 输入.quality_scode <> "" + dtl.quality_scode = 输入.quality_scode + ENDOPTION + OPTION 输入.pcsn <> "" + dtl.pcsn like 输入.pcsn + ENDOPTION + OPTION 输入.material_code <> "" + (mb.material_code like 输入.material_code or mb.material_name like 输入.material_code) + ENDOPTION + ENDSELECT + ENDPAGEQUERY + ENDIF + + IF 输入.flag = "02" + QUERY + SELECT + sum(outq.out_qty) AS out_qty, + sum(outq.in_qty) AS in_qty + FROM + ( + SELECT + mst.biz_date, + mst.iostorinv_id, + mst.bill_type, + mst.io_type, + mst.stor_name, + mst.input_optname, + dept.`name`, + sup.supp_name, + class.class_code, + class.class_name, + class2.class_code AS parent_class_code, + class2.class_name AS parent_class_name, + mst.bill_code, + mb.material_code, + mb.material_name, + dtl.pcsn, + dtl.qty_unit_name, + ( + CASE + WHEN io_type = '0' THEN + '' + WHEN io_type = '1' + AND bill_type = '010701' THEN + CONCAT('-', real_qty) + ELSE + dtl.real_qty + END + ) AS out_qty, + ( + CASE + WHEN io_type = '1' THEN + '' + WHEN io_type = '0' + AND bill_type = '000501' THEN + CONCAT('-', real_qty) + ELSE + dtl.real_qty + END + ) AS in_qty + FROM + st_ivt_iostorinvdtl dtl + LEFT JOIN st_ivt_iostorinv mst ON mst.iostorinv_id = dtl.iostorinv_id + LEFT JOIN sys_dept dept ON dept.dept_id = mst.sysdeptid + LEFT JOIN pcs_if_purchaseorderproc proc ON proc.id = dtl.base_billdtl_id + LEFT JOIN md_cs_supplierbase sup ON sup.ext_id = proc.VEND_ID + LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id + LEFT JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id + LEFT JOIN md_pb_classstandard class2 ON class2.class_id = class.parent_class_id + WHERE + 1 = 1 + AND mst.is_delete = '0' + OPTION 输入.bill_code <> "" + mst.bill_code like 输入.bill_code + ENDOPTION + OPTION 输入.io_type <> "" + mst.io_type = 输入.io_type + ENDOPTION + OPTION 输入.buss_type <> "" + mst.buss_type like 输入.buss_type + ENDOPTION + OPTION 输入.bill_type <> "" + mst.bill_type = 输入.bill_type + ENDOPTION + OPTION 输入.stor_id <> "" + mst.stor_id = 输入.stor_id + ENDOPTION + OPTION 输入.deptIds <> "" + mst.sysdeptid in 输入.deptIds + ENDOPTION + OPTION 输入.bill_status <> "" + mst.bill_status = 输入.bill_status + ENDOPTION + OPTION 输入.begin_time <> "" + mst.input_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + mst.input_time <= 输入.end_time + ENDOPTION + OPTION 输入.quality_scode <> "" + dtl.quality_scode = 输入.quality_scode + ENDOPTION + OPTION 输入.pcsn <> "" + dtl.pcsn like 输入.pcsn + ENDOPTION + OPTION 输入.material_code <> "" + (mb.material_code like 输入.material_code or mb.material_name like 输入.material_code) + ENDOPTION + ) outq + where 1=1 + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "3" + QUERY + SELECT DISTINCT + mb.material_id, + mb.material_name, + mb.material_code, + class.parent_class_id, + ( + CASE + + WHEN class.class_id = '1503644362192588800' THEN + 1 + WHEN class.class_id = '1503644361664106496' THEN + 2 + WHEN class.class_id = '1503644362788179968' THEN + 4 + WHEN class.class_id = '1503644362234531840' THEN + 5 ELSE 3 + END + ) AS order_no + FROM + ( + SELECT + dtl.material_id + FROM + ( + SELECT + wo.material_id + FROM + pdm_bi_workorder wo + WHERE + wo.is_delete = '0' + AND wo.`status` IN ( '10', '20', '30' ) UNION + SELECT + plan.material_id + FROM + mps_bd_productdailyplan plan + WHERE + plan.`status` = '01' + ) a + INNER JOIN md_pd_productbom bom ON bom.material_id = a.material_id + INNER JOIN md_pd_productbomdtl dtl ON dtl.bom_id = bom.bom_id UNION + SELECT + mb2.material_id + FROM + md_me_materialbase mb2 + WHERE + 1 = 1 + AND mb2.is_delete = '0' + AND mb2.material_type_id IN ( '1503644361664106496', '1503644361697660928', '1503644362192588800', '1503644362234531840', '1503644362788179968', '1503644362838511616' ) + ) b + INNER JOIN md_me_materialbase mb ON mb.material_id = b.material_id + INNER JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id + ORDER BY + order_no, + material_code + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "4" + QUERY + SELECT + material_id,SUM( canuse_qty ) AS qty + FROM + st_ivt_structivt + WHERE + quality_scode = '01' + OPTION 输入.material_id <> "" + material_id = 输入.material_id + ENDOPTION + GROUP BY + material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "5" + QUERY + SELECT + FormulaDtl.material_id, + SUM( FormulaDtl.formula_qty ) AS qty + FROM + ( + SELECT + wo.workorder_id + FROM + pdm_bi_workorder wo + WHERE + wo.`status` = '40' + AND wo.is_delete = '0' + UNION ALL + SELECT + workorder.workorder_id + FROM + pdm_bi_workorder workorder + INNER JOIN PDM_BI_WorkTask WorkTask ON WorkTask.workorder_id = workorder.workorder_id + WHERE + workorder.`status` IN ( '50', '69', '97', '98' ) + AND workorder.is_delete = '0' + AND WorkTask.STATUS <> '99' + ) a + LEFT JOIN PDM_BI_Formula Formula ON Formula.workorder_id = a.workorder_id + LEFT JOIN PDM_BI_FormulaDtl FormulaDtl ON FormulaDtl.formula_id = Formula.formula_id and FormulaDtl.status<>'99' + where + 1=1 + and Formula.is_delete='0' + and Formula.status<>'99' + OPTION 输入.material_id <> "" + FormulaDtl.material_id = 输入.material_id + ENDOPTION + GROUP BY + FormulaDtl.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "6" + QUERY + SELECT + dtl.material_id, + SUM(ROUND((b.qty*dtl.standard_rate*0.01),3)) AS qty + FROM + ( + SELECT + material_id, + SUM( qty ) AS qty + FROM + ( + SELECT + material_id, + workorder_qty AS qty + FROM + pdm_bi_workorder wo + WHERE + wo.`status` < 50 + AND is_delete = '0' + OPTION 输入.begin_date <> "" + wo.planstart_time >= 输入.begin_date + ENDOPTION + OPTION 输入.end_date <> "" + wo.planstart_time <= 输入.end_date + ENDOPTION + OPTION 输入.org_ids <> "" + wo.org_id in 输入.org_ids + ENDOPTION + UNION ALL + SELECT + material_id, + product_weight AS qty + FROM + MPS_BD_ProductDailyPlan plan + LEFT JOIN sys_dept dept ON dept.`code` = plan.plan_org_code + WHERE + plan.`status` = '01' + OPTION 输入.begin_date <> "" + plan.planstart_date >= 输入.begin_date + ENDOPTION + OPTION 输入.end_date <> "" + plan.planstart_date <= 输入.end_date + ENDOPTION + OPTION 输入.org_ids <> "" + dept.dept_id in 输入.org_ids + ENDOPTION + ) a + GROUP BY + a.material_id + ) b + LEFT JOIN md_pd_productbom mst ON mst.material_id = b.material_id + LEFT JOIN md_pd_productbomdtl dtl ON mst.bom_id = dtl.bom_id + WHERE + 1=1 + OPTION 输入.material_id <> "" + dtl.material_id = 输入.material_id + ENDOPTION + GROUP BY + dtl.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "7" + QUERY + SELECT + ROUND(SUM(a.QTY),3) AS qty, + ROUND(SUM(a.allqty),3) AS allqty, + ROUND(SUM(a.ivt_qty),3) AS noqty, + ROUND(SUM(a.notqty),3) AS notqty, + ROUND(SUM(a.noin_qty),3) AS noin_qty, + material_id + FROM + ( + SELECT + oder.QTY, + IFNULL(redtl.allqty,0) AS allqty, + oder.QTY - IFNULL(redtl.allqty,0) AS notqty, + redtl.allqty - redtl.instor_qty AS noin_qty, + ivt.ivt_qty, + mater.material_id + FROM + PCS_IF_PurchaseOrderProc oder + LEFT JOIN md_cs_supplierbase supp ON oder.VEND_ID = supp.ext_id + LEFT JOIN md_me_materialbase mater ON oder.ITEM_ID = mater.ext_id + LEFT JOIN ( + SELECT + sum( a.receive_qty ) AS allqty, + sum(a.instor_qty) AS instor_qty, + max( a.source_billdtl_id ) AS source_billdtl_id, + max( a.material_id ) AS material_id, + max( a.pcsn ) AS pcsn, + max( a.receive_id ) AS receive_id + FROM + PCS_RC_ReceiveDtl a + LEFT JOIN PCS_IF_PurchaseOrderProc p ON a.source_billdtl_id = p.id + AND a.source_bill_code = p.vbillcode + LEFT JOIN pcs_rc_receivemst mst ON mst.receive_id = a.receive_id + WHERE + mst.is_delete = '0' + GROUP BY + a.source_billdtl_id + ) AS redtl ON redtl.source_billdtl_id = oder.id + LEFT JOIN ( + SELECT + sum( t.ivt_qty + t.warehousing_qty ) AS ivt_qty, + max( t.material_id ) AS material_id, + max( t.pcsn ) AS pcsn + FROM + ST_IVT_StructIvt t + LEFT JOIN PCS_RC_ReceiveDtl d ON t.material_id = d.material_id + AND t.pcsn = d.pcsn + WHERE + t.quality_scode = '00' + GROUP BY + t.material_id + ) AS ivt ON ivt.material_id = redtl.material_id + AND ivt.pcsn = redtl.pcsn + WHERE + oder.dr = '0' + AND + oder.proc_status < '09' + ) a + WHERE + 1=1 + OPTION 输入.material_id <> "" + a.material_id = 输入.material_id + ENDOPTION + GROUP BY a.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "77" + QUERY + SELECT + sum( a.receive_qty - a.instor_qty ) AS noin_qty, + a.material_id + FROM + PCS_RC_ReceiveDtl a + LEFT JOIN pcs_rc_receivemst mst ON mst.receive_id = a.receive_id + WHERE + mst.is_delete = '0' + AND mst.STATUS <> '99' + AND a.STATUS <> '99' + OPTION 输入.material_id <> "" + a.material_id = 输入.material_id + ENDOPTION + GROUP BY a.material_id + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "8" + QUERY + SELECT + dtl.material_id, + SUM(ROUND(( b.qty * dtl.standard_rate * 0.01 ),3 )) AS qty + FROM + ( + SELECT + material_id, + SUM( qty ) AS qty + FROM + ( + SELECT + material_id, + workorder_qty AS qty + FROM + pdm_bi_workorder wo + WHERE + wo.`status` < 50 + AND is_delete = '0' + OPTION 输入.begin_time <> "" + wo.planstart_time like 输入.begin_time + ENDOPTION + UNION ALL + SELECT + material_id, + product_weight AS qty + FROM + MPS_BD_ProductDailyPlan plan + WHERE + plan.`status` = '01' + OPTION 输入.begin_time <> "" + plan.planstart_date like 输入.begin_time + ENDOPTION + ) a + GROUP BY + a.material_id + ) b + LEFT JOIN md_pd_productbom mst ON mst.material_id = b.material_id + LEFT JOIN md_pd_productbomdtl dtl ON mst.bom_id = dtl.bom_id + WHERE + 1=1 + OPTION 输入.material_id <> "" + dtl.material_id = 输入.material_id + ENDOPTION + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "9" + QUERY + SELECT + plan.planstart_date, + plan.product_num, + ext.old_mark, + plan.product_weight, + plan.material_id, + materialbase.material_code, + dept.name + FROM + mps_bd_productdailyplan plan + LEFT JOIN md_me_producmaterialext ext ON ext.material_id = plan.material_id + LEFT JOIN md_me_materialbase materialbase ON materialbase.material_id = plan.material_id + LEFT JOIN sys_dept dept ON dept.`code` = plan.plan_org_code + WHERE + plan.status = '01' + OPTION 输入.begin_date <> "" + plan.planstart_date >= 输入.begin_date + ENDOPTION + OPTION 输入.end_date <> "" + plan.planstart_date <= 输入.end_date + ENDOPTION + OPTION 输入.org_ids <> "" + dept.dept_id in 输入.org_ids + ENDOPTION + UNION ALL + + SELECT + LEFT(wo.planstart_time,10) AS planstart_date, + COUNT(wo.workorder_id) AS product_num, + MAX(ext.old_mark) AS old_mark, + SUM(wo.workorder_qty) AS product_weight, + wo.material_id, + MAX(mb.material_code) AS material_code, + MAX(dept.name) AS name + FROM + pdm_bi_workorder wo + LEFT JOIN md_me_materialbase mb ON mb.material_id = wo.material_id + LEFT JOIN md_me_producmaterialext ext ON ext.material_id = wo.material_id + LEFT JOIN sys_dept dept ON dept.dept_id = wo.org_id + WHERE + wo.`status` < 50 + AND + wo.is_delete = '0' + OPTION 输入.begin_time <> "" + wo.planstart_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + wo.planstart_time <= 输入.end_time + ENDOPTION + OPTION 输入.org_ids <> "" + wo.org_id in 输入.org_ids + ENDOPTION + GROUP BY + planstart_time,wo.material_id + ORDER BY + planstart_date + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "10" + QUERY + SELECT + dtl.material_id, + b.currentDate, + ROUND((b.qty * dtl.standard_rate * 0.01),3) as qty + FROM ( + SELECT + material_id,SUM( qty ) AS qty,currentDate + FROM + ( + SELECT + material_id, + workorder_qty AS qty, + wo.planstart_time as currentDate + FROM + pdm_bi_workorder wo + WHERE wo.`status` < 50 AND is_delete = '0' + OPTION 输入.begin_time <> "" + wo.planstart_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + wo.planstart_time <= 输入.end_time + ENDOPTION + UNION ALL + SELECT + material_id, + product_weight AS qty, + planstart_date as currentDate + FROM + MPS_BD_ProductDailyPlan + WHERE `status` = '01' + OPTION 输入.begin_date <> "" + planstart_date >= 输入.begin_date + ENDOPTION + OPTION 输入.end_date <> "" + planstart_date <= 输入.end_date + ENDOPTION + ) a GROUP BY a.material_id,currentDate + ) b + LEFT JOIN md_pd_productbom mst ON mst.material_id = b.material_id + LEFT JOIN md_pd_productbomdtl dtl ON mst.bom_id = dtl.bom_id + WHERE + 1=1 order by currentDate + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "11" + QUERY + SELECT DISTINCT + mb.material_id, + mb.material_name, + mb.material_code, + class.parent_class_id, + (case when class.class_id = '1503644362192588800' then 1 + when class.class_id = '1503644361664106496' then 2 + when class.class_id = '1503644362788179968' then 4 + when class.class_id = '1503644362234531840' then 5 + else 3 end) AS order_no + FROM + ( + SELECT + wo.material_id + FROM + pdm_bi_workorder wo + WHERE + wo.is_delete = '0' + AND wo.`status` IN ( '10', '20', '30' ) + OPTION 输入.begin_time <> "" + wo.planstart_time >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + wo.planstart_time <= 输入.end_time + ENDOPTION + UNION + SELECT + plan.material_id + FROM + mps_bd_productdailyplan plan + WHERE + plan.`status` = '01' + OPTION 输入.begin_time <> "" + plan.planstart_date >= 输入.begin_time + ENDOPTION + OPTION 输入.end_time <> "" + plan.planstart_date <= 输入.end_time + ENDOPTION + ) a + LEFT JOIN md_pd_productbom bom ON bom.material_id = a.material_id + LEFT JOIN md_pd_productbomdtl dtl ON dtl.bom_id = dtl.bom_id + LEFT JOIN md_me_materialbase mb ON mb.material_id = dtl.material_id + LEFT JOIN md_pb_classstandard class ON class.class_id = mb.material_type_id + ORDER BY order_no,material_code + ENDSELECT + ENDQUERY + ENDIF + + IF 输入.flag = "12" + QUERY + SELECT + material_id, + SUM(qty) AS qty + FROM + pdm_bi_spendrowqty + + group by material_id + + ENDSELECT + ENDQUERY + ENDIF + + +