457 lines
25 KiB
C#
457 lines
25 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace JinYuan.VirtualDataLibrary
|
|
{
|
|
public class DBSQL
|
|
{
|
|
|
|
/// <summary>
|
|
/// 获取PLC换型参数绑定值
|
|
/// </summary>
|
|
/// <param name="modelName"></param>
|
|
/// <returns></returns>
|
|
public string GetPlcParamSql(string modelName)
|
|
{
|
|
string strSql = $@"SELECT '{modelName}' 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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取产品型号参数
|
|
/// </summary>
|
|
/// <param name="strModelType"></param>
|
|
/// <returns></returns>
|
|
public string GetParamSql(string strModelType)
|
|
{
|
|
string strSql = $@"SELECT pb.ParaName, '{strModelType}' ModelName,pl.ParaValueMin,pl.ParaValueMax,pl.Uint,pb.Remark,pl.UpdateTime
|
|
FROM Parambase pb
|
|
left join (select * from ParamList where ModelName = '{strModelType}' ) as pl
|
|
on pb.ParaName = pl.ParaName order by pb.fNo asc";
|
|
return strSql;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取产品型号列表
|
|
/// </summary>
|
|
/// <param name="strProdType"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取产品型号
|
|
/// </summary>
|
|
/// <param name="strModelType"></param>
|
|
/// <returns></returns>
|
|
public string GetProductParaByProdModel(string strModelType)
|
|
{
|
|
string strSql = $@"SELECT pb.ParaName, '{strModelType}' ModelName,pl.ParaValueMin,pl.ParaValueMax,pl.Uint,pb.Remark,pl.UpdateTime
|
|
FROM Parambase pb
|
|
left join (select * from Paramlist where ModelName = '{strModelType}' ) as 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 [dbo].[SysAdmin]");
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询历史数据
|
|
/// </summary>
|
|
/// <param name="strBarCode"></param>
|
|
/// <param name="strDate1"></param>
|
|
/// <param name="strDate2"></param>
|
|
/// <returns></returns>
|
|
public string SelectHostData(int type, string strBarCode, string strDate1, string strDate2)
|
|
{
|
|
string strSql = "";
|
|
try
|
|
{
|
|
if (type == 0)
|
|
{
|
|
strSql = @"SELECT CONVERT(varchar,[TestTime], 120) 时间
|
|
,[BarCode] 卷芯码
|
|
,[Result] 结果
|
|
,[Remark] 备注
|
|
,case when [Flag]=1 then '已上传' else '未上传' end 上传状态
|
|
FROM [dbo].[AGearEntity] where TestTime >= '" + strDate1 + "' and TestTime <= '" + strDate2 + "' ";
|
|
if (strBarCode != "")
|
|
{
|
|
strSql += " and BarCode like '%" + strBarCode + "' ";
|
|
}
|
|
}
|
|
else if (type == 1)
|
|
{
|
|
strSql = @"SELECT CONVERT(varchar,[CSBYHASCANNINGTIME], 120) 时间
|
|
,[CSBYHPROCESSNAME] 工序名
|
|
,[CSBYHSCHEDULE] 班次
|
|
,[A_B] 芯包
|
|
,[CSBYHCODEA] 卷芯码
|
|
,[CSBYHOUTSTATIONJUDGMENTRESULT] 出站判定结果
|
|
,[Remark] 备注
|
|
,[RethrowNum] 复投次数
|
|
,[CSBYHWEIGHTRESULTA1] 芯包重量判定结果
|
|
,[CSBYHTHICKNESSTESTJUDGERESULTA] 芯包测厚位移判定结果
|
|
,[ThicknessPressureResult] 芯包测厚压力判定结果
|
|
,[PreweldResult] 焊前CCD检测结果
|
|
,[CSBYHPOLARITYRESULTA] 芯包极性检测结果
|
|
,[CSBYHCUTADHESIONJUDGERESULTA] 电芯裁切粘连判定结果
|
|
,[CSBYHCUTBURRJUDGERESULTA] 电芯裁切毛刺判定结果
|
|
,[CSBYHSOLDERJUDGERESULTA] 芯包铜焊印位置判定结果
|
|
,[AluminiumWeldPositionResult1] 芯包铝焊印位置判定结果
|
|
,[PreweldResult] 焊前CCD检测结果
|
|
,[CSBYHFRONTEARCRACKLEJUDGERESULTA] 芯包正面极耳撕裂判定结果
|
|
,[CSBYHBACKEARCRACKLEJUDGERESULTA] 芯包背面极耳撕裂判定结果
|
|
,[CSBYHFRONTEARFLODINGRESULTA] 芯包正面极耳翻折检测结果
|
|
,[CSBYHBACKEARFLODINGRESULTA] 芯包背面极耳翻折检测结果
|
|
,[CSBYHCUTADHESIONRESULTA] 电芯裁切粘连结果
|
|
,[CSBYHCUTBURRRESULTA] 电芯裁切毛刺结果
|
|
,[CSBYHFRONTEARCRACKLERESULTA] 芯包正面极耳撕裂裂纹检测结果
|
|
,[CSBYHBACKEARCRACKLERESULTA] 芯包背面极耳撕裂裂纹检测结果
|
|
,[CSBYHWEIGHTNOA1] 芯包称重工位号
|
|
,[CSBYHTHICKNESSTESTSTATIONNOA] 芯包测厚工位号
|
|
,[CSBYHTOOLNOA] 芯包治具号
|
|
,[CSBYHCUWELDINGSTATIONNOA1] 芯包铜焊1工位号
|
|
,[CSBYHCUWELDINGSTATIONNOA2] 芯包铜焊2工位号
|
|
,[CSBYHCUWELDINGSTATIONNOA3] 芯包铜焊3工位号
|
|
,[CSBYHCUWELDHEADCOUNTA1] 芯包铜焊1焊头次数
|
|
,[CSBYHCUWELDHEADCOUNTA2] 芯包铜焊2焊头次数
|
|
,[CSBYHCUWELDHEADCOUNTA3] 芯包铜焊3焊头次数
|
|
,[CSBYHCUWELDBASECOUNTA1] 芯包铜焊1焊座次数
|
|
,[CSBYHCUWELDBASECOUNTA2] 芯包铜焊2焊座次数
|
|
,[CSBYHCUWELDBASECOUNTA3] 芯包铜焊3焊座次数
|
|
,[CSBYHALWELDINGSTATIONNOA1] 芯包铝焊1工位号
|
|
,[CSBYHALWELDINGSTATIONNOA2] 芯包铝焊2工位号
|
|
,[CSBYHALWELDINGSTATIONNOA3] 芯包铝焊3工位号
|
|
,[CSBYHALWELDHEADCOUNTA1] 芯包铝焊1焊头次数
|
|
,[CSBYHALWELDHEADCOUNTA2] 芯包铝焊2焊头次数
|
|
,[CSBYHALWELDHEADCOUNTA3] 芯包铝焊3焊头次数
|
|
,[CSBYHALWELDBASECOUNTA1] 芯包铝焊1焊座次数
|
|
,[CSBYHALWELDBASECOUNTA2] 芯包铝焊2焊座次数
|
|
,[CSBYHALWELDBASECOUNTA3] 芯包铝焊3焊座次数
|
|
,[CopperWeldHeadLife] 铜焊头预警寿命
|
|
,[CopperWeldSeatLife] 铜焊座预警寿命
|
|
,[AluminiumWeldHeadLife] 铝焊头预警寿命
|
|
,[AluminiumWeldSeatLife] 铝焊座预警寿命
|
|
,[CuttingKnifeLife] 裁切刀使用寿命
|
|
,[CSBYHCUTABCUTTERCOUNTA] 电芯铜极耳切刀使用次数
|
|
,[CSBYHALTABCUTTERCOUNTA] 电芯铝极耳切刀使用次数
|
|
,[CSBYHCUTABCUTTERNOA] 电芯铜极耳切刀编号
|
|
,[CSBYHALTABCUTTERNOA] 电芯铝极耳切刀编号
|
|
,[CSBYHINSTATIONTIME] 进站时间
|
|
,[CSBYHOUTSTATIONTIME] 出站时间
|
|
,[CSBYHWEIGHTA1] 芯包重量
|
|
,[CSBYHTHICKNESSTESTPRESSUREA] 芯包测厚压力实际值
|
|
,[CSBYHTHICKNESSTESTPRESSURESIZEA] 芯包测厚尺寸1
|
|
,[ThicknessMeasureDisplacement] 芯包测厚尺寸2
|
|
,[CSBYHCUTABLENGTHA] 电芯铜极极耳长度
|
|
,[CSBYHCUTABWIDTHA] 电芯铜极极耳宽度
|
|
,[CSBYHALTABLENGTHA] 电芯铝极极耳长度
|
|
,[CSBYHALTABWIDTHA] 电芯铝极极耳宽度
|
|
,[CSBYHTOPTOSOLDERDISTANCEA] 芯包铜顶部到焊印间距1
|
|
,[CSBYHTOPTOSOLDERDISTANCEA2] 芯包铜顶部到焊印间距2
|
|
,[AluminumToWeld1] 芯包铝顶部到焊印间距1
|
|
,[AluminumToWeld2] 芯包铝顶部到焊印间距2
|
|
,[CSBYHSOLDERTOEARDISTANCEA] 芯包焊印边缘到极耳边缘间距
|
|
,[CSBYHCUPRESSUREA1] 芯包铜焊1接压力实际值
|
|
,[CSBYHCUPOWERA1] 芯包铜焊1功率实际值
|
|
,[CSBYHCUENERGYA1] 芯包铜焊1能量实际值
|
|
,[CSBYHCUAMPLITUDEA1] 芯包铜焊1振幅实际值
|
|
,[CSBYHCUTIMEA1] 芯包铜焊1时间实际值
|
|
,[CSBYHCUPRESSUREA2] 芯包铜焊2压力实际值2
|
|
,[CSBYHCUPOWERA2] 芯包铜焊2功率A实际值
|
|
,[CSBYHCUENERGYA2] 芯包铜焊2接能量实际值
|
|
,[CSBYHCUAMPLITUDEA2] 芯包铜焊2振幅实际值
|
|
,[CSBYHCUTIMEA2] 芯包铜焊2时间实际值
|
|
,[CSBYHCUPRESSUREA3] 芯包铜焊3压力实际值
|
|
,[CSBYHCUPOWERA3] 芯包铜焊3功率A实际值
|
|
,[CSBYHCUENERGYA3] 芯包铜焊3能量实际值
|
|
,[CSBYHCUAMPLITUDEA3] 芯包铜焊3振幅实际值
|
|
,[CSBYHCUTIMEA3] 芯包铜焊3时间实际值
|
|
,[CSBYHALPRESSUREA1] 芯包铝焊1压力实际值
|
|
,[CSBYHALPOWERA1] 芯包铝焊1功率实际值
|
|
,[CSBYHALENERGYA1] 芯包铝焊1能量实际值
|
|
,[CSBYHALAMPLITUDEA1] 芯包铝焊1振幅实际值
|
|
,[CSBYHALTIMEA1] 芯包铝焊1时间实际值
|
|
,[CSBYHALPRESSUREA2] 芯包铝焊2压力实际值
|
|
,[CSBYHALPOWERA2] 芯包铝焊2功率实际值
|
|
,[CSBYHALENERGYA2] 芯包铝焊2能量实际值
|
|
,[CSBYHALAMPLITUDEA2] 芯包铝焊2振幅实际值
|
|
,[CSBYHALTIMEA2] 芯包铝焊2时间实际值
|
|
,[CSBYHALPRESSUREA3] 芯包铝焊3压力实际值
|
|
,[CSBYHALPOWERA3] 芯包铝焊3功率实际值
|
|
,[CSBYHALENERGYA3] 芯包铝焊3能量实际值
|
|
,[CSBYHALAMPLITUDEA3] 芯包铝焊3振幅实际值
|
|
,[CSBYHALTIMEA3] 芯包铝焊3时间实际值
|
|
,[CSBYHWEIGHTA1MAXSETTING] 芯包重量设定值最大值
|
|
,[CSBYHWEIGHTA1MINSETTING] 芯包重量设定值最小值
|
|
,[CSBYHTHICKNESSTESTPRESSUREMAXSETTINGA] 芯包侧厚压力设定最大值
|
|
,[CSBYHTHICKNESSTESTPRESSUREMINSETTINGA] 芯包侧厚压力设定最小值
|
|
,[CSBYHTHICKNESSTESTPRESSUREMAXSIZEA] 芯包侧厚最大尺寸
|
|
,[CSBYHTHICKNESSTESTPRESSUREMINSIZEA] 芯包侧厚最小尺寸
|
|
,[CSBYHCUWELDINGPRESSUREMAXSETTING1] 铜焊1压力设定最大值
|
|
,[CSBYHCUWELDINGPRESSUREMINSETTING] 铜焊1压力设定最小值
|
|
,[CSBYHCUWELDINGPOWERMAXSETTING1] 铜焊1功率设定值最大值
|
|
,[CSBYHCUWELDINGPOWERMINSETTING1] 铜焊1功率设定值最小值
|
|
,[CSBYHCUWELDINGENERGYMAXSETTING1] 铜焊1能量设定值最大值
|
|
,[CSBYHCUWELDINGENERGYMINSETTING1] 铜焊1能量设定值最小值
|
|
,[CSBYHCUWELDINGAMPLITUDEMAXSETTING1] 铜焊1振幅设定值最大值
|
|
,[CSBYHCUWELDINGAMPLITUDEMINSETTING1] 铜焊1振幅设定值最小值
|
|
,[CSBYHALWELDINGPRESSUREMAXSETTING1] 铝焊1压力设定值最大值
|
|
,[CSBYHALWELDINGPRESSUREMINSETTING] 铝焊1压力设定值最小值
|
|
,[CSBYHALWELDINGPOWERMAXSETTING1] 铝焊1功率设定值最大值
|
|
,[CSBYHALWELDINGPOWERMINSETTING1] 铝焊1功率设定值最小值
|
|
,[CSBYHALWELDINGENERGYMAXSETTING1] 铝焊1能量设定值最大值
|
|
,[CSBYHALWELDINGENERGYMINSETTING1] 铝焊1能量设定值最小值
|
|
,[CSBYHALWELDINGAMPLITUDEMAXSETTING1] 铝焊1振幅设定值最大值
|
|
,[CSBYHALWELDINGAMPLITUDEMINSETTING1] 铝焊1振幅设定值最小值
|
|
,[Result] 结果
|
|
,case when [Flag]=1 then '已上传' else '未上传' end 上传状态
|
|
FROM [dbo].[BGearEntity] where CSBYHASCANNINGTIME >= '" + strDate1 + "' and CSBYHASCANNINGTIME <= '" + strDate2 + "' ";
|
|
if (strBarCode != "")
|
|
{
|
|
strSql += " and CSBYHCODEA like '%" + strBarCode + "' ";
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CommonMethods.AddLog(true, ex.Message);
|
|
}
|
|
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查询报警历史数据
|
|
/// </summary>
|
|
/// <param name="start"></param>
|
|
/// <param name="end"></param>
|
|
/// <param name="alarmType"></param>
|
|
/// <returns></returns>
|
|
public string SelectHostAlarmData(string start, string end, string alarmType)
|
|
{
|
|
string strSql = "";
|
|
if (alarmType == "全天")
|
|
{
|
|
strSql = @"SELECT
|
|
CONVERT(varchar,[AlarmTime], 120) 时间
|
|
,[PLCAdress] 报警地址
|
|
,[AlarmContent] 报警信息
|
|
,[AlarmCount] 报警次数
|
|
,[Class] 班次
|
|
FROM [dbo].[AlarmCountEntry] where AlarmTime >= '" + start + "' and AlarmTime <= '" + end + "' ";
|
|
|
|
}
|
|
else if (alarmType == "白班")
|
|
{
|
|
strSql = @"SELECT
|
|
CONVERT(varchar,[AlarmTime], 120) 时间
|
|
,[PLCAdress] 报警地址
|
|
,[AlarmContent] 报警信息
|
|
,[AlarmCount] 报警次数
|
|
,[Class] 班次
|
|
FROM [dbo].[AlarmCountEntry] where AlarmTime >= '" + start + "' and AlarmTime <= '" + end + "' and Class='白班'";
|
|
}
|
|
else
|
|
{
|
|
strSql = @"SELECT
|
|
CONVERT(varchar,[AlarmTime], 120) 时间
|
|
,[PLCAdress] 报警地址
|
|
,[AlarmContent] 报警信息
|
|
,[AlarmCount] 报警次数
|
|
,[Class] 班次
|
|
FROM [dbo].[AlarmCountEntry] where AlarmTime >= '" + start + "' and AlarmTime <= '" + end + "' and Class='夜班'";
|
|
}
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 按日统计
|
|
/// </summary>
|
|
/// <param name="startDateTime"></param>
|
|
/// <param name="endDateTime"></param>
|
|
/// <returns></returns>
|
|
public string GetStaticByDay(string startDateTime, string endDateTime)
|
|
{
|
|
string strSql = $@" SELECT CONVERT(varchar(13),TestTime,120) 时间, ProdIn 总数, ProdOut OK总数,Ppm PPM均值,
|
|
cast(ROUND(JiaDL*100,1)as nvarchar(10))+'%' 稼动率均值,
|
|
cast(case when ProdIn>0 then (ROUND(cast(isnull(ProdOut,0) as float)/cast(isnull(ProdIn,0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率
|
|
FROM Hourprod WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}' GROUP BY TestTime,ProdOut,ProdIn,Ppm,JiaDL
|
|
UNION ALL
|
|
SELECT '合计' as '时间', ProdIn '总数', ProdOut 'OK总数',Ppm 'PPM均值' ,JiaDL '稼动率均值',优率 as '优率' FROM (SELECT FDate,sum(ProdIn) ProdIn, SUM(ProdOut) ProdOut,AVG(PPM) Ppm,
|
|
cast(ROUND(AVG(JiaDL)*100,1) as nvarchar(10))+'%' JiaDL,
|
|
cast(case when (sum(ProdIn))>0 then (ROUND(cast(isnull(sum(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率 FROM Hourprod
|
|
WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}' GROUP BY FDate) as t ";
|
|
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 按周查询
|
|
/// </summary>
|
|
/// <param name="startDateTime"></param>
|
|
/// <param name="endDateTime"></param>
|
|
/// <returns></returns>
|
|
public string GetStaticByWeek(string startDateTime, string endDateTime)
|
|
{
|
|
string strSql = $@" SELECT convert(char(10), TestTime, 120) 月份, sum(ProdIn) 总数, sum(ProdOut) OK总数,AVG(Ppm) PPM均值,
|
|
cast(ROUND(JiaDL*100,1)as nvarchar(10))+'%' 稼动率均值,
|
|
cast(case when sum(ProdIn)>0 then (ROUND(cast(isnull(SUM(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率
|
|
FROM Hourprod WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}' GROUP BY convert(char(10), TestTime, 120),JiaDL
|
|
UNION ALL
|
|
SELECT '合计' as '月份', ProdIn '总数', ProdOut 'OK总数',Ppm 'PPM均值' ,JiaDL '稼动率均值',优率 as '优率' FROM (SELECT sum(ProdIn) ProdIn, SUM(ProdOut) ProdOut,AVG(Ppm) Ppm,
|
|
cast(ROUND(AVG(JiaDL)*100,1) as nvarchar(10))+'%' JiaDL,
|
|
cast(case when (sum(ProdIn))>0 then (ROUND(cast(isnull(sum(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10))+'%' 优率 FROM Hourprod
|
|
WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}') as t ";
|
|
return strSql;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 按月查询
|
|
/// </summary>
|
|
/// <param name="startDateTime"></param>
|
|
/// <param name="endDateTime"></param>
|
|
/// <returns></returns>
|
|
public string GetStaticByMonth(string startDateTime, string endDateTime)
|
|
{
|
|
string strSql = $@" SELECT convert(char(7), TestTime, 120) 月份, sum(ProdIn) 总数, sum(ProdOut) OK总数,AVG(Ppm) PPM均值,
|
|
cast(ROUND(JiaDL*100,1)as nvarchar(10))+'%' 稼动率均值,
|
|
cast(case when sum(ProdIn)>0 then (ROUND(cast(isnull(SUM(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率
|
|
FROM Hourprod WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}' GROUP BY convert(char(7), TestTime, 120),JiaDL
|
|
UNION ALL
|
|
SELECT '合计' as '月份', ProdIn '总数', ProdOut 'OK总数',Ppm 'PPM均值' ,JiaDL '稼动率均值',优率 as '优率' FROM (SELECT sum(ProdIn) ProdIn, SUM(ProdOut) ProdOut,AVG(Ppm) Ppm,
|
|
cast(ROUND(AVG(JiaDL)*100,1) as nvarchar(10))+'%' JiaDL,
|
|
cast(case when (sum(ProdIn))>0 then (ROUND(cast(isnull(sum(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10))+'%' 优率 FROM Hourprod
|
|
WHERE TestTime BETWEEN '{startDateTime}' AND '{endDateTime}') as t ";
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 按班次统计
|
|
/// </summary>
|
|
/// <param name="dateTime"></param>
|
|
/// <param name="shift"></param>
|
|
/// <param name="changeShiftTime"></param>
|
|
/// <returns></returns>
|
|
public string GetStaticByShift(DateTime dateTime, string shift, string changeShiftTime)
|
|
{
|
|
string sDateTime1 = string.Empty;
|
|
string sDateTime2 = string.Empty;
|
|
if (shift == "白班")
|
|
{
|
|
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 CONVERT(varchar(13),TestTime,120) 时间, ProdIn 总数, ProdOut OK总数,Ppm PPM均值,
|
|
cast(ROUND(JiaDL*100,1)as nvarchar(10))+'%' 稼动率均值,
|
|
cast(case when ProdIn>0 then (ROUND(cast(isnull(ProdOut,0) as float)/cast(isnull(ProdIn,0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率
|
|
FROM Hourprod WHERE TestTime BETWEEN '{sDateTime1}' AND '{sDateTime2}' GROUP BY TestTime,ProdOut,ProdIn,Ppm,JiaDL
|
|
UNION ALL
|
|
SELECT '合计' as '时间', ProdIn '总数', ProdOut 'OK总数',Ppm 'PPM均值' ,JiaDL '稼动率均值',优率 as '优率' FROM (SELECT FDate,sum(ProdIn) ProdIn, SUM(ProdOut) ProdOut,AVG(Ppm) Ppm,
|
|
cast(ROUND(AVG(JiaDL)*100,1) as nvarchar(10))+'%' JiaDL,
|
|
cast(case when (sum(ProdIn))>0 then (ROUND(cast(isnull(sum(ProdOut),0) as float)/cast(isnull(sum(ProdIn),0) as float)*100,2)) else 0 end as nvarchar(10) )+'%' 优率 FROM Hourprod
|
|
WHERE TestTime BETWEEN '{sDateTime1}' AND '{sDateTime2}' GROUP BY FDate) as t ";
|
|
return strsql;
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 获取最新的数据
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取进站信息
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
public string GetInTime(string strBarCode)
|
|
{
|
|
string strSql = $@"SELECT [TestTime]
|
|
,[BarCode]
|
|
,[Result]
|
|
,[Remark]
|
|
FROM [dbo].[AGearEntity]
|
|
WHERE BarCode = '{strBarCode}'
|
|
ORDER BY TestTime ASC";
|
|
|
|
return strSql;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取挑战件条码列表
|
|
/// </summary>
|
|
/// <param name="strProdType"></param>
|
|
/// <returns></returns>
|
|
public string GetChallengeCode(string strProdType = "")
|
|
{
|
|
string strSql = @"SELECT * FROM Challenge ";
|
|
if (strProdType != "")
|
|
{
|
|
strSql += string.Format(" where ChallengeBarCode='{0}'", strProdType);
|
|
}
|
|
strSql += " order by ChallengeBarCode";
|
|
return strSql;
|
|
}
|
|
|
|
}
|
|
}
|