|
|
@@ -30,9 +30,9 @@ public class rpt : IHttpHandler, IReadOnlySessionState
|
|
|
SELECT
|
|
|
DISTINCT MDF.DEFECTCODE AS DC, MDF.DEFECTID,
|
|
|
'CASE WHEN GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标)=126
|
|
|
- THEN TO_CHAR(( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''
|
|
|
+ THEN TO_CHAR(( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT productiondataid) * 100 ), ''fm99990.00'' ) || ''%''
|
|
|
ELSE
|
|
|
- TO_CHAR( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
|
|
|
+ TO_CHAR( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) ) END' AS DEFECTCODE,
|
|
|
MDF.DEFECTNAME
|
|
|
FROM TP_MST_DEFECT MDF
|
|
|
where DEFECTTYPEID=5 or MDF.DEFECTCODE='20' ORDER BY MDF.DEFECTID");
|
|
|
@@ -45,7 +45,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
|
|
|
string sumdefect = "";
|
|
|
DataTable dts = conn.ExecuteDatatable(@"SELECT
|
|
|
DISTINCT MDF.DEFECTCODE AS DC, MDF.DEFECTID,
|
|
|
- 'TO_CHAR(( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT 出窑条码) * 100 ), ''fm99990.00'' ) || ''%''' AS DEFECTCODE,
|
|
|
+ 'TO_CHAR(( COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 基础数据.缺陷编码 = '''||MDF.DEFECTCODE||''' THEN to_char(productiondataid||缺陷条码||基础数据.缺陷ID ) ELSE NULL END ) / COUNT(DISTINCT productiondataid) * 100 ), ''fm99990.00'' ) || ''%''' AS DEFECTCODE,
|
|
|
MDF.DEFECTNAME
|
|
|
FROM TP_MST_DEFECT MDF
|
|
|
where DEFECTTYPEID=5 or MDF.DEFECTCODE='20' ORDER BY MDF.DEFECTID");
|
|
|
@@ -66,60 +66,124 @@ public class rpt : IHttpHandler, IReadOnlySessionState
|
|
|
}
|
|
|
|
|
|
string sqlStr = @"WITH 基础数据 AS
|
|
|
- (
|
|
|
- SELECT
|
|
|
- pd.GROUTINGLINEID,pd.工号,pd.产品名称,pd.姓名,pd.产品编码,pd.产品规格,pd.釉色,pd.商标,pd.出窑条码,pd.缺陷条码,pd.缺陷ID,DEFECTCODE 缺陷编码,缺陷类别,PROCEDUREID AS 工序,GOODSLEVELTYPEID
|
|
|
- FROM(
|
|
|
- SELECT
|
|
|
- GROUTINGLINEID,工号,产品名称,姓名,产品编码,产品规格,釉色,商标,出窑条码,缺陷条码,缺陷ID,DEFECTCODE,GOODSLEVELTYPEID,缺陷类别,PROCEDUREID,
|
|
|
- row_number() over (partition by 出窑条码 order by GOODSLEVELTYPEID DESC ) as rownums
|
|
|
- FROM(
|
|
|
- SELECT
|
|
|
- GDL.GROUTINGLINEID,
|
|
|
- case when PDC.PROCEDUREID=41 THEN 'Y26 ' else TO_CHAR(STF.STAFFCODE) end AS 工号,
|
|
|
- case when PDC.PROCEDUREID=41 THEN 'Y26擦坯 ' else TO_CHAR(STF.STAFFNAME) end AS 姓名,
|
|
|
- GD.GOODSCODE AS 产品编码,
|
|
|
- GD.GOODSNAME AS 产品名称,
|
|
|
- GD.GOODSSPECIFICATION AS 产品规格,
|
|
|
- MD.DICTIONARYVALUE AS 釉色,
|
|
|
- LG.LOGONAME AS 商标,
|
|
|
- PD.BARCODE 出窑条码,
|
|
|
- DF.BARCODE 缺陷条码,
|
|
|
- DF.DEFECTID 缺陷ID,
|
|
|
- DF.DEFECTCODE ,
|
|
|
- MDF.DEFECTTYPEID 缺陷类别,
|
|
|
- CASE WHEN PDC.PROCEDUREID=10 THEN '人工'
|
|
|
- WHEN PDC.PROCEDUREID=37 THEN '机械手单柜'
|
|
|
- WHEN PDC.PROCEDUREID=41 THEN '1拖4机械手' ELSE NULL END PROCEDUREID,
|
|
|
- CASE WHEN PDS.GOODSLEVELTYPEID < PD.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
- WHEN PD.GOODSLEVELTYPEID < PDS.GOODSLEVELTYPEID THEN PDS.GOODSLEVELTYPEID
|
|
|
- WHEN PDS.GOODSLEVELTYPEID IS NULL THEN PD.GOODSLEVELTYPEID
|
|
|
- WHEN PD.GOODSLEVELTYPEID = PDS.GOODSLEVELTYPEID THEN PD.GOODSLEVELTYPEID
|
|
|
- ELSE NULL END GOODSLEVELTYPEID
|
|
|
- FROM
|
|
|
- TP_PM_PRODUCTIONDATA PD
|
|
|
- LEFT JOIN TP_PM_GROUTINGDAILYDETAIL GDL ON GDL.BARCODE = PD.BARCODE
|
|
|
- LEFT JOIN TP_PC_GROUTINGLINE gl ON gl.GROUTINGLINEID=gdl.GROUTINGLINEID
|
|
|
- LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
|
|
|
- LEFT JOIN TP_MST_DataDictionary MD ON GD.GLAZETYPEID = MD.DICTIONARYID
|
|
|
- AND MD.DICTIONARYTYPE = 'TPC002'
|
|
|
- LEFT JOIN TP_MST_LOGO LG ON PD.LOGOID = LG.LOGOID
|
|
|
- LEFT JOIN TP_PM_DEFECT DF ON PD.BARCODE = DF.BARCODE AND DF.PROCEDUREID NOT IN(61,28) AND DF.DEFECTID IN (
|
|
|
- SELECT DISTINCT MDF.DEFECTID FROM TP_MST_DEFECT MDF where DEFECTTYPEID=5 or MDF.DEFECTCODE='20') AND DF.VALUEFLAG=1
|
|
|
- LEFT JOIN TP_MST_DEFECT MDF ON DF.DEFECTID = MDF.DEFECTID
|
|
|
- INNER JOIN TP_PM_PRODUCTIONDATA PDC ON PDC.BARCODE=GDL.BARCODE AND PDC.PROCEDUREID IN (10,37,41)AND PDC.VALUEFLAG=1
|
|
|
- LEFT JOIN TP_PC_CLASSESDETAIL CLS ON CLS.CLASSESSETTINGID=PDC.CLASSESSETTINGID
|
|
|
- LEFT JOIN TP_HR_STAFF STF ON STF.STAFFID=CLS.STAFFID
|
|
|
- LEFT JOIN TP_MST_JOBS jobs ON jobs.JOBSID=CLS.SJOBSID
|
|
|
- LEFT JOIN TP_PM_PRODUCTIONDATA pds ON PDS.BARCODE=PD.BARCODE AND PDS.PROCEDUREID=60 AND PDS.VALUEFLAG=1
|
|
|
- WHERE
|
|
|
- PD.PROCEDUREID IN ( 16) AND PD.VALUEFLAG = 1 AND CLS.UJOBSID =22
|
|
|
- AND PD.CREATETIME >= @DATEBEGIN@
|
|
|
- AND PD.CREATETIME < @DATEEND@
|
|
|
- )) pd
|
|
|
-
|
|
|
-
|
|
|
- )
|
|
|
+ (SELECT groutinglineid
|
|
|
+ ,工号
|
|
|
+ ,产品名称
|
|
|
+ ,姓名
|
|
|
+ ,产品编码
|
|
|
+ ,产品规格
|
|
|
+ ,釉色
|
|
|
+ ,商标
|
|
|
+ ,出窑条码
|
|
|
+ ,缺陷条码
|
|
|
+ ,缺陷id
|
|
|
+ ,defectcode 缺陷编码
|
|
|
+ ,goodsleveltypeid
|
|
|
+ ,缺陷类别
|
|
|
+ ,工序
|
|
|
+ ,productiondataid
|
|
|
+ FROM (SELECT DISTINCT gdl.groutinglineid
|
|
|
+ ,CASE
|
|
|
+ WHEN pd.procedureid = 41 THEN
|
|
|
+ 'Y26 '
|
|
|
+ ELSE
|
|
|
+ to_char(stf.staffcode)
|
|
|
+ END AS 工号
|
|
|
+ ,CASE
|
|
|
+ WHEN pd.procedureid = 41 THEN
|
|
|
+ 'Y26擦坯 '
|
|
|
+ ELSE
|
|
|
+ to_char(stf.staffname)
|
|
|
+ END AS 姓名
|
|
|
+ ,gd.goodscode AS 产品编码
|
|
|
+ ,gd.goodsname AS 产品名称
|
|
|
+ ,gd.goodsspecification AS 产品规格
|
|
|
+ ,md.dictionaryvalue AS 釉色
|
|
|
+ ,lg.logoname AS 商标
|
|
|
+ ,pd.barcode 出窑条码
|
|
|
+ ,df.barcode 缺陷条码
|
|
|
+ ,df.defectid 缺陷id
|
|
|
+ ,df.defectcode
|
|
|
+ ,mdf.defecttypeid 缺陷类别
|
|
|
+ ,CASE
|
|
|
+ WHEN pd.procedureid = 10 THEN
|
|
|
+ '人工'
|
|
|
+ WHEN pd.procedureid = 37 THEN
|
|
|
+ '机械手单柜'
|
|
|
+ WHEN pd.procedureid = 41 THEN
|
|
|
+ '1拖4机械手'
|
|
|
+ ELSE
|
|
|
+ NULL
|
|
|
+ END 工序
|
|
|
+ ,nvl(pd61.goodsleveltypeid, pd.goodsleveltypeid) goodsleveltypeid
|
|
|
+ ,nvl(pd61.productiondataid, pd.productiondataid) productiondataid
|
|
|
+ FROM (SELECT *
|
|
|
+ FROM (SELECT pd28.groutingdailydetailid
|
|
|
+ ,pd28.goodsid
|
|
|
+ ,pd28.logoid
|
|
|
+ ,pd28.goodsleveltypeid
|
|
|
+ ,pd24.procedureid
|
|
|
+ ,pd28.barcode
|
|
|
+ ,pd28.kilncarbatchno
|
|
|
+ ,pd28.productiondataid
|
|
|
+ ,pd24.classessettingid
|
|
|
+ ,pd24.usercode
|
|
|
+ ,row_number() over(PARTITION BY pd28.productiondataid ORDER BY pd24.productiondataid DESC) AS rownums
|
|
|
+ FROM tp_pm_productiondata pd28 -- 重烧质量登记
|
|
|
+ INNER JOIN tp_pm_productiondata pd24 -- 5-8重烧烧窑
|
|
|
+ ON pd24.groutingdailydetailid = pd28.groutingdailydetailid
|
|
|
+ WHERE pd28.procedureid = 16
|
|
|
+ AND pd28.valueflag = 1
|
|
|
+ AND pd24.valueflag = 1
|
|
|
+ AND pd24.procedureid IN (24, 10, 37, 41) -- 质量登记里包含
|
|
|
+ AND pd28.createtime >= @DATEBEGIN@ --to_date('2025-06-02', 'yyyy-MM-DD')
|
|
|
+ AND pd28.createtime < @DATEEND@
|
|
|
+ -- to_date('2025-06-02 23:59:59', 'yyyy-mm-dd hh24:mi:ss')
|
|
|
+ AND pd24.productiondataid < pd28.productiondataid) t
|
|
|
+ WHERE rownums = 1
|
|
|
+ AND t.procedureid IN (10, 37, 41)) pd
|
|
|
+ LEFT JOIN tp_pm_productiondata pd61 -- 重烧质量检测 功能检测
|
|
|
+ ON pd61.procedureid = 60
|
|
|
+ AND pd61.valueflag = 1
|
|
|
+ AND pd61.groutingdailydetailid = pd.groutingdailydetailid
|
|
|
+ AND pd61.kilncarbatchno = pd.kilncarbatchno
|
|
|
+ AND pd61.productiondataid > pd.productiondataid
|
|
|
+ -- TODO
|
|
|
+ AND NOT EXISTS (SELECT 1
|
|
|
+ FROM tp_pm_productiondata pd28c -- 质量登记 重复的
|
|
|
+ WHERE pd28c.procedureid = 16
|
|
|
+ AND pd28c.valueflag = 1
|
|
|
+ AND pd28c.groutingdailydetailid = pd.groutingdailydetailid
|
|
|
+ AND pd28c.kilncarbatchno = pd.kilncarbatchno
|
|
|
+ AND pd28c.productiondataid > pd.productiondataid
|
|
|
+ AND pd28c.productiondataid < pd61.productiondataid)
|
|
|
+ LEFT JOIN tp_pm_groutingdailydetail gdl
|
|
|
+ ON gdl.groutingdailydetailid = pd.groutingdailydetailid
|
|
|
+ LEFT JOIN tp_pc_groutingline gl
|
|
|
+ ON gl.groutinglineid = gdl.groutinglineid
|
|
|
+ LEFT JOIN tp_mst_goods gd
|
|
|
+ ON pd.goodsid = gd.goodsid
|
|
|
+ LEFT JOIN tp_mst_datadictionary md
|
|
|
+ ON gd.glazetypeid = md.dictionaryid
|
|
|
+ AND md.dictionarytype = 'TPC002'
|
|
|
+ LEFT JOIN tp_mst_logo lg
|
|
|
+ ON pd.logoid = lg.logoid
|
|
|
+ LEFT JOIN tp_pm_defect df
|
|
|
+ ON df.productiondataid = nvl(pd61.productiondataid, pd.productiondataid)
|
|
|
+ AND df.defectcode IN (SELECT DISTINCT mdf.defectcode
|
|
|
+ FROM tp_mst_defect mdf
|
|
|
+ WHERE defecttypeid = 5 OR mdf.defectcode = '20')
|
|
|
+ AND df.valueflag = 1
|
|
|
+ AND df.procedureid NOT IN (61, 28)
|
|
|
+ LEFT JOIN tp_mst_defect mdf
|
|
|
+ ON df.defectid = mdf.defectid
|
|
|
+ LEFT JOIN tp_pc_classesdetail cls
|
|
|
+ ON cls.classessettingid = pd.classessettingid
|
|
|
+ LEFT JOIN tp_hr_staff stf
|
|
|
+ ON stf.staffid = cls.staffid
|
|
|
+ LEFT JOIN tp_mst_jobs jobs
|
|
|
+ ON jobs.jobsid = stf.jobs) pd
|
|
|
+ )
|
|
|
SELECT * FROM(
|
|
|
SELECT
|
|
|
GROUPING_ID(基础数据.工号,基础数据.姓名,基础数据.产品名称,基础数据.产品规格,基础数据.釉色,基础数据.商标,基础数据.工序) AS GID,
|
|
|
@@ -134,14 +198,14 @@ public class rpt : IHttpHandler, IReadOnlySessionState
|
|
|
TO_CHAR(基础数据.产品规格)产品规格,
|
|
|
TO_CHAR(基础数据.釉色)釉色,
|
|
|
TO_CHAR(基础数据.商标)商标,
|
|
|
- TO_CHAR(COUNT(DISTINCT 出窑条码)) 出窑量,
|
|
|
- TO_CHAR(COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20')THEN 基础数据.出窑条码 ELSE NULL END )) 优级品量,
|
|
|
- DECODE(NVL((COUNT( DISTINCT 基础数据.出窑条码 ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20') THEN 基础数据.出窑条码 ELSE NULL END)),0),0,'0%',
|
|
|
- TO_CHAR((NVL((COUNT(DISTINCT 基础数据.出窑条码) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20') THEN 基础数据.出窑条码 ELSE NULL END ) ) ,0 ) /
|
|
|
- DECODE(NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ),0,1,NVL( COUNT( DISTINCT 基础数据.出窑条码 ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
|
|
|
+ TO_CHAR(COUNT(DISTINCT productiondataid)) 出窑量,
|
|
|
+ TO_CHAR(COUNT(DISTINCT productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20')THEN productiondataid ELSE NULL END )) 优级品量,
|
|
|
+ DECODE(NVL((COUNT( DISTINCT productiondataid ) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20') THEN productiondataid ELSE NULL END)),0),0,'0%',
|
|
|
+ TO_CHAR((NVL((COUNT(DISTINCT productiondataid) - COUNT(DISTINCT CASE WHEN GOODSLEVELTYPEID NOT IN (4) AND (缺陷类别=5 or 缺陷编码='20') THEN productiondataid ELSE NULL END ) ) ,0 ) /
|
|
|
+ DECODE(NVL( COUNT( DISTINCT productiondataid ), 1 ),0,1,NVL( COUNT( DISTINCT productiondataid ), 1 ) ) ) * 100,'fm99990.00' ) || '%' ) AS 优级品率,
|
|
|
|
|
|
- TO_CHAR(COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
|
|
|
- TO_CHAR( (COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL THEN to_char(缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT 出窑条码) * 100), 'fm99990.00') || '%' 缺陷率, {DEFECT}
|
|
|
+ TO_CHAR(COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END )) 缺陷量,
|
|
|
+ TO_CHAR( (COUNT( DISTINCT CASE WHEN 缺陷ID IS NOT NULL AND 缺陷条码 IS NOT NULL THEN to_char(productiondataid||缺陷条码||缺陷ID ) ELSE NULL END ) /COUNT(DISTINCT productiondataid) * 100), 'fm99990.00') || '%' 缺陷率, {DEFECT}
|
|
|
FROM 基础数据
|
|
|
LEFT JOIN TP_MST_DEFECT MDF ON 基础数据.缺陷ID = MDF.DEFECTID
|
|
|
GROUP BY Grouping sets ( (
|