zhangzhongshuai 2 rokov pred
rodič
commit
b036eb862e

+ 729 - 0
wwwroot/main/Procedure/Boardkanban/Boardkanban.ashx

@@ -0,0 +1,729 @@
+<%@ WebHandler Language="C#" Class="FormingKanban" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Configuration;
+using System.Data;
+using Curtain.DataAccess;
+using Curtain.Log;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System.Collections.Generic;
+public class  FormingKanban : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+        	if (context.Request["m"].ToString() == "fwq")
+			{
+				string time = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm ");
+				Dictionary<string, string> d = new Dictionary<string, string>();
+				JObject json = new JObject(
+						  new JProperty("success", true),
+						  new JProperty("sj", time)
+						);
+				context.Response.Write(json.ToString());
+			}
+
+			if (context.Request["m"].ToString() == "StaffTable")
+            {
+                string sqlStr = @"SELECT
+									UU.STAFFCODE,
+									UU.COUNTS,
+									UU.STAFFCODE1,
+									UU.COUNTS1,
+									UU.STAFFCODE2,
+									UU.COUNTS2 
+								FROM
+									(
+									SELECT
+										U1.ID AS ID,
+										U1.STAFFCODE AS STAFFCODE,
+										U1.COUNTS AS COUNTS,
+										U2.ID AS ID1,
+										U2.STAFFCODE AS STAFFCODE1,
+										U2.COUNTS AS COUNTS1,
+										U3.ID AS ID2,
+										U3.STAFFCODE AS STAFFCODE2,
+										U3.COUNTS AS COUNTS2 
+									FROM
+										(
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U1
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T1.STAFFCODE,
+											T1.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T1 
+										) U2 ON U1.ID = ( U2.ID - 1 )
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U3 ON U2.ID = ( U3.ID - 1 ) 
+									WHERE
+									mod( U1.id, 3 ) = 1 
+									) UU";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+        	if (context.Request["m"].ToString() == "WorkshopSection")
+			{
+				string sqlStr = @"
+                SELECT
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A' THEN 1 ELSE 0 END  ) 成型A注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A'THEN 1 ELSE 0 END  ) 成型A交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B' THEN 1 ELSE 0 END  ) 成型B注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B'THEN 1 ELSE 0 END  ) 成型B交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C' THEN 1 ELSE 0 END  ) 成型C注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C'THEN 1 ELSE 0 END  ) 成型C交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=1   THEN 1 ELSE 0 END  ) 高压注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=1 	 AND  gdd.DELIVERFLAG = '1' THEN 1 ELSE 0 END  ) 高压交坯数量
+                        FROM TP_PM_GROUTINGDAILYDETAIL GDD
+                        LEFT JOIN TP_PC_GROUTINGLINE GD ON GD.GROUTINGLINEID=GDD.GROUTINGLINEID
+                        WHERE gdd.VALUEFLAG=1 and gd.VALUEFLAG=1
+                        AND gdd.GROUTINGFLAG=1 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+            
+				if (context.Request["m"].ToString() == "MonthSum")
+							{
+								string sqlStr = @"
+								SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 53, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 4, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 
+							
+							
+																				union to
+											 
+													SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 54, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5,1 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 
+							
+																				UNION ALL
+													SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 36, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5, 0, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 ";
+								//直接获取不分页数据
+								DataTable dt = conn.ExecuteDatatable(sqlStr);
+								string jsonStr = new JsonResult(dt).ToJson();
+								context.Response.Write(jsonStr);
+							}
+
+        	if (context.Request["m"].ToString() == "DefectDetail")
+			{
+				string sqlStr = @"WITH 缺陷 AS (
+												SELECT
+												缺陷名称,
+													缺陷数量
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+														dfc.DEFECTNAME in ('坯脏','棕眼','裂底','裂圈','裂鼻子','裂水道','裂管','沾接裂','裂眼',
+														'糙活','变形','渣','管道渣','孔眼不良','睹眼','眼歪','丢气孔','丢眼','坏磕','卡球')
+														AND dfc.VALUEFLAG = 1 
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4
+												),
+												其他缺陷 AS (
+												SELECT
+													SUM(缺陷数量) 其他缺陷数量
+												FROM
+													(
+											SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+													WHERE
+													dfc.PROCEDUREID=6
+													GROUP BY
+														dfc.DEFECTNAME
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE 		缺陷名称 not  IN(
+													SELECT
+												缺陷名称
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+														dfc.DEFECTNAME in ('坯脏','棕眼','裂底','裂圈','裂鼻子','裂水道','裂管','沾接裂','裂眼',
+														'糙活','变形','渣','管道渣','孔眼不良','睹眼','眼歪','丢气孔','丢眼','坏磕','卡球')
+														AND dfc.VALUEFLAG = 1 
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4 )
+
+												),
+												检验数 
+												AS 
+												(
+												 SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												) 
+	
+												SELECT
+												缺陷.缺陷名称,
+												缺陷.缺陷数量,
+												其他缺陷.其他缺陷数量,
+												DECODE( NVL( 缺陷.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 缺陷.缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 缺陷率,
+												DECODE( NVL( 其他缺陷.其他缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 其他缺陷.其他缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 其他缺陷率
+											FROM
+												缺陷
+												LEFT JOIN 检验数 ON 1 = 1
+												LEFT JOIN 其他缺陷 ON 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+			    if (context.Request["m"].ToString() == "Alltotal")
+            {
+                string sqlStr = @"with 打磨 AS (
+											SELECT
+												COUNT(dfc.BARCODE) 缺陷数量
+												FROM TP_PM_DEFECT dfc
+												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+												WHERE dfc.VALUEFLAG=1
+												AND dfc.DEFECTPROCEDUREID IN(4,53)
+												),
+												擦洗 AS (
+											SELECT
+												COUNT(dfc.BARCODE) 缺陷数量
+												FROM TP_PM_DEFECT dfc
+												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+												WHERE dfc.VALUEFLAG=1
+												AND dfc.DEFECTPROCEDUREID IN(5,54)
+												),
+												检验数 AS 
+												(
+												 SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												)
+												SELECT
+												检验数.出窑数 ,
+												DECODE( NVL( 打磨.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 打磨.缺陷数量, 0 ) / DECODE( NVL( 检验数.出窑数, 1 ), 0, 1, NVL( 检验数.出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) as 打磨缺陷率,
+												DECODE( NVL( 擦洗.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 擦洗.缺陷数量, 0 ) / DECODE( NVL( 检验数.出窑数, 1 ), 0, 1, NVL( 检验数.出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) as 擦洗缺陷率
+												FROM  
+												打磨
+												LEFT JOIN 检验数 on 1=1
+												LEFT JOIN 擦洗 on 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+                 	if (context.Request["m"].ToString() == "MonthTable")
+			{
+				string sqlStr = @"SELECT
+										责任工号,
+										生产线号,
+										缺陷名称,
+										产品分级
+										FROM(
+											SELECT DISTINCT
+													stf.STAFFCODE 责任工号,
+													TMDP.BARCODE 条码,
+													TMDP.PRODUCTIONLINECODE 生产线号,
+													TMDP.DEFECTNAME 缺陷名称,
+													TMG.GOODSLEVELNAME 产品分级
+													FROM TP_PM_DEFECT TMDP
+													LEFT JOIN TP_MST_DEFECT DF ON DF.DEFECTID=TMDP.DEFECTID
+														LEFT JOIN TP_MST_USERSTAFF class on class.USERID=tmdp.DEFECTUSERID
+														LEFT JOIN TP_HR_STAFF stf on stf.STAFFID=class.STAFFID
+														LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+														LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
+														--LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
+														LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+														LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+														--INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
+														WHERE 
+														 PD.VALUEFLAG = '1' --有效
+														AND TMDP.VALUEFLAG = '1' --有效 
+														AND TMDP.DEFECTPROCEDUREID IN (4,5,53,54)
+														
+											)";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+		if (context.Request["m"].ToString() == "rate")//折线图
+			{
+				string sqlStr = @"WITH 打磨 AS(
+								SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   打磨
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 53, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 4, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+							
+																				
+),
+擦洗 AS (SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   擦洗
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 54, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5,1 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+						
+							),
+							改洗 AS (
+															SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   改洗
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 36, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5, 0, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+														)
+
+														SELECT
+														打磨.SJ,
+														打磨.打磨,
+														擦洗.擦洗,
+														改洗.改洗
+														FROM 擦洗
+														LEFT JOIN 打磨 ON 打磨.SJ=擦洗.SJ
+														LEFT JOIN 改洗 ON 改洗.SJ=打磨.SJ";
+                //直接获取不分页数据
+                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;
+        }
+    }
+
+}

+ 425 - 0
wwwroot/main/Procedure/Boardkanban/Boardkanban.html

@@ -0,0 +1,425 @@
+<!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>
+    <link rel="stylesheet" href="/plugins/bootstrap-4.3.1/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
+    <link href="/Plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
+
+    <title>东科软件</title>
+</head>
+<body>
+
+    <div class="box_1920_1080">
+        <div class="box_title" style="display:flex;flex-direction:row;">
+            <div style="width:25%;text-align:left;"></div>
+            <div style="width:50%;text-align:center; font-size:40px">成检看板</div>
+            <div style="width:25%;text-align:right;"></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+
+            <!--31天产量曲线图-->
+            <div style="width:1840px;height:30%;display:flex;flex-direction:row;">
+                <div style="width: 75%; height: 300px;">
+                    <div style="color:white;font-size:15px;font-weight:600; text-align:center">每日产量计划达成</div>
+                    <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 330px; width: 80% "></canvas>
+                </div>
+            </div>
+
+            <div>
+                <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2"><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">一烧产量:<span id="ydm">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">综合产量:<span id="ycx">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">一烧出窑量:<span id="ygx">测试数据</span></td>
+                    </tr>
+                </table>
+            </div>
+            <!--表格-->
+            <div style="width: 100%; height: 530px; display: flex; flex-direction: row; margin-top: 4%">
+                <div style="width: 100%; height: 530px; ">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:50%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="7" style="font-size:30px">成品检验个人数据</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 30px; font-size:27px">
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                        </tr>
+                    </table>
+                    <div style=" height:170px;overflow:hidden;">
+                        <table style="width: 50%; display:none;" id="StaffTable_template">
+                            <!--style=""-->
+                            <tr class="tr_title_warning" style="height: 30px; font-size: 20px">
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号2}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量2}</td>
+                            </tr>
+                        </table>
+                        <table id="StaffTable" style="width: 50%;">
+                        </table>
+                    </div>
+
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 50%;">
+                        <tr class="tr_title_warning" style="height: 60px; font-size: 30px">
+                            <td colspan="3" id="dmqxl">缺陷率:——%</td>
+                            <td colspan="3" id="cxqxl">一烧产量:——</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 50px; font-size: 25px">
+                            <td>缺陷</td>
+                            <td id="qxname1">缺陷1</td>
+                            <td id="qxname2">缺陷2</td>
+                            <td id="qxname3">缺陷3</td>
+                            <td id="qxname4">缺陷4</td>
+                            <td>其他</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>数量</td>
+                            <td id="sl1">1</td>
+                            <td id="sl2">2</td>
+                            <td id="sl3">3</td>
+                            <td id="sl4">4</td>
+                            <td id="sl5">5</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>缺陷率</td>
+                            <td id="qxl1">测试</td>
+                            <td id="qxl2">测试</td>
+                            <td id="qxl3">测试</td>
+                            <td id="qxl4">测试</td>
+                            <td id="qxl5">测试</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div style="width: 50%; height: 500px; padding-right: 20px; margin-top: -530px; margin-left: 50% ">
+                <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                    <tr class="tr_title_warning">
+                        <td colspan="4" style="color:white;">成检实时数据</td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">责任工号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">生产线号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">缺陷位置</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">产品分级</td>
+                    </tr>
+                </table>
+                <div style=" height: 438px; overflow: hidden;">
+                    <table id="dayTable_template" style="display:none;">
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{责任工号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{生产线号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{缺陷名称}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{产品分级}</td>
+                        </tr>
+                    </table>
+                    <table id="dayTable" style="width: 100%; ">
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+
+        var refreshTime1 = 80000;
+        var currentTime1 = 0;
+
+        var doGetData;
+        var doGetTime;
+		var StaffInterval;
+		var StaffTableRowCount = 0;
+        var dayInterval;
+        var dayTableRowCount = 0;
+
+        //页面加载
+        $(document).ready(function () {
+            timeUp();
+			doGetData = setInterval(function () { loadServerTime(); }, 3000);
+           doGetData = setInterval(function () { timeUp(); }, 10000);
+           loadDayTable();
+        });
+
+        function timeUp() {
+			loadData();
+			initData();
+			clearData();
+			StaffTable();
+			DefectDetails();
+			Alltotal();
+			MonthSum();
+        }
+		function Alltotal() {
+			$.get('RefinementKanban.ashx?m=Alltotal', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#scl').text("一烧出窑数:" + json["rows"][0]["出窑数"]);
+					$('#dmqxl').text("一烧出窑数:" + json["rows"][0]["打磨缺陷率"]);
+					$('#cxqxl').text("一烧出窑数:" + json["rows"][0]["擦洗缺陷率"]);
+				}
+			});
+        }
+		function MonthSum() {
+			$.get('RefinementKanban.ashx?m=MonthSum', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#ydm').text( json["rows"][0]["打磨"]);
+					$('#ycx').text(json["rows"][1]["打磨"]);
+					$('#ygx').text(json["rows"][2]["打磨"]);
+
+				}
+			});
+		}
+		function StaffTableScroll() {
+			var scrollHeight = $("#StaffTable_template").find("tr").outerHeight();
+			$("#StaffTable").animate({ marginTop: -scrollHeight, }, 500,
+				function () {
+					$(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+					if (--StaffTableRowCount > -1) {
+					} else {
+						StaffTable();
+					}
+				}
+			);
+        }
+		function StaffTable() {
+			clearInterval(StaffInterval);
+			$.get("RefinementKanban.ashx?m=StaffTable", function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$("#StaffTable").html("");
+					for (var i = 0; i < json["rows"].length; i++) {
+						var temp = $("#StaffTable_template").html();
+						temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+						temp = temp.replace('{工号}', json["rows"][i]['STAFFCODE']);
+						temp = temp.replace('{数量}', json["rows"][i]['COUNTS']);
+						temp = temp.replace('{工号1}', json["rows"][i]['STAFFCODE1']);
+                        temp = temp.replace('{数量1}', json["rows"][i]['COUNTS1']);
+						temp = temp.replace('{工号2}', json["rows"][i]['STAFFCODE2']);
+						temp = temp.replace('{数量2}', json["rows"][i]['COUNTS2']);
+						$("#StaffTable").append(temp);
+					}
+					StaffTableRowCount = json["rows"].length;
+					StaffInterval = setInterval(StaffTableScroll, 3000);
+				}
+			});
+		}
+        //表格滚动
+        function dayTableScroll() {
+			var scrollHeight = $("#dayTable_template").find("tr").outerHeight();
+            $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (dayTableRowCount > -1) {
+                        dayTableRowCount--;
+						console.log(dayTableRowCount);
+                    } else {
+                        loadDayTable();
+                    }
+                }
+            );
+        }
+        //明细表
+		function loadDayTable() {
+			$.get("RefinementKanban.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]['产品分级']);
+						$("#dayTable").append(temp);
+                    }
+					dayTableRowCount = json["rows"].length;
+					dayInterval = setInterval(dayTableScroll, 6000);
+				}
+			});
+        }
+        function clearData() {
+            //清除数据
+            window.DayCL.data.labels = [];
+            //window.DayCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[0].data = [];
+            //window.DayCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[1].data = [];
+            window.DayCL.update();
+        }
+		function loadServerTime() {
+			$.get('RefinementKanban.ashx?m=fwq', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#sj').html(json["sj"]);
+				}
+			});
+		}
+		function DefectDetails() {
+			$.get('RefinementKanban.ashx?m=DefectDetail', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#qxname1').text(json["rows"][0]["缺陷名称"]);
+					$('#qxname2').text(json["rows"][1]["缺陷名称"]);
+					$('#qxname3').text(json["rows"][2]["缺陷名称"]);
+					$('#qxname4').text(json["rows"][3]["缺陷名称"]);
+
+					$('#sl1').text(json["rows"][0]["缺陷数量"]);
+					$('#sl2').text(json["rows"][1]["缺陷数量"]);
+					$('#sl3').text(json["rows"][2]["缺陷数量"]);
+					$('#sl4').text(json["rows"][3]["缺陷数量"]);
+                    $('#sl5').text(json["rows"][0]["其他缺陷数量"]);
+
+
+					$('#qxl1').text(json["rows"][0]["缺陷率"]);
+					$('#qxl2').text(json["rows"][1]["缺陷率"]);
+					$('#qxl3').text(json["rows"][2]["缺陷率"]);
+					$('#qxl4').text(json["rows"][3]["缺陷率"]);
+					$('#qxl5').text(json["rows"][0]["其他缺陷率"]);
+
+				}
+			});
+		}
+        function loadData() {
+			$.get("RefinementKanban.ashx?m=rate", function (data) {
+                clearData();
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    for (var n = 0; n < json["rows"].length; n++) {
+                        window.DayCL.data.labels.push(json["rows"][n]["SJ"]);
+                        window.DayCL.data.datasets[0].data[n] = (json["rows"][n]["打磨"]);
+                        window.DayCL.data.datasets[1].data[n] = (json["rows"][n]["擦洗"]);
+						window.DayCL.data.datasets[2].data[n] = (json["rows"][n]["改洗"]);
+                    }
+                    }
+                    window.DayCL.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.configDayCL = {
+				data: {
+					labels: [],
+					datasets: [
+						{
+							//label: "近七日本烧合格率",
+							label: "一烧合格率",
+							fill: false,
+							backgroundColor: color(window.chartColors.red).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.red,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+						}, {
+							//label: "近七日整体合格率",
+							label: "一烧产量",
+							fill: false,
+							backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.orange,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+                        },
+						{
+							//label: "近七日整体合格率",
+							label: "一烧出窑量",
+							fill: false,
+							backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
+                            borderColor: window.chartColors.blue,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+						}
+					]
+				},
+                type: 'line',
+                options: {
+                    responsive: true,
+                    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,
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            }
+                        }]
+                    }
+                }
+            };
+            var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
+            window.DayCL = new Chart(ctxDayCL, configDayCL);
+        }
+
+    </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>

