using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JinYuan.VirtualDataLibrary
{
public class DBSQL
{
///
/// 获取PLC换型参数绑定值
///
///
///
public string GetPlcParamSql(string modelName)
{
string strSql = $@"SELECT
'{modelName}' AS `ModelName`,
`pb`.`PLCAddress`,
`pc`.`PLCValue`,
`pc`.`UpdateTime`,
`pb`.`PLCRemark`,
`pb`.`OrderNum`
FROM
`Plcconfigbase` `pb`
LEFT JOIN
(SELECT * FROM `Plcconfig` WHERE `ModelName` = '{modelName}') `pc`
ON
`pb`.`PLCAddress` = `pc`.`PLCAddress`
ORDER BY
`pb`.`OrderNum`";
return strSql;
}
///
/// 获取产品型号参数
///
///
///
public string GetParamSql(string strModelType)
{
string strSql = $@"SELECT
`pb`.`ParaName`,
'{strModelType}' AS `ModelName`,
`pl`.`ParaValueMin`,
`pl`.`ParaValueMax`,
`pl`.`Uint`,
`pb`.`Remark`,
`pl`.`UpdateTime`
FROM
`Parambase` `pb`
LEFT JOIN
(SELECT * FROM `ParamList` WHERE `ModelName` = '{strModelType}') `pl`
ON
`pb`.`ParaName` = `pl`.`ParaName`
ORDER BY
`pb`.`fNo` ASC";
return strSql;
}
///
/// 获取产品型号列表
///
///
///
public string GetProdTypeSql(string strProdType = "")
{
string strSql = @"SELECT * FROM ProductModel ";
if (strProdType != "")
{
strSql += string.Format(" where ModelName='{0}'", strProdType);
}
strSql += " order by ModelName";
return strSql;
}
///
/// 获取产品型号
///
///
///
public string GetProductParaByProdModel(string strModelType)
{
string strSql = $@"SELECT
`pb`.`ParaName`,
'{strModelType}' AS `ModelName`,
`pl`.`ParaValueMin`,
`pl`.`ParaValueMax`,
`pl`.`Uint`,
`pb`.`Remark`,
`pl`.`UpdateTime`
FROM
`Parambase` `pb`
LEFT JOIN
(SELECT * FROM `Paramlist` WHERE `ModelName` = '{strModelType}') `pl`
ON
`pb`.`ParaName` = `pl`.`ParaName`
ORDER BY
`pb`.`fNo` ASC";
return strSql;
}
public string GetPLCConfigBases()
{
string strSql = string.Format(@"SELECT * FROM `Plcconfigbase` ORDER BY `OrderNum`");
return strSql;
}
public string GetSysAdminSql()
{
string strSql = string.Format(@"SELECT
`LoginId`,
`LoginName`,
`LoginPwd`,
`LoginUid`,
`LoginLevel`,
`SystemLog`,
`CpkData`,
`HistoryData`,
`ParamSet`,
`SystemSet`,
`UserManage`
FROM
`SysAdmin`");
return strSql;
}
///
/// 查询历史数据
///
///
///
///
///
public string SelectHostData(int type, string strRfid, string strBarCode, string strDate1, string strDate2)
{
string strSql = "";
if (type == 0)
{
strSql = @"SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS `TestTime`,
`RFID`,
`BarCode`,
`Result`,
`Remark`,
CASE WHEN `Flag` = 1 THEN 'True' ELSE 'False' END AS `Flag`
FROM
`AGearEntity`
WHERE
`TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
else if (type == 1)
{
#region 旧
//string key = "FrmHistory_dgv_Main_";
//strSql = @" SELECT
// `ChannelNo` AS `通道`,
// DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS `时间`,
// `RFID` AS `托杯码`,
// `BarCode` AS `钢壳码`,
// `WindSpeed` AS `离子风速流量`,
// `WindDeviceNum` AS `离子风清洁设备号`,
// `CCDFaceTestDeviceNum1` AS `端面检测设备号1`,
// `CCDFaceTestDeviceNum2` AS `端面检测设备号2`,
// `CCDFaceTestDeviceNum3` AS `端面检测设备号3`,
// `CCDFaceTestDeviceNum4` AS `端面检测设备号4`,
// `CCDCylinderTestDeviceNum1` AS `柱面检测设备号1`,
// `CCDCylinderTestDeviceNum2` AS `柱面检测设备号2`,
// `CCDCylinderTestDeviceNum3` AS `柱面检测设备号3`,
// `CCDPosFaceTestResult` AS `正极端面检测结果`,
// `CCDNegFaceTestResult` AS `负极端面检测结果`,
// `CCDBeforeCoatedCylinderTestResult` AS `包膜前圆柱面检测结果`,
// `CCDPosCylinderTestResult` AS `正极柱面检测结果`,
// `CCDNegCylinderTestResult` AS `负极柱面检测结果`,
// `Result` AS `综合结果`,
// `Info` AS `NG详情`,
// `Remark` AS `备注`,
// CASE WHEN `Flag` = 1 THEN '已上传' ELSE '未上传' END AS `上传状态`
// FROM `BGearEntity` where `TestTime` >= '" + strDate1 + "' and `TestTime` <= '" + strDate2 + "' ";
#endregion
strSql = @" SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS TestTime,
`RFID`,
`BarCode`,
`WindSpeed`,
`WindDeviceNum`,
`CCDFaceTestDeviceNum1`,
`CCDFaceTestDeviceNum2`,
`CCDFaceTestDeviceNum3`,
`CCDFaceTestDeviceNum4`,
`CCDCylinderTestDeviceNum1`,
`CCDCylinderTestDeviceNum2`,
`CCDCylinderTestDeviceNum3`,
`CCDNegativeTerminalWeldingZone2DInspectionResult`,
`CCDNegativeTerminalWeldingZone2DInspectionNGReasons`,
`CCDCoverPlate2DInspectionResult`,
`CCDCoverPlate2DInspectionNGReasons`,
`CCDNegativeTerminalWeldingZone25DInspectionResult`,
`CCDNegativeTerminalWeldingZone25DInspectionNGReasons`,
`CCDCoverPlate25DInspectionResult`,
`CCDCoverPlate25DInspectionNGReasons`,
`CCDTerminalPost2DInspectionResult`,
`CCDTerminalPost2DInspectionNGReasons`,
`CCDTerminalPost3DInspectionResult`,
`CCDTerminalPost3DInspectionNGReasons`,
`CCDSealingNail2DInspectionResult`,
`CCDSealingNail2DInspectionNGReasons`,
`CCDSealingNail3DInspectionResult`,
`CCDSealingNail3DInspectionNGReasons`,
`CCDTopFillet25DInspectionResult`,
`CCDTopFillet25DInspectionNGReasons`,
`CCDBottomFillet25DInspectionResult`,
`CCDBottomFillet25DInspectionNGReasons`,
`CCDCylindricalSurface25DInspectionResult`,
`CCDCylindricalSurface25DInspectionNGReasons`,
`CCDCylindricalSurface3DInspectionResult`,
`CCDCylindricalSurface3DInspectionNGReasons`,
`CCDPositiveTerminaJYQ2DInspectionResult`,
`CCDPositiveTerminaJYQ2DInspectionNGReasons`,
`CCDNegativeTerminaJYQ2DInspectionResult`,
`CCDNegativeTerminaJYQ2DInspectionNGReasons`,
`Result`,
`Info`,
`Remark`,
CASE WHEN `Flag` = 1 THEN 'True' ELSE 'False' END AS Flag
FROM `BGearEntity` WHERE `TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "' ";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
else if (type == 2)//进站未上传
{
strSql = @"SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS `TestTime`,
`RFID`,
`BarCode`,
`Result`,
`Remark`,
CASE WHEN `Flag` = 1 THEN 'True' ELSE 'False' END AS `Flag`
FROM
`AGearEntity`
WHERE
`TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'" +
"AND Flag = 2";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
else if (type == 3)//出站未上传
{
strSql = @" SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS TestTime,
`RFID`,
`BarCode`,
`WindSpeed`,
`WindDeviceNum`,
`CCDFaceTestDeviceNum1`,
`CCDFaceTestDeviceNum2`,
`CCDFaceTestDeviceNum3`,
`CCDFaceTestDeviceNum4`,
`CCDCylinderTestDeviceNum1`,
`CCDCylinderTestDeviceNum2`,
`CCDCylinderTestDeviceNum3`,
`CCDNegativeTerminalWeldingZone2DInspectionResult`,
`CCDNegativeTerminalWeldingZone2DInspectionNGReasons`,
`CCDCoverPlate2DInspectionResult`,
`CCDCoverPlate2DInspectionNGReasons`,
`CCDNegativeTerminalWeldingZone25DInspectionResult`,
`CCDNegativeTerminalWeldingZone25DInspectionNGReasons`,
`CCDCoverPlate25DInspectionResult`,
`CCDCoverPlate25DInspectionNGReasons`,
`CCDTerminalPost2DInspectionResult`,
`CCDTerminalPost2DInspectionNGReasons`,
`CCDTerminalPost3DInspectionResult`,
`CCDTerminalPost3DInspectionNGReasons`,
`CCDSealingNail2DInspectionResult`,
`CCDSealingNail2DInspectionNGReasons`,
`CCDSealingNail3DInspectionResult`,
`CCDSealingNail3DInspectionNGReasons`,
`CCDTopFillet25DInspectionResult`,
`CCDTopFillet25DInspectionNGReasons`,
`CCDBottomFillet25DInspectionResult`,
`CCDBottomFillet25DInspectionNGReasons`,
`CCDCylindricalSurface25DInspectionResult`,
`CCDCylindricalSurface25DInspectionNGReasons`,
`CCDCylindricalSurface3DInspectionResult`,
`CCDCylindricalSurface3DInspectionNGReasons`,
`CCDPositiveTerminaJYQ2DInspectionResult`,
`CCDPositiveTerminaJYQ2DInspectionNGReasons`,
`CCDNegativeTerminaJYQ2DInspectionResult`,
`CCDNegativeTerminaJYQ2DInspectionNGReasons`,
`Result`,
`Info`,
`Remark`,
CASE WHEN `Flag` = 1 THEN 'True' ELSE 'False' END AS Flag
FROM `BGearEntity` WHERE `TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'" +
"AND Flag = 2";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
else if (type == 4)
{
strSql = @" SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS TestTime,
`RFID`,
`BarCode`,
`MaterialCode`,
`WindSpeed`,
`WindDeviceNum`,
`CCDFaceTestDeviceNum1`,
`CCDFaceTestDeviceNum2`,
`CCDFaceTestDeviceNum3`,
`CCDFaceTestDeviceNum4`,
`CCDCylinderTestDeviceNum1`,
`CCDCylinderTestDeviceNum2`,
`CCDCylinderTestDeviceNum3`,
`CCDNegativeTerminalWeldingZone2DInspectionResult`,
`CCDNegativeTerminalWeldingZone2DInspectionNGReasons`,
`CCDCoverPlate2DInspectionResult`,
`CCDCoverPlate2DInspectionNGReasons`,
`CCDNegativeTerminalWeldingZone25DInspectionResult`,
`CCDNegativeTerminalWeldingZone25DInspectionNGReasons`,
`CCDCoverPlate25DInspectionResult`,
`CCDCoverPlate25DInspectionNGReasons`,
`CCDTerminalPost2DInspectionResult`,
`CCDTerminalPost2DInspectionNGReasons`,
`CCDTerminalPost3DInspectionResult`,
`CCDTerminalPost3DInspectionNGReasons`,
`CCDSealingNail2DInspectionResult`,
`CCDSealingNail2DInspectionNGReasons`,
`CCDSealingNail3DInspectionResult`,
`CCDSealingNail3DInspectionNGReasons`,
`CCDTopFillet25DInspectionResult`,
`CCDTopFillet25DInspectionNGReasons`,
`CCDBottomFillet25DInspectionResult`,
`CCDBottomFillet25DInspectionNGReasons`,
`CCDCylindricalSurface25DInspectionResult`,
`CCDCylindricalSurface25DInspectionNGReasons`,
`CCDCylindricalSurface3DInspectionResult`,
`CCDCylindricalSurface3DInspectionNGReasons`,
`CCDPositiveTerminaJYQ2DInspectionResult`,
`CCDPositiveTerminaJYQ2DInspectionNGReasons`,
`CCDNegativeTerminaJYQ2DInspectionResult`,
`CCDNegativeTerminaJYQ2DInspectionNGReasons`,
`Result`,
`Info`,
`Remark`,
CASE WHEN `Flag1` = 1 THEN 'True' ELSE 'False' END AS Flag
FROM `BGearEntity` WHERE `TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
else if (type == 5)
{
strSql = @" SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS TestTime,
`RFID`,
`BarCode`,
`MaterialCode`,
`WindSpeed`,
`WindDeviceNum`,
`CCDFaceTestDeviceNum1`,
`CCDFaceTestDeviceNum2`,
`CCDFaceTestDeviceNum3`,
`CCDFaceTestDeviceNum4`,
`CCDCylinderTestDeviceNum1`,
`CCDCylinderTestDeviceNum2`,
`CCDCylinderTestDeviceNum3`,
`CCDNegativeTerminalWeldingZone2DInspectionResult`,
`CCDNegativeTerminalWeldingZone2DInspectionNGReasons`,
`CCDCoverPlate2DInspectionResult`,
`CCDCoverPlate2DInspectionNGReasons`,
`CCDNegativeTerminalWeldingZone25DInspectionResult`,
`CCDNegativeTerminalWeldingZone25DInspectionNGReasons`,
`CCDCoverPlate25DInspectionResult`,
`CCDCoverPlate25DInspectionNGReasons`,
`CCDTerminalPost2DInspectionResult`,
`CCDTerminalPost2DInspectionNGReasons`,
`CCDTerminalPost3DInspectionResult`,
`CCDTerminalPost3DInspectionNGReasons`,
`CCDSealingNail2DInspectionResult`,
`CCDSealingNail2DInspectionNGReasons`,
`CCDSealingNail3DInspectionResult`,
`CCDSealingNail3DInspectionNGReasons`,
`CCDTopFillet25DInspectionResult`,
`CCDTopFillet25DInspectionNGReasons`,
`CCDBottomFillet25DInspectionResult`,
`CCDBottomFillet25DInspectionNGReasons`,
`CCDCylindricalSurface25DInspectionResult`,
`CCDCylindricalSurface25DInspectionNGReasons`,
`CCDCylindricalSurface3DInspectionResult`,
`CCDCylindricalSurface3DInspectionNGReasons`,
`CCDPositiveTerminaJYQ2DInspectionResult`,
`CCDPositiveTerminaJYQ2DInspectionNGReasons`,
`CCDNegativeTerminaJYQ2DInspectionResult`,
`CCDNegativeTerminaJYQ2DInspectionNGReasons`,
`Result`,
`Info`,
`Remark`,
CASE WHEN `Flag1` = 1 THEN 'True' ELSE 'False' END AS Flag
FROM `BGearEntity` WHERE `TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'" +
"AND Flag1 = 2";
if (strRfid != "")
{
strSql += " AND `RFID` LIKE '%" + strRfid + "'";
}
if (strBarCode != "")
{
strSql += " AND `BarCode` LIKE '%" + strBarCode + "'";
}
}
#region 旧
//else if (type == 2)
//{
// strSql = @"SELECT
// `ChannelNo` AS `通道`,
// DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s') AS `时间`,
// `MaterialCode` AS `料盘码`,
// `MaterialCodes` AS `物料编码`,
// `EquipNum` AS `设备编号`,
// `Result` AS `结果`,
// `Remark` AS `备注`,
// CASE WHEN `Flag` = 1 THEN '已上传' ELSE '未上传' END AS `上传状态`
// FROM
// `CGearEntity`
// WHERE
// `TestTime` >= '" + strDate1 + "' AND `TestTime` <= '" + strDate2 + "'";
// if (strBarCode != "")
// {
// strSql += " AND `MaterialCode` LIKE '" + strBarCode + "%'";
// }
//}
#endregion
return strSql;
}
///
/// 查询报警历史数据
///
///
///
///
///
public string SelectHostAlarmData(string start, string end, int alarmType)
{
string strSql = "";
switch (alarmType)
{
case 1:
strSql = @"SELECT
DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
`PLCAdress`,
`AlarmContent`,
`AlarmCount`,
`Class`
FROM
`AlarmCountEntry`
WHERE
`AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + $"' AND `Class` = '{CommonMethods.strClass}'";
break;
case 2:
strSql = @"SELECT
DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
`PLCAdress`,
`AlarmContent`,
`AlarmCount`,
`Class`
FROM
`AlarmCountEntry`
WHERE
`AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + $"' AND `Class` = '{CommonMethods.strClass}'";
break;
default:
case 0:
strSql = @"SELECT
DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
`PLCAdress`,
`AlarmContent`,
`AlarmCount`,
`Class`
FROM
`AlarmCountEntry`
WHERE
`AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + "'";
break;
}
#region 旧
//if (alarmType == "全天")
//{
// strSql = @"SELECT
// DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
// `PLCAdress`,
// `AlarmContent`,
// `AlarmCount`,
// `Class`
// FROM
// `AlarmCountEntry`
// WHERE
// `AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + "'";
//}
//else if (alarmType == "白班")
//{
// strSql = @"SELECT
// DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
// `PLCAdress`,
// `AlarmContent`,
// `AlarmCount`,
// `Class`
// FROM
// `AlarmCountEntry`
// WHERE
// `AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + "' AND `Class` = '白班'";
//}
//else
//{
// strSql = @"SELECT
// DATE_FORMAT(`AlarmTime`, '%Y-%m-%d %H:%i:%s') AS `AlarmTime`,
// `PLCAdress`,
// `AlarmContent`,
// `AlarmCount`,
// `Class`
// FROM
// `AlarmCountEntry`
// WHERE
// `AlarmTime` >= '" + start + "' AND `AlarmTime` <= '" + end + "' AND `Class` = '夜班'";
//}
#endregion
return strSql;
}
///
/// 按日统计
///
///
///
///
public string GetStaticByDay(string startDateTime, string endDateTime)
{
string strSql = $@"SELECT
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:00:00') AS `Day`,
`ProdIn`,
`ProdOut`,
`Ppm`,
CONCAT(CAST(ROUND(`JiaDL` * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN `ProdIn` > 0 THEN ROUND(COALESCE(`ProdOut`, 0) / COALESCE(`ProdIn`, 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'
GROUP BY
`TestTime`, `ProdOut`, `ProdIn`, `Ppm`, `JiaDL`
UNION ALL
SELECT
'Total' AS `Day`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(AVG(`JiaDL`) * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'";
return strSql;
}
///
/// 按周查询
///
///
///
///
public string GetStaticByWeek(string startDateTime, string endDateTime)
{
string strSql = $@"SELECT
DATE_FORMAT(`TestTime`, '%Y-%m') AS `Week`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(`JiaDL` * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'
GROUP BY
DATE_FORMAT(`TestTime`, '%Y-%m'), `JiaDL`
UNION ALL
SELECT
'Total' AS `Week`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(AVG(`JiaDL`) * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'";
return strSql;
}
///
/// 按月查询
///
///
///
///
public string GetStaticByMonth(string startDateTime, string endDateTime)
{
string strSql = $@"SELECT
DATE_FORMAT(`TestTime`, '%Y-%m') AS `Month`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(`JiaDL` * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'
GROUP BY
DATE_FORMAT(`TestTime`, '%Y-%m'), `JiaDL`
UNION ALL
SELECT
'Total' AS `Month`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(AVG(`JiaDL`) * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{startDateTime}' AND '{endDateTime}'";
return strSql;
}
///
/// 按班次统计
///
///
///
///
///
public string GetStaticByShift(DateTime dateTime, int shift, string changeShiftTime)
{
string sDateTime1 = string.Empty;
string sDateTime2 = string.Empty;
if (shift == 0)// 白班
{
DateTime sTempDateTime = Convert.ToDateTime($"{dateTime.ToString("yyyy-MM-dd")} {changeShiftTime}");
sDateTime1 = sTempDateTime.AddHours(-12).ToString("yyyy-MM-dd HH:mm:ss");
sDateTime2 = sTempDateTime.ToString("yyyy-MM-dd HH:mm:ss");
}
else
{
sDateTime1 = $"{dateTime.ToString("yyyy-MM-dd")} {changeShiftTime}";
sDateTime2 = Convert.ToDateTime(sDateTime1).AddHours(12).ToString("yyyy-MM-dd HH:mm:ss");
}
string strsql = $@"SELECT
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:00:00') AS `TestTime`,
`ProdIn`,
`ProdOut`,
`Ppm`,
CONCAT(CAST(ROUND(`JiaDL` * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN `ProdIn` > 0 THEN ROUND(COALESCE(`ProdOut`, 0) / COALESCE(`ProdIn`, 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{sDateTime1}' AND '{sDateTime2}'
GROUP BY
`TestTime`, `ProdOut`, `ProdIn`, `Ppm`, `JiaDL`
UNION ALL
SELECT
'Total' AS `Time`,
SUM(`ProdIn`) AS ProdIn,
SUM(`ProdOut`) AS ProdOut,
AVG(`Ppm`) AS Ppm,
CONCAT(CAST(ROUND(AVG(`JiaDL`) * 100, 1) AS CHAR(10)), '%') AS `JiaDL`,
CONCAT(CAST(
CASE
WHEN SUM(`ProdIn`) > 0 THEN ROUND(COALESCE(SUM(`ProdOut`), 0) / COALESCE(SUM(`ProdIn`), 0) * 100, 2)
ELSE 0
END AS CHAR(10)), '%') AS `Prod`
FROM
`Hourprod`
WHERE
`TestTime` BETWEEN '{sDateTime1}' AND '{sDateTime2}'";
return strsql;
}
///
/// 获取最新的数据
///
///
public string GetStatic(string strDateTime)
{
string strsql = $@" SELECT [FDate]
,[FHour]
,[ProdIn]
,[ProdOut]
,[TestTime]
FROM [dbo].[Hourprod] where FDate='{strDateTime}' order by TestTime desc";
return strsql;
}
///
/// 根据条码获取进站时间最新的一条数据
///
///
///
public string GetInStationTop1Sql(string barCode)
{
string strSql = $@"SELECT
`ChannelNo`,
DATE_FORMAT(`TestTime`, '%Y-%m-%d %H:%i:%s'),
`RFID`,
`BarCode`,
`Result`,
`Remark`,
`Flag`
FROM
`AGearEntity`
WHERE `BarCode` = '{barCode}' ORDER BY `TestTime` DESC
LIMIT 1";
return strSql;
}
///
/// 获取表头注释 按照设计顺序
///
///
public string GetSqlFields(string tableName)
{
string strSql = $@"SELECT
COLUMN_NAME,
DATA_TYPE,
COLUMN_COMMENT
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = 'largesquareone' AND TABLE_NAME = '{tableName}'
ORDER BY
ORDINAL_POSITION;";
return strSql;
}
///
/// 根据标志位获取过程数据
///
///
///
public string GetOutFlag1Sql(string Flag1)
{
string strSql = $@"SELECT
*
FROM
`BGearEntity`
WHERE `Flag1` = '{Flag1}' ";
return strSql;
}
///
/// 根据条码获取一天内相同条码数据
///
///
///
public string GetOutCcdResultSql(string barCode, string tableName)
{
string strSql = $@"SELECT
`BarCode`
FROM
`{tableName}`
WHERE `TestTime` > NOW() - INTERVAL 1 DAY
AND `BarCode` = '{barCode}' ";
return strSql;
}
}
public class M_DBCtrl
{
/// --本机数据库表名
///
///
//public string machineInSQLTable = "agearentity";
public string machineOutSQLTable = "bgearentity";
private string[] headerTextOut;
///
/// 出站数据库表头
///
public string[] HeaderTextOut
{
get { return headerTextOut; }
set { headerTextOut = value; }
}
/// 查询SQL数据库中的数据,并以string数组列表形式返回
///
///
///
/// 所查询到的数据,null表示不存在
public List SQLAllDataSearchToStrArrList(string strSql)
{
List strResArrList = new List();
List strResList = new List();
try
{
using (DataTable dt = CommonMethods.db.QueryDataTable(strSql))
{
if (dt != null)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
string resRow = dt.Rows[i][j].ToString();
strResList.Add(resRow);
}
string[] strResArr = strResList.ToArray();
strResList.Clear();
strResArrList.Add(strResArr);
}
}
}
}
catch (Exception e)
{
return strResArrList = new List();
}
return strResArrList;
}
/// 根据下标在返回的数据库表信息 集合中获取相应数据
/// index 0:字段 2:中文注释 1:变量类型int\char等
///
/// liststring[]类型的集合
/// string[] 的下标
///
public String[] HeaderTextAssignment(List SqlList, int index)
{
string[] headStringlist = new string[SqlList.Count];
// int i = 0;
try
{
for (int i = 0; i < SqlList.Count; i++)
{
headStringlist[i] = SqlList[i][index];
}
}
catch (Exception)
{
}
return headStringlist;
}
}
}