using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using DK.XuWei.WebMes;
using Curtain.DataAccess;
using Curtain.Log;
using System.Data;
///
/// 发送LED看板数据到PLC xuwei add 2023-05-12
///
public static class Led
{
public static void SendData()
{
//一线产量明细
DataTable oneDt = new DataTable();
//二线产量明细
DataTable twoDt = new DataTable();
//总计产量
DataTable infoDt = new DataTable();
//读取看板数据
using (IDataAccess conn = DataAccess.Create())
{
//一线明细
oneDt = conn.ExecuteDatatable(@"
SELECT
sj,
CL
FROM
(
SELECT
'07-09' AS sj,
SUM( ct ) CL
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE IN ('Z26','Z98')
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj IN ( '07', '08' ) UNION ALL
SELECT
sj,
ct
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE IN ('Z26','Z98')
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj NOT IN ( '07', '08', '12', '13' ) UNION ALL
SELECT
'12-14' AS sj,
SUM( ct )
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE IN ('Z26','Z98')
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj IN ( '12', '13' )
)
ORDER BY
sj
",
new CDAParameter("USERID", "")
);
//二线明细
twoDt = conn.ExecuteDatatable(@"
SELECT
sj,
CL
FROM
(
SELECT
'07-09' AS sj,
SUM( ct ) CL
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE = 'Z28'
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj IN ( '07', '08' ) UNION ALL
SELECT
sj,
ct
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE = 'Z28'
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj NOT IN ( '07', '08', '12', '13' ) UNION ALL
SELECT
'12-14' AS sj,
SUM( ct )
FROM
(
SELECT
TO_CHAR( pd.CREATETIME, 'hh24' ) sj,
COUNT( pd.BARCODE ) ct
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.USERCODE = 'Z28'
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
AND pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
GROUP BY
TO_CHAR( pd.CREATETIME, 'hh24' )
ORDER BY
TO_CHAR( pd.CREATETIME, 'hh24' )
)
WHERE
sj IN ( '12', '13' )
)
ORDER BY
sj
",
new CDAParameter("USERID", "")
);
//总计
infoDt = conn.ExecuteDatatable(@"
WITH 一线 AS (
SELECT
COUNT( DISTINCT pd.BARCODE ) 一线产量
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
AND pd.USERCODE = 'Z26'
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
),
二线 AS (
SELECT
COUNT( DISTINCT pd.BARCODE ) 二线产量
FROM
TP_PM_PRODUCTIONDATA pd
WHERE
pd.VALUEFLAG = 1
AND pd.PROCEDUREID = 2
AND pd.USERCODE = 'Z28'
AND TRUNC( pd.CREATETIME ) = trunc( SYSDATE )
) SELECT
一线.一线产量,
二线.二线产量,
( 一线.一线产量 +二线.二线产量 ) 总计
FROM
一线
LEFT JOIN 二线 ON 1 =1
",
new CDAParameter("USERID", "")
);
}
Logger.Debug("读取看板数据完成!");
//发送数据到LED
//SiemensS7.Open("172.19.2.71", 102);
SiemensS7.Open("172.19.26.82", 102);
#region 总产量
if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["总计"] != null)
{
SiemensS7.Write("30.0", Convert.ToInt16(infoDt.Rows[0]["总计"]));//包装总量
}
else
{
SiemensS7.Write("30.0", Convert.ToInt16(0));//包装总量
}
if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["一线产量"].ToString() != "")
{
SiemensS7.Write("30.2", Convert.ToInt16(infoDt.Rows[0]["一线产量"]));//一线包装产量
}
else
{
SiemensS7.Write("30.2", Convert.ToInt16(0));//一线包装产量
}
if (infoDt != null && infoDt.Rows.Count > 0 && infoDt.Rows[0] != null && infoDt.Rows[0]["二线产量"].ToString() != "")
{
SiemensS7.Write("30.4", Convert.ToInt16(infoDt.Rows[0]["二线产量"]));//二线包装产量
}
else
{
SiemensS7.Write("30.4", Convert.ToInt16(0));//二线包装产量
}
#endregion
#region 一线产量
if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[0] != null && oneDt.Rows[0]["CL"].ToString() != "")
{
SiemensS7.Write("30.6", Convert.ToInt16(oneDt.Rows[0]["CL"]));//一线7:00-9:00产量
}
else
{
SiemensS7.Write("30.6", Convert.ToInt16(0));//一线7:00-9:00产量
}
if (oneDt != null && oneDt.Rows.Count > 0 && oneDt.Rows[1] != null && oneDt.Rows[1]["CL"].ToString() != "")
{
SiemensS7.Write("30.8", Convert.ToInt16(oneDt.Rows[1]["CL"]));//一线9:00-10:00产量
}
else
{
SiemensS7.Write("30.8", Convert.ToInt16(0));//一线9:00-10:00产量
}
if (oneDt != null && oneDt.Rows.Count > 2 && oneDt.Rows[2] != null && oneDt.Rows[2]["CL"].ToString() != "")
{
SiemensS7.Write("30.10", Convert.ToInt16(oneDt.Rows[2]["CL"]));//一线10:00-11:00产量
}
else
{
SiemensS7.Write("30.10", Convert.ToInt16(0));//一线10:00-11:00产量
}
if (oneDt != null && oneDt.Rows.Count > 3 && oneDt.Rows[3] != null && oneDt.Rows[3]["CL"].ToString() != "")
{
SiemensS7.Write("30.12", Convert.ToInt16(oneDt.Rows[3]["CL"]));//一线12:00-14:00产量
}
else
{
SiemensS7.Write("30.12", Convert.ToInt16(0));//一线12:00-14:00产量
}
if (oneDt != null && oneDt.Rows.Count > 4 && oneDt.Rows[4] != null && oneDt.Rows[4]["CL"].ToString() != "")
{
SiemensS7.Write("30.14", Convert.ToInt16(oneDt.Rows[4]["CL"]));//一线14:00-15:00产量
}
else
{
SiemensS7.Write("30.14", Convert.ToInt16(0));//一线14:00-15:00产量
}
if (oneDt != null && oneDt.Rows.Count > 5 && oneDt.Rows[5] != null && oneDt.Rows[5]["CL"].ToString() != "")
{
SiemensS7.Write("30.16", Convert.ToInt16(oneDt.Rows[5]["CL"]));//一线15:00-16:00产量
}
else
{
SiemensS7.Write("30.16", Convert.ToInt16(0));//一线15:00-16:00产量
}
if (oneDt != null && oneDt.Rows.Count > 6 && oneDt.Rows[6] != null && oneDt.Rows[6]["CL"].ToString() != "")
{
SiemensS7.Write("30.18", Convert.ToInt16(oneDt.Rows[6]["CL"]));//一线16:00-17:00产量
}
else
{
SiemensS7.Write("30.18", Convert.ToInt16(0));//一线16:00-17:00产量
}
if (oneDt != null && oneDt.Rows.Count > 7 && oneDt.Rows[7] != null && oneDt.Rows[7]["CL"].ToString() != "")
{
SiemensS7.Write("30.20", Convert.ToInt16(oneDt.Rows[7]["CL"]));//一线17:00-18:00产量
}
else
{
SiemensS7.Write("30.20", Convert.ToInt16(0));//一线17:00-18:00产量
}
#endregion
#region 二线产量
if (twoDt != null && twoDt.Rows.Count > 0 && twoDt.Rows[0] != null && twoDt.Rows[0]["CL"].ToString() != "")
{
SiemensS7.Write("30.22", Convert.ToInt16(twoDt.Rows[0]["CL"]));//二线7:00-9:00产量
}
else
{
SiemensS7.Write("30.22", Convert.ToInt16(0));//二线17:00-18:00产量
}
if (twoDt != null && twoDt.Rows.Count > 1 && twoDt.Rows[1] != null && twoDt.Rows[1]["CL"].ToString() != "")
{
SiemensS7.Write("30.24", Convert.ToInt16(twoDt.Rows[1]["CL"]));//二线9:00-10:00产量
}
else
{
SiemensS7.Write("30.24", Convert.ToInt16(0));//二线9:00-10:00产量
}
if (twoDt != null && twoDt.Rows.Count > 2 && twoDt.Rows[2] != null && twoDt.Rows[2]["CL"].ToString() != "")
{
SiemensS7.Write("30.26", Convert.ToInt16(twoDt.Rows[2]["CL"]));//二线10:00-11:00产量
}
else
{
SiemensS7.Write("30.26", Convert.ToInt16(0));//二线10:00-11:00产量
}
if (twoDt != null && twoDt.Rows.Count > 3 && twoDt.Rows[3] != null && twoDt.Rows[3]["CL"].ToString() != "")
{
SiemensS7.Write("30.28", Convert.ToInt16(twoDt.Rows[3]["CL"]));//二线12:00-14:00产量
}
else
{
SiemensS7.Write("30.28", Convert.ToInt16(0));//二线12:00-14:00产量
}
if (twoDt != null && twoDt.Rows.Count > 4 && twoDt.Rows[4] != null && twoDt.Rows[4]["CL"].ToString() != "")
{
SiemensS7.Write("30.30", Convert.ToInt16(twoDt.Rows[4]["CL"]));//二线14:00-15:00产量
}
else
{
SiemensS7.Write("30.30", Convert.ToInt16(0));//二线14:00-15:00产量
}
if (twoDt != null && twoDt.Rows.Count > 5 && twoDt.Rows[5] != null && twoDt.Rows[5]["CL"].ToString() != "")
{
SiemensS7.Write("30.32", Convert.ToInt16(twoDt.Rows[5]["CL"]));//二线15:00-16:00产量
}
else
{
SiemensS7.Write("30.32", Convert.ToInt16(0));//二线15:00-16:00产量
}
if (twoDt != null && twoDt.Rows.Count > 6 && twoDt.Rows[6] != null && twoDt.Rows[6]["CL"].ToString() != "")
{
SiemensS7.Write("30.34", Convert.ToInt16(twoDt.Rows[6]["CL"]));//二线16:00-17:00产量
}
else
{
SiemensS7.Write("30.34", Convert.ToInt16(0));//二线16:00-17:00产量
}
if (twoDt != null && twoDt.Rows.Count > 7 && twoDt.Rows[7] != null && twoDt.Rows[7]["CL"].ToString() != "")
{
SiemensS7.Write("30.36", Convert.ToInt16(twoDt.Rows[7]["CL"]));//二线17:00-18:00产量
}
else
{
SiemensS7.Write("30.36", Convert.ToInt16(0));//二线17:00-18:00产量
}
#endregion
SiemensS7.Close();
Logger.Debug("发送LED数据完成!");
}
}