+ 729 - 0
wwwroot/main/Procedure/BurnIntoKanban/BurnIntoKanban.ashx

@@ -0,0 +1,729 @@
+<%@ WebHandler Language="C#" Class="FormingKanban" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Configuration;
+using System.Data;
+using Curtain.DataAccess;
+using Curtain.Log;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System.Collections.Generic;
+public class  FormingKanban : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+        	if (context.Request["m"].ToString() == "fwq")
+			{
+				string time = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm ");
+				Dictionary<string, string> d = new Dictionary<string, string>();
+				JObject json = new JObject(
+						  new JProperty("success", true),
+						  new JProperty("sj", time)
+						);
+				context.Response.Write(json.ToString());
+			}
+
+			if (context.Request["m"].ToString() == "StaffTable")
+            {
+                string sqlStr = @"SELECT
+									UU.STAFFCODE,
+									UU.COUNTS,
+									UU.STAFFCODE1,
+									UU.COUNTS1,
+									UU.STAFFCODE2,
+									UU.COUNTS2 
+								FROM
+									(
+									SELECT
+										U1.ID AS ID,
+										U1.STAFFCODE AS STAFFCODE,
+										U1.COUNTS AS COUNTS,
+										U2.ID AS ID1,
+										U2.STAFFCODE AS STAFFCODE1,
+										U2.COUNTS AS COUNTS1,
+										U3.ID AS ID2,
+										U3.STAFFCODE AS STAFFCODE2,
+										U3.COUNTS AS COUNTS2 
+									FROM
+										(
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U1
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T1.STAFFCODE,
+											T1.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T1 
+										) U2 ON U1.ID = ( U2.ID - 1 )
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN ( 4, 5, 36 ) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U3 ON U2.ID = ( U3.ID - 1 ) 
+									WHERE
+									mod( U1.id, 3 ) = 1 
+									) UU";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+        	if (context.Request["m"].ToString() == "WorkshopSection")
+			{
+				string sqlStr = @"
+                SELECT
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A' THEN 1 ELSE 0 END  ) 成型A注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A'THEN 1 ELSE 0 END  ) 成型A交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B' THEN 1 ELSE 0 END  ) 成型B注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B'THEN 1 ELSE 0 END  ) 成型B交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C' THEN 1 ELSE 0 END  ) 成型C注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C'THEN 1 ELSE 0 END  ) 成型C交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=1   THEN 1 ELSE 0 END  ) 高压注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=1 	 AND  gdd.DELIVERFLAG = '1' THEN 1 ELSE 0 END  ) 高压交坯数量
+                        FROM TP_PM_GROUTINGDAILYDETAIL GDD
+                        LEFT JOIN TP_PC_GROUTINGLINE GD ON GD.GROUTINGLINEID=GDD.GROUTINGLINEID
+                        WHERE gdd.VALUEFLAG=1 and gd.VALUEFLAG=1
+                        AND gdd.GROUTINGFLAG=1 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+            
+				if (context.Request["m"].ToString() == "MonthSum")
+							{
+								string sqlStr = @"
+								SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 53, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 4, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 
+							
+							
+																				union to
+											 
+													SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 54, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5,1 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 
+							
+																				UNION ALL
+													SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 打磨
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 36, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5, 0, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 打磨 is not null	 ";
+								//直接获取不分页数据
+								DataTable dt = conn.ExecuteDatatable(sqlStr);
+								string jsonStr = new JsonResult(dt).ToJson();
+								context.Response.Write(jsonStr);
+							}
+
+        	if (context.Request["m"].ToString() == "DefectDetail")
+			{
+				string sqlStr = @"WITH 缺陷 AS (
+												SELECT
+												缺陷名称,
+													缺陷数量
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+														dfc.DEFECTNAME in ('坯脏','棕眼','裂底','裂圈','裂鼻子','裂水道','裂管','沾接裂','裂眼',
+														'糙活','变形','渣','管道渣','孔眼不良','睹眼','眼歪','丢气孔','丢眼','坏磕','卡球')
+														AND dfc.VALUEFLAG = 1 
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4
+												),
+												其他缺陷 AS (
+												SELECT
+													SUM(缺陷数量) 其他缺陷数量
+												FROM
+													(
+											SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+													WHERE
+													dfc.PROCEDUREID=6
+													GROUP BY
+														dfc.DEFECTNAME
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE 		缺陷名称 not  IN(
+													SELECT
+												缺陷名称
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+														dfc.DEFECTNAME in ('坯脏','棕眼','裂底','裂圈','裂鼻子','裂水道','裂管','沾接裂','裂眼',
+														'糙活','变形','渣','管道渣','孔眼不良','睹眼','眼歪','丢气孔','丢眼','坏磕','卡球')
+														AND dfc.VALUEFLAG = 1 
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4 )
+
+												),
+												检验数 
+												AS 
+												(
+												 SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												) 
+	
+												SELECT
+												缺陷.缺陷名称,
+												缺陷.缺陷数量,
+												其他缺陷.其他缺陷数量,
+												DECODE( NVL( 缺陷.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 缺陷.缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 缺陷率,
+												DECODE( NVL( 其他缺陷.其他缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 其他缺陷.其他缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 其他缺陷率
+											FROM
+												缺陷
+												LEFT JOIN 检验数 ON 1 = 1
+												LEFT JOIN 其他缺陷 ON 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+			    if (context.Request["m"].ToString() == "Alltotal")
+            {
+                string sqlStr = @"with 打磨 AS (
+											SELECT
+												COUNT(dfc.BARCODE) 缺陷数量
+												FROM TP_PM_DEFECT dfc
+												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+												WHERE dfc.VALUEFLAG=1
+												AND dfc.DEFECTPROCEDUREID IN(4,53)
+												),
+												擦洗 AS (
+											SELECT
+												COUNT(dfc.BARCODE) 缺陷数量
+												FROM TP_PM_DEFECT dfc
+												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+												WHERE dfc.VALUEFLAG=1
+												AND dfc.DEFECTPROCEDUREID IN(5,54)
+												),
+												检验数 AS 
+												(
+												 SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												)
+												SELECT
+												检验数.出窑数 ,
+												DECODE( NVL( 打磨.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 打磨.缺陷数量, 0 ) / DECODE( NVL( 检验数.出窑数, 1 ), 0, 1, NVL( 检验数.出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) as 打磨缺陷率,
+												DECODE( NVL( 擦洗.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 擦洗.缺陷数量, 0 ) / DECODE( NVL( 检验数.出窑数, 1 ), 0, 1, NVL( 检验数.出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) as 擦洗缺陷率
+												FROM  
+												打磨
+												LEFT JOIN 检验数 on 1=1
+												LEFT JOIN 擦洗 on 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+                 	if (context.Request["m"].ToString() == "MonthTable")
+			{
+				string sqlStr = @"SELECT
+										责任工号,
+										生产线号,
+										缺陷名称,
+										产品分级
+										FROM(
+											SELECT DISTINCT
+													stf.STAFFCODE 责任工号,
+													TMDP.BARCODE 条码,
+													TMDP.PRODUCTIONLINECODE 生产线号,
+													TMDP.DEFECTNAME 缺陷名称,
+													TMG.GOODSLEVELNAME 产品分级
+													FROM TP_PM_DEFECT TMDP
+													LEFT JOIN TP_MST_DEFECT DF ON DF.DEFECTID=TMDP.DEFECTID
+														LEFT JOIN TP_MST_USERSTAFF class on class.USERID=tmdp.DEFECTUSERID
+														LEFT JOIN TP_HR_STAFF stf on stf.STAFFID=class.STAFFID
+														LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+														LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
+														--LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
+														LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+														LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+														--INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
+														WHERE 
+														 PD.VALUEFLAG = '1' --有效
+														AND TMDP.VALUEFLAG = '1' --有效 
+														AND TMDP.DEFECTPROCEDUREID IN (4,5,53,54)
+														
+											)";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+		if (context.Request["m"].ToString() == "rate")//折线图
+			{
+				string sqlStr = @"WITH 打磨 AS(
+								SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   打磨
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 53, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 4, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+							
+																				
+),
+擦洗 AS (SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   擦洗
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 54, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5,1 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+						
+							),
+							改洗 AS (
+															SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   改洗
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 36, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5, 0, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 							GROUP BY pdg.SJ
+																				ORDER BY pdg.SJ
+														)
+														)
+
+														SELECT
+														打磨.SJ,
+														打磨.打磨,
+														擦洗.擦洗,
+														改洗.改洗
+														FROM 擦洗
+														LEFT JOIN 打磨 ON 打磨.SJ=擦洗.SJ
+														LEFT JOIN 改洗 ON 改洗.SJ=打磨.SJ";
+                //直接获取不分页数据
+                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;
+        }
+    }
+
+}

+ 414 - 0
wwwroot/main/Procedure/BurnIntoKanban/BurnIntoKanban.html

@@ -0,0 +1,414 @@
+<!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>
+    <link rel="stylesheet" href="/plugins/bootstrap-4.3.1/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
+    <link href="/Plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
+
+    <title>东科软件</title>
+</head>
+<body>
+
+    <div class="box_1920_1080">
+        <div class="box_title" style="display:flex;flex-direction:row;">
+            <div style="width:25%;text-align:left;"></div>
+            <div style="width:50%;text-align:center; font-size:40px">烧成看板</div>
+            <div style="width:25%;text-align:right;"></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+
+            <!--31天产量曲线图-->
+            <div style="width:1840px;height:30%;display:flex;flex-direction:row;">
+                <div style="width: 75%; height: 300px;">
+                    <div style="color:white;font-size:15px;font-weight:600; text-align:center">每日产量计划达成</div>
+                    <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 330px; width: 80% "></canvas>
+                </div>
+            </div>
+
+            <div>
+                <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2"><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">装窑:<span id="ydm">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">白坯入库:<span id="ycx">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">自坏库存:<span id="ygx">测试数据</span></td>
+                    </tr>
+                </table>
+            </div>
+            <!--表格-->
+            <div style="width: 100%; height: 530px; display: flex; flex-direction: row; margin-top: 4%">
+                <div style="width: 100%; height: 530px; ">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:50%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="7" style="font-size:30px">烧成工序装窑、出窑个人数据</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 30px; font-size:27px">
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                        </tr>
+                    </table>
+                    <div style=" height:170px;overflow:hidden;">
+                        <table style="width: 50%; display:none;" id="StaffTable_template">
+                            <!--style=""-->
+                            <tr class="tr_title_warning" style="height: 30px; font-size: 20px">
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号2}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量2}</td>
+                            </tr>
+                        </table>
+                        <table id="StaffTable" style="width: 50%;">
+                        </table>
+                    </div>
+
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 50%;">
+                        <tr class="tr_title_warning" style="height: 60px; font-size: 30px">
+                            <td colspan="3" id="dmqxl">施釉缺陷率:——%</td>
+                            <td colspan="3" id="cxqxl">一烧产量:——</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 50px; font-size: 25px">
+                            <td>缺陷</td>
+                            <td id="qxname1">缺陷1</td>
+                            <td id="qxname2">缺陷2</td>
+                            <td id="qxname3">缺陷3</td>
+                            <td id="qxname4">缺陷4</td>
+                            <td>其他</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>数量</td>
+                            <td id="sl1">1</td>
+                            <td id="sl2">2</td>
+                            <td id="sl3">3</td>
+                            <td id="sl4">4</td>
+                            <td id="sl5">5</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>缺陷率</td>
+                            <td id="qxl1">测试</td>
+                            <td id="qxl2">测试</td>
+                            <td id="qxl3">测试</td>
+                            <td id="qxl4">测试</td>
+                            <td id="qxl5">测试</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div style="width: 50%; height: 500px; padding-right: 20px; margin-top: -530px; margin-left: 50% ">
+                <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                    <tr class="tr_title_warning">
+                        <td colspan="4" style="color:white;">成检实时数据(烧成缺陷数据)</td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">责任工号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">生产线号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">缺陷位置</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">产品分级</td>
+                    </tr>
+                </table>
+                <div style=" height: 438px; overflow: hidden;">
+                    <table id="dayTable_template" style="display:none;">
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{责任工号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{生产线号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{缺陷名称}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{产品分级}</td>
+                        </tr>
+                    </table>
+                    <table id="dayTable" style="width: 100%; ">
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+
+        var refreshTime1 = 80000;
+        var currentTime1 = 0;
+
+        var doGetData;
+        var doGetTime;
+		var StaffInterval;
+		var StaffTableRowCount = 0;
+        var dayInterval;
+        var dayTableRowCount = 0;
+
+        //页面加载
+        $(document).ready(function () {
+            timeUp();
+			doGetData = setInterval(function () { loadServerTime(); }, 3000);
+           doGetData = setInterval(function () { timeUp(); }, 10000);
+           loadDayTable();
+        });
+
+        function timeUp() {
+			loadData();
+			initData();
+			clearData();
+			StaffTable();
+			DefectDetails();
+			Alltotal();
+			MonthSum();
+        }
+		function Alltotal() {
+			$.get('RefinementKanban.ashx?m=Alltotal', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#scl').text("一烧出窑数:" + json["rows"][0]["出窑数"]);
+					$('#dmqxl').text("一烧出窑数:" + json["rows"][0]["打磨缺陷率"]);
+					$('#cxqxl').text("一烧出窑数:" + json["rows"][0]["擦洗缺陷率"]);
+				}
+			});
+        }
+		function MonthSum() {
+			$.get('RefinementKanban.ashx?m=MonthSum', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#ydm').text( json["rows"][0]["打磨"]);
+					$('#ycx').text(json["rows"][1]["打磨"]);
+					$('#ygx').text(json["rows"][2]["打磨"]);
+
+				}
+			});
+		}
+		function StaffTableScroll() {
+			var scrollHeight = $("#StaffTable_template").find("tr").outerHeight();
+			$("#StaffTable").animate({ marginTop: -scrollHeight, }, 500,
+				function () {
+					$(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+					if (--StaffTableRowCount > -1) {
+					} else {
+						StaffTable();
+					}
+				}
+			);
+        }
+		function StaffTable() {
+			clearInterval(StaffInterval);
+			$.get("RefinementKanban.ashx?m=StaffTable", function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$("#StaffTable").html("");
+					for (var i = 0; i < json["rows"].length; i++) {
+						var temp = $("#StaffTable_template").html();
+						temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+						temp = temp.replace('{工号}', json["rows"][i]['STAFFCODE']);
+						temp = temp.replace('{数量}', json["rows"][i]['COUNTS']);
+						temp = temp.replace('{工号1}', json["rows"][i]['STAFFCODE1']);
+                        temp = temp.replace('{数量1}', json["rows"][i]['COUNTS1']);
+						temp = temp.replace('{工号2}', json["rows"][i]['STAFFCODE2']);
+						temp = temp.replace('{数量2}', json["rows"][i]['COUNTS2']);
+						$("#StaffTable").append(temp);
+					}
+					StaffTableRowCount = json["rows"].length;
+					StaffInterval = setInterval(StaffTableScroll, 3000);
+				}
+			});
+		}
+        //表格滚动
+        function dayTableScroll() {
+			var scrollHeight = $("#dayTable_template").find("tr").outerHeight();
+            $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (dayTableRowCount > -1) {
+                        dayTableRowCount--;
+						console.log(dayTableRowCount);
+                    } else {
+                        loadDayTable();
+                    }
+                }
+            );
+        }
+        //明细表
+		function loadDayTable() {
+			$.get("RefinementKanban.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]['产品分级']);
+						$("#dayTable").append(temp);
+                    }
+					dayTableRowCount = json["rows"].length;
+					dayInterval = setInterval(dayTableScroll, 6000);
+				}
+			});
+        }
+        function clearData() {
+            //清除数据
+            window.DayCL.data.labels = [];
+            //window.DayCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[0].data = [];
+            //window.DayCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[1].data = [];
+            window.DayCL.update();
+        }
+		function loadServerTime() {
+			$.get('RefinementKanban.ashx?m=fwq', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#sj').html(json["sj"]);
+				}
+			});
+		}
+		function DefectDetails() {
+			$.get('RefinementKanban.ashx?m=DefectDetail', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#qxname1').text(json["rows"][0]["缺陷名称"]);
+					$('#qxname2').text(json["rows"][1]["缺陷名称"]);
+					$('#qxname3').text(json["rows"][2]["缺陷名称"]);
+					$('#qxname4').text(json["rows"][3]["缺陷名称"]);
+
+					$('#sl1').text(json["rows"][0]["缺陷数量"]);
+					$('#sl2').text(json["rows"][1]["缺陷数量"]);
+					$('#sl3').text(json["rows"][2]["缺陷数量"]);
+					$('#sl4').text(json["rows"][3]["缺陷数量"]);
+                    $('#sl5').text(json["rows"][0]["其他缺陷数量"]);
+
+
+					$('#qxl1').text(json["rows"][0]["缺陷率"]);
+					$('#qxl2').text(json["rows"][1]["缺陷率"]);
+					$('#qxl3').text(json["rows"][2]["缺陷率"]);
+					$('#qxl4').text(json["rows"][3]["缺陷率"]);
+					$('#qxl5').text(json["rows"][0]["其他缺陷率"]);
+
+				}
+			});
+		}
+        function loadData() {
+			$.get("RefinementKanban.ashx?m=rate", function (data) {
+                clearData();
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+                    for (var n = 0; n < json["rows"].length; n++) {
+                        window.DayCL.data.labels.push(json["rows"][n]["SJ"]);
+                        window.DayCL.data.datasets[0].data[n] = (json["rows"][n]["打磨"]);
+                        window.DayCL.data.datasets[1].data[n] = (json["rows"][n]["擦洗"]);
+                    }
+                    }
+                    window.DayCL.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.configDayCL = {
+				data: {
+					labels: [],
+					datasets: [
+						{
+							//label: "近七日本烧合格率",
+							label: "白坯入库量",
+							fill: false,
+							backgroundColor: color(window.chartColors.red).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.red,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+						}, {
+							//label: "近七日整体合格率",
+							label: "日装窑量",
+							fill: false,
+							backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.orange,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+                        }
+					]
+				},
+                type: 'line',
+                options: {
+                    responsive: true,
+                    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,
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            }
+                        }]
+                    }
+                }
+            };
+            var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
+            window.DayCL = new Chart(ctxDayCL, configDayCL);
+        }
+
+    </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>

