张忠帅 2 éve
szülő
commit
1e74ff0f81
2 módosított fájl, 209 hozzáadás és 475 törlés
  1. 68 64
      wwwroot/main/manage/JiaShiCang/demo.html
  2. 141 411
      wwwroot/main/manage/JiaShiCang/rpt.ashx

+ 68 - 64
wwwroot/main/manage/JiaShiCang/demo.html

@@ -87,11 +87,13 @@
 			</div>
 			<div class="col mx-1 boardone">
 				<div class="title">
-					半检大小件TOP3缺陷占比
+					每周各车间半检TOP3
 				</div>
 				<div class="doughnut">
 					<canvas id="canvas031" style="margin-left:60px; margin-top:120px;"></canvas>
+
 					<canvas id="canvas032" style="margin-left:440px; margin-top:-200px"></canvas>
+
 					<canvas id="canvas033" style="margin-left:820px; margin-top:-200px"></canvas>
 				</div>
 			</div>
@@ -113,7 +115,7 @@
 			</div>
 			<div class="col mx-1 boardone">
 				<div class="title">
-					成检大小件TOP3缺陷占比
+					每周各车间成检TOP3
 				</div>
 				<div class="doughnut">
 					<canvas id="canvas021" style="margin-left:60px; margin-top:120px;"></canvas>
@@ -270,7 +272,9 @@
 			initAll();
 			//设置缩放
 			xuwell.setScale(0.391);
-			loadAll()
+			//loadAll();
+            load08();
+            load02(); load03();
 		});
 
 		//初期加载画面样式
@@ -857,57 +861,58 @@
 		//模具库存周转率,产品 SKU 周转率
 		function init08() {
 			window.config10 = {
-				data: {
-					labels: [],
-					datasets: [{
-						label: '周转周期',
-						backgroundColor: Chart.helpers.color(window.chartColors.orange).alpha(0.6).rgbString(),
-						fill: false,
-						borderColor: window.chartColors.orange,
-						borderWidth: 4,
-						pointRadius: 30,
-						data: []
-					},]
-				},
-				type: 'bar',
-				options: {
-					legend: {
-						display: true
-					},
-					title: {
-						display: false,
-						text: "产品SKU周转周期"
-					},
-					tooltips: {
-						mode: 'point',
-						intersect: false
-					},
-					responsive: true,
-					scales: {
-						xAxes: [{
-							display: true,
-							scaleLabel: {
-								display: false,
-								labelString: ''
-							}
-						}],
-						yAxes: [{
-							display: true,
-							id: 'A',
-							name: 'A',
-							scalePositionLeft: true,
-							position: 'left',
-							scaleLabel: {
-								display: false,
-								labelString: 'Value'
-							},
-							ticks: {
-								min: 100,
-								stepSize: 500
-							}
-						}]
-					}
-				}
+                data: {
+                    labels: [],
+                    datasets: [{
+                        label: '',
+                        backgroundColor: Chart.helpers.color(window.chartColors.orange).alpha(0.6).rgbString(),
+                        fill: false,
+                        borderColor: window.chartColors.orange,
+                        borderWidth: 4,
+                        pointRadius: 30,
+                        data: []
+                    }]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+						display: true,
+						position:'Top'
+                    },
+                    title: {
+                        display: false,
+                        text: "SKU周转周期"
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true,
+                    scales: {
+                        xAxes: [{
+                            display: true,
+                            scaleLabel: {
+                                display: false,
+                                labelString: ''
+                            }
+                        }],
+                        yAxes: [{
+                            display: true,
+                            id: 'A',
+                            name: 'A',
+                            scalePositionLeft: true,
+                            position: 'left',
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            },
+                            ticks: {
+                                min: 0,
+                                stepSize: 100
+                            }
+                        }]
+                    }
+                }
 			};
 			var ctx10 = document.getElementById("canvas10").getContext("2d");
 			window.chart10 = new Chart(ctx10, config10);
