Przeglądaj źródła

新增包装日计划看板、月计划达成率看板 修改年交接看板

ztl 2 lat temu
rodzic
commit
1058376188

BIN
wwwroot/Img/test.png


+ 1 - 0
wwwroot/main/Procedure/test13/demo.ashx

@@ -211,6 +211,7 @@ public class demo : IHttpHandler {
 									AND TPPD.GOODSLEVELTYPEID = 7
 									AND TPPD.KILNCODE = 'TK3' 
 									AND TPPD.VALUEFLAG = 1 
+									AND TPPD.CHECKBATCHNO = 1
 									AND TPD.DEFECTNAME IS NOT NULL
 									AND TPPD.CREATETIME >= TO_CHAR( SYSDATE -6 )
 								GROUP BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ORDER BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ) T1

+ 947 - 0
wwwroot/main/Procedure/test13/demo1.ashx

@@ -0,0 +1,947 @@
+<%@ WebHandler Language="C#" Class="demo" %>
+
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Web;
+using System.Web.SessionState;
+
+public class demo : IHttpHandler {
+    
+    public void ProcessRequest (HttpContext context){
+        context.Response.ContentType = "text/plain";
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+				//回收次品统计
+				if (context.Request["m"].ToString() == "cp")
+            {
+                string sqlStr = @"
+									SELECT
+									T1.CREATETIME || '月' 日期,
+								CASE WHEN T2.数量 IS NULL THEN 0 ELSE T2.数量 END 数量
+								FROM
+									(
+									SELECT
+										0 数量,
+										substr(TO_CHAR(add_months( to_date( to_char( trunc( SYSDATE, 'mm' ) + 1, 'yyyy-mm' ), 'yyyy-mm' ), - ( ROWNUM - 1 ) ),'yyyy-mm' ),6,2 ) AS CREATETIME 
+									FROM DUAL CONNECT BY ROWNUM <= 6 ORDER BY
+										substr(TO_CHAR(add_months( to_date( to_char( trunc( SYSDATE, 'mm' ) + 1, 'yyyy-mm' ), 'yyyy-mm' ), - ( ROWNUM - 1 ) ),'yyyy-mm' ),6,2 ) 
+									) T1
+									LEFT JOIN (
+									SELECT
+										substr( T.CREATETIME, 5, 2 ) AS CREATETIME,
+										T.count AS 数量 
+									FROM
+										(
+										SELECT
+											to_char( TPPD.CREATETIME, 'yyyymm' ) CREATETIME,
+											COUNT( * ) count 
+										FROM
+											TP_PM_PRODUCTIONDATA TPPD 
+										WHERE
+											TPPD.CREATETIME >= ADD_MONTHS( SYSDATE,- 6 ) 
+											AND TPPD.GOODSLEVELTYPEID = 7 
+											AND TPPD.VALUEFLAG = 1 
+											AND TPPD.PROCEDUREID = 80 
+										GROUP BY
+											to_char( TPPD.CREATETIME, 'yyyymm' ) 
+										ORDER BY
+											COUNT( * ) DESC 
+										) T
+									WHERE
+										ROWNUM < 7
+									ORDER BY
+									substr( T.CREATETIME, 5, 2 )
+									) T2 ON T1.CREATETIME = T2.CREATETIME
+									";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+				//今日次品明细数据
+				if (context.Request["m"].ToString() == "MonthTableDetail")
+            {
+                string sqlStr = @"SELECT
+									TPGL.BARCODE 产品条码,
+									TPGL.GOODSCODE 产品编码,
+									to_char(TPGL.GROUTINGDATE,'yyyy-mm-dd') 注浆日期,
+									TPGL.GROUTINGMOULDCODE 成型线模具,
+									TPGL.GLAZINGROOM 施釉产线,
+									TPPD.KILNCARCODE 窑炉编号,
+									TPD.USERCODE 责任工号,
+									TMDT.DEFECTTYPENAME 缺陷类别,
+									TMD.S_NAME 缺陷名称,
+									TPD.DEFECTPOSITIONNAME 缺陷位置
+								FROM
+									TP_PM_GROUTINGDAILYDETAIL TPGL 
+									LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPGL.BARCODE = TPPD.BARCODE
+									LEFT JOIN TP_PM_DEFECT TPD ON TPGL.BARCODE =  TPD.BARCODE
+									LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+									LEFT JOIN TP_MST_DEFECTTYPE TMDT ON TMD.DEFECTTYPEID = TMDT.DEFECTTYPEID
+								WHERE
+									TPPD.CREATETIME >= TRUNC( SYSDATE)
+									AND TPPD.PROCEDUREID IN (125) 
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1
+									AND TPPD.GOODSLEVELTYPEID = 7 
+									AND TPD.USERCODE IS NOT NULL";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+				//工号产量柱状图
+				if (context.Request["m"].ToString() == "cl")
+            {
+                string sqlStr = @"SELECT
+										TMU.USERCODE 工号,
+										COUNT( * ) 产量 
+									FROM
+										TP_PM_PRODUCTIONDATA TPP
+										LEFT JOIN TP_MST_USER TMU ON TPP.CREATEUSERID = TMU.USERID 
+									WHERE
+										TPP.PROCEDUREID IN (117) 
+										AND TPP.CREATETIME >= trunc( SYSDATE )
+										AND TPP.VALUEFLAG = 1 
+									GROUP BY
+										TMU.USERCODE";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+                //七日次品缺陷扇形图
+                if (context.Request["m"].ToString() == "defect")
+            {
+                string sqlStr = @"SELECT
+										T.S_NAME AS 缺陷名称,
+										T.count  AS 数量
+									FROM
+									(
+									SELECT
+										TMD.S_NAME,
+										COUNT( TPPD.BARCODE ) count
+									FROM
+										TP_PM_DEFECT TPD
+										LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPPD.BARCODE = TPD.BARCODE
+										LEFT JOIN TP_MST_DEFECT TMD ON TPD.defectcode = TMD.defectcode 
+									WHERE
+										TPPD.CREATETIME >= TRUNC( SYSDATE) 
+										AND TPPD.GOODSLEVELTYPEID = 7
+										AND TPPD.VALUEFLAG = 1
+										AND TPPD.KILNCODE = 'TK3' 
+										AND TPPD.CHECKBATCHNO = 1
+									GROUP BY
+										TMD.S_NAME 
+									ORDER BY
+										COUNT( * ) DESC
+										)T
+										WHERE ROWNUM < 4";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+				//缺陷位置扇形图
+                if (context.Request["m"].ToString() == "defectb")
+            {
+                string sqlStr = @"SELECT
+										T.S_NAME AS 缺陷名称,
+										T.count  AS 数量
+									FROM
+									(
+									SELECT
+										TMD.S_NAME,
+										COUNT( TMD.S_NAME ) count
+									FROM
+										TP_PM_PRODUCTIONDATA TPPD
+										LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
+										LEFT JOIN TP_MST_DEFECTPOSITION TMD ON TPD.DEFECTPOSITIONID = TMD.DEFECTPOSITIONID 
+									WHERE
+										TPPD.CREATETIME >= TRUNC( SYSDATE) 
+										AND TPPD.GOODSLEVELTYPEID = 7
+										AND TPPD.VALUEFLAG = 1	
+										AND TPPD.KILNCODE = 'TK3' 
+										AND TPPD.CHECKBATCHNO = 1
+									GROUP BY
+										TMD.S_NAME 
+									ORDER BY
+										COUNT( TMD.S_NAME ) DESC
+										)T
+										WHERE ROWNUM < 4";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+                //七日次品折线图
+                if (context.Request["m"].ToString() == "zx")
+            {
+                string sqlStr = @"SELECT TT1.count AS 次品数量,TO_CHAR((TT1.COUNT/TT.COUNT)* 100,'9,990.00') || '%' AS 次品率,SUBSTR(TT1.CREATETIME, 5, 2 )||'.'||SUBSTR(TT1.CREATETIME, 7, 2 ) AS 日期 FROM(
+								SELECT T.CREATETIME,T.count FROM(
+								SELECT
+									to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
+									COUNT( * ) count 
+								FROM
+									TP_PM_PRODUCTIONDATA TPPD 
+								WHERE
+									TPPD.PROCEDUREID = 104 
+									AND TPPD.ISREFIRE = 0 
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1 
+									AND TPPD.CREATETIME >= TO_CHAR( SYSDATE -6) GROUP BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ORDER BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC  )T)TT
+								FULL JOIN
+								(
+								SELECT T1.CREATETIME,T1.count FROM(
+								SELECT
+									to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
+									COUNT( DISTINCT TPPD.BARCODE ) count 
+								FROM
+									TP_PM_PRODUCTIONDATA TPPD
+									LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
+								WHERE
+									TPPD.PROCEDUREID = 125 
+									AND TPPD.GOODSLEVELTYPEID = 7
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1 
+									AND TPPD.CHECKBATCHNO = 1
+									AND TPD.DEFECTNAME IS NOT NULL
+									AND TPPD.CREATETIME >= TO_CHAR( SYSDATE -6 )
+								GROUP BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ORDER BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ) T1
+								)TT1 ON TT.CREATETIME = TT1.CREATETIME";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+				//二检次品缺陷信息
+				 if (context.Request["m"].ToString() == "MonthTabletwo")
+            {
+                string sqlStr = @"				SELECT
+												H.缺陷名称,
+												H.出窑数,
+												H.缺陷数,
+												H.缺陷占比,
+												H.同月比,
+												H.上月比,
+												CASE WHEN H.上月比 > H.缺陷占比 THEN '下降↓'
+													   ELSE '上升↑'
+												END 对比趋势
+												FROM(
+												SELECT
+												TT.DEFECTNAME 缺陷名称,
+												TT2.COUNT 出窑数,
+												TT.COUNT 缺陷数,
+												TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'9,990.00') || '%' AS 缺陷占比,
+												TT3.COUNT 去年缺陷数量,
+												TT4.COUNT 上个月缺陷数量,
+												TT5.COUNT 去年出窑数,
+												TT6.COUNT 上个月出窑数,
+												TO_CHAR((TT3.COUNT/TT5.COUNT)* 100,'9,990.00') || '%' AS 同月比,
+												TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'9,990.00') || '%' AS 上月比
+												FROM(
+												SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
+												SELECT
+													TMD.S_NAME || '('||TPD.DEFECTDEDUCTIONNUM||')' DEFECTNAME,
+													TMD.DEFECTID,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID = 125 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.KILNCODE = 'TK3'
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ) 
+												GROUP BY
+													TMD.S_NAME,TPD.DEFECTDEDUCTIONNUM,TMD.DEFECTID
+												ORDER BY
+													count DESC)T WHERE ROWNUM < 8)TT
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T2.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ))T2)TT2 ON TT.id = TT2.id
+													FULL JOIN(
+													SELECT T3.DEFECTID,T3.DEFECTNAME,T3.count FROM (
+												SELECT
+													TMD.S_NAME DEFECTNAME,
+													TMD.DEFECTID,
+													COUNT( * ) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.KILNCODE = 'TK3'
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+												GROUP BY
+													TMD.S_NAME,TMD.DEFECTID
+												)T3 )TT3 ON TT.DEFECTID = TT3.DEFECTID
+													FULL JOIN(
+													SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
+												SELECT
+													TMD.S_NAME DEFECTNAME,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+												GROUP BY
+													TMD.S_NAME
+												ORDER BY
+													count DESC)T4 WHERE ROWNUM < 8)TT4 ON TT.id = TT4.id
+														FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T5.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													)T5)TT5 ON TT.id = TT5.id
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T6.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													)T6)TT6 ON TT.id = TT6.id )H WHERE H.缺陷数 IS NOT NULL
+											 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+		//二检次品缺陷位置信息
+				 if (context.Request["m"].ToString() == "MonthTableD")
+            {
+                string sqlStr = @"				SELECT
+												H.缺陷位置名称,
+												H.出窑数,
+												H.缺陷数,
+												H.缺陷占比,
+												H.同月比,
+												H.上月比,
+												CASE WHEN H.上月比 > H.缺陷占比 THEN '下降↓'
+													   ELSE '上升↑'
+												END 对比趋势
+												FROM(
+												SELECT
+												TT.DEFECTNAME 缺陷位置名称,
+												TT2.COUNT 出窑数,
+												TT.COUNT 缺陷数,
+												TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'9,990.00') || '%' AS 缺陷占比,
+												TT3.COUNT 去年缺陷数量,
+												TT4.COUNT 上个月缺陷数量,
+												TT5.COUNT 去年出窑数,
+												TT6.COUNT 上个月出窑数,
+												TO_CHAR((TT3.COUNT/TT5.COUNT)* 100,'9,990.00') || '%' AS 同月比,
+												TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'9,990.00') || '%' AS 上月比
+												FROM(
+												SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME||'('||TPD.DEFECTDEDUCTIONNUM||')' DEFECTNAME,
+													TPD.DEFECTPOSITIONID DEFECTID,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID = 125 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ) 
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME,TPD.DEFECTDEDUCTIONNUM,TPD.DEFECTPOSITIONID
+												ORDER BY
+													count DESC)T WHERE ROWNUM < 8)TT
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T2.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ))T2)TT2 ON TT.id = TT2.id
+													FULL JOIN(
+													SELECT T3.DEFECTID,T3.DEFECTNAME,T3.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME DEFECTNAME,
+													TPD.DEFECTPOSITIONID DEFECTID,
+													COUNT( * ) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME,TPD.DEFECTPOSITIONID
+												)T3 )TT3 ON TT.DEFECTID = TT3.DEFECTID
+													FULL JOIN(
+													SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME DEFECTNAME,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME
+												ORDER BY
+													count DESC)T4 WHERE ROWNUM < 8)TT4 ON TT.id = TT4.id
+														FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T5.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													)T5)TT5 ON TT.id = TT5.id
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T6.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													)T6)TT6 ON TT.id = TT6.id )H WHERE H.缺陷数 IS NOT NULL
+											 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+ 
+    public bool IsReusable {
+        get {
+            return false;
+        }
+    }
+
+}