+ 13 - 7
wwwroot/main/Procedure/FormingKanban/FormingKanban.ashx

@@ -20,7 +20,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
             if (context.Request["m"].ToString() == "WorkshopSection")
             {
                 string sqlStr = @"
-                SELECT
+                 SELECT
                         SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A' THEN 1 ELSE 0 END  ) 成型A注浆数量,
                         SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A'THEN 1 ELSE 0 END  ) 成型A交坯数量,
                         SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B' THEN 1 ELSE 0 END  ) 成型B注浆数量,
@@ -32,7 +32,9 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
                         FROM TP_PM_GROUTINGDAILYDETAIL GDD
                         LEFT JOIN TP_PC_GROUTINGLINE GD ON GD.GROUTINGLINEID=GDD.GROUTINGLINEID
                         WHERE gdd.VALUEFLAG=1 and gd.VALUEFLAG=1
-                        AND gdd.GROUTINGFLAG=1 ";
+                        AND gdd.GROUTINGFLAG=1
+						AND TRUNC( GDD.GROUTINGDATE ) = trunc(sysdate) 
+						AND TRUNC( GDD.delivertime ) = trunc(sysdate)  ";
                 //直接获取不分页数据
                 DataTable dt = conn.ExecuteDatatable(sqlStr);
                 string jsonStr = new JsonResult(dt).ToJson();
@@ -66,7 +68,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 														   g.goodsspecification,
 														   g.GOODSMODEL,
 														   dd.dictionaryvalue GLAZETYPE
-															, sum(decode(pd.procedureid, 3, 1, 0)) as A313
+															, sum(decode(pd.procedureid, 7, 1, 0)) as A313
 															, sum(decode(pd.procedureid, 5, 0, 0)) as A21
 													  from tp_pm_productiondata pd
 													 inner join tp_mst_goods g
@@ -139,10 +141,12 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 												LEFT JOIN TP_MST_DEFECT dft ON dft.DEFECTID = df.DEFECTID  
 												WHERE df.VALUEFLAG=1
 												and dft.DEFECTTYPEID=1
+												AND TRUNC( df.CREATETIME ) = trunc(sysdate) 
 												),
 												检验数 AS 
 												(
 												 SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												 AND TRUNC( CREATETIME ) = trunc(sysdate) 
 												)
 												SELECT
 												检验数.出窑数 ,