@@ -1026,15 +1031,15 @@
 					var num = parseInt(json["rows"].length);
 					for (var i = 0; i < num; i++) {
 						if (i <= 2) { //一车间
-							onedate.push(parseInt(json["rows"][i]["缺陷占比"]));
+							onedate.push((json["rows"][i]["缺陷占比"]));
 							onelabel.push(json["rows"][i]["缺陷名称"]);
 						}
 						if (i > 2 && i < 6) { //二车间
-							twodate.push(parseInt(json["rows"][i]["缺陷占比"]));
+							twodate.push((json["rows"][i]["缺陷占比"]));
 							twolabel.push(json["rows"][i]["缺陷名称"]);
 						}
 						if (i >= 6) {//三车间
-							threedate.push(parseInt(json["rows"][i]["缺陷占比"]));
+							threedate.push((json["rows"][i]["缺陷占比"]));
 							threelabel.push(json["rows"][i]["缺陷名称"]);
 						}
 						window.chart031.data.datasets[0].data = onedate;
@@ -1068,15 +1073,15 @@
 						var num = parseInt(json["rows"].length);
 						for (var i = 0; i < num; i++) {
 							if (i <= 2) { //一车间
-								onedate.push(parseInt(json["rows"][i]["缺陷占比"]));
+								onedate.push((json["rows"][i]["缺陷占比"]));
 								onelabel.push(json["rows"][i]["缺陷名称"]);
 							}
 							if (i > 2 && i < 6) { //二车间
-								twodate.push(parseInt(json["rows"][i]["缺陷占比"]));
+								twodate.push((json["rows"][i]["缺陷占比"]));
 								twolabel.push(json["rows"][i]["缺陷名称"]);
 							}
 							if (i >= 6) {//三车间
-								threedate.push(parseInt(json["rows"][i]["缺陷占比"]));
+								threedate.push((json["rows"][i]["缺陷占比"]));
 								threelabel.push(json["rows"][i]["缺陷名称"]);
 							}
 							window.chart021.data.datasets[0].data = onedate;
@@ -1108,7 +1113,6 @@
 					for (var i = 0; i < num; i++) {
 						onedate.push(parseInt(json["rows"][i]["FINNUM"]));
 						onelabel.push(json["rows"][i]["GOODSCODE"]);
-						console.log(window.chart04);
 						window.chart04.data.labels = onelabel;
 						window.chart04.data.datasets[0].data = onedate;
 						window.chart04.update();
@@ -1212,14 +1216,14 @@
 			$.get("rpt.ashx?m=Load10", function (data) {
 				//更新图表数据
 				var json = JSON.parse(data);
+				console.log(json);
 				if (json["success"] == true) {
 					let onedate1 = [];
 					let onedate2 = [];
-					let onedate3 = [];
 					var num = parseInt(json["rows"].length);
 					for (var i = 0; i < num; i++) {
-						onedate1.push(parseInt(json["rows"][i]["地点"]));
-						onedate2.push(parseInt(json["rows"][i]["周转周期"]));
+						onedate1.push(json["rows"][i]["地点"]);
+						onedate2.push(json["rows"][i]["周转周期"]);
 					}
 					window.chart10.data.datasets[0].data = onedate2;
 					window.chart10.data.labels = onedate1;

+ 141 - 411
wwwroot/main/manage/JiaShiCang/rpt.ashx

@@ -967,7 +967,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 													SELECT
 														ROUND((((本烧出窑总数.ONESUBSTANDARDCOUNT-本烧次品重烧数.ONESUBSTANDARDCOUNT-本烧次品重烧数.ONEREFIRECOUNT)+(重烧出窑总数.ONESUBSTANDARDCOUNT-重烧次品重烧数.ONESUBSTANDARDCOUNT-重烧次品重烧数.ONEREFIRECOUNT))/本烧出窑总数.ONESUBSTANDARDCOUNT)*100 ,2 ) AS 一车间,
 														ROUND((((本烧出窑总数.TWOSUBSTANDARDCOUNT-本烧次品重烧数.TWOSUBSTANDARDCOUNT-本烧次品重烧数.TWOREFIRECOUNT)+(重烧出窑总数.TWOSUBSTANDARDCOUNT-重烧次品重烧数.TWOSUBSTANDARDCOUNT-重烧次品重烧数.TWOREFIRECOUNT))/本烧出窑总数.TWOSUBSTANDARDCOUNT)*100 ,2 ) AS 二车间,
-														ROUND((((本烧出窑总数.THREESUBSTANDARDCOUNT-本烧次品重烧数.THREESUBSTANDARDCOUNT-本烧次品重烧数.THREEREFIRECOUNT)+(重烧出窑总数.THREESUBSTANDARDCOUNT-重烧次品重烧数.THREESUBSTANDARDCOUNT-重烧次品重烧数.THREEREFIRECOUNT))/本烧出窑总数.ONESUBSTANDARDCOUNT)*100 ,2 ) AS 三车间
+														ROUND((((本烧出窑总数.THREESUBSTANDARDCOUNT-本烧次品重烧数.THREESUBSTANDARDCOUNT-本烧次品重烧数.THREEREFIRECOUNT)+(重烧出窑总数.THREESUBSTANDARDCOUNT-重烧次品重烧数.THREESUBSTANDARDCOUNT-重烧次品重烧数.THREEREFIRECOUNT))/本烧出窑总数.THREESUBSTANDARDCOUNT)*100 ,2 ) AS 三车间
 													FROM 
 													本烧出窑总数
 													LEFT JOIN 本烧次品重烧数 ON 1 = 1
@@ -1277,16 +1277,15 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 														*
 														FROM(
 														SELECT
-														DISTINCT
-															FD.GOODSCODE,
+															GD.MATERIALCODE,
 															COUNT(DISTINCT FD.BARCODE) FINNUM
 														FROM (
 															SELECT
-																DISTINCT GOODSID, GOODSCODE, CREATETIME
+																DISTINCT GOODSID, MATERIALCODE, CREATETIME
 															FROM
-															( SELECT GOODSID, GOODSCODE, CREATETIME FROM TP_MST_GOODS 
+															( SELECT GOODSID, MATERIALCODE, CREATETIME FROM TP_MST_GOODS 
 																UNION ALL 
-																SELECT GOODSID, GOODSCODE, CREATETIME FROM TP_MST_GOODSLOGOSAP
+																SELECT GOODSID, MATERIALCODE, CREATETIME FROM TP_MST_GOODSLOGOSAP
 															)
 														) GD
 														INNER JOIN TP_PM_FINISHEDPRODUCT FD ON FD.GOODSID = GD.GOODSID
@@ -1295,8 +1294,8 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 															AND FD.CREATETIME >= TRUNC( SYSDATE - 7 ) 
 															AND TRUNC( FD.CREATETIME ) <= TRUNC( SYSDATE )
 														GROUP BY
-															FD.GOODSCODE,
-															GD.CREATETIME	
+															GD.MATERIALCODE,
+															GD.CREATETIME		
 														ORDER BY
 															COUNT(DISTINCT FD.BARCODE) DESC
 															)
@@ -1307,425 +1306,156 @@ public class rpt : IHttpHandler, IReadOnlySessionState
                 context.Response.Write(jsonStr);
             }
 			if (context.Request["m"].ToString() == "Load10")
-            {  string begin = DateTime.Now.AddDays(-7).ToString("yyyy-MM-dd") + " 00:00:00";
-               string end = DateTime.Now.ToString("yyyy-MM-dd") + " 0:00:00";
-			   List<CDAParameter> sqlPara = new List<CDAParameter>();
-                sqlPara.Add(new CDAParameter("BEGIN", begin, DataType.DateTime));
-                sqlPara.Add(new CDAParameter("END", end, DataType.DateTime));
+            {   List<CDAParameter> sqlPara = new List<CDAParameter>();
+            sqlPara.Add(new CDAParameter("DATEBEGIN", DateTime.Now.AddDays(-1).ToString("yyyy-MM-dd")+ " 00:00:00", DataType.DateTime));
+            sqlPara.Add(new CDAParameter("DATEEND", DateTime.Now.AddDays(0).ToString("yyyy-MM-dd")+ " 23:59:59", DataType.DateTime));
 			
-                string sqlStr = @"
-WITH 
-											模具出库时间 AS (
-												SELECT
-													mch.MOULDCODE,
-													mch.GOODSCODE,
-													mch.createtime AS CREATETIME 
+                string sqlStr = @"SELECT
+													* 
 												FROM
-													tp_pc_mouldchangehistory mch
-													INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype 
-												WHERE
-													mch.accountid = 1 
-													AND mch.operationtype >= - 1 
-													AND mch.createtime >= @BEGIN@  AND mch.createtime <= @END@
-													AND mopt.operationtypename = '库存上线(出库)' 
-													AND mch.GOODSCODE IN (
+													(
 													SELECT
-														GOODSCODE 
+														TO_CHAR( '模具' || GOODSCODE ) AS 地点,
+														GOODSCODE,
+														时间差值,
+														to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期 
 													FROM
 														(
 														SELECT
 															mch.GOODSCODE,
-														SUM( CASE WHEN mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END ) - SUM( CASE WHEN mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END ) 
-											FROM
-												tp_pc_mouldchangehistory mch
-												INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype 
-											WHERE
-												mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mch.createtime >= @BEGIN@ AND mch.createtime <= @END@
-											GROUP BY
-												mch.GOODSCODE 
-											ORDER BY
-												(
-												SUM( CASE WHEN mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END ) - SUM( CASE WHEN mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END ) 
-												) ASC 
-												) 
-											WHERE
-												ROWNUM <= 3 
-												) 
-												),
-											模具入库时间 AS (
-											SELECT
-											mch.MOULDCODE,
-											mch.GOODSCODE,
-											mch.createtime AS CREATETIME
-											FROM
-												tp_pc_mouldchangehistory mch
-													INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype
-												WHERE mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mopt.operationtypename = '模具新增(入库)'
-												AND mch.MOULDCODE IN(
-												SELECT
-												mch.MOULDCODE
-											FROM
-												tp_pc_mouldchangehistory mch
-												INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype 
-											WHERE
-												mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mch.createtime >= @BEGIN@  AND mch.createtime <= @END@
-												AND mopt.operationtypename = '库存上线(出库)' 
-												AND mch.GOODSCODE IN (
+															SUM( mch.时间差 ) AS 时间差值,
+															COUNT( DISTINCT goodsmould.MOULDCODE ) AS 产量 
+														FROM
+															(
+															SELECT
+																mch.MOULDCODE,
+																mch.GOODSCODE,
+																TO_CHAR( ( ceil( ( ( mch.CREATETIME - mchh.CREATETIME ) ) * 24 ) ), 'fm9999990' ) AS 时间差 
+															FROM
+																tp_pc_mouldchangehistory mch
+																LEFT JOIN tp_pc_mouldchangehistory mchh ON mchh.MOULDCODE = mch.MOULDCODE 
+																AND mchh.operationtype = 1 
+															WHERE
+																mch.accountid = 1 
+																AND mch.operationtype = 6 --operationtype=1 新增入库    operationtype=6 库存上线(出库) -1为变更型号
+																
+																AND mch.operationtype >- 1 
+																AND mch.createtime >= @DATEBEGIN@
+																AND mch.createtime <= @DATEEND@
+															) mch
+															LEFT JOIN tp_pc_mouldchangehistory goodsmould ON goodsmould.MOULDCODE = mch.MOULDCODE 
+														WHERE
+															goodsmould.accountid = 1 
+															AND goodsmould.operationtype = 6 
+															AND goodsmould.operationtype >- 1 
+															AND goodsmould.createtime >= @DATEBEGIN@
+															AND goodsmould.createtime <= @DATEEND@
+														GROUP BY
+															mch.GOODSCODE 
+														ORDER BY
+															SUM( mch.时间差 ) DESC 
+														) 
+													ORDER BY
+														TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4 UNION ALL
 												SELECT
-													GOODSCODE 
+													* 
 												FROM
 													(
 													SELECT
-														mch.GOODSCODE,
-													SUM( CASE WHEN mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END ) - SUM( CASE WHEN mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END ) 
-											FROM
-												tp_pc_mouldchangehistory mch
-												INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype 
-											WHERE
-												mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mch.createtime >= @BEGIN@  AND mch.createtime <= @END@
-											GROUP BY
-												mch.GOODSCODE 
-											ORDER BY
-												(
-												SUM( CASE WHEN mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END ) - SUM( CASE WHEN mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END ) 
-												) ASC 
-												) 
-											WHERE
-												ROWNUM <= 3 
-												)
-												)
-											),
-											模具产品数量 AS (
-											SELECT
-											COUNT(1) 总数
-											FROM
-												tp_pc_mouldchangehistory mch
-												INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype
-											WHERE
-												mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mch.createtime >= @BEGIN@  AND mch.createtime <= @END@
-												AND  mopt.operationtypename = '库存上线(出库)'
-												AND mch.GOODSCODE IN(
-												SELECT 
-												GOODSCODE
-												FROM(
-											SELECT
-												mch.GOODSCODE,
-												SUM(CASE WHEN  mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END)  - SUM(CASE WHEN  mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END) 
-											FROM
-												tp_pc_mouldchangehistory mch
-												INNER JOIN tp_sys_mouldoperationtype mopt ON mopt.operationtypeid = mch.operationtype
-											WHERE
-												mch.accountid = 1 
-												AND mch.operationtype >= - 1 
-												AND mch.createtime >= @BEGIN@  AND mch.createtime <= @END@
-												GROUP BY mch.GOODSCODE
-											ORDER  BY (SUM(CASE WHEN  mopt.operationtypename = '库存上线(出库)' THEN 1 ELSE 0 END)  -SUM(CASE WHEN  mopt.operationtypename = '模具新增(入库)' THEN 1 ELSE 0 END) ) ASC
-											)
-											WHERE ROWNUM<=3
-											)
-											
-											)
-											 ,精坯库出库时间 AS (  --精坯库
-											SELECT
-											DISTINCT 
-											 BARCODE,
-											 GOODSCODE,
-											 CREATETIME
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
-												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-												
-											),
-											精坯入库时间 AS (
-											SELECT
-											BARCODE,
-											GOODSCODE,
-											CREATETIME
-											FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN  (53,97)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND BARCODE IN (
-												SELECT
-											DISTINCT 
-											 BARCODE
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
-												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-												)
-											),
-											精坯库产品数量 AS (
-											
-											SELECT
-											COUNT(DISTINCT BARCODE)总数
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
-												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (119,64,81)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-											)
-											--施釉
-											 ,施釉出库时间 AS (
-											SELECT
-											DISTINCT 
-											 BARCODE,
-											 GOODSCODE,
-											 CREATETIME
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
-												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-												
-											),
-											施釉入库时间 AS (
-											SELECT
-											BARCODE,
-											GOODSCODE,
-											CREATETIME
-											FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN  (99,65)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND BARCODE IN (
-												SELECT
-											DISTINCT 
-											 BARCODE
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
-												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-												)
-											),
-											施釉产品数量 AS (
-											
-											SELECT
-											COUNT(DISTINCT BARCODE)总数
-											 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												AND GOODSCODE IN (
-												SELECT
-												GOODSCODE
-												FROM(
+														TO_CHAR( '精坯' || GOODSCODE ) AS 地点,
+														GOODSCODE,
+														时间差值,
+														to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期 
+													FROM
+														(
+														SELECT
+															inoutPD.GOODSCODE,
+															SUM( 时间差 ) AS 时间差值,
+															COUNT( DISTINCT GOODSPD.BARCODE ) 产量 
+														FROM
+															(
+															SELECT
+																OUTPD.BARCODE,
+																OUTPD.GOODSCODE,
+																TO_CHAR( ( ceil( ( ( OUTPD.CREATETIME - INPD.CREATETIME ) * 24 ) ) ), 'fm9999990' ) AS 时间差 
+															FROM
+																TP_PM_PRODUCTIONDATA OUTPD
+																INNER JOIN TP_PM_PRODUCTIONDATA INPD ON OUTPD.BARCODE = INPD.BARCODE 
+																AND INPD.PROCEDUREID IN ( 53, 97 ) 
+																AND INPD.VALUEFLAG = 1 
+															WHERE
+																OUTPD.PROCEDUREID IN ( 119, 64, 81 ) 
+																AND OUTPD.VALUEFLAG = 1 
+																AND OUTPD.createtime >= @DATEBEGIN@
+																AND OUTPD.createtime <= @DATEEND@
+															) inoutPD
+															INNER JOIN TP_PM_PRODUCTIONDATA GOODSPD ON GOODSPD.BARCODE = inoutPD.BARCODE 
+														WHERE
+															GOODSPD.PROCEDUREID IN ( 119, 64, 81 ) 
+															AND GOODSPD.VALUEFLAG = 1 
+															AND GOODSPD.createtime >= @DATEBEGIN@
+															AND GOODSPD.createtime <= @DATEEND@
+														GROUP BY
+															inoutPD.GOODSCODE 
+														) 
+													ORDER BY
+														TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 3 UNION ALL
 												SELECT
-												GOODSCODE,
-												COUNT(DISTINCT BARCODE)
-												 FROM TP_PM_PRODUCTIONDATA
-											 WHERE PROCEDUREID IN (5,101)
-												AND CREATETIME  >= @BEGIN@ AND CREATETIME  <= @END@
-												AND VALUEFLAG=1
-												GROUP BY GOODSCODE
-												ORDER BY COUNT(DISTINCT BARCODE) ASC
-												)
-												WHERE ROWNUM<=3
-												)
-											)
-											SELECT
-											'模具' AS 地点,
-											to_char(	GOODSCODE||' ('||TO_CHAR(( NVL(SUM(时间差), 1)/NVL(总数, 1) ),'fm9999990.00')||')') 周转周期
-											FROM(
-											SELECT
-											模具产品数量.总数,
-											模具出库时间.MOULDCODE,
-											模具出库时间.GOODSCODE,
-											模具出库时间.CREATETIME,
-											模具入库时间.CREATETIME, 
-											 TO_CHAR(( ceil(((模具出库时间.CREATETIME - 模具入库时间.CREATETIME))*24*60*60)/3600),'fm9999990.00')  AS  时间差
-											FROM 模具出库时间 
-											LEFT JOIN  模具入库时间 ON  模具出库时间.MOULDCODE=模具入库时间.MOULDCODE
-											LEFT JOIN  模具产品数量 ON 1=1
-											)
-											 GROUP BY GOODSCODE,总数
-											 UNION ALL
-											 SELECT
-											 '精坯' AS 地点,
-											 to_char(	GOODSCODE||' ('||TO_CHAR(( SUM(时间差)/NVL(总数, 1) ),'fm9999990.00')||')') 周转周期
-												FROM (
-											SELECT
-											精坯库产品数量.总数,
-											精坯库出库时间.BARCODE,
-											精坯库出库时间.GOODSCODE,
-											精坯库出库时间.CREATETIME,
-											精坯入库时间.CREATETIME, 
-											 TO_CHAR(( ceil(((精坯库出库时间.CREATETIME - 精坯入库时间.CREATETIME))*24*60*60)/3600),'fm9999990.00')  AS  时间差
-											FROM 精坯库出库时间 
-											LEFT JOIN  精坯入库时间 ON  精坯库出库时间.BARCODE=精坯入库时间.BARCODE
-											LEFT JOIN 精坯库产品数量 ON 1=1
-											)
-											 GROUP BY GOODSCODE,总数
-											UNION ALL
-											SELECT
-											'施釉' AS 地点,
-											to_char(	GOODSCODE||' ('||TO_CHAR(( SUM(时间差)/NVL(总数, 1) ),'fm9999990.00')||')') 周转周期
-												FROM (
-											SELECT
-											施釉产品数量.总数,
-											施釉出库时间.BARCODE,
-											施釉出库时间.GOODSCODE,
-											施釉出库时间.CREATETIME,
-											施釉入库时间.CREATETIME, 
-											 TO_CHAR(( ceil(((施釉出库时间.CREATETIME - 施釉入库时间.CREATETIME))*24*60*60)/3600),'fm9999990.00')  AS  时间差
-											FROM 施釉出库时间 
-											LEFT JOIN  施釉入库时间 ON  施釉出库时间.BARCODE=施釉入库时间.BARCODE
-											LEFT JOIN 施釉产品数量 ON 1=1
-											)
-											 GROUP BY GOODSCODE,总数 ";
+													* 
+												FROM
+													(
+													SELECT
+														TO_CHAR( '施釉' || GOODSCODE ) AS 地点,
+														GOODSCODE,
+														时间差值,
+														to_char( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) / 24 ), 'fm9999990.0' ) ) 周转周期 
+													FROM
+														(
+														SELECT
+															inoutPD.GOODSCODE,
+															SUM( 时间差 ) AS 时间差值,
+															COUNT( DISTINCT GOODSPD.BARCODE ) 产量 
+														FROM
+															(
+															SELECT
+																OUTPD.BARCODE,
+																OUTPD.GOODSCODE,
+																TO_CHAR( ( ceil( ( ( OUTPD.CREATETIME - INPD.CREATETIME ) * 24 ) ) ), 'fm9999990' ) AS 时间差 
+															FROM
+																TP_PM_PRODUCTIONDATA OUTPD
+																INNER JOIN TP_PM_PRODUCTIONDATA INPD ON OUTPD.BARCODE = INPD.BARCODE 
+																AND INPD.PROCEDUREID IN ( 99, 65 ) 
+																AND INPD.VALUEFLAG = 1 
+															WHERE
+																OUTPD.PROCEDUREID IN ( 5, 101 ) 
+																AND OUTPD.VALUEFLAG = 1 
+																AND OUTPD.createtime >= @DATEBEGIN@
+																AND OUTPD.createtime <= @DATEEND@
+															) inoutPD
+															INNER JOIN TP_PM_PRODUCTIONDATA GOODSPD ON GOODSPD.BARCODE = inoutPD.BARCODE 
+														WHERE
+															GOODSPD.PROCEDUREID IN ( 5, 101 ) 
+															AND GOODSPD.VALUEFLAG = 1 
+															AND GOODSPD.createtime >= @DATEBEGIN@
+															AND GOODSPD.createtime <= @DATEEND@
+														GROUP BY
+															inoutPD.GOODSCODE 
+														) 
+													ORDER BY
+														TO_NUMBER( ( TO_CHAR( ( NVL( 时间差值, 0 ) / NVL( 产量, 1 ) ), 'fm9999990.0000' ) ) ) DESC 
+													) 
+												WHERE
+													ROWNUM <=3";
                 DataTable dt = conn.ExecuteDatatable(sqlStr, sqlPara.ToArray());
                 string jsonStr = new JsonResult(dt).ToJson();
                 context.Response.Write(jsonStr);
             }
-		if (context.Request["m"].ToString() == "Load90")
-            {
-                string sqlStr = @"--品管抽检完成率及合格率   
-														SELECT 
-															TT.DICTIONARYVALUE,
-															DECODE(NVL(TT.INSPECTIONQUANTITY, 0),0,'0%',TO_CHAR(((NVL(TT.INSPECTIONQUANTITY, 0)) /DECODE(NVL(TT.PLANINSPECTIONQUANTITY, 1),0,1,NVL(TT.PLANINSPECTIONQUANTITY, 1))) * 100,'FM99990.00')) AS WANCHENGLV,
-															100 - DECODE(NVL(TT.BUHEGESHU, 0) ,0 ,'0%' ,TO_CHAR(((NVL(TT.BUHEGESHU, 0)) / DECODE(NVL(TT.INSPECTIONQUANTITY, 1), 0, 1, NVL(TT.INSPECTIONQUANTITY, 1))) * 100,'FM99990.00')) AS HEGELV
-														FROM (
-															SELECT 
-																T.INSPECTTYPE,
-																	SUBSTR(T.DICTIONARYVALUE, 0, 4)DICTIONARYVALUE,
-																SUM(T.PLANINSPECTIONQUANTITY) PLANINSPECTIONQUANTITY,
-																SUM(T.INSPECTIONQUANTITY) INSPECTIONQUANTITY,
-																SUM(T.BUHEGESHU) BUHEGESHU
-															FROM (
-																SELECT 
-																	TP_PM_FQCITEMSPLAN.INSPECTTYPE,
-														       TP_MST_DATADICTIONARY.DICTIONARYVALUE,
-														       SUM(TP_PM_FQCITEMSPLAN.PLANINSPECTIONQUANTITY) PLANINSPECTIONQUANTITY,
-														       SUM(TP_PM_FQCITEMSPLAN.INSPECTIONQUANTITY) INSPECTIONQUANTITY,
-														       0 BUHEGESHU
-																FROM TP_PM_FQCITEMSPLAN
-																LEFT JOIN TP_MST_DATADICTIONARY ON TP_MST_DATADICTIONARY.DICTIONARYID = TP_PM_FQCITEMSPLAN.INSPECTTYPE
-														     LEFT JOIN TP_MST_GOODS ON TP_MST_GOODS.GOODSID = TP_PM_FQCITEMSPLAN.GOODSID
-														     LEFT JOIN TP_MST_GOODSTYPE GT ON GT.GOODSTYPEID = TP_MST_GOODS.GOODSTYPEID AND TP_MST_DATADICTIONARY.DICTIONARYTYPE = 'TPC021'
-														     WHERE TP_PM_FQCITEMSPLAN.VALUEFLAG = 1
-														       AND TP_PM_FQCITEMSPLAN.ACCOUNTID = 1
-														       AND TP_PM_FQCITEMSPLAN.CREATETIME >= TRUNC(SYSDATE - 7)
-														       AND TRUNC(TP_PM_FQCITEMSPLAN.CREATETIME) <= TRUNC(SYSDATE)
-														       AND TP_PM_FQCITEMSPLAN.INSPECTTYPE IN (616, 617, 653, 654, 647)
-														       AND TP_PM_FQCITEMSPLAN.INSPECTIONQUANTITY <> 0
-														     GROUP BY 
-																	TP_PM_FQCITEMSPLAN.INSPECTTYPE,
-																	TP_MST_DATADICTIONARY.DICTIONARYVALUE
-														     UNION ALL
-														     SELECT 
-																	TP_PM_FQCITEMSDATA.INSPECTTYPE,
-														       TP_MST_DATADICTIONARY.DICTIONARYVALUE,
-														       0 PLANINSPECTIONQUANTITY,
-														       0 INSPECTIONQUANTITY,
-														       SUM(CASE WHEN TP_PM_FQCITEMSDATA.ISQUALIFIED = 0 THEN 1 ELSE 0 END) BUHEGESHU
-														     FROM TP_PM_FQCITEMSDATA
-														     LEFT JOIN TP_MST_DATADICTIONARY ON TP_MST_DATADICTIONARY.DICTIONARYID = TP_PM_FQCITEMSDATA.INSPECTTYPE
-														     WHERE TP_PM_FQCITEMSDATA.VALUEFLAG = 1
-														       AND TP_PM_FQCITEMSDATA.CREATETIME >= TRUNC(SYSDATE - 7)
-														       AND TRUNC(TP_PM_FQCITEMSDATA.CREATETIME) <= TRUNC(SYSDATE)
-														       AND TP_PM_FQCITEMSDATA.INSPECTTYPE IN (616, 617, 653, 654, 647)
-														     GROUP BY 
-																	TP_PM_FQCITEMSDATA.INSPECTTYPE,
-																	TP_MST_DATADICTIONARY.DICTIONARYVALUE
-															) T
-														   GROUP BY 
-																T.INSPECTTYPE,
-																T.DICTIONARYVALUE
-														) TT
-														";
-                DataTable dt = conn.ExecuteDatatable(sqlStr);
-                string jsonStr = new JsonResult(dt).ToJson();
-                context.Response.Write(jsonStr);
-            }
 		if (context.Request["m"].ToString() == "Load91")
             {
                 string sqlStr = @"SELECT