+ 692 - 0
wwwroot/main/Procedure/test13/demo1.html

@@ -0,0 +1,692 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <link rel="shortcut icon" href="/img/logo.png" />
+    <link rel="bookmark" href="/img/logo.png" />
+    <link href="/Plugins/animate/animate.min.css" rel="stylesheet" />
+    <link rel="stylesheet" href="../DashBoard.css?v3" />
+    <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
+    <script src="/Plugins/animate/xanimate.js"></script>
+    <script src="/Plugins/xrequest/xrequest.min.js"></script>
+    <title>东科软件</title>
+</head>
+<body style="background-color:black;">
+
+    <div class="box_1920_1080">
+        <div class="box_title" style="display:flex;flex-direction:row;">
+            <div style="width:30%;text-align:left;"></div>
+            <div style="width: 40%; text-align: center; font-size: 38px; font-weight: 700">成检次品区看板</div>
+            <div style="width:30%;text-align:right;"><span class="box_title_loading" style="font-size:32px;" id="报表加载"></span></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+
+            <!--月次品缺陷表格-->
+            <div style="width:1840px;height:920px;display:flex;flex-direction:row;">
+                <div style="width: 48%; height: 460px;">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="10" style="color: white;">月次品缺陷数据汇总</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 51px;">
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
+                        </tr>
+                    </table>
+                    <div style=" height: 360px; overflow: hidden; width: 100%;">
+                        <div>
+                            <table id="dayTable_template" style="display:none;">
+                                <tr class="tr_title_warning" style="height: 51px;">
+                                    <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
+                                    <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
+                                </tr>
+                            </table>
+                        </div>
+                        <table id="dayTable" style="width: 100%;">
+                        </table>
+                    </div>
+                </div>
+                <div style="width: 48%; height: 470px; margin-top: 458px; margin-left: -883.5px;">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="10" style="color: white;">月次品缺陷位置数据汇总</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 51px;">
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置名称</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
+                            <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
+                        </tr>
+                    </table>
+                    <div style=" height: 370px; overflow: hidden; width: 100%;">
+                        <div>
+                            <table id="dayTable_templatedefect" style="display:none;">
+                                <tr class="tr_title_warning" style="height: 51px;">
+                                    <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置名称}</td>
+                                    <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
+                                    <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
+                                </tr>
+                            </table>
+                        </div>
+                        <table id="TableDefect" style="width: 100%; ">
+                        </table>
+                    </div>
+                </div>
+
+                <div style="width: 50%; height: 834px; right: 40px; margin-left: 35px;">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="10" style="color: white;">今日次品明细数据</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 50px;">
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品条码</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品编码</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">注浆日期</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">成型线模具</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">施釉产线</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">窑炉编号</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">责任工号</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">缺陷类别</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
+                            <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置</td>
+                        </tr>
+                    </table>
+                    <div style=" height: 834px; overflow: hidden; width: 100%;">
+                        <div>
+                            <table id="dayTable_templatedetail" style="display:none;">
+                                <tr class="tr_title_warning" style="height: 50px;">
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品条码}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品编码}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{注浆日期}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{成型线模具}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{施釉产线}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{窑炉编号}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{责任工号}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷类别}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
+                                    <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置}</td>
+                                </tr>
+                            </table>
+                        </div>
+                        <table id="TableDefectDetail" style="width: 100%; ">
+                        </table>
+                    </div>
+                </div>
+            </div>
+
+        </div>
+    </div>
+
+    <script>
+        var mainInterval;
+        var mainRowCount = 0;
+
+        function loadMainTable() {
+            $.get("demo1.ashx?m=MonthTabletwo", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#dayTable").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_template").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", ""); 
+                        temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
+                        temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
+                        temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
+                        temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
+                        temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
+                        temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
+                        temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
+                        $("#dayTable").append(temp);
+                    }
+                }
+                var num = parseInt(json["rows"].length);
+                for (var i = 0; i < num; i++) {
+                    var a = document.getElementById("dayTable").rows[i].cells[6].innerHTML;
+                    if (a == '下降↓') {
+                        document.getElementById("dayTable").rows[i].cells[6].style.color = '#3bf738';
+                    }
+                    else {
+                        document.getElementById("dayTable").rows[i].cells[6].style.color = 'red';
+                    }
+                }
+            });
+        }
+
+        function loadMainTableD() {
+            $.get("demo1.ashx?m=MonthTableD", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#TableDefect").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_templatedefect").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        temp = temp.replace('{缺陷位置名称}', json["rows"][i]['缺陷位置名称']);
+                        temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
+                        temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
+                        temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
+                        temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
+                        temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
+                        temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
+                        $("#TableDefect").append(temp);
+                    }
+                }
+                var num = parseInt(json["rows"].length);
+                for (var i = 0; i < num; i++) {
+                    var a = document.getElementById("TableDefect").rows[i].cells[6].innerHTML;
+                    if (a == '下降↓') {
+                        document.getElementById("TableDefect").rows[i].cells[6].style.color = '#3bf738';
+                    }
+                    else {
+                        document.getElementById("TableDefect").rows[i].cells[6].style.color = 'red';
+                    }
+                }
+            });
+        }
+
+        function loadMainDetail() {
+            $.get("demo1.ashx?m=MonthTableDetail", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#TableDefectDetail").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_templatedetail").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        temp = temp.replace('{产品条码}', json["rows"][i]['产品条码']);
+                        temp = temp.replace('{产品编码}', json["rows"][i]['产品编码']);
+                        temp = temp.replace('{注浆日期}', json["rows"][i]['注浆日期']);
+                        temp = temp.replace('{成型线模具}', json["rows"][i]['成型线模具']);
+                        temp = temp.replace('{施釉产线}', json["rows"][i]['施釉产线']);
+                        temp = temp.replace('{窑炉编号}', json["rows"][i]['窑炉编号']);
+                        temp = temp.replace('{责任工号}', json["rows"][i]['责任工号']);
+                        temp = temp.replace('{缺陷类别}', json["rows"][i]['缺陷类别']);
+                        temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
+                        temp = temp.replace('{缺陷位置}', json["rows"][i]['缺陷位置']);
+                        $("#TableDefectDetail").append(temp);
+                    }
+                    mainRowCount = json["rows"].length;
+                    mainInterval = setInterval(mainScroll, 3000);
+                }
+            });
+        }
+
+
+        $(document).ready(function () {
+            //initData();
+            doGetData = setInterval(function () { timeUpdate(); }, 5000);
+            loadMainTable();
+            setInterval(function () { loadMainTable(); }, 180000);
+            loadMainTableD();
+            setInterval(function () { loadMainTableD(); }, 180000);
+            loadMainDetail();
+            setInterval(function () { loadMainDetail(); }, 180000);
+            //DdfectData();
+            //setInterval(function () { DdfectData(); }, 5000);
+            //DdfectDataB();
+            //setInterval(function () { DdfectDataB(); }, 5000);
+            //ZxData();
+            //setInterval(function () { ZxData(); }, 5000);
+            //ClData();
+            //setInterval(function () { ClData(); }, 5000);
+            //ZxData()
+            //setInterval(function () { ZxData(); }, 5000);
+        });
+
+        //回收次品统计
+        function ClData() {
+            $.get("demo.ashx?m=cp", function (data) {
+                var json = JSON.parse(data);
+                let a = [];
+                let b = [];
+                if (json["success"] == true) {
+                    var count1 = parseFloat(json["rows"][0]["数量"]);
+                    var count2 = parseFloat(json["rows"][1]["数量"]);
+                    var count3 = parseFloat(json["rows"][2]["数量"]);
+                    var count4 = parseFloat(json["rows"][3]["数量"]);
+                    var count5 = parseFloat(json["rows"][4]["数量"]);
+                    var count6 = parseFloat(json["rows"][5]["数量"]);
+                    var usercode1 = json["rows"][0]["日期"];
+                    var usercode2 = json["rows"][1]["日期"];
+                    var usercode3 = json["rows"][2]["日期"];
+                    var usercode4 = json["rows"][3]["日期"];
+                    var usercode5 = json["rows"][4]["日期"];
+                    var usercode6 = json["rows"][5]["日期"];
+                    window.DayCL.data.datasets[0].data = [count1, count2, count3, count4, count5, count6];
+                    window.DayCL.data.labels = [usercode1, usercode2, usercode3, usercode4, usercode5, usercode6]
+                    window.DayCL.update();
+                }
+            });
+        }
+
+        function mainScroll() {
+            var scrollHeight = $("#TableDefectDetail").find("tr").outerHeight();
+            $("#TableDefectDetail").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (--mainRowCount == -1) loadMainTable();
+                }
+            );
+        }
+
+        //七日次品产量趋势图
+        function ZxData() {
+            $.get("demo1.ashx?m=zx", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    var BJ1 = parseFloat(json["rows"][0]["次品率"]);
+                    var BJ2 = parseFloat(json["rows"][1]["次品率"]);
+                    var BJ3 = parseFloat(json["rows"][2]["次品率"]);
+                    var BJ4 = parseFloat(json["rows"][3]["次品率"]);
+                    var BJ5 = parseFloat(json["rows"][4]["次品率"]);
+                    var BJ6 = parseFloat(json["rows"][5]["次品率"]);
+                    var BJ7 = parseFloat(json["rows"][6]["次品率"]);
+                    var day1 = json["rows"][0]["日期"];
+                    var day2 = json["rows"][1]["日期"];
+                    var day3 = json["rows"][2]["日期"];
+                    var day4 = json["rows"][3]["日期"];
+                    var day5 = json["rows"][4]["日期"];
+                    var day6 = json["rows"][5]["日期"];
+                    var day7 = json["rows"][6]["日期"];
+                    var count1 = parseFloat(json["rows"][0]["次品数量"]);
+                    var count2 = parseFloat(json["rows"][1]["次品数量"]);
+                    var count3 = parseFloat(json["rows"][2]["次品数量"]);
+                    var count4 = parseFloat(json["rows"][3]["次品数量"]);
+                    var count5 = parseFloat(json["rows"][4]["次品数量"]);
+                    var count6 = parseFloat(json["rows"][5]["次品数量"]);
+                    var count7 = parseFloat(json["rows"][6]["次品数量"]);
+                    window.DayZL.data.datasets[0].data = [BJ1, BJ2, BJ3, BJ4, BJ5, BJ6, BJ7];
+                    window.DayZL.data.datasets[1].data = [count1, count2, count3, count4, count5, count6, count7];
+                    window.DayZL.data.labels = [day1, day2, day3, day4, day5, day6, day7];
+                    window.DayZL.update();
+                }
+            });
+        }
+
+        //毛坯库库存
+        function DataKC() {
+            $.get("demo.ashx?m=kc", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    var count1 = parseFloat(json["rows"][0]["数量"]);
+                    var count2 = parseFloat(json["rows"][1]["数量"]);
+                    var goodtype1 = json["rows"][0]["产品类别"];
+                    var goodtype2 = json["rows"][1]["产品类别"];
+                    window.Defectkc.data.datasets[0].data = [count1, count2];
+                    window.Defectkc.data.labels = [goodtype1, goodtype2]
+                    window.Defectkc.update();
+                }
+            });
+        }
+
+
+        function DdfectData() {
+            $.get("demo.ashx?m=defect", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    var defect1 = parseFloat(json["rows"][0]["数量"]);
+                    var defect2 = parseFloat(json["rows"][1]["数量"]);
+                    var defect3 = parseFloat(json["rows"][2]["数量"]);
+                    var defectname1 = json["rows"][0]["缺陷名称"];
+                    var defectname2 = json["rows"][1]["缺陷名称"];
+                    var defectname3 = json["rows"][2]["缺陷名称"];
+                    window.DefectA.data.datasets[0].data = [defect1, defect2, defect3];
+                    window.DefectA.data.labels = [defectname1, defectname2, defectname3]
+                    window.DefectA.update();
+                }
+            });
+        }
+
+        function DdfectDataB() {
+            $.get("demo.ashx?m=defectb", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    var defect1 = parseFloat(json["rows"][0]["数量"]);
+                    var defect2 = parseFloat(json["rows"][1]["数量"]);
+                    var defect3 = parseFloat(json["rows"][2]["数量"]);
+                    var defectname1 = json["rows"][0]["缺陷名称"];
+                    var defectname2 = json["rows"][1]["缺陷名称"];
+                    var defectname3 = json["rows"][2]["缺陷名称"];
+                    window.DefectB.data.datasets[0].data = [defect1, defect2, defect3];
+                    window.DefectB.data.labels = [defectname1, defectname2, defectname3]
+                    window.DefectB.update();
+                }
+            });
+        }
+
+        function timeUpdate() {
+            loadData();
+
+        }
+
+        function loadData() {
+
+            //成型各项趋势图
+            //window.DayZL.data.datasets[0].data = [
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80,
+            //    randomScalingFactor(1) + 80
+            //];
+            //window.DayZL.data.datasets[1].data = [
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70,
+            //    randomScalingFactor(1) + 70
+            //];
+            //window.DayZL.update();
+
+            //成型缺陷top5
+            //window.DefectA.data.datasets[0].data = [
+            //    randomScalingFactor(8),
+            //    randomScalingFactor(8),
+            //    randomScalingFactor(8)
+            //];
+            //window.DefectA.update();
+            //成检缺陷top5
+            //window.DefectB.data.datasets[0].data = [
+            //    randomScalingFactor(8),
+            //    randomScalingFactor(8),
+            //    randomScalingFactor(8)
+            //];
+            //window.DefectB.update();
+
+            //产量计划达成
+            //window.MonthCL.data.datasets[0].data = [
+            //    randomScalingFactor(1000),
+            //    randomScalingFactor(1000)
+            //];
+            //window.MonthCL.update();
+        }
+
+        function initData() {
+            window.chartColors = {
+                red: 'rgb(255, 99, 132)',
+                orange: 'rgb(255, 159, 64)',
+                yellow: 'rgb(255, 250, 86)',
+                green: 'rgb(75, 192, 192)',
+                blue: 'rgb(54, 162, 250)',
+                purple: 'rgb(153, 102, 255)',
+                grey: 'rgb(231,233,237)'
+            };
+
+            var color = Chart.helpers.color;
+
+            window.randomScalingFactor = function (num) {
+                return Math.round(Math.random() * num);
+            }
+
+            Chart.defaults.global.defaultFontColor = 'white';
+            Chart.defaults.global.defaultFontSize = 18;
+            Chart.defaults.global.legend.display = false;
+
+            //半检一检各项趋势图=====================================
+            window.configDayZL = {
+                data: {
+                    labels: ["01", "02", "03", "04", "05", "06", "07"],
+                    datasets: [{
+                        type: 'line',
+                        label: "合格率",
+                        yAxesGroup: 'A',
+                        yAxisID: 'A',
+                        backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
+                        borderColor: window.chartColors.red,
+                        borderWidth: 2,
+                        pointRadius: 15,
+                        data: [0, 0, 0, 0, 0, 0, 0],
+                        fill: false
+                    }, {
+                        label: '次品数',
+                        yAxesGroup: 'B',
+                        yAxisID: 'B',
+                        backgroundColor: color(window.chartColors.blue).alpha(0.5).rgbString(),
+                        borderColor: window.chartColors.blue,
+                        borderWidth: 1,
+                        data: [100, 100, 100, 100, 100, 100, 100],
+                        fill: false
+                    }]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: false,
+                        text: '质量统计'
+                    },
+                    tooltips: {
+                        mode: 'index',
+                        intersect: false,
+                    },
+                    hover: {
+                        mode: 'nearest',
+                        intersect: true
+                    },
+                    scales: {
+                        xAxes: [{
+                            display: true,
+                            scaleLabel: {
+                                display: false,
+                                labelString: ''
+                            }
+                        }],
+                        yAxes: [{
+                            display: true,
+                            id: 'B',
+                            name: 'B',
+                            scalePositionLeft: true,
+                            position: 'left',
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            },
+                            ticks: {
+                                min: 0,
+                                stepSize: 40,
+                                max: 200
+                            }
+                        }
+                            , {
+                            display: true,
+                            id: 'A',
+                            name: 'A',
+                            scalePositionLeft: false,
+                            position: 'right',
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value2'
+                            },
+                            ticks: {
+                                min: 0,
+                                stepSize: 2,
+                                max: 10
+                            }
+                        }]
+                    }
+                }
+
+            };
+            var ctxDayZL = document.getElementById("canvasDayZL").getContext("2d");
+            window.DayZL = new Chart(ctxDayZL, configDayZL);
+            //===================================================
+
+            //成型缺陷TOP5===========================================
+            window.configDefectA = {
+                data: {
+                    labels: ['1', '2', '3'],
+                    datasets: [{
+                        label: '工序',
+                        backgroundColor: [
+                            color(window.chartColors.red).alpha(0.35).rgbString(),
+                            color(window.chartColors.blue).alpha(0.35).rgbString(),
+                            color(window.chartColors.green).alpha(0.35).rgbString(),
+                            color(window.chartColors.orange).alpha(0.35).rgbString(),
+                            color(window.chartColors.purple).alpha(0.35).rgbString()
+                        ],
+                        fill: false,
+                        borderColor: [
+                            window.chartColors.red,
+                            window.chartColors.blue,
+                            window.chartColors.green,
+                            window.chartColors.orange,
+                            window.chartColors.purple
+                        ],
+                        borderWidth: 2,
+                        pointRadius: 30,
+                        data: [0, 0, 0]
+                    }]
+                },
+                type: 'pie',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: false,
+                        text: "甲班缺陷"
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true
+
+                }
+            };
+            var ctxDefectA = document.getElementById("canvasDefectA").getContext("2d");
+            window.DefectA = new Chart(ctxDefectA, configDefectA);
+            //===================================================
+
+            //成检缺陷TOP5===========================================
+            window.configDefectB = {
+                data: {
+                    labels: ['缺陷1', '缺陷2', '缺陷3'],
+                    datasets: [{
+                        label: '工序',
+                        backgroundColor: [
+                            color(window.chartColors.red).alpha(0.35).rgbString(),
+                            color(window.chartColors.blue).alpha(0.35).rgbString(),
+                            color(window.chartColors.green).alpha(0.35).rgbString(),
+                            color(window.chartColors.orange).alpha(0.35).rgbString(),
+                            color(window.chartColors.purple).alpha(0.35).rgbString()
+                        ],
+                        fill: false,
+                        borderColor: [
+                            window.chartColors.red,
+                            window.chartColors.blue, 
+                            window.chartColors.green,
+                            window.chartColors.orange,
+                            window.chartColors.purple
+                        ],
+                        borderWidth: 2,
+                        pointRadius: 30,
+                        data: [0, 0, 0]
+                    }]
+                },
+                type: 'pie',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: false,
+                        text: "甲班缺陷"
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true
+
+                }
+            };
+            var ctxDefectB = document.getElementById("canvasDefectB").getContext("2d");
+            window.DefectB = new Chart(ctxDefectB, configDefectB);
+            //===================================================
+
+            //甲班缺陷===========================================
+            window.canvasMonthCL = {
+                data: {
+                    labels: ["01", "02", "03", "04", "05", "06", "07"],
+                    datasets: [
+                        {
+                            label: "次品回收量",
+                            fill: false,
+                            backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
+                            borderColor: window.chartColors.blue,
+                            borderWidth: 2,
+                            pointRadius: 15,
+                            data: [0, 0, 0, 0, 0, 0, 0, 0]
+                        }
+                    ]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: true,
+                        text: ""
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true,
+                    scales: {
+                        xAxes: [{
+                            stacked: false
+                        }],
+                        yAxes: [{
+                            display: true,
+                            stacked: false,
+                            ticks: {
+                                min: 0,
+                                stepSize: 200,
+                                max: 1000
+                            }
+                        }]
+                    }
+
+                }
+            };
+            var ctxDayCL = document.getElementById("canvasMonthCL").getContext("2d");
+            window.DayCL = new Chart(ctxDayCL, canvasMonthCL);
+            //===================================================
+
+        }
+
+
+
+    </script>
+
+    <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
+    <script src="/Plugins/circleChart/circleChart.min.js"></script>
+</body>
+</html>