@@ -180,7 +184,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 																   g.goodsspecification,
 																   g.GOODSMODEL,
 																   dd.dictionaryvalue GLAZETYPE
-															, sum(decode(pd.procedureid, 3, 1, 0)) as A313
+															, sum(decode(pd.procedureid, 7, 1, 0)) as A313
 															, sum(decode(pd.procedureid, 5, 0, 0)) as A21
 															  from tp_pm_productiondata pd
 															 inner join tp_mst_goods g
@@ -248,6 +252,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 													WHERE
 														df.DEFECTTYPEID = 1 
 														AND dfc.VALUEFLAG = 1 
+														AND TRUNC( dfc.CREATETIME ) = trunc(sysdate) 
 													GROUP BY
 														dfc.DEFECTNAME 
 													ORDER BY
@@ -270,6 +275,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 													WHERE
 														df.DEFECTTYPEID = 1 
 														AND dfc.VALUEFLAG = 1 
+															AND TRUNC( dfc.CREATETIME ) = trunc(sysdate) 
 													GROUP BY
 														dfc.DEFECTNAME 
 													ORDER BY
@@ -290,6 +296,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 														WHERE
 															df.DEFECTTYPEID = 1 
 															AND dfc.VALUEFLAG = 1 
+																AND TRUNC( dfc.CREATETIME ) = trunc(sysdate) 
 														GROUP BY
 															dfc.DEFECTNAME 
 														ORDER BY
@@ -299,7 +306,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 														ROWNUM <= 4 
 													) 
 												),
-												检验数 AS ( SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 ) SELECT
+												检验数 AS ( SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 	AND TRUNC( CREATETIME ) = trunc(sysdate)  ) SELECT
 												缺陷.缺陷名称,
 												缺陷.缺陷数量,
 												其他缺陷.其他缺陷数量,
@@ -365,8 +372,7 @@ public class FormingKanban : IHttpHandler, IReadOnlySessionState
 														WHERE 
 														 PD.VALUEFLAG = '1' --有效
 														AND TMDP.VALUEFLAG = '1' --有效 
-														
-													)";
+														AND TRUNC( TMDP.CREATETIME ) = trunc(sysdate)  )";
                 //直接获取不分页数据
                 DataTable dt = conn.ExecuteDatatable(sqlStr);
                 string jsonStr = new JsonResult(dt).ToJson();

+ 18 - 18
wwwroot/main/Procedure/FormingKanban/FormingKanban.html

@@ -37,7 +37,7 @@
             <div>
                 <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
                     <tr class="tr_title_warning">
-                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2" id="sj">2023-4-30 00:00:00</td>
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2"><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
                     </tr>
                     <tr class="tr_title_warning">
                         <td style="width: 8%; height: 140px; font-size: 30px; text-align: left ">月交·<div  style="text-align: center; font-size: 30px; " id="yjp">测试数据</div>坯量·</td>
@@ -53,31 +53,31 @@
                     <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
                         <tr class="tr_title_warning" style="height: 60px; font-size:27px">
                             <td rowspan="2">成型A </td>
-                            <td clospan="2" style="text-align :left " id="cxaj">交坯量:</td>
+                            <td clospan="2" style="text-align :left " id="cxaj">交坯量:0</td>
                             <td rowspan="2">成型B</td>
-                            <td clospan="2" style="text-align :left" id="cxbj">交坯量:</td>
+                            <td clospan="2" style="text-align :left" id="cxbj">交坯量:0</td>
                         </tr>
 
                         <tr class="tr_title_warning" style="height: 60px; font-size: 27px">
-                            <td clospan="2" style="text-align :left" id="cxaz">注浆量:</td>
-                            <td clospan="2" style="text-align :left" id="cxbz">注浆量:</td>
+                            <td clospan="2" style="text-align :left" id="cxaz">注浆量:0</td>
+                            <td clospan="2" style="text-align :left" id="cxbz">注浆量:0</td>
                         </tr>
                         <tr class="tr_title_warning" style="height: 60px; font-size: 27px">
                             <td rowspan="2">成型C </td>
-                            <td clospan="2" style="text-align :left" id="cxcj">交坯量:</td>
+                            <td clospan="2" style="text-align :left" id="cxcj">交坯量:0</td>
                             <td rowspan="2">高压</td>
-                            <td clospan="2" style="text-align :left" id="gyj">交坯量:</td>
+                            <td clospan="2" style="text-align :left" id="gyj">交坯量:0</td>
                         </tr>
                         <tr class="tr_title_warning" style="height: 60px; font-size: 27px">
-                            <td clospan="2" style="text-align :left" id="cxcz">注浆量:</td>
-                            <td clospan="2" style="text-align :left" id="gyz">注浆量: </td>
+                            <td clospan="2" style="text-align :left" id="cxcz">注浆量:0</td>
+                            <td clospan="2" style="text-align :left" id="gyz">注浆量: 0</td>
                         </tr>
                     </table>
 
-                    <table cellspacing="0" cellpadding="0" border="0" style="width: 100%; margin-top: 5%;">
-                        <tr class="tr_title_warning" style="height: 60px;">
-                            <td colspan="3"  id="cqxl">成型缺陷率:——</td>
-                            <td colspan="3"  id="scl">一烧产量:——</td>
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 100%; margin-top: 2%;">
+                        <tr class="tr_title_warning" style="height: 90px; font-size: 45px">
+                            <td colspan="3">成型缺陷率:<span id="cqxl" style="color:white">——</span></td>
+                            <td colspan="3">一烧产量:<span id="scl" style="color:white">——</span></td>
                         </tr>
                         <tr class="tr_title_warning" style="height: 60px; font-size: 25px">
                             <td>缺陷</td>
@@ -138,13 +138,11 @@
 
         var refreshTime1 = 80000;
         var currentTime1 = 0;
-
         var doGetData;
         var doGetTime;
-
         var dayInterval;
-        var monthInterval;
         var dayTableRowCount = 0;
+		var monthInterval;
         var monthTableRowCount = 0;
         //页面加载  
         $(document).ready(function () {
@@ -152,6 +150,7 @@
             initData();
             MonthSum();
             clearData();
+            loadServerTime();
             doGetData = setInterval(function () { timeUpdate(); }, 1000);
              loadDayTable();
         });
@@ -164,6 +163,7 @@
                     if (dayTableRowCount > -1) {
                         dayTableRowCount--;
                     } else {
+						clearInterval(dayInterval);
                         loadDayTable();
                     }
                 }
@@ -280,8 +280,8 @@
 			$.get('FormingKanban.ashx?m=Alltotal', function (data) {
 				var json = JSON.parse(data);
 				if (json["success"] == true) {
-					$('#cqxl').text("成型缺陷率:" + json["rows"][0]["缺陷率"]);
-					$('#scl').text("一烧出窑数:" + json["rows"][0]["出窑数"]);
+					$('#cqxl').text(json["rows"][0]["缺陷率"]);
+					$('#scl').text( json["rows"][0]["出窑数"]);
 				}
 			});
 		}

+ 601 - 0
wwwroot/main/Procedure/GlazedKanban/GlazedKanban.ashx