+ 675 - 0
wwwroot/main/Procedure/test13/demo2.ashx

@@ -0,0 +1,675 @@
+<%@ WebHandler Language="C#" Class="demo" %>
+
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Web;
+using System.Web.SessionState;
+
+public class demo : IHttpHandler {
+    
+    public void ProcessRequest (HttpContext context){
+        context.Response.ContentType = "text/plain";
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+				//今日次品明细数据
+				if (context.Request["m"].ToString() == "MonthTableDetail")
+            {
+                string sqlStr = @"SELECT
+									TPGL.BARCODE 产品条码,
+									TPGL.GOODSCODE 产品编码,
+									to_char(TPGL.GROUTINGDATE,'yyyy-mm-dd') 注浆日期,
+									TPGL.GROUTINGMOULDCODE 成型线模具,
+									TPGL.GLAZINGROOM 施釉产线,
+									TPPD.KILNCARCODE 窑炉编号,
+									TPD.USERCODE 责任工号,
+									TMDT.DEFECTTYPENAME 缺陷类别,
+									TMD.S_NAME 缺陷名称,
+									TPD.DEFECTPOSITIONNAME 缺陷位置
+								FROM
+									TP_PM_GROUTINGDAILYDETAIL TPGL 
+									LEFT JOIN TP_PM_PRODUCTIONDATA TPPD ON TPGL.BARCODE = TPPD.BARCODE
+									LEFT JOIN TP_PM_DEFECT TPD ON TPGL.BARCODE =  TPD.BARCODE
+									LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+									LEFT JOIN TP_MST_DEFECTTYPE TMDT ON TMD.DEFECTTYPEID = TMDT.DEFECTTYPEID
+								WHERE
+									TPPD.CREATETIME >= TRUNC( SYSDATE)
+									AND TPPD.PROCEDUREID IN (125) 
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1
+									AND TPPD.GOODSLEVELTYPEID = 7 
+									AND TPD.USERCODE IS NOT NULL";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+                //近30日次品折线图
+                if (context.Request["m"].ToString() == "zx")
+            {
+                string sqlStr = @"SELECT TT1.count AS 次品数量,TO_CHAR((TT1.COUNT/TT.COUNT)* 100,'9,990.00') || '%' AS 次品率,SUBSTR(TT1.CREATETIME, 5, 2 )||'.'||SUBSTR(TT1.CREATETIME, 7, 2 ) AS 日期 FROM(
+								SELECT T.CREATETIME,T.count FROM(
+								SELECT
+									to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
+									COUNT( * ) count 
+								FROM
+									TP_PM_PRODUCTIONDATA TPPD 
+								WHERE
+									TPPD.PROCEDUREID = 104 
+									AND TPPD.ISREFIRE = 0 
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1 
+									AND TPPD.CREATETIME >= TO_CHAR( SYSDATE - 29) GROUP BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ORDER BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) DESC  )T)TT
+								FULL JOIN
+								(
+								SELECT T1.CREATETIME,T1.count FROM(
+								SELECT
+									to_char( TPPD.CREATETIME, 'yyyymmdd' ) AS CREATETIME,
+									COUNT( DISTINCT TPPD.BARCODE ) count 
+								FROM
+									TP_PM_PRODUCTIONDATA TPPD
+									LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE
+								WHERE
+									TPPD.PROCEDUREID = 125 
+									AND TPPD.GOODSLEVELTYPEID = 7
+									AND TPPD.KILNCODE = 'TK3' 
+									AND TPPD.VALUEFLAG = 1 
+									AND TPPD.CHECKBATCHNO = 1
+									AND TPD.DEFECTNAME IS NOT NULL
+									AND TPPD.CREATETIME >= TO_CHAR( SYSDATE - 29 )
+								GROUP BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ORDER BY to_char( TPPD.CREATETIME, 'yyyymmdd' ) ) T1
+								)TT1 ON TT.CREATETIME = TT1.CREATETIME";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+				//二检次品缺陷信息
+				 if (context.Request["m"].ToString() == "MonthTabletwo")
+            {
+                string sqlStr = @"				SELECT
+												H.缺陷名称,
+												H.出窑数,
+												H.缺陷数,
+												H.缺陷占比,
+												H.同月比,
+												H.上月比,
+												CASE WHEN H.上月比 > H.缺陷占比 THEN '下降↓'
+													   ELSE '上升↑'
+												END 对比趋势
+												FROM(
+												SELECT
+												TT.DEFECTNAME 缺陷名称,
+												TT2.COUNT 出窑数,
+												TT.COUNT 缺陷数,
+												TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'9,990.00') || '%' AS 缺陷占比,
+												TT3.COUNT 去年缺陷数量,
+												TT4.COUNT 上个月缺陷数量,
+												TT5.COUNT 去年出窑数,
+												TT6.COUNT 上个月出窑数,
+												TO_CHAR((TT3.COUNT/TT5.COUNT)* 100,'9,990.00') || '%' AS 同月比,
+												TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'9,990.00') || '%' AS 上月比
+												FROM(
+												SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
+												SELECT
+													TMD.S_NAME DEFECTNAME,
+													TMD.DEFECTID,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID = 125 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.KILNCODE = 'TK3'
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ) 
+												GROUP BY
+													TMD.S_NAME,TMD.DEFECTID
+												ORDER BY
+													count DESC)T WHERE ROWNUM < 6)TT
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T2.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ))T2)TT2 ON TT.id = TT2.id
+													FULL JOIN(
+													SELECT T3.DEFECTID,T3.DEFECTNAME,T3.count FROM (
+												SELECT
+													TMD.S_NAME DEFECTNAME,
+													TMD.DEFECTID,
+													COUNT( * ) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.KILNCODE = 'TK3'
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+												GROUP BY
+													TMD.S_NAME,TMD.DEFECTID
+												)T3 )TT3 ON TT.DEFECTID = TT3.DEFECTID
+													FULL JOIN(
+													SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
+												SELECT
+													TMD.S_NAME DEFECTNAME,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+												GROUP BY
+													TMD.S_NAME
+												ORDER BY
+													count DESC)T4 WHERE ROWNUM < 6)TT4 ON TT.id = TT4.id
+														FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T5.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													)T5)TT5 ON TT.id = TT5.id
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T6.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													)T6)TT6 ON TT.id = TT6.id )H WHERE H.缺陷数 IS NOT NULL
+											 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+		//二检次品缺陷位置信息
+				 if (context.Request["m"].ToString() == "MonthTableD")
+            {
+                string sqlStr = @"				SELECT
+												H.缺陷位置名称,
+												H.出窑数,
+												H.缺陷数,
+												H.缺陷占比,
+												H.同月比,
+												H.上月比,
+												CASE WHEN H.上月比 > H.缺陷占比 THEN '下降↓'
+													   ELSE '上升↑'
+												END 对比趋势
+												FROM(
+												SELECT
+												TT.DEFECTNAME 缺陷位置名称,
+												TT2.COUNT 出窑数,
+												TT.COUNT 缺陷数,
+												TO_CHAR((TT.COUNT/TT2.COUNT)* 100,'9,990.00') || '%' AS 缺陷占比,
+												TT3.COUNT 去年缺陷数量,
+												TT4.COUNT 上个月缺陷数量,
+												TT5.COUNT 去年出窑数,
+												TT6.COUNT 上个月出窑数,
+												TO_CHAR((TT3.COUNT/TT5.COUNT)* 100,'9,990.00') || '%' AS 同月比,
+												TO_CHAR((TT4.COUNT/TT6.COUNT)* 100,'9,990.00') || '%' AS 上月比
+												FROM(
+												SELECT ROWNUM id,T.DEFECTID,T.DEFECTNAME,T.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME DEFECTNAME,
+													TPD.DEFECTPOSITIONID DEFECTID,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID = 125 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ) 
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME,TPD.DEFECTPOSITIONID
+												ORDER BY
+													count DESC)T WHERE ROWNUM < 6)TT
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T2.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND TPPD.VALUEFLAG = 1
+													AND KILNCODE = 'TK3' 
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' )
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= TO_DATE( TO_CHAR( SYSDATE, 'YYYY-MM' ), 'YYYY-MM' ))T2)TT2 ON TT.id = TT2.id
+													FULL JOIN(
+													SELECT T3.DEFECTID,T3.DEFECTNAME,T3.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME DEFECTNAME,
+													TPD.DEFECTPOSITIONID DEFECTID,
+													COUNT( * ) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME,TPD.DEFECTPOSITIONID
+												)T3 )TT3 ON TT.DEFECTID = TT3.DEFECTID
+													FULL JOIN(
+													SELECT ROWNUM id,T4.DEFECTNAME,T4.count FROM (
+												SELECT
+													TPD.DEFECTPOSITIONNAME DEFECTNAME,
+													COUNT( * ) count 
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD
+													LEFT JOIN TP_PM_DEFECT TPD ON TPPD.BARCODE = TPD.BARCODE 
+													LEFT JOIN TP_MST_DEFECT TMD ON TPD.DEFECTID = TMD.DEFECTID
+												WHERE
+													TPPD.PROCEDUREID IN (125,105) 
+													AND TPPD.GOODSLEVELTYPEID = 7 
+													AND TPPD.KILNCODE = 'TK3'
+													AND TPD.VALUEFLAG = 1
+													AND TPPD.VALUEFLAG = 1
+													AND TMD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+												GROUP BY
+													TPD.DEFECTPOSITIONNAME
+												ORDER BY
+													count DESC)T4 WHERE ROWNUM < 6)TT4 ON TT.id = TT4.id
+														FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T5.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate, -12), 'month') 
+													AND TPPD.CREATETIME <= trunc(last_day(add_months(sysdate, -12)))
+													)T5)TT5 ON TT.id = TT5.id
+													FULL JOIN(
+												SELECT
+												ROWNUM id,
+												T6.count
+												FROM(
+												SELECT
+													COUNT(*) count
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													UNION ALL
+													SELECT
+													COUNT(*)
+												FROM
+													TP_PM_PRODUCTIONDATA TPPD 
+												WHERE
+													TPPD.PROCEDUREID = 104 
+													AND TPPD.ISREFIRE = 0 
+													AND KILNCODE = 'TK3' 
+													AND TPPD.VALUEFLAG = 1
+													AND TPPD.CREATETIME >= trunc(add_months(sysdate,-1),'mm')
+													AND TPPD.CREATETIME <= last_day(add_months(sysdate,-1))
+													)T6)TT6 ON TT.id = TT6.id )H WHERE H.缺陷数 IS NOT NULL
+											 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+ 
+    public bool IsReusable {
+        get {
+            return false;
+        }
+    }
+
+}