@@ -0,0 +1,601 @@
+<%@ WebHandler Language="C#" Class="FormingKanban" %>
+
+using System;
+using System.Web;
+using System.Web.SessionState;
+using System.Configuration;
+using System.Data;
+using Curtain.DataAccess;
+using Curtain.Log;
+using DK.XuWei.WebMes;
+using Newtonsoft.Json.Linq;
+using System.Collections.Generic;
+public class  FormingKanban : IHttpHandler, IReadOnlySessionState
+{
+    public void ProcessRequest(HttpContext context)
+    {
+        context.Response.ContentType = "text/plain";
+        using (IDataAccess conn = DataAccess.Create())
+        {
+        	if (context.Request["m"].ToString() == "fwq")
+			{
+				string time = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm ");
+				Dictionary<string, string> d = new Dictionary<string, string>();
+				JObject json = new JObject(
+						  new JProperty("success", true),
+						  new JProperty("sj", time)
+						);
+				context.Response.Write(json.ToString());
+			}
+
+			if (context.Request["m"].ToString() == "StaffTable")
+            {
+                string sqlStr = @"SELECT
+									UU.STAFFCODE,
+									UU.COUNTS,
+									UU.STAFFCODE1,
+									UU.COUNTS1,
+									UU.STAFFCODE2,
+									UU.COUNTS2 
+								FROM
+									(
+									SELECT
+										U1.ID AS ID,
+										U1.STAFFCODE AS STAFFCODE,
+										U1.COUNTS AS COUNTS,
+										U2.ID AS ID1,
+										U2.STAFFCODE AS STAFFCODE1,
+										U2.COUNTS AS COUNTS1,
+										U3.ID AS ID2,
+										U3.STAFFCODE AS STAFFCODE2,
+										U3.COUNTS AS COUNTS2 
+									FROM
+										(
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN(10,37,41)
+												AND TRUNC( TPPD.CREATETIME ) = trunc(sysdate) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U1
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T1.STAFFCODE,
+											T1.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN(10,37,41)
+												AND TRUNC( TPPD.CREATETIME ) = trunc(sysdate) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T1 
+										) U2 ON U1.ID = ( U2.ID - 1 )
+										LEFT JOIN (
+										SELECT ROWNUM AS
+											ID,
+											T.STAFFCODE,
+											T.COUNTS 
+										FROM
+											(
+											SELECT
+												THS.STAFFCODE STAFFCODE,
+												COUNT( tppd.BARCODE ) AS COUNTS 
+											FROM
+												TP_PM_PRODUCTIONDATA TPPD
+												LEFT JOIN TP_MST_USERSTAFF TMUS ON TPPD.USERID = TMUS.USERID
+												LEFT JOIN TP_HR_STAFF THS ON THS.STAFFID = TMUS.STAFFID 
+											WHERE
+												TPPD.PROCEDUREID IN(10,37,41)
+												AND TRUNC( TPPD.CREATETIME ) = trunc(sysdate) 
+											GROUP BY
+												THS.STAFFCODE 
+											) T 
+										) U3 ON U2.ID = ( U3.ID - 1 ) 
+									WHERE
+									mod( U1.id, 3 ) = 1 
+									) UU";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+        	if (context.Request["m"].ToString() == "WorkshopSection")
+			{
+				string sqlStr = @"
+                SELECT
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A' THEN 1 ELSE 0 END  ) 成型A注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='A'THEN 1 ELSE 0 END  ) 成型A交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B' THEN 1 ELSE 0 END  ) 成型B注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='B'THEN 1 ELSE 0 END  ) 成型B交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=0   AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C' THEN 1 ELSE 0 END  ) 成型C注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=0 	 AND  gdd.DELIVERFLAG = '1' AND SUBSTR(GDD.GROUTINGLINECODE, 2,1)='C'THEN 1 ELSE 0 END  ) 成型C交坯数量,
+                        SUM(CASE WHEN TRUNC(  GDD.GROUTINGDATE) = trunc(sysdate) AND gd.HIGHPRESSUREFLAG=1   THEN 1 ELSE 0 END  ) 高压注浆数量,
+                        SUM(CASE WHEN TRUNC(  GDD.delivertime) = trunc(sysdate)  AND gd.HIGHPRESSUREFLAG=1 	 AND  gdd.DELIVERFLAG = '1' THEN 1 ELSE 0 END  ) 高压交坯数量
+                        FROM TP_PM_GROUTINGDAILYDETAIL GDD
+                        LEFT JOIN TP_PC_GROUTINGLINE GD ON GD.GROUTINGLINEID=GDD.GROUTINGLINEID
+                        WHERE gdd.VALUEFLAG=1 and gd.VALUEFLAG=1
+                        AND gdd.GROUTINGFLAG=1 ";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+            
+				if (context.Request["m"].ToString() == "MonthSum")
+							{
+								string sqlStr = @"
+								WITH 人工施釉 AS (
+SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 人工
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 10, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 37, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 人工 is not null	 
+							
+							),
+							机械 AS (
+													SELECT
+													*
+													FROM(
+													select 
+													 CASE WHEN gid=3 THEN pdg.A313 +pdg.A21  end 机械
+													 from ( select  grouping_id(pdata.productionlineid,pdata.goodstypename2,pdata.goodscode) gid,       pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 41, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 1,0 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by grouping sets((pdata.productionlineid,
+																			 pdata.goodstypename2,
+																			 pdata.goodstypename,
+																			 pdata.goodsspecification,
+																			 pdata.GOODSMODEL,
+																			 pdata.GLAZETYPE,
+																			 pdata.goodscode),
+																			 (pdata.productionlineid,pdata.goodstypename2),
+																			 pdata.productionlineid)
+													 ) pdg
+																				)
+																				WHERE 机械 is not null	 
+																				)
+																				
+																				SELECT
+																				人工施釉.人工,
+																				机械.机械,
+																				(机械.机械+人工施釉.人工) AS 总计
+																				FROM 机械
+																				LEFT JOIN 人工施釉 ON 1=1 ";
+								//直接获取不分页数据
+								DataTable dt = conn.ExecuteDatatable(sqlStr);
+								string jsonStr = new JsonResult(dt).ToJson();
+								context.Response.Write(jsonStr);
+							}
+
+        	if (context.Request["m"].ToString() == "DefectDetail")
+			{
+				string sqlStr = @"WITH 缺陷 AS (
+												SELECT
+												缺陷名称,
+													缺陷数量
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+														dfc.DEFECTPROCEDUREID IN(10,37,41)
+														AND dfc.VALUEFLAG = 1 
+															AND TRUNC( dfc.CREATETIME ) = trunc(sysdate)  
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4
+												),
+												其他缺陷 AS (
+												SELECT
+													SUM(缺陷数量) 其他缺陷数量
+												FROM
+													(
+											SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+													WHERE
+													dfc.PROCEDUREID IN (6,15,16)
+													AND TRUNC( dfc.CREATETIME ) = trunc(sysdate)  
+													GROUP BY
+														dfc.DEFECTNAME
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE 		缺陷名称 not  IN(
+													SELECT
+												缺陷名称
+												FROM
+													(
+													SELECT
+														dfc.DEFECTNAME 缺陷名称,
+														COUNT( dfc.DEFECTNAME ) 缺陷数量 
+													FROM
+														TP_PM_DEFECT dfc
+														LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+													WHERE
+															dfc.DEFECTPROCEDUREID IN(10,37,41)
+																AND TRUNC( dfc.CREATETIME ) = trunc(sysdate)  
+														AND dfc.VALUEFLAG = 1 
+													GROUP BY
+														dfc.DEFECTNAME 
+													ORDER BY
+														COUNT( dfc.DEFECTNAME ) DESC 
+													) 
+												WHERE
+													ROWNUM <= 4 )
+
+												),
+												检验数 
+												AS 
+												(
+												 SELECT COUNT( * ) 一烧出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												) 
+	
+												SELECT
+												缺陷.缺陷名称,
+												缺陷.缺陷数量,
+												其他缺陷.其他缺陷数量,
+												DECODE( NVL( 缺陷.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 缺陷.缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 缺陷率,
+												DECODE( NVL( 其他缺陷.其他缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 其他缺陷.其他缺陷数量, 0 ) / DECODE( NVL( 检验数.一烧出窑数, 1 ), 0, 1, NVL( 检验数.一烧出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) 其他缺陷率
+											FROM
+												缺陷
+												LEFT JOIN 检验数 ON 1 = 1
+												LEFT JOIN 其他缺陷 ON 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+			    if (context.Request["m"].ToString() == "Alltotal")
+            {
+                string sqlStr = @"with 施釉 AS (
+											SELECT
+												COUNT(dfc.BARCODE) 缺陷数量
+												FROM TP_PM_DEFECT dfc
+												LEFT JOIN TP_MST_DEFECT df ON df.DEFECTID = dfc.DEFECTID 
+												WHERE dfc.VALUEFLAG=1
+												AND dfc.DEFECTPROCEDUREID IN(10,37,41)
+												),
+												检验数 AS 
+												(
+												 SELECT COUNT( * ) 出窑数 FROM TP_PM_PRODUCTIONDATA WHERE PROCEDUREID = 14 
+												)
+												SELECT
+												检验数.出窑数 ,
+												DECODE( NVL( 施釉.缺陷数量, 0 ),0,'0%',TO_CHAR((NVL( 施釉.缺陷数量, 0 ) / DECODE( NVL( 检验数.出窑数, 1 ), 0, 1, NVL( 检验数.出窑数, 1 ) ) ) * 100,'fm99990.0' ) || '%' ) as 施釉缺陷率
+												FROM  
+												施釉
+												LEFT JOIN 检验数 on 1=1";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+            }
+
+                 	if (context.Request["m"].ToString() == "MonthTable")
+			{
+				string sqlStr = @"SELECT
+										责任工号,
+										生产线号,
+										缺陷名称,
+										产品分级
+										FROM(
+											SELECT DISTINCT
+													stf.STAFFCODE 责任工号,
+													TMDP.BARCODE 条码,
+													TMDP.PRODUCTIONLINECODE 生产线号,
+													TMDP.DEFECTNAME 缺陷名称,
+													TMG.GOODSLEVELNAME 产品分级
+													FROM TP_PM_DEFECT TMDP
+													LEFT JOIN TP_MST_DEFECT DF ON DF.DEFECTID=TMDP.DEFECTID
+														LEFT JOIN TP_MST_USERSTAFF class on class.USERID=tmdp.DEFECTUSERID
+														LEFT JOIN TP_HR_STAFF stf on stf.STAFFID=class.STAFFID
+														LEFT JOIN TP_PM_PRODUCTIONDATA PD ON TMDP.PRODUCTIONDATAID = PD.PRODUCTIONDATAID
+														LEFT JOIN TP_MST_GOODSLEVEL TMG ON TMG.GOODSLEVELID = PD.GOODSLEVELID
+														--LEFT JOIN TP_PC_PROCEDURE TPP ON PD.PROCEDUREID = TPP.PROCEDUREID
+														LEFT JOIN TP_MST_GOODS GD ON PD.GOODSID = GD.GOODSID
+														LEFT JOIN TP_MST_GOODSTYPE GDT ON GD.GOODSTYPEID = GDT.GOODSTYPEID 
+														--INNER JOIN TP_PM_PRODUCTIONDATA PDD ON PD.BARCODE = PDD.BARCODE
+														WHERE 
+														 PD.VALUEFLAG = '1' --有效
+														AND TMDP.VALUEFLAG = '1' --有效 
+														AND TMDP.DEFECTPROCEDUREID IN(10,37,41)
+														AND TRUNC( TMDP.CREATETIME ) = trunc(sysdate) 
+														)
+														";
+                //直接获取不分页数据
+                DataTable dt = conn.ExecuteDatatable(sqlStr);
+                string jsonStr = new JsonResult(dt).ToJson();
+                context.Response.Write(jsonStr);
+			}
+
+		if (context.Request["m"].ToString() == "rate")//折线图
+			{
+				string sqlStr = @"WITH 人工 AS(
+								SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   人工
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 10, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 37, 1, 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 	GROUP BY pdg.SJ
+														ORDER BY pdg.SJ
+														) 																				
+																),
+									机械 AS (SELECT
+													*
+													FROM(
+													select 
+													pdg.SJ,
+													  SUM(pdg.A313 +pdg.A21)   机械
+													 from ( select 
+															pdata.SJ,			
+															pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													, sum(pdata.A313) as A313
+													, sum(pdata.A21) as A21
+													  from (  select
+															TO_CHAR(pd.CREATETIME,'MM-DD')AS SJ,
+														   pd.productionlineid,
+														   gt2.goodstypename goodstypename2,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue GLAZETYPE
+													, sum(decode(pd.procedureid, 41, 1, 0)) as A313
+													, sum(decode(pd.procedureid, 5,0 , 0)) as A21
+													  from tp_pm_productiondata pd
+													 inner join tp_mst_goods g
+														on g.goodsid = pd.goodsid
+													 inner join tp_mst_goodstype gt
+														on gt.goodstypeid = g.goodstypeid
+													 inner join tp_mst_goodstype gt2
+														on gt2.goodstypecode = substr(gt.goodstypecode, 0, 6)
+													   and gt2.accountid = gt.accountid
+													 inner join tp_mst_datadictionary dd
+														on dd.dictionaryid = g.GLAZETYPEID
+													 where pd.valueflag = '1'
+													   and pd.accountid = '1'
+													AND pd.CREATETIME 	 >= ADD_MONTHS(TRUNC(SYSDATE, 'MM'), -1) + 25  AND pd.CREATETIME < ADD_MONTHS(TRUNC(SYSDATE, 'MM'), 0) + 25
+														AND exists (Select 1  from TP_MST_UserPurview up where up.PurviewType= 7 and (up.PurviewID = -1 or up.PurviewID= pd.ProductionLineId)) group by
+														TO_CHAR(pd.CREATETIME,'MM-DD'), 
+														   pd.productionlineid,
+														   gt2.goodstypename,
+														   gt.goodstypename,
+														   g.goodscode,
+														   g.goodsspecification,
+														   g.GOODSMODEL,
+														   dd.dictionaryvalue
+													 order by gt2.goodstypename, g.goodscode ) pdata
+													 group by 
+													pdata. SJ,
+													  pdata.productionlineid,
+														   pdata.goodstypename2,
+														   pdata.goodstypename,
+														   pdata.goodscode,
+														   pdata.goodsspecification,
+														   pdata.GOODSMODEL,
+														   pdata.GLAZETYPE
+													 ) pdg
+													 GROUP BY pdg.SJ
+													 ORDER BY pdg.SJ
+														) )
+
+														SELECT
+														人工.SJ,
+														人工.人工,
+														机械.机械,
+														(人工.人工+机械.机械) AS 总计
+														FROM 机械
+														LEFT JOIN 人工 ON 人工.SJ=机械.SJ";
+                //直接获取不分页数据
+                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;
+        }
+    }
+
+}

+ 423 - 0
wwwroot/main/Procedure/GlazedKanban/GlazedKanban.html

@@ -0,0 +1,423 @@
+<!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>
+    <link rel="stylesheet" href="/plugins/bootstrap-4.3.1/css/bootstrap.min.css">
+    <link rel="stylesheet" href="/plugins/font-awesome-4.7.0/css/font-awesome.min.css">
+    <link href="/Plugins/bootstrap-table/bootstrap-table.min.css" rel="stylesheet" />
+
+    <title>东科软件</title>
+</head>
+<body>
+
+    <div class="box_1920_1080">
+        <div class="box_title" style="display:flex;flex-direction:row;">
+            <div style="width:25%;text-align:left;"></div>
+            <div style="width:50%;text-align:center; font-size:40px">施釉看板</div>
+            <div style="width:25%;text-align:right;"></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+
+            <!--31天产量曲线图-->
+            <div style="width:1840px;height:30%;display:flex;flex-direction:row;">
+                <div style="width: 75%; height: 300px;">
+                    <div style="color:white;font-size:15px;font-weight:600; text-align:center">每日产量计划达成</div>
+                    <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 330px; width: 80% "></canvas>
+                </div>
+            </div>
+
+            <div>
+                <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2"><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">人工:<span id="ydm">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">机械手:<span id="ycx">测试数据</span></td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">合计:<span id="ygx">测试数据</span></td>
+                    </tr>
+                </table>
+            </div>
+            <!--表格-->
+            <div style="width: 100%; height: 530px; display: flex; flex-direction: row; margin-top: 4%">
+                <div style="width: 100%; height: 530px; ">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:50%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="7"style="font-size:30px">施釉工序个人数据</td>
+                        </tr>
+                        <tr class="tr_title_warning" style="height: 30px; font-size:27px">
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                            <td style="width: 15%;">工号</td>
+                            <td style="width: 15%;">数量</td>
+                        </tr>
+                    </table>
+                    <div style=" height:170px;overflow:hidden;">
+                        <table style="width: 50%; display:none;" id="StaffTable_template">
+                            <!--style=""-->
+                            <tr class="tr_title_warning" style="height: 30px; font-size: 20px">
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量1}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; text-align: left ">{工号2}</td>
+                                <td style="font-size: 15px; height: 30px; width: 16%; ">{数量2}</td>
+                            </tr>
+                        </table>
+                        <table id="StaffTable" style="width: 50%;">
+                        </table>
+                    </div>
+
+                    <table cellspacing="0" cellpadding="0" border="0" style="width: 50%;">
+                        <tr class="tr_title_warning" style="height: 60px; font-size: 30px">
+                            <td colspan="3" id="syqx">施釉缺陷率:——%</td>
+                            <td colspan="3" id="yscl">一烧产量:——</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 50px; font-size: 25px">
+                            <td>缺陷</td>
+                            <td id="qxname1">缺陷1</td>
+                            <td id="qxname2">缺陷2</td>
+                            <td id="qxname3">缺陷3</td>
+                            <td id="qxname4">缺陷4</td>
+                            <td>其他</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>数量</td>
+                            <td id="sl1">1</td>
+                            <td id="sl2">2</td>
+                            <td id="sl3">3</td>
+                            <td id="sl4">4</td>
+                            <td id="sl5">5</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height: 60px; font-size: 25px ">
+                            <td>缺陷率</td>
+                            <td id="qxl1">测试</td>
+                            <td id="qxl2">测试</td>
+                            <td id="qxl3">测试</td>
+                            <td id="qxl4">测试</td>
+                            <td id="qxl5">测试</td>
+                        </tr>
+                    </table>
+                </div>
+            </div>
+            <div style="width: 50%; height: 500px; padding-right: 20px; margin-top: -530px; margin-left: 50% ">
+                <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                    <tr class="tr_title_warning">
+                        <td colspan="4" style="color:white;">成检实时数据(施釉缺陷数据)</td>
+                    </tr>
+                    <tr class="tr_title_warning">
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">责任工号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">生产线号</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">缺陷位置</td>
+                        <td style="font-size: 18px; width: 25%; height: 30px; ">产品分级</td>
+                    </tr>
+                </table>
+                <div style=" height: 438px; overflow: hidden;">
+                    <table id="dayTable_template" style="display:none;">
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{责任工号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{生产线号}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{缺陷名称}</td>
+                            <td style="font-size: 18px; width: 25%; height: 30px; ">{产品分级}</td>
+                        </tr>
+                    </table>
+                    <table id="dayTable" style="width: 100%; ">
+                    </table>
+                </div>
+            </div>
+        </div>
+    </div>
+
+    <script>
+
+        var refreshTime1 = 80000;
+        var currentTime1 = 0;
+
+        var doGetData;
+        var doGetTime;
+		var StaffInterval;
+		var StaffTableRowCount = 0;
+        var dayInterval;
+        var dayTableRowCount = 0;
+
+        //页面加载
+        $(document).ready(function () {
+            timeUp();
+			initData();
+			doGetData = setInterval(function () { loadServerTime(); }, 3000);
+           doGetData = setInterval(function () { timeUp(); }, 1000);
+           loadDayTable();
+        });
+
+        function timeUp() {
+			loadData();
+			StaffTable();
+			DefectDetails();
+			Alltotal();
+			MonthSum();
+        }
+		function Alltotal() {
+			$.get('GlazedKanban.ashx?m=Alltotal', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#yscl').text("一烧出窑数:" + json["rows"][0]["出窑数"]);
+					$('#syqx').text("施釉缺陷率:" + json["rows"][0]["施釉缺陷率"]);
+				}
+			});
+        }
+		function MonthSum() {
+			$.get('GlazedKanban.ashx?m=MonthSum', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+                    $('#ydm').text( json["rows"][0]["人工"]);
+					$('#ycx').text(json["rows"][0]["机械"]);
+					$('#ygx').text(json["rows"][0]["总计"]);
+
+				}
+			});
+		}
+		function StaffTableScroll() {
+			var scrollHeight = $("#StaffTable_template").find("tr").outerHeight();
+			$("#StaffTable").animate({ marginTop: -scrollHeight, }, 500,
+				function () {
+					$(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+					if (--StaffTableRowCount > -1) {
+					} else {
+						StaffTable();
+					}
+				}
+			);
+        }
+		function StaffTable() {
+			clearInterval(StaffInterval);
+			$.get("GlazedKanban.ashx?m=StaffTable", function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$("#StaffTable").html("");
+					for (var i = 0; i < json["rows"].length; i++) {
+						var temp = $("#StaffTable_template").html();
+						temp = temp.replace("<tbody>", "").replace("</tbody>", "");
+						temp = temp.replace('{工号}', json["rows"][i]['STAFFCODE']);
+						temp = temp.replace('{数量}', json["rows"][i]['COUNTS']);
+						temp = temp.replace('{工号1}', json["rows"][i]['STAFFCODE1']);
+                        temp = temp.replace('{数量1}', json["rows"][i]['COUNTS1']);
+						temp = temp.replace('{工号2}', json["rows"][i]['STAFFCODE2']);
+						temp = temp.replace('{数量2}', json["rows"][i]['COUNTS2']);
+						$("#StaffTable").append(temp);
+					}
+					StaffTableRowCount = json["rows"].length;
+					StaffInterval = setInterval(StaffTableScroll, 3000);
+				}
+			});
+		}
+        //表格滚动
+        function dayTableScroll() {
+			var scrollHeight = $("#dayTable_template").find("tr").outerHeight();
+            $("#dayTable").animate({ marginTop: -scrollHeight, }, 500,
+                function () {
+                    $(this).css({ marginTop: "0px", }).find("tr:first").appendTo(this);
+                    if (dayTableRowCount > -1) {
+                        dayTableRowCount--;
+						console.log(dayTableRowCount);
+                    } else {
+                        loadDayTable();
+                    }
+                }
+            );
+        }
+        //明细表
+		function loadDayTable() {
+			$.get("GlazedKanban.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]['产品分级']);
+						$("#dayTable").append(temp);
+                    }
+					dayTableRowCount = json["rows"].length;
+					dayInterval = setInterval(dayTableScroll, 6000);
+				}
+			});
+        }
+        function clearData() {
+            //清除数据
+            window.DayCL.data.labels = [];
+            //window.DayCL.data.datasets[0].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[0].data = [];
+            //window.DayCL.data.datasets[1].data = [0, 0, 0, 0, 0, 0, 0];
+            window.DayCL.data.datasets[1].data = [];
+            window.DayCL.update();
+        }
+		function loadServerTime() {
+			$.get('GlazedKanban.ashx?m=fwq', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#sj').html(json["sj"]);
+				}
+			});
+		}
+		function DefectDetails() {
+			$.get('GlazedKanban.ashx?m=DefectDetail', function (data) {
+				var json = JSON.parse(data);
+				if (json["success"] == true) {
+					$('#qxname1').text(json["rows"][0]["缺陷名称"]);
+					$('#qxname2').text(json["rows"][1]["缺陷名称"]);
+					$('#qxname3').text(json["rows"][2]["缺陷名称"]);
+					$('#qxname4').text(json["rows"][3]["缺陷名称"]);
+
+					$('#sl1').text(json["rows"][0]["缺陷数量"]);
+					$('#sl2').text(json["rows"][1]["缺陷数量"]);
+					$('#sl3').text(json["rows"][2]["缺陷数量"]);
+					$('#sl4').text(json["rows"][3]["缺陷数量"]);
+                    $('#sl5').text(json["rows"][0]["其他缺陷数量"]);
+
+
+					$('#qxl1').text(json["rows"][0]["缺陷率"]);
+					$('#qxl2').text(json["rows"][1]["缺陷率"]);
+					$('#qxl3').text(json["rows"][2]["缺陷率"]);
+					$('#qxl4').text(json["rows"][3]["缺陷率"]);
+					$('#qxl5').text(json["rows"][0]["其他缺陷率"]);
+
+				}
+			});
+		}
+        function loadData() {
+			$.get("GlazedKanban.ashx?m=rate", function (data) {
+                var json = JSON.parse(data);
+                if (json["success"] == true) {
+					clearData();
+                    for (var n = 0; n < json["rows"].length; n++) {
+                        window.DayCL.data.labels.push(json["rows"][n]["SJ"]);
+                        window.DayCL.data.datasets[0].data[n] = (json["rows"][n]["总计"]);
+                        window.DayCL.data.datasets[1].data[n] = (json["rows"][n]["机械"]);
+						window.DayCL.data.datasets[2].data[n] = (json["rows"][n]["人工"]);
+                    }
+					window.DayCL.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.configDayCL = {
+				data: {
+					labels: [],
+					datasets: [
+						{
+							//label: "近七日本烧合格率",
+							label: "合计施釉量",
+							fill: false,
+							backgroundColor: color(window.chartColors.red).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.red,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+						}, {
+							//label: "近七日整体合格率",
+							label: "机械手施釉量",
+							fill: false,
+							backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
+							borderColor: window.chartColors.orange,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+                        },
+						{
+							//label: "近七日整体合格率",
+							label: "人工施釉量",
+							fill: false,
+							backgroundColor: color(window.chartColors.blue).alpha(0.6).rgbString(),
+                            borderColor: window.chartColors.blue,
+							borderWidth: 2,
+							pointRadius: 15,
+							data: []
+						}
+					]
+				},
+                type: 'line',
+				options: {
+					responsive: true,
+					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,
+							scaleLabel: {
+								display: false,
+								labelString: 'Value'
+							}
+						}]
+					}
+				}
+            };
+            var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
+            window.DayCL = new Chart(ctxDayCL, configDayCL);
+        }
+
+    </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>

+ 19 - 0
wwwroot/main/Procedure/PackagingKanban/PackagingKanban.ashx

@@ -0,0 +1,19 @@
+<%@ WebHandler Language="C#" Class="PackagingKanban" %>
+
+using System;
+using System.Web;
+
+public class PackagingKanban : IHttpHandler {
+    
+    public void ProcessRequest (HttpContext context) {
+        context.Response.ContentType = "text/plain";
+        context.Response.Write("Hello World");
+    }
+ 
+    public bool IsReusable {
+        get {
+            return false;
+        }
+    }
+
+}

+ 380 - 0
wwwroot/main/Procedure/PackagingKanban/PackagingKanban.html

@@ -0,0 +1,380 @@
+<!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;">包装看板</div>
+            <div style="width:30%;text-align:right;"></div>
+        </div>
+        <div class="box_body" style="display: flex; flex-direction: column;">
+
+            <!--31天产量曲线图-->
+            <div style="width:1840px;height:30%;display:flex;flex-direction:row;">
+                <div style="width: 80%; height: 300px;">
+                    <div style="color:white;font-size:15px;font-weight:600; text-align:center">每日产量计划达成</div>
+                    <canvas id="canvasDayCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 330px; width: 80% "></canvas>
+                </div>
+            </div>
+            <div>
+                <table rules="none" align="right" style="width: 20%; height: 260px; margin-left:80%;margin-top:-291px ">
+                    <tr class="tr_bg_dark_warning">
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2"><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
+                    </tr>
+                    <tr class="tr_bg_dark_warning">
+                       
+                        <td style="width: 8%; height: 330px; font-size: 35px; text-align: center " class="td, th" rowspan="4"><br /><br /><br />月包装量:<span id="yjyl">测试数据</span></td>
+                    </tr>
+                </table>
+            </div>
+            <!--表格-->
+            <div style="width:1840px;height:530px;display:flex;flex-direction:row;">
+                <div style="width: 50%;height:530px;padding-right:20px;">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="9" style="color:white;">每日型号达成情况</td>
+                        </tr>
+                        <tr class="tr_title_warning">
+                            <td>产品型号</td>
+                            <td>计划数量</td>
+                            <td>达成数量</td>
+                            <td>达成率</td>
+                        </tr>
+
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                    </table>
+                </div>
+                <div style="width: 50%;height:530px;padding-right:20px;">
+                    <table cellspacing="0" cellpadding="0" border="0" style="width:100%;">
+                        <tr class="tr_title_warning">
+                            <td colspan="9" style="color:white;">每月型号达成情况</td>
+                        </tr>
+                        <tr class="tr_title_warning">
+                            <td>产品型号</td>
+                            <td>计划数量</td>
+                            <td>达成数量</td>
+                            <td>达成率</td>
+                        </tr>
+
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                        <tr class="tr_bg_light_warning" style="height:30px;">
+                            <td style="font-size: 18px; width: 11%">H0966L-W</td>
+                            <td style="font-size: 18px; width: 11%">1314</td>
+                            <td style="font-size: 18px; width: 11%">1169</td>
+                            <td style="font-size: 18px; width: 11%">80%</td>
+                        </tr>
+                    </table>
+                </div>
+                <!--<div style="width: 25%;height:530px;">
+            <div style="color:white;font-size:20px;font-weight:600; text-align:center">每月产量计划达成</div>
+            <canvas id="canvasMonthCL" style="-moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; height: 400px; width: 100%"></canvas>
+        </div>-->
+            </div>
+        </div>
+    </div>
+
+    <script>
+
+        $(document).ready(function () {
+            initData();
+            doGetData = setInterval(function () { timeUpdate(); }, 2000);
+        });
+
+        function timeUpdate() {
+            loadData();
+
+        }
+
+        function loadData() {
+            //31天产量
+            window.DayCL.data.datasets[0].data = [
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5,
+                randomScalingFactor(8) + 5
+            ];
+          
+            window.DayCL.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.configDayCL = {
+                data: {
+                    labels: ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31"],
+                    datasets: [{
+                        label: "包装数量",
+                        backgroundColor: color(window.chartColors.orange).alpha(0.6).rgbString(),
+                        borderColor: window.chartColors.orange,
+                        borderWidth: 2,
+                        pointRadius: 15,
+                        data: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
+                        fill: false,
+                    }]
+                },
+                type: 'line',
+                options: {
+                    responsive: true,
+                    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,
+                            scaleLabel: {
+                                display: false,
+                                labelString: 'Value'
+                            }
+                        }]
+                    }
+                }
+            };
+            var ctxDayCL = document.getElementById("canvasDayCL").getContext("2d");
+            window.DayCL = new Chart(ctxDayCL, configDayCL);
+            //===================================================
+
+            ////月饼图===========================================
+            //window.configMonthCL = {
+            //    data: {
+            //        labels: ['待达成', '月达成'],
+            //        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]
+            //        }]
+            //    },
+            //    type: 'doughnut',
+            //    options: {
+            //        legend: {
+            //            display: true
+            //        },
+            //        title: {
+            //            display: false,
+            //            text: ""
+            //        },
+            //        tooltips: {
+            //            mode: 'point',
+            //            intersect: false
+            //        },
+            //        responsive: true
+
+            //    }
+            //};
+            //var ctxMonthCL = document.getElementById("canvasMonthCL").getContext("2d");
+            //window.MonthCL = new Chart(ctxMonthCL, configMonthCL);
+            ////===================================================
+
+        }
+
+
+
+    </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>

+ 1 - 1
wwwroot/main/Procedure/RefinementKanban/RefinementKanban.html

@@ -37,7 +37,7 @@
             <div>
                 <table rules="none" align="right" style="width: 20%; height: 270px; margin-left:80%;margin-top:-291px ">
                     <tr class="tr_title_warning">
-                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2" id="sj">2023-4-30 00:00:00</td>
+                        <td style="width: 8%; height: 60px; font-size: 30px; text-align: left" colspan="2" ><strong><span id="sj" style="color:white;">2023-4-30 00:00:00</span></strong></td>
                     </tr>
                     <tr class="tr_title_warning">
                         <td style="width: 8%; height: 95px; font-size: 30px; text-align: left ">月打磨:<span id="ydm">测试数据</span></td>

+ 2 - 4
wwwroot/main/WCF/api/test_WCF.ashx

@@ -8,7 +8,7 @@ using Newtonsoft.Json.Linq;
 using System.Collections;
 using Curtain.DataAccess;
 using Curtain.Log;
-using DK.XuWei.CurtainMes;
+
 
 /// <summary>
 /// 
@@ -19,9 +19,7 @@ public class test_WCF : IHttpHandler, IRequiresSessionState
     {
         try
         {
-            string url = context.Request["wurl"].ToString();
-            JObject para = JObject.Parse(context.Request["wpara"].ToString());
-            context.Response.Write(JsonClient.Post(url, para.ToString()));
+  
         }
         catch(Exception ex)
         {