+ 417 - 0
wwwroot/main/Procedure/test13/demo2.html

@@ -0,0 +1,417 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <link rel="shortcut icon" href="/img/logo.png" />
+    <link rel="bookmark" href="/img/logo.png" />
+    <link href="/Plugins/animate/animate.min.css" rel="stylesheet" />
+    <link rel="stylesheet" href="../DashBoard.css?v3" />
+    <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
+    <script src="/Plugins/animate/xanimate.js"></script>
+    <script src="/Plugins/xrequest/xrequest.min.js"></script>
+    <title>东科软件</title>
+</head>
+<body style="background-color:black;">
+
+    <div class="box_1920_1080">
+        <div class="box_title" style="display:flex;flex-direction:row;">
+            <div style="width:30%;text-align:left;"></div>
+            <div style="width: 40%; text-align: center; font-size: 38px; font-weight: 700">成检次品区看板</div>
+            <div style="width:30%;text-align:right;"><span class="box_title_loading" style="font-size:32px;" id="报表加载"></span></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+            <!--近30天次品折线图-->
+            <div style="width:1840px;height:300px;display:flex;flex-direction:row;">
+                <div style="width: 100%; height: 300px;">
+                    <div style="color:white;font-size:20px;font-weight:600; text-align:center">七日次品产量趋势图</div>
+                    <canvas id="canvasDayZL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 270px; width: 100%"></canvas>
+                </div>
+            </div>
+                <!--月次品缺陷表格-->
+                <div style="width:1840px;height:720px;display:flex;flex-direction:row;">
+                    <div style="width: 48%; height: 360px;">
+                        <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                            <tr class="tr_title_warning">
+                                <td colspan="10" style="color: white;">月次品缺陷数据汇总</td>
+                            </tr>
+                            <tr class="tr_title_warning" style="height: 46px;">
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
+                            </tr>
+                        </table>
+                        <div style=" height: 260px; overflow: hidden; width: 100%;">
+                            <div>
+                                <table id="dayTable_template" style="display:none;">
+                                    <tr class="tr_title_warning" style="height: 46px;">
+                                        <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
+                                        <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
+                                    </tr>
+                                </table>
+                            </div>
+                            <table id="dayTable" style="width: 100%;">
+                            </table>
+                        </div>
+                    </div>
+                    <div style="width: 48%; height: 360px; margin-top: 334px; margin-left: -883.5px;">
+                        <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                            <tr class="tr_title_warning">
+                                <td colspan="10" style="color: white;">月次品缺陷位置数据汇总</td>
+                            </tr>
+                            <tr class="tr_title_warning" style="height: 46px;">
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置名称</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">出窑数</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷数</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷占比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px; ">同月比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">上月比</td>
+                                <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">对比趋势</td>
+                            </tr>
+                        </table>
+                        <div style=" height: 260px; overflow: hidden; width: 100%;">
+                            <div>
+                                <table id="dayTable_templatedefect" style="display:none;">
+                                    <tr class="tr_title_warning" style="height: 46px;">
+                                        <td style="width: 14.2%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置名称}</td>
+                                        <td style="width: 14.2%; font-size: 10px;">{出窑数}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{缺陷数}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{缺陷占比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{同月比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{上月比}</td>
+                                        <td style="width: 14.2%; font-size: 10px; ">{对比趋势}</td>
+                                    </tr>
+                                </table>
+                            </div>
+                            <table id="TableDefect" style="width: 100%; ">
+                            </table>
+                        </div>
+                    </div>
+
+                    <div style="width: 50%; height: 672px; right: 40px; margin-left: 35px;">
+                        <table cellspacing="0" cellpadding="0" border="0" style="width: 99.8%;">
+                            <tr class="tr_title_warning">
+                                <td colspan="10" style="color: white;">今日次品明细数据</td>
+                            </tr>
+                            <tr class="tr_title_warning" style="height: 50px;">
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品条码</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">产品编码</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">注浆日期</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">成型线模具</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">施釉产线</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">窑炉编号</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">责任工号</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px; ">缺陷类别</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷名称</td>
+                                <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">缺陷位置</td>
+                            </tr>
+                        </table>
+                        <div style=" height: 572px; overflow: hidden; width: 100%;">
+                            <div>
+                                <table id="dayTable_templatedetail" style="display:none;">
+                                    <tr class="tr_title_warning" style="height: 50px;">
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品条码}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{产品编码}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{注浆日期}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{成型线模具}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{施釉产线}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{窑炉编号}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{责任工号}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷类别}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷名称}</td>
+                                        <td style="width: 10%; font-size: 10px; padding: 0px 0px 0px 0px;">{缺陷位置}</td>
+                                    </tr>
+                                </table>
+                            </div>
+                            <table id="TableDefectDetail" style="width: 100%; ">
+                            </table>
+                        </div>
+                    </div>
+                </div>
+            </div>
+        </div>
+
+    <script>
+        var mainInterval;
+        var mainRowCount = 0;
+        var mainInterva2;
+        var mainRowCoun2 = 0;
+
+        function loadMainTable() {
+            $.get("demo2.ashx?m=MonthTabletwo", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#dayTable").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_template").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", ""); 
+                        temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
+                        temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
+                        temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
+                        temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
+                        temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
+                        temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
+                        temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
+                        $("#dayTable").append(temp);
+                    }
+                }
+                var num = parseInt(json["rows"].length);
+                for (var i = 0; i < num; i++) {
+                    var a = document.getElementById("dayTable").rows[i].cells[6].innerHTML;
+                    if (a == '下降↓') {
+                        document.getElementById("dayTable").rows[i].cells[6].style.color = '#3bf738';
+                    }
+                    else {
+                        document.getElementById("dayTable").rows[i].cells[6].style.color = 'red';
+                    }
+                }
+            });
+        }
+
+        function loadMainTableD() {
+            $.get("demo2.ashx?m=MonthTableD", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#TableDefect").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_templatedefect").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        temp = temp.replace('{缺陷位置名称}', json["rows"][i]['缺陷位置名称']);
+                        temp = temp.replace('{出窑数}', json["rows"][i]['出窑数']);
+                        temp = temp.replace('{缺陷数}', json["rows"][i]['缺陷数']);
+                        temp = temp.replace('{缺陷占比}', json["rows"][i]['缺陷占比']);
+                        temp = temp.replace('{同月比}', json["rows"][i]['同月比']);
+                        temp = temp.replace('{上月比}', json["rows"][i]['上月比']);
+                        temp = temp.replace('{对比趋势}', json["rows"][i]['对比趋势']);
+                        $("#TableDefect").append(temp);
+                    }
+                }
+                var num = parseInt(json["rows"].length);
+                for (var i = 0; i < num; i++) {
+                    var a = document.getElementById("TableDefect").rows[i].cells[6].innerHTML;
+                    if (a == '下降↓') {
+                        document.getElementById("TableDefect").rows[i].cells[6].style.color = '#3bf738';
+                    }
+                    else {
+                        document.getElementById("TableDefect").rows[i].cells[6].style.color = 'red';
+                    }
+                }
+            });
+        }
+
+        function loadMainDetail() {
+            $.get("demo2.ashx?m=MonthTableDetail", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#TableDefectDetail").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_templatedetail").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        temp = temp.replace('{产品条码}', json["rows"][i]['产品条码']);
+                        temp = temp.replace('{产品编码}', json["rows"][i]['产品编码']);
+                        temp = temp.replace('{注浆日期}', json["rows"][i]['注浆日期']);
+                        temp = temp.replace('{成型线模具}', json["rows"][i]['成型线模具']);
+                        temp = temp.replace('{施釉产线}', json["rows"][i]['施釉产线']);
+                        temp = temp.replace('{窑炉编号}', json["rows"][i]['窑炉编号']);
+                        temp = temp.replace('{责任工号}', json["rows"][i]['责任工号']);
+                        temp = temp.replace('{缺陷类别}', json["rows"][i]['缺陷类别']);
+                        temp = temp.replace('{缺陷名称}', json["rows"][i]['缺陷名称']);
+                        temp = temp.replace('{缺陷位置}', json["rows"][i]['缺陷位置']);
+                        $("#TableDefectDetail").append(temp);
+                    }
+                    mainRowCount = json["rows"].length;
+                    mainInterval = setInterval(mainScroll, 3000);
+                }
+            });
+        }
+
+        function mainScroll() {
+            var scrollHeight = $("#TableDefectDetail").find("tr").outerHeight();
+            $("#TableDefectDetail").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (--mainRowCount == -1) loadMainTable();
+                }
+            );
+        }
+
+
+        $(document).ready(function () {
+            initData();
+            doGetData = setInterval(function () { timeUpdate(); }, 5000);
+            loadMainTable();
+            setInterval(function () { loadMainTable(); }, 180000);
+            loadMainTableD();
+            setInterval(function () { loadMainTableD(); }, 180000);
+            loadMainDetail();
+            setInterval(function () { loadMainDetail(); }, 180000);
+            ZxData();
+            setInterval(function () { ZxData(); }, 5000);
+        });
+
+
+        //七日次品产量趋势图
+        function ZxData() {
+            $.get("demo2.ashx?m=zx", function (data) {
+                var json = JSON.parse(data);
+                let a = [];
+                let b = [];
+                let c = [];
+                if (json["success"] == true) {
+                    var num = parseInt(json["rows"].length);
+                    for (var i = 0; i < num; i++) {
+                        a.push(parseFloat(json["rows"][i]["次品率"]));
+                        b.push(json["rows"][i]["日期"]);
+                        c.push(parseFloat(json["rows"][i]["次品数量"]));
+                    }
+                    window.DayZL.data.datasets[0].data = a;
+                    window.DayZL.data.datasets[1].data = c;
+                    window.DayZL.data.labels = b;
+                    window.DayZL.update();
+                }
+            });
+        }
+
+
+        function timeUpdate() {
+            loadData();
+
+        }
+
+        function loadData() {
+            
+        }
+
+        function initData() {
+            window.chartColors = {
+                red: 'rgb(255, 99, 132)',
+                orange: 'rgb(255, 159, 64)',
+                yellow: 'rgb(255, 250, 86)',
+                green: 'rgb(75, 192, 192)',
+                blue: 'rgb(54, 162, 250)',
+                purple: 'rgb(153, 102, 255)',
+                grey: 'rgb(231,233,237)'
+            };
+
+            var color = Chart.helpers.color;
+
+            window.randomScalingFactor = function (num) {
+                return Math.round(Math.random() * num);
+            }
+
+            Chart.defaults.global.defaultFontColor = 'white';
+            Chart.defaults.global.defaultFontSize = 18;
+            Chart.defaults.global.legend.display = false;
+
+            //半检一检各项趋势图=====================================
+            window.configDayZL = {
+                data: {
+                    labels: ["01", "02", "03", "04", "05", "06", "07"],
+                    datasets: [{
+                        type: 'line',
+                        label: "合格率",
+                        yAxesGroup: 'A',
+                        yAxisID: 'A',
+                        backgroundColor: color(window.chartColors.red).alpha(0.5).rgbString(),
+                        borderColor: window.chartColors.red,
+                        borderWidth: 2,
+                        pointRadius: 15,
+                        data: [0, 0, 0, 0, 0, 0, 0],
+                        fill: false
+                    }, {
+                        label: '次品数',
+                        yAxesGroup: 'B',
+                        yAxisID: 'B',
+                        backgroundColor: color(window.chartColors.blue).alpha(0.5).rgbString(),
+                        borderColor: window.chartColors.blue,
+                        borderWidth: 1,
+                        data: [100, 100, 100, 100, 100, 100, 100],
+                        fill: false
+                    }]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: false,
+                        text: '质量统计'
+                    },
+                    tooltips: {
+                        mode: 'index',
+                        intersect: false,
+                    },
+                    hover: {
+                        mode: 'nearest',
+                        intersect: true
+                    },
+                    scales: {
+                        xAxes: [{
+                            display: true,
+                            scaleLabel: {
+                                display: false,
+                                labelString: ''
+                            }
+                        }],
+                        yAxes: [{
+                            display: true,
+                            id: 'B',
+                            name: 'B',
+                            scalePositionLeft: true,
+                            position: 'left',
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            },
+                            ticks: {
+                                min: 0,
+                                stepSize: 40,
+                                max: 200
+                            }
+                        }
+                            , {
+                            display: true,
+                            id: 'A',
+                            name: 'A',
+                            scalePositionLeft: false,
+                            position: 'right',
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value2'
+                            },
+                            ticks: {
+                                min: 0,
+                                stepSize: 2,
+                                max: 10
+                            }
+                        }]
+                    }
+                }
+
+            };
+            var ctxDayZL = document.getElementById("canvasDayZL").getContext("2d");
+            window.DayZL = new Chart(ctxDayZL, configDayZL);
+            //===================================================
+
+        }
+
+
+
+    </script>
+
+    <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
+    <script src="/Plugins/circleChart/circleChart.min.js"></script>
+</body>
+</html>

+ 241 - 0
wwwroot/main/Split/Screen13/index.html

@@ -0,0 +1,241 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <link rel="shortcut icon" href="/img/logo.png" />
+    <link rel="bookmark" href="/img/logo.png" />
+    <link rel="stylesheet" href="../DashBoard.css?v3" />
+    <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
+    <script src="/Plugins/xrequest/xrequest.min.js"></script>
+    <script src="/Plugins/xcountto/xcountTo.min.js"></script>
+    <title>东科软件</title>
+</head>
+<body>
+    <div class="m4_box_1920_1080">
+        <div class="m4_box_title" onclick="showHelp()" style="cursor:pointer">
+            <div class="m4_box_title_arrow"></div><div class="m4_box_title_arrow2"></div> <div>包装日计划</div><span class="m4_box_title_loading" id="报表加载"></span>
+        </div>
+        <div class="m4_box_body" style="padding-right: 20px;width:1720px;">
+            <div style="width: 1720px; height: 230px;">
+                <!--流量-->
+                <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                    <tr class="tr_title_warning" style="height:50px;">
+                        <td colspan="2">成型产量</td>
+                        <td colspan="2">半检产量</td>
+                        <td colspan="2">施釉产量</td>
+                        <td colspan="2">烧成产量</td>
+                        <td colspan="2">成检产量</td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td>大件</td>
+                        <td>小件</td>
+                        <td>大件</td>
+                        <td>小件</td>
+                        <td>大件</td>
+                        <td>小件</td>
+                        <td>大件</td>
+                        <td>小件</td>
+                        <td>大件</td>
+                        <td>小件</td>
+                    </tr>
+                    <tr class="tr_bg_light_warning" style="height:120px;">
+                        <td id="agv1" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv11" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv2" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv22" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv3" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv33" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv4" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv44" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv5" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                        <td id="agv55" data-decimals="2" data-speed="2000" style="font-size: 40px; width: 10%"></td>
+                    </tr>
+                </table>
+            </div>
+            <div style="width:100%;height:620px;display:flex;flex-direction:row;">
+                <div style="width: 100%; height: 620px; ">
+                    <!--月计划达成率表格-->
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:99.9%;">
+                        <tr class="tr_title">
+                            <td colspan="6" style="color:white">产成品包装日计划</td>
+                        </tr>
+                        <tr class="tr_title">
+                            <td style="width: 25%; font-size: 20px;">产品名称</td>
+                            <td style="width: 25%; font-size: 20px;">物料编码</td>
+                            <td style="width: 10%; font-size: 20px;">计划包装数</td>
+                            <td style="width: 10%; font-size: 20px;">实际生产数量</td>
+                            <td style="width: 15%; font-size: 20px;">完成率</td>
+                            <td style="width: 15%; font-size: 20px;">车间</td>
+                        </tr>
+                    </table>
+                    <div style="height: 620px; overflow: hidden; width: 100%; ">
+                        <div>
+                            <table id="dayTable_template" style="display:none;">
+                                <tr class="tr_title_warning" style="height: 60px;">
+                                    <!--<td style="width: 7.1%;  font-size: 14px;">{成型线}</td>-->
+                                    <td style="width: 25%; font-size: 18px;">{产品名称}</td>
+                                    <td style="width: 25%; font-size: 18px;">{物料编码}</td>
+                                    <td style="width: 10%; font-size: 18px;">{计划包装数}</td>
+                                    <td style="width: 10%; font-size: 18px;">{实际生产数量}</td>
+                                    <td style="width: 15%; font-size: 18px;">{完成率}</td>
+                                    <td style="width: 15%; font-size: 18px;">{车间}</td>
+                                </tr>
+                            </table>
+                        </div>
+                        <table id="dayTable" style="width: 100%;height:560px;">
+                        </table>
+                    </div>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+        //页面刷新刷新时间
+        var refreshTime1 = 60000;
+        var currentTime1 = 0;
+
+        var doGetData;
+        var doGetTime;
+
+        var mainInterval;
+        var mainRowCount = 0;
+
+        $(document).ready(function (){
+            initData();
+            doGetData = setInterval(function () { timeUpdate(); }, 1000);
+            PlanData();
+            setInterval(function () { PlanData(); }, 60000);
+            ProcedureCount()
+            setInterval(function () { ProcedureCount(); }, 60000);
+        });
+
+        function ProcedureCount() {
+            $.get("rpt.ashx?m=count", function (data) {
+                var jsondata = JSON.parse(data);
+                if (jsondata["success"] == true) {
+                    $("#agv1").attr('data-to', jsondata["rows"][0]["成型产量"]);
+                    $("#agv1").countTo();
+                    $("#agv11").attr('data-to', jsondata["rows"][1]["成型产量"]);
+                    $("#agv11").countTo();
+                    $("#agv2").attr('data-to', jsondata["rows"][0]["半检产量"]);
+                    $("#agv2").countTo();
+                    $("#agv22").attr('data-to', jsondata["rows"][1]["半检产量"]);
+                    $("#agv22").countTo();
+                    $("#agv3").attr('data-to', jsondata["rows"][0]["施釉产量"]);
+                    $("#agv3").countTo();
+                    $("#agv33").attr('data-to', jsondata["rows"][1]["施釉产量"]);
+                    $("#agv33").countTo();
+                    $("#agv4").attr('data-to', jsondata["rows"][0]["烧成产量"]);
+                    $("#agv4").countTo();
+                    $("#agv44").attr('data-to', jsondata["rows"][1]["烧成产量"]);
+                    $("#agv44").countTo();
+                    $("#agv5").attr('data-to', jsondata["rows"][0]["成检产量"]);
+                    $("#agv5").countTo();
+                    $("#agv55").attr('data-to', jsondata["rows"][1]["成检产量"]);
+                    $("#agv55").countTo();
+                }
+            });
+        }
+
+        function PlanData() {
+            if (mainInterval) {
+                clearInterval(mainInterval);
+                console.log("Interval Stop!");
+            }
+            $.get("rpt.ashx?m=table", function (data){
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_template").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        temp = temp.replace('{产品名称}', json["rows"][i]['产品名称']);
+                        temp = temp.replace('{物料编码}', json["rows"][i]['物料编码']);
+                        temp = temp.replace('{计划包装数}', json["rows"][i]['计划包装数']);
+                        temp = temp.replace('{实际生产数量}', json["rows"][i]['实际生产数量']);
+                        temp = temp.replace('{完成率}', json["rows"][i]['完成率']);
+                        temp = temp.replace('{车间}', json["rows"][i]['车间']);
+                        $("#dayTable").append(temp);
+                    }
+                    mainRowCount = json["rows"].length;
+                    mainInterval = setInterval(mainScroll, 3000);
+                }
+            });
+        }
+
+        function mainScroll() {
+            var scrollHeight = $("#dayTable").find("tr").outerHeight();
+            $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (--mainRowCount == -1) loadMainTable();
+                }
+            );
+        }
+        //帮助说明
+        function showHelp() {
+            var message = "统计说明:" + "\n";
+            message += "型号滚动计划数: web端看板配置-产品产量计划; 计划数 * (本月已过天数 / 本月天数);" + "\n";
+            message += "工序计划数: web端看板配置-看板工序产量计划; 计划数  * (本月已过天数 / 本月天数);" + "\n";
+            message += "智能马桶型号实际产量: 对应型号的产成品交接数,不区分车间" + "\n";
+            message += "成型工序完工产量: 三车间型号的注浆数" + "\n";
+            message += "一检工序完工产量: 三车间型号的2#-3#交坯数和3#交坯数" + "\n";
+            message += "改洗工序完工产量: 三车间型号的3#上水数" + "\n";
+            message += "施釉工序完工产量: 三车间型号的3#施釉数" + "\n";
+            message += "烧成工序完工产量: 全部车间的3#入窑数" + "\n";
+            message += "成检工序完工产量: 全部车间的3#成检交接数" + "\n";
+            alert(message);
+        }
+
+        function timeUpdate() {
+
+            if (currentTime1 <= 0) {
+                //clearData();
+                setTimeout(loadData(), 1000);
+                //loadData();
+                currentTime1 = refreshTime1;
+            }
+            else {
+                if (currentTime1 > 0) {
+                    $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
+                    currentTime1 = currentTime1 - 1000;
+                }
+            }
+        }
+
+        function loadData(callback) {
+        }
+
+        function initData() {
+            window.chartColors = {
+                red: 'rgb(255, 99, 132)',
+                orange: 'rgb(255, 159, 64)',
+                yellow: 'rgb(255, 250, 86)',
+                green: 'rgb(75, 192, 192)',
+                blue: 'rgb(54, 162, 250)',
+                purple: 'rgb(153, 102, 255)',
+                grey: 'rgb(231,233,237)'
+            };
+
+            var color = Chart.helpers.color;
+
+            window.randomScalingFactor = function (num) {
+                return Math.round(Math.random() * num);
+            }
+
+            Chart.defaults.global.defaultFontColor = 'white';
+            Chart.defaults.global.defaultFontSize = 24;
+            Chart.defaults.global.legend.display = false;
+        }
+
+
+
+    </script>
+
+    <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
+    <script src="/Plugins/circleChart/circleChart.min.js"></script>
+</body>
+</html>

+ 107 - 0
wwwroot/main/Split/Screen13/rpt.ashx

@@ -0,0 +1,107 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using(IDataAccess conn = DataAccess.Create())
+        {
+            //包装单表格
+				if (context.Request["m"].ToString() == "table")
+            {
+                string sqlStr = @"SELECT
+									mg.goodsname 产品名称,
+									dpd.sku_code 物料编码,
+								CASE
+	
+									WHEN dpd.out_qty = 0 THEN
+									NULL ELSE dpd.plan_qty 
+									END 计划包装数,
+									dpd.MAKE_QTY 实际生产数量,
+									dpd.workshop || '车间' AS 车间,
+								CASE WHEN dpd.plan_qty = 0 THEN
+										'100.00%' ELSE to_char( round( dpd.make_qty / dpd.plan_qty, 4 ) * 100, 'fm9999999990.00' ) || '%' 
+									END AS 完成率
+								FROM
+									tp_pack_dailyplandetail dpd
+									LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid 
+								WHERE
+									dpd.bz_plan_qty > 0 
+									AND dpd.MAKE_QTY > 0
+									AND (dpd.plan_qty * 1.2) >= dpd.make_qty
+									AND dpd.planid IN (
+									SELECT
+										dp.planid AS sid 
+									FROM
+										tp_pack_dailyplan dp 
+									WHERE
+										dp.valueflag = 1 
+										AND dp.accountid = 1 
+										AND dp.plandate >= TRUNC( SYSDATE ) 
+									) 
+								ORDER BY
+									round( dpd.make_qty / dpd.plan_qty, 4 ) DESC";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+				if (context.Request["m"].ToString() == "count")
+            {
+                string sqlStr = @"SELECT
+								CASE WHEN T.TYPECODE=001001 THEN
+										'大件'
+									ELSE
+										'小件'
+								END 产品类别,
+								T.COUNT 成型产量,
+								BJ.COUNT 半检产量,
+								SY.COUNT 施釉产量,
+								SC.COUNT 烧成产量,
+								CJ.COUNT 成检产量
+								FROM(
+								SELECT
+									SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ) typecode,
+									COUNT( * ) count
+									FROM
+									TP_PM_GROUTINGDAILYDETAIL TPGL
+									LEFT JOIN TP_MST_GOODS TMG ON TPGL.GOODSID = TMG.GOODSID
+									LEFT JOIN TP_MST_GOODSTYPE TMGS ON TMG.GOODSTYPEID = TMGS.GOODSTYPEID
+								WHERE
+									TPGL.CREATETIME >= TRUNC( SYSDATE )
+									AND TPGL.VALUEFLAG = 1
+									GROUP BY SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ))T
+									FULL JOIN (SELECT COUNT(*) count,SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ) typecode FROM TP_PM_PRODUCTIONDATA TPPD LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID LEFT JOIN TP_MST_GOODSTYPE TMGS ON TMG.GOODSTYPEID = TMGS.GOODSTYPEID WHERE TPPD.PROCEDUREID IN (118,92,88,1,17) AND TPPD.CREATETIME >= TRUNC(SYSDATE) AND TPPD.VALUEFLAG = 1 GROUP BY SUBSTR(TMGS.GOODSTYPECODE, 1, 6 )) BJ ON BJ.typecode=T.typecode
+									FULL JOIN (SELECT COUNT(*) count,SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ) typecode FROM TP_PM_PRODUCTIONDATA TPPD LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID LEFT JOIN TP_MST_GOODSTYPE TMGS ON TMG.GOODSTYPEID = TMGS.GOODSTYPEID WHERE TPPD.PROCEDUREID IN (65,99) AND TPPD.CREATETIME >= TRUNC(SYSDATE) AND TPPD.VALUEFLAG = 1 GROUP BY SUBSTR(TMGS.GOODSTYPECODE, 1, 6 )) SY ON SY.typecode=T.typecode
+									FULL JOIN (SELECT COUNT(*) count,SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ) typecode FROM TP_PM_PRODUCTIONDATA TPPD LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID LEFT JOIN TP_MST_GOODSTYPE TMGS ON TMG.GOODSTYPEID = TMGS.GOODSTYPEID WHERE TPPD.PROCEDUREID IN (10,103) AND TPPD.CREATETIME >= TRUNC(SYSDATE) AND TPPD.VALUEFLAG = 1 GROUP BY SUBSTR(TMGS.GOODSTYPECODE, 1, 6 )) SC ON SC.typecode=T.typecode
+									FULL JOIN (SELECT COUNT(*) count,SUBSTR(TMGS.GOODSTYPECODE, 1, 6 ) typecode FROM TP_PM_PRODUCTIONDATA TPPD LEFT JOIN TP_MST_GOODS TMG ON TPPD.GOODSID = TMG.GOODSID LEFT JOIN TP_MST_GOODSTYPE TMGS ON TMG.GOODSTYPEID = TMGS.GOODSTYPEID WHERE TPPD.PROCEDUREID IN (11,104) AND TPPD.CREATETIME >= TRUNC(SYSDATE) AND TPPD.VALUEFLAG = 1 GROUP BY SUBSTR(TMGS.GOODSTYPECODE, 1, 6 )) CJ ON CJ.typecode=T.typecode";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}

+ 392 - 0
wwwroot/main/Split/Screen14/index.html

@@ -0,0 +1,392 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <link rel="shortcut icon" href="/img/logo.png" />
+    <link rel="bookmark" href="/img/logo.png" />
+    <link rel="stylesheet" href="../DashBoard.css?v3" />
+    <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
+    <script src="/Plugins/xrequest/xrequest.min.js"></script>
+    <script src="/Plugins/xcountto/xcountTo.min.js"></script>
+    <title>东科软件</title>
+</head>
+<body>
+    <div class="m4_box_1920_1080">
+        <div class="m4_box_title" onclick="showHelp()" style="cursor:pointer">
+            <div class="m4_box_title_arrow"></div><div class="m4_box_title_arrow2"></div> <div>月计划达成率</div><span class="m4_box_title_loading" id="报表加载"></span>
+        </div>
+        <div class="m4_box_body" style="padding-right: 20px; width: 1720px;">
+            <div style="width:1720px;height:480px;display:flex;flex-direction:row;">
+                <div style="width: 70%;height:480px;">
+                    <!--月计划达成率表格-->
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:99.9%;">
+                        <tr class="tr_title">
+                            <td colspan="6" style="color:white">包装成品统计(月度)</td>
+                        </tr>
+                        <tr class="tr_title">
+                            <td style="width:25%;">产品类别</td>
+                            <td style="width:25%;">包装计划数</td>
+                            <td style="width:25%;">实际生产数</td>
+                            <td style="width:25%;">计划达成率</td>
+                        </tr>
+                    </table>
+                    <div style=" height: 360px; overflow: hidden; width: 100%;">
+                        <div>
+                            <table id="dayTable_template" style="display:none;">
+                                <tr style=" height: 58px;" 360px; class="tr_title_warning">
+                                    <!--<td style="width: 7.1%;  font-size: 14px;">{成型线}</td>-->
+                                    <td style="width: 25%; font-size: 20px;">{产品类别}</td>
+                                    <td style="width: 25%; font-size: 20px;">{包装计划数}</td>
+                                    <td style="width: 25%; font-size: 20px;">{实际生产数}</td>
+                                    <td style="width: 25%; font-size: 20px;">{计划达成率}</td>
+                                </tr>
+                            </table>
+                        </div>
+                        <table id="dayTable" style="width: 100%; height: 360px;">
+                        </table>
+                    </div>
+                </div>
+                <div style="width: 30%; height: 500px; padding-left:20px;">
+                    <!--工序预警表格-->
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="2" style="color:white">各产品类别达成率统计 (月度)</td>
+                        </tr>
+                        <tr class="tr_title_warning">
+                            <td>序号</td>
+                            <td>预警标准</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning">
+                            <td>1</td>
+                            <td id="t1"></td>
+                        </tr>
+                        <tr class="tr_bg_dark_warning">
+                            <td>2</td>
+                            <td id="t2"></td>
+                        </tr>
+                        <tr class="tr_bg_light_warning">
+                            <td>3</td>
+                            <td id="t3"></td>
+                        </tr>
+                        <tr class="tr_bg_dark_warning">
+                            <td>4</td>
+                            <td id="t4"></td>
+                        </tr>
+                        <tr class="tr_bg_light_warning">
+                            <td>5</td>
+                            <td id="t5"></td>
+                        </tr>
+                        <tr class="tr_bg_dark_warning">
+                            <td>6</td>
+                            <td id="t6"></td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div style="width:1720px;height:340px;display:flex;flex-direction:row;">
+                <div style="width: 50%; height: 340px; ">
+                    <!--包装月度计划-->
+                    <canvas id="canvasGoodsCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 340px; width: 100%"></canvas>
+                </div>
+                <div style="width: 50%; height: 340px;">
+                    <!--成型月度计划-->
+                    <canvas id="canvasCxGoodsCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 340px; width: 100%"></canvas>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+        //缺陷统计刷新时间
+        var refreshTime1 = 80000;
+        var currentTime1 = 0;
+
+        var doGetData;
+        var doGetTime;
+
+        var frameHeight;
+        var tableHeight;
+        var offsetHeight = 20;
+
+        $(document).ready(function () {
+            initData();
+            clearData();
+            doGetData = setInterval(function () { timeUpdate(); }, 1000);
+            loadMainTable()
+            setInterval(function () { loadMainTable(); }, 60000);
+            loadDataC();
+            setInterval(function () { loadDataC(); }, 10000);
+            loadDataB();
+            setInterval(function () { loadDataB(); }, 10000);
+        });
+
+        //帮助说明
+        function showHelp() {
+            var message = "月计划达成率";
+            alert(message);
+        }
+
+        function timeUpdate() {
+
+            if (currentTime1 <= 0) {
+                loadDataC();
+                setInterval(function () { loadDataC(); }, 5000);
+                loadDataB();
+                setInterval(function () { loadDataB(); }, 5000);
+                currentTime1 = refreshTime1;
+            }
+            else {
+                if (currentTime1 > 0) {
+                    $('#报表加载').html('刷新:' + currentTime1 / 1000 + ' 秒');
+                    currentTime1 = currentTime1 - 1000;
+                }
+            }
+        }
+
+        function clearData() {
+            //清除数据
+            window.GoodsCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0];
+            window.GoodsCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0];
+            window.GoodsCL.update();
+            window.GoodsCX.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
+            window.GoodsCX.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
+            window.GoodsCX.update();
+        }
+
+        function loadMainTable() {
+            $.get("rpt.ashx?m=MonthTable", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    $("#dayTable").html("");
+                    for (var i = 0; i < json["rows"].length; i++) {
+                        var temp = $("#dayTable_template").html();
+                        temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+                        //temp = temp.replace('{成型线}', json["rows"][i]['成型线']);
+                        temp = temp.replace('{产品类别}', json["rows"][i]['产品类别']);
+                        temp = temp.replace('{包装计划数}', json["rows"][i]['包装计划数']);
+                        temp = temp.replace('{实际生产数}', json["rows"][i]['实际生产数']);
+                        temp = temp.replace('{计划达成率}', json["rows"][i]['计划达成率']);
+                        $("#dayTable").append(temp);
+                    }
+                }
+            });
+        }
+
+        function loadDataB(){
+            //获取月产品完工数据
+            $.get("rpt.ashx?m=finish", function (data){
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    let a = [];
+                    let a1 = [];
+                    let a2 = [];
+                    var num = parseInt(json["rows"].length);
+                    for (var i = 0; i < num; i++) {
+                        a.push(json["rows"][i]["产品类别"]);
+                        a1.push(parseInt(json["rows"][i]["包装计划数"]));
+                        a2.push(parseInt(json["rows"][i]["包装达成数"]));
+                    }
+                    window.GoodsCL.data.datasets[0].data = a1;
+                    window.GoodsCL.data.datasets[1].data = a2;
+                    window.GoodsCL.data.labels = a;
+                    window.GoodsCL.update();
+                }
+            });
+        }
+        function loadDataC() {
+            //成型
+            $.get("rpt.ashx?m=cx", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    let a = [];
+                    let a1 = [];
+                    let a2 = [];
+                    var num = parseInt(json["rows"].length);
+                    for (var i = 0; i < num; i++) {
+                        a.push(json["rows"][i]["产品类别"]);
+                        a1.push(parseInt(json["rows"][i]["成型计划数"]));
+                        a2.push(parseInt(json["rows"][i]["成型达成数"]));
+                    }
+                    window.GoodsCX.data.datasets[0].data = a1;
+                    window.GoodsCX.data.datasets[1].data = a2;
+                    window.GoodsCX.data.labels = a;
+                    window.GoodsCX.update();
+                    if (parseInt(json["rows"][0]["达成率"]) < 95) {
+                        $("#t1").text("【" + json["rows"][0]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t1").text("【" + json["rows"][0]["产品类别"] + "】" + "计划达成");
+                    }
+                    if (parseInt(json["rows"][1]["达成率"]) < 95) {
+                        $("#t2").text("【" + json["rows"][1]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t2").text("【" + json["rows"][1]["产品类别"] + "】" + "计划达成");
+                    }
+                    if (parseInt(json["rows"][2]["达成率"]) < 95) {
+                        $("#t3").text("【" + json["rows"][2]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t3").text("【" + json["rows"][2]["产品类别"] + "】" + "计划达成");
+                    }
+                    if (parseInt(json["rows"][3]["达成率"]) < 95) {
+                        $("#t4").text("【" + json["rows"][3]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t4").text("【" + json["rows"][3]["产品类别"] + "】" + "计划达成");
+                    }
+                    if (parseInt(json["rows"][4]["达成率"]) < 95) {
+                        $("#t5").text("【" + json["rows"][4]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t5").text("【" + json["rows"][4]["产品类别"] + "】" + "计划达成");
+                    }
+                    if (parseInt(json["rows"][5]["达成率"]) < 95) {
+                        $("#t6").text("【" + json["rows"][5]["产品类别"] + "】" + "计划达成率低于95" + "%");
+                    } else {
+                        $("#t6").text("【" + json["rows"][5]["产品类别"] + "】" + "计划达成");
+                    }
+                }
+            });
+        }
+
+        function initData() {
+            window.chartColors = {
+                red: 'rgb(255, 99, 132)',
+                orange: 'rgb(255, 159, 64)',
+                yellow: 'rgb(255, 250, 86)',
+                green: 'rgb(75, 192, 192)',
+                blue: 'rgb(54, 162, 250)',
+                purple: 'rgb(153, 102, 255)',
+                grey: 'rgb(231,233,237)'
+            };
+
+            var color = Chart.helpers.color;
+
+            window.randomScalingFactor = function (num) {
+                return Math.round(Math.random() * num);
+            }
+
+            Chart.defaults.global.defaultFontColor = 'white';
+            Chart.defaults.global.defaultFontSize = 24;
+            Chart.defaults.global.legend.display = false;
+
+            //包装月度计划=======================================
+            window.configGoodsCL = {
+                data: {
+                    labels: ['GOODS', 'GOODS', 'GOODS', 'GOODS', 'GOODS','GOODS'],
+                    datasets: [{
+                        type: 'line',
+                        label: '计划产量',
+                        backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
+                        fill: false,
+                        borderColor: window.chartColors.orange,
+                        borderWidth: 2,
+                        pointRadius: 30,
+                        data: [0, 0, 0, 0, 0, 0]
+                    }, {
+                        label: '实际产量',
+                        backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
+                        borderColor: window.chartColors.blue,
+                        borderWidth: 1,
+                        data: [0, 0, 0, 0, 0, 0]
+                    }]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: true,
+                        text: "包装月度计划"
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true,
+                    scales: {
+                        xAxes: [{
+                            stacked: false
+                        }],
+                        yAxes: [{
+                            display: true,
+                            stacked: false,
+                            ticks: {
+                                min: 0,
+                                stepSize: 10000,
+                                max: 100000
+                            }
+                        }]
+                    }
+
+                }
+            };
+            var ctxGoodsCL = document.getElementById("canvasGoodsCL").getContext("2d");
+            window.GoodsCL = new Chart(ctxGoodsCL, configGoodsCL);
+            //===================================================
+
+            //成型月度计划=======================================
+            window.configGoodsCX = {
+                data: {
+                    labels: ['GOODS', 'GOODS', 'GOODS', 'GOODS', 'GOODS', 'GOODS'],
+                    datasets: [{
+                        type: 'line',
+                        label: '计划产量',
+                        backgroundColor: color(window.chartColors.orange).alpha(0.35).rgbString(),
+                        fill: false,
+                        borderColor: window.chartColors.orange,
+                        borderWidth: 2,
+                        pointRadius: 30,
+                        data: [0, 0, 0, 0, 0, 0]
+                    }, {
+                        label: '实际产量',
+                        backgroundColor: color(window.chartColors.blue).alpha(0.35).rgbString(),
+                        borderColor: window.chartColors.blue,
+                        borderWidth: 1,
+                        data: [0, 0, 0, 0, 0, 0]
+                    }]
+                },
+                type: 'bar',
+                options: {
+                    legend: {
+                        display: true
+                    },
+                    title: {
+                        display: true,
+                        text: "成型月度计划"
+                    },
+                    tooltips: {
+                        mode: 'point',
+                        intersect: false
+                    },
+                    responsive: true,
+                    scales: {
+                        xAxes: [{
+                            stacked: false
+                        }],
+                        yAxes: [{
+                            display: true,
+                            stacked: false,
+                            ticks: {
+                                min: 0,
+                                stepSize: 10000,
+                                max: 100000
+                            }
+                        }]
+                    }
+
+                }
+            };
+            var ctxGoodsCX = document.getElementById("canvasCxGoodsCL").getContext("2d");
+            window.GoodsCX = new Chart(ctxGoodsCX, configGoodsCX);
+            //===================================================
+        }
+
+
+
+    </script>
+
+    <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
+    <script src="/Plugins/circleChart/circleChart.min.js"></script>
+</body>
+</html>

+ 160 - 0
wwwroot/main/Split/Screen14/rpt.ashx

@@ -0,0 +1,160 @@
+<%@ WebHandler Language="C#" Class="rpt" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Data;
+using System.Text;
+using System.Collections;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using Curtain.DataAccess;
+using DK.XuWei.WebMes;
+
+public class rpt : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+            //成型月度计划
+            if (context.Request["m"].ToString() == "cx")
+            {
+                string sqlStr = @"
+			SELECT
+            CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
+		            WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
+	            ELSE
+		            T.GOODSTYPENAME
+            END 产品类别,
+            SUM(T.plan_qty) 成型计划数,
+            sum(T.make_qty) 成型达成数,
+            to_char(round(sum(T.make_qty) / SUM(T.plan_qty),4)* 100, 'fm9999999990.00' ) 达成率
+            FROM(
+            SELECT
+	            mg.GOODSTYPEID,
+	            TMGP.GOODSTYPENAME,
+	            mdd.plan_qty,
+	            mdd.make_qty 
+            FROM
+	            tp_mould_dailyplandetail mdd
+	            LEFT JOIN tp_mst_goods mg ON mdd.goodsid = mg.goodsid
+	            LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID 
+            WHERE
+	            mdd.valueflag = 1
+	            AND mg.GOODSTYPEID IN ( 12, 6, 18, 3, 7, 13 )
+	            AND mdd.MAKE_QTY > 0
+	            AND mdd.plandate < TRUNC( SYSDATE )
+	            AND mdd.plandate >= TRUNC( SYSDATE -30 )
+	            )T GROUP BY T.GOODSTYPEID,T.GOODSTYPENAME";
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+            //包装月度计划
+             if (context.Request["m"].ToString() == "finish")
+            {
+                string sqlStr = @"
+                SELECT
+                CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
+		                 WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
+                ELSE
+		                T.产品类别
+                END 产品类别,
+	                SUM(T.计划包装数) 包装计划数,
+	                SUM(T.实际生产数量) 包装达成数
+                FROM
+	                (
+                SELECT
+	                mg.GOODSTYPEID,
+	                TMGP.GOODSTYPENAME 产品类别,
+                CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
+	                dpd.MAKE_QTY 实际生产数量 
+                FROM
+	                tp_pack_dailyplandetail dpd
+	                LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
+	                LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID 
+                WHERE
+	                dpd.bz_plan_qty > 0 
+	                AND mg.GOODSTYPEID IN ( 12, 6, 18, 3, 7, 13 ) 
+	                AND dpd.VALUEFLAG = 1
+	                AND dpd.accountid = 1 
+	                AND dpd.plandate < TRUNC( SYSDATE )
+	                AND dpd.plandate >= TRUNC( SYSDATE -30 )
+	                AND dpd.MAKE_QTY > 0 
+	                )T GROUP BY T.GOODSTYPEID,T.产品类别
+                ";
+                //获取查询条件
+
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+             //包装表格数据
+             if (context.Request["m"].ToString() == "MonthTable")
+            {
+                string sqlStr = @"
+			            SELECT
+	                    CASE WHEN T.GOODSTYPEID = 18 THEN CAST('智能座便器' AS nvarchar2(20))
+		                                WHEN T.GOODSTYPEID = 12 THEN CAST('小便器(挂)' AS nvarchar2(20))
+	                                ELSE
+		                                T.产品类别
+                                END 产品类别,
+	                    SUM(T.计划包装数) 包装计划数,
+	                    SUM(T.实际生产数量) 实际生产数,
+	                    CASE WHEN SUM(T.计划包装数) = 0 THEN
+ 	                    '100.00%' ELSE to_char( round( SUM(T.实际生产数量) / SUM(T.计划包装数), 4 ) * 100, 'fm9999999990.00' ) || '%' 
+ 	                    END AS 计划达成率
+                    FROM
+	                    (
+                    SELECT
+	                    TMGP.GOODSTYPEID,
+	                    TMGP.GOODSTYPENAME 产品类别,
+                    CASE WHEN dpd.out_qty = 0 THEN NULL ELSE dpd.plan_qty END 计划包装数,
+	                    dpd.MAKE_QTY 实际生产数量
+                    FROM
+	                    tp_pack_dailyplandetail dpd
+	                    LEFT JOIN tp_mst_goods mg ON dpd.goodsid = mg.goodsid
+	                    LEFT JOIN TP_MST_GOODSTYPE TMGP ON mg.GOODSTYPEID = TMGP.GOODSTYPEID 
+                    WHERE
+	                    dpd.bz_plan_qty > 0 
+	                    AND mg.GOODSTYPEID IN ( 12, 6, 18, 3, 7, 13 ) 
+	                    AND dpd.MAKE_QTY > 0 
+	                    AND ( dpd.plan_qty * 1.8 ) >= dpd.make_qty 
+	                    AND dpd.VALUEFLAG = 1
+	                    AND dpd.accountid = 1 
+	                    --AND dpd.plandate >= trunc( SYSDATE ) 
+	                    AND dpd.plandate < TRUNC( SYSDATE )
+	                    AND dpd.plandate >= TRUNC( SYSDATE -30 )
+                    ORDER BY
+	                    round( dpd.make_qty / dpd.plan_qty, 4 ) DESC
+	                    )T GROUP BY T.产品类别,T.GOODSTYPEID ORDER BY round( SUM(T.实际生产数量) / SUM(T.计划包装数), 4 ) DESC";
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+        }
+    }
+
+    public decimal toNumber(object o)
+    {
+        if (o != DBNull.Value)
+            return Convert.ToDecimal(o);
+        else
+            return 0;
+    }
+
+    public bool IsReusable
+    {
+        get
+        {
+            return false;
+        }
+    }
+
+}

+ 44 - 0
wwwroot/main/Split/ScreenM4/index2.html

@@ -0,0 +1,44 @@
+<!doctype html>
+<html lang="en">
+<head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
+    <link rel="shortcut icon" href="/img/logo.png" />
+    <link rel="bookmark" href="/img/logo.png" />
+    <link rel="stylesheet" href="../DashBoard.css?v3" />
+    <script src="/Plugins/jquery-3.4.1/jquery-3.4.1.min.js"></script>
+    <script src="/Plugins/xrequest/xrequest.min.js"></script>
+    <title>东科软件</title>
+</head>
+<body style="background-color:black;">
+
+    <div class="m4_box_3840_2160">
+        <div class="m4_title">
+            <!--<span style="color:darkorange"><<<</span>&nbsp;&nbsp;<span>恒洁卫浴数字化大屏</span>&nbsp;&nbsp;<span style="color:darkorange">>>></span>-->
+            <span>恒洁数字化管理系统</span>
+        </div>
+        <div class="row_2" style="margin:10px 140px 20px 140px;">
+            <div style="width: 1780px; margin: 0px 40px 0px 0px;">
+                <iframe title="iframe02" src="../ScreenM401/index.html" class="m4_iframe_1920_1080"></iframe>
+                <iframe title="iframe06" src="../Screen14/index.html" class="m4_iframe_1920_1080"></iframe>
+            </div>
+            <div style="width:1780px;margin:0px 0px 0px 20px;">
+                <iframe title="iframe03" src="../ScreenM402/index.html" class="m4_iframe_1920_1080"></iframe>
+                <iframe title="iframe07" src="../Screen13/index.html" class="m4_iframe_1920_1080"></iframe>
+            </div>
+        </div>
+    </div>
+
+    <script>
+        $(document).ready(function () {
+
+
+        });
+    </script>
+
+    <script src="/Plugins/chartjs-2.8.0/chart-2.8.min.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/chartjs-plugin-datalabels.js"></script>
+    <script src="/Plugins/chartjs-2.8.0/utils.js"></script>
+    <script src="/Plugins/circleChart/circleChart.min.js"></script>
+</body>
+</html>

+ 11 - 6
wwwroot/main/Split/ScreenM401/index.html

@@ -12,7 +12,6 @@
     <title>东科软件</title>
 </head>
 <body>
-
     <div class="m4_box_1920_1080">
         <div class="m4_box_title" onclick="showHelp()" style="cursor:pointer">
             <div class="m4_box_title_arrow"></div><div class="m4_box_title_arrow2"></div> <div>年交接数</div><span class="m4_box_title_loading" id="报表加载"></span>
@@ -208,13 +207,19 @@
             });
             $.get("rpt.ashx?m=TOTAL", function (data) {
                 var jsondata = JSON.parse(data);
+                let a = [];
+                let b = [];
+                let c = [];
                 if (jsondata["success"] == true) {
-                    for (var i = 0; i < jsondata["total"]; i++) {
-                        window.Product.data.datasets[0].data[i] = jsondata["rows"][i]["PLAN"];
-                        window.Product.data.datasets[1].data[i] = jsondata["rows"][i]["NUM"];
+                    var num = parseInt(jsondata["rows"].length);
+                    for (var i = 0; i < num; i++) {
+                        a.push(parseFloat(jsondata["rows"][i]["PLAN"]));
+                        b.push(parseFloat(jsondata["rows"][i]["NUM"]));
+                        c.push(jsondata["rows"][i]["TIME"]);
                     }
-                    window.Product.data.datasets[0].data[0] = 70000;
-                    window.Product.data.datasets[0].data[1] = 45000;
+                    window.Product.data.datasets[0].data = a;
+                    window.Product.data.datasets[1].data = b;
+                    window.Product.data.labels = c;
                     window.Product.update();
                 }
             });

+ 1 - 0
wwwroot/main/Split/ScreenM401/rpt.ashx

@@ -205,6 +205,7 @@ public class rpt : IHttpHandler, IReadOnlySessionState
 						)t3
 						ON
 						t2.TIME = t3.PLANMONTH
+						ORDER BY t2.TIME ASC
                     ";
                     //直接获取不分页数据
                     DataTable dt = conn.ExecuteDatatable(sqlStr);