using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using QMFrameWork.Data; using QMAPP.MESReport.Entity.LineQTY; using QMAPP.DAL; using System.Data; using QMAPP.Entity.QueryTL; using QMAPP.MD.DAL; using QMAPP.MD.Entity; using QMFrameWork.Log; namespace QMAPP.MESReport.DAL.LineQTY { /// /// 生产完成率分析 /// 于子清 /// 2017-10-23 /// public class QTYCompletionRateDAL : BaseDAL { public List GetAllListOld(QTYCompletionRateDModel condition) { List list = new List(); string sql = null; List parameters = new List(); try { sql = this.GetQuerySql(condition, ref parameters); using (IDataSession session = AppDataFactory.CreateMainSession()) { list = session.GetList(sql, parameters.ToArray()).ToList(); } return list; } catch (Exception ex) { throw ex; } } public List GetAllListNew1(QTYCompletionRateDModel condition) { List list = new List(); string sql = null; //20180123周晓东-增加班次查询条件 var shiftList = new FJC.DAL.Basic.ProduceShiftDAL().GetList(new FJC.Entity.Basic.ProduceShift()); DateTime startDate = new DateTime(); DateTime endDate = new DateTime(); var shiftCode = ""; foreach (var shift in shiftList) { startDate = Convert.ToDateTime(shift.PSSTART.ToString("HH:mm:ss")); endDate = Convert.ToDateTime(shift.PSEND.ToString("HH:mm:ss")); var now = Convert.ToDateTime(DateTime.Now.ToString("HH:mm:ss")); shiftCode = shift.PRODUCESHIFTTCODE; if (DateTime.Compare(now, startDate) > 0 && DateTime.Compare(endDate, now) > 0) { break; } } var dstart = startDate.ToString("yyyy-MM-dd HH:mm:ss"); var dend = endDate.ToString("yyyy-MM-dd HH:mm:ss"); var dday = DateTime.Now.ToString("yyyy-MM-dd"); //测试数据 //dstart = "2018/01/15 07:30:01"; //dend = "2018/01/15 16:30:00"; List parameters = new List(); try { using (IDataSession session = AppDataFactory.CreateMainSession()) { //查出T_AW_MAINOPERATION表里的注塑件完成数量 sql = "SELECT count([PID]) as COMPLETE_QTY,MATERIAL_CODE FROM T_AW_MAINOPERATION where CREATEDATE>'" + dstart + "' and CREATEDATE<'" + dend + "' and WORKCENTER_CODE='INJECTION_AREA' group by MATERIAL_CODE order by MATERIAL_CODE"; var pmList = session.GetList(sql, parameters.ToArray()); LogManager.LogHelper.Info(new LogInfo() { Tag = "注塑件完成数量", Info = sql }); //查出T_PP_ORDERPLAN表里的注塑件计划数量 sql = "select sum(QTY) as QTY,MATERIAL_CODE from T_PP_ORDERPLAN where DATEDIFF(DAY,PLAN_DATE,'" + dday + "')=0 and SHIFT_CODE='" + shiftCode + "' and WORKCENTER_CODE='INJECTION_AREA' group by MATERIAL_CODE order by MATERIAL_CODE"; var opList = session.GetList(sql, parameters.ToArray()); LogManager.LogHelper.Info(new LogInfo() { Tag = "注塑件计划数量", Info = sql }); List materialList= new MaterialDAL().GetMaterialList(new Material()); //添加完成数量 if (pmList != null && pmList.Count>0) { foreach (var item in pmList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } if (opList != null && opList.Count > 0) { var item_ORDERPLAN = opList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); //计划数量 if (item_ORDERPLAN != null) { item.QTY = item_ORDERPLAN.QTY; //移除重复的MATERIAL_CODE opList.Remove(item_ORDERPLAN); } } list.Add(item); } } //添加完成数量list里没有的MATERIAL_CODE if (opList != null && opList.Count>0) { foreach (var item in opList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } list.Add(item); } } } return list; } catch (Exception ex) { throw ex; } } public List GetAllListNew2(QTYCompletionRateDModel condition) { List list = new List(); string sql = null; //20180123周晓东-增加班次查询条件 var shiftList = new ShiftDAL().GetAllShift(new Shift__()); DateTime startDate = new DateTime(); DateTime endDate = new DateTime(); var shiftCode = ""; foreach (var shift in shiftList) { startDate = Convert.ToDateTime(shift.WORK_START_TIME.ToString("HH:mm:ss")); endDate = Convert.ToDateTime(shift.WORK_END_TIME.ToString("HH:mm:ss")); var now = Convert.ToDateTime(DateTime.Now.ToString("HH:mm:ss")); shiftCode = shift.SHIFT_CODE; if (DateTime.Compare(now, startDate) > 0 && DateTime.Compare(endDate, now) > 0) { break; } } var dstart = startDate.ToString("yyyy-MM-dd HH:mm:ss"); var dend = endDate.ToString("yyyy-MM-dd HH:mm:ss"); var dday = DateTime.Now.ToString("yyyy-MM-dd"); //测试数据 //dstart = "2018/01/15 07:30:01"; //dend = "2018/01/15 16:30:00"; List parameters = new List(); try { using (IDataSession session = AppDataFactory.CreateMainSession()) { //查出T_AW_MAIN表里的门板件完成数量 //sql = "SELECT count([PID]) as COMPLETE_QTY,MATERIAL_CODE FROM T_AW_PRODUCT where CREATEDATE>'" + dstart + "' and CREATEDATE<'" + dend + "' and WORKCENTER_CODE='BORADPASSY' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') group by MATERIAL_CODE"; //修改-闫&张 20180227 sql = "SELECT count(1) as COMPLETE_QTY,T_AW_PRODUCT.MATERIAL_CODE FROM T_AW_PRODUCT left join T_MD_MATERIAL M ON T_AW_PRODUCT.MATERIAL_CODE=M.MATERIAL_CODE where T_AW_PRODUCT.CREATEDATE>'" + dstart + "' and T_AW_PRODUCT.CREATEDATE<'" + dend + "' and M.PROJECTCODE='VW371 DP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') group by T_AW_PRODUCT.MATERIAL_CODE,M.COLOR,M.HBTYPE order by M.COLOR,M.HBTYPE,T_AW_PRODUCT.MATERIAL_CODE"; var pmList = session.GetList(sql, parameters.ToArray()); LogManager.LogHelper.Info(new LogInfo() { Tag = "门板件完成数量", Info = sql }); //查出T_PP_ORDERPLAN表里的门板件计划数量 //sql = "select sum(QTY) as QTY,MATERIAL_CODE from T_PP_ORDERPLAN where PLAN_DATE>'" + dstart + "' and PLAN_DATE<'" + dend + "' and WORKCENTER_CODE='BORADPASSY' group by MATERIAL_CODE"; //修改-闫&张 20180227 sql = "select sum(QTY) as QTY,T_PP_ORDERPLAN.MATERIAL_CODE from T_PP_ORDERPLAN INNER join T_MD_MATERIAL M ON T_PP_ORDERPLAN.MATERIAL_CODE=M.MATERIAL_CODE where DATEDIFF(DAY,PLAN_DATE,'" + dday + "')=0 and SHIFT_CODE='" + shiftCode + "' and M.PROJECTCODE='VW371 DP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=M.MATERIAL_TYPE_CODE and mc.MATERIAL_ATTRIBUTE='2') group by T_PP_ORDERPLAN.MATERIAL_CODE,M.COLOR,M.HBTYPE order by M.COLOR,M.HBTYPE,T_PP_ORDERPLAN.MATERIAL_CODE"; var opList = session.GetList(sql, parameters.ToArray()); LogManager.LogHelper.Info(new LogInfo() { Tag = "门板件计划数量", Info = sql }); List materialList = new MaterialDAL().GetMaterialList(new Material()); //添加完成数量 if (pmList != null && pmList.Count > 0) { foreach (var item in pmList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } if (opList != null && opList.Count > 0) { var item_ORDERPLAN = opList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); //计划数量 if (item_ORDERPLAN != null) { item.QTY = item_ORDERPLAN.QTY; //移除重复的MATERIAL_CODE opList.Remove(item_ORDERPLAN); } } list.Add(item); } } //添加完成数量list里没有的MATERIAL_CODE if (opList != null && opList.Count > 0) { foreach (var item in opList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } list.Add(item); } } } return list; } catch (Exception ex) { throw ex; } } public List GetAllListNew3(QTYCompletionRateDModel condition) { List list = new List(); string sql = null; //20180123周晓东-增加班次查询条件 var shiftList = new ShiftDAL().GetAllShift(new Shift__()); DateTime startDate = new DateTime(); DateTime endDate = new DateTime(); var shiftCode = ""; foreach (var shift in shiftList) { startDate = Convert.ToDateTime(shift.WORK_START_TIME.ToString("HH:mm:ss")); endDate = Convert.ToDateTime(shift.WORK_END_TIME.ToString("HH:mm:ss")); var now = Convert.ToDateTime(DateTime.Now.ToString("HH:mm:ss")); shiftCode = shift.SHIFT_CODE; if (DateTime.Compare(now, startDate) > 0 && DateTime.Compare(endDate, now) > 0) { break; } } var dstart = startDate.ToString("yyyy-MM-dd HH:mm:ss"); var dend = endDate.ToString("yyyy-MM-dd HH:mm:ss"); var dday = DateTime.Now.ToString("yyyy-MM-dd"); //测试数据 //dstart = "2018/01/23 07:30:01"; //dend = "2018/01/23 16:30:00"; List parameters = new List(); try { using (IDataSession session = AppDataFactory.CreateMainSession()) { //查出T_AW_MAIN表里的仪表板件完成数量 //sql = "SELECT count([PID]) as COMPLETE_QTY,MATERIAL_CODE FROM T_AW_MAIN where CREATEDATE>'" + dstart + "' and CREATEDATE<'" + dend + "' and WORKCENTER_CODE='BORAIPASSY' group by MATERIAL_CODE"; //修改-闫&张 20180227 sql = "SELECT count(1) as COMPLETE_QTY,T_AW_PRODUCT.MATERIAL_CODE FROM T_AW_PRODUCT left join T_MD_MATERIAL M ON T_AW_PRODUCT.MATERIAL_CODE=M.MATERIAL_CODE where T_AW_PRODUCT.CREATEDATE>'" + dstart + "' and T_AW_PRODUCT.CREATEDATE<'" + dend + "' and M.PROJECTCODE='VW371 IP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') group by T_AW_PRODUCT.MATERIAL_CODE,M.COLOR,M.HBTYPE order by M.COLOR,M.HBTYPE,T_AW_PRODUCT.MATERIAL_CODE"; var pmList = session.GetList(sql, parameters.ToArray()); //记录日志 LogManager.LogHelper.Info(new LogInfo() { UserName = "仪表板件完成数量", Info = sql }); //查出T_PP_ORDERPLAN表里的仪表板计划数量 //sql = "select sum(QTY) as QTY,MATERIAL_CODE from T_PP_ORDERPLAN where PLAN_DATE>'" + dstart + "' and PLAN_DATE<'" + dend + "' and WORKCENTER_CODE='BORAIPASSY' group by MATERIAL_CODE"; //修改-闫&张 20180227 sql = "select sum(QTY) as QTY,T_PP_ORDERPLAN.MATERIAL_CODE from T_PP_ORDERPLAN INNER join T_MD_MATERIAL M ON T_PP_ORDERPLAN.MATERIAL_CODE=M.MATERIAL_CODE where DATEDIFF(DAY,PLAN_DATE,'" + dday + "')=0 and SHIFT_CODE='" + shiftCode + "' and M.PROJECTCODE='VW371 IP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=M.MATERIAL_TYPE_CODE and mc.MATERIAL_ATTRIBUTE='2') group by T_PP_ORDERPLAN.MATERIAL_CODE,M.COLOR,M.HBTYPE order by M.COLOR,M.HBTYPE,T_PP_ORDERPLAN.MATERIAL_CODE"; var opList = session.GetList(sql, parameters.ToArray()); LogManager.LogHelper.Info(new LogInfo() { Tag = "仪表板件计划数量", Info = sql }); List materialList = new MaterialDAL().GetMaterialList(new Material()); //添加完成数量 if (pmList != null && pmList.Count > 0) { foreach (var item in pmList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } if (opList != null && opList.Count > 0) { var item_ORDERPLAN = opList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); //计划数量 if (item_ORDERPLAN != null) { item.QTY = item_ORDERPLAN.QTY; //移除重复的MATERIAL_CODE opList.Remove(item_ORDERPLAN); } } list.Add(item); } } //添加完成数量list里没有的MATERIAL_CODE if (opList != null && opList.Count > 0) { foreach (var item in opList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } list.Add(item); } } } return list; } catch (Exception ex) { throw ex; } } public List GetAllList(QTYCompletionRateDModel condition) { List list = new List(); string sql = null; List parameters = new List(); try { var workcenter = ""; var sqltemp1 = ""; var sqltemp2 = ""; if (string.IsNullOrEmpty(condition.WORKCENTER_CODE)) { return list; } if (condition.WORKCENTER_CODE == "0") { workcenter = "INJECTION_AREA"; sqltemp1 = "SELECT count(1) as COMPLETE_QTY,MATERIAL_CODE FROM T_AW_MAINOPERATION M where WORKCENTER_CODE='INJECTION_AREA' "; sqltemp2 = "select sum(QTY) as QTY,MATERIAL_CODE from T_PP_ORDERPLAN M where WORKCENTER_CODE='INJECTION_AREA' "; } else if (condition.WORKCENTER_CODE == "1") { workcenter = "VW371_DPASSYLINE"; sqltemp1 = "SELECT count(1) as COMPLETE_QTY ,M.MATERIAL_CODE FROM T_AW_PRODUCT M left join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where M.WORKCENTER_CODE='VW371_DPASSYLINE' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') "; sqltemp2 = "select sum(QTY) as QTY,M.MATERIAL_CODE from T_PP_ORDERPLAN M INNER join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where M.WORKCENTER_CODE='VW371_DPASSYLINE' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=TM.MATERIAL_TYPE_CODE and mc.MATERIAL_ATTRIBUTE='2')"; } else if (condition.WORKCENTER_CODE == "2") { workcenter = "BORAIPASSY"; sqltemp1 = "SELECT count(1) as COMPLETE_QTY ,M.MATERIAL_CODE FROM T_AW_PRODUCT M left join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where TM.PROJECTCODE='VW331/5CN IP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') "; sqltemp2 = "select sum(QTY) as QTY,M.MATERIAL_CODE from T_PP_ORDERPLAN M INNER join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where TM.PROJECTCODE='VW331/5CN IP' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=TM.MATERIAL_TYPE_CODE and mc.MATERIAL_ATTRIBUTE='2') "; } else { workcenter = condition.WORKCENTER_CODE; sqltemp1 = "SELECT count(1) as COMPLETE_QTY ,M.MATERIAL_CODE FROM T_AW_PRODUCT M left join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where M.WORKCENTER_CODE='" + condition.WORKCENTER_CODE + "' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=MATERIAL_TYPE and mc.MATERIAL_ATTRIBUTE='2') "; sqltemp2 = "select sum(QTY) as QTY,M.MATERIAL_CODE from T_PP_ORDERPLAN M INNER join T_MD_MATERIAL TM ON M.MATERIAL_CODE=TM.MATERIAL_CODE where M.WORKCENTER_CODE='" + condition.WORKCENTER_CODE + "' and exists(select 1 from T_MD_MATERIAL_CLASS mc where mc.MATERIAL_TYPE_CODE=TM.MATERIAL_TYPE_CODE and mc.MATERIAL_ATTRIBUTE='2') "; } if (string.IsNullOrEmpty(condition.START_DATE) == false && string.IsNullOrEmpty(condition.END_DATE) == false) { var startDate = condition.START_DATE +" 00:00:00"; var endDate = condition.END_DATE + " 23:59:59"; sqltemp1 += " and m.CREATEDATE >= '" + startDate + "' and m.CREATEDATE <= '" + endDate + "' group by M.MATERIAL_CODE "; sqltemp2 += " and m.PLAN_DATE >= '" + startDate + "' and m.PLAN_DATE <= '" + endDate + "' group by M.MATERIAL_CODE "; } using (IDataSession session = AppDataFactory.CreateMainSession()) { sql = sqltemp1; var pmList = session.GetList(sql, parameters.ToArray()); sql = sqltemp2; var opList = session.GetList(sql, parameters.ToArray()); List materialList = new MaterialDAL().GetMaterialList(new Material()); //添加完成数量 if (pmList != null && pmList.Count > 0) { foreach (var item in pmList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } if (opList != null && opList.Count > 0) { var item_ORDERPLAN = opList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); //计划数量 if (item_ORDERPLAN != null) { item.QTY = item_ORDERPLAN.QTY; //移除重复的MATERIAL_CODE opList.Remove(item_ORDERPLAN); } } list.Add(item); } } //添加完成数量list里没有的MATERIAL_CODE if (opList != null && opList.Count > 0) { foreach (var item in opList) { //零件名称 if (!string.IsNullOrEmpty(item.MATERIAL_CODE)) { var material = materialList.FirstOrDefault(x => x.MATERIAL_CODE == item.MATERIAL_CODE); if (material != null) { item.MATERIAL_NAME = material.MATERIAL_NAME; item.MATERIAL_SHORT = material.MATERIAL_SHORT; if (string.IsNullOrEmpty(material.MATERIAL_SHORT)) { item.MATERIAL_SHORT = material.MATERIAL_CODE; } } } list.Add(item); } } } return list; } catch (Exception ex) { throw ex; } } #region 获取查询语句 /// /// 获取查询语句 /// /// 查询条件 /// 参数 /// 查询语句 private string GetQuerySql(QTYCompletionRateDModel condition, ref List parameters) { StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder2 = new StringBuilder(); StringBuilder whereBuilder = new StringBuilder(); try { string group = " group by day(tppo.PLAN_DATE),year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) order by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) "; //构成查询语句 if (condition.TYPE_COUNT=="MONTH") { //月统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,month(tppo.PLAN_DATE) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); group = " group by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) order by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE)"; } else if (condition.TYPE_COUNT=="WEEK") { //周统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE)) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); group = " group by year(tppo.PLAN_DATE),DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE)) order by year(tppo.PLAN_DATE),DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE))"; } else { //日统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,month(tppo.PLAN_DATE) tmonth, day(tppo.PLAN_DATE) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); } if (string.IsNullOrEmpty(condition.START_DATE) == false) { whereBuilder.Append(" AND tppo.PLAN_DATE >= @START_DATE "); parameters.Add(new DataParameter { ParameterName = "START_DATE", DataType = DbType.DateTime, Value = condition.START_DATE }); } if (string.IsNullOrEmpty(condition.END_DATE) == false) { whereBuilder.Append(" AND tppo.PLAN_DATE <= @END_DATE "); parameters.Add(new DataParameter { ParameterName = "END_DATE", DataType = DbType.DateTime, Value = condition.END_DATE }); } if (string.IsNullOrEmpty(condition.MATERIAL_CODE) == false) { whereBuilder.Append(" AND tppo.MATERIAL_CODE = @MATERIAL_CODE "); parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = condition.MATERIAL_CODE }); } //2018/1/16闫永刚 //暂时增加仪表板查询 whereBuilder.Append(" AND tppo.workcenter_code='BORAIPASSY'"); if (whereBuilder.Length > 0) { sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4)); } sqlBuilder.Append(group); return sqlBuilder.ToString(); } catch (Exception ex) { throw ex; } } private string GetQuerySqlNew(QTYCompletionRateDModel condition, ref List parameters) { StringBuilder sqlBuilder = new StringBuilder(); StringBuilder sqlBuilder2 = new StringBuilder(); StringBuilder whereBuilder = new StringBuilder(); try { string group = " group by day(tppo.PLAN_DATE),year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) order by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) "; //构成查询语句 if (condition.TYPE_COUNT == "MONTH") { //月统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,month(tppo.PLAN_DATE) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); group = " group by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE) order by year(tppo.PLAN_DATE),month(tppo.PLAN_DATE)"; } else if (condition.TYPE_COUNT == "WEEK") { //周统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE)) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); group = " group by year(tppo.PLAN_DATE),DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE)) order by year(tppo.PLAN_DATE),DateName(week,DATEADD(DAY,-1,tppo.PLAN_DATE))"; } else { //日统计 sqlBuilder.AppendLine("select year(tppo.PLAN_DATE) tyear,month(tppo.PLAN_DATE) tmonth, day(tppo.PLAN_DATE) tday,sum(COMPLETE_QTY) COMPLETE_QTY,sum(QTY) QTY from T_PP_ORDERPLAN tppo "); } if (string.IsNullOrEmpty(condition.START_DATE) == false) { whereBuilder.Append(" AND tppo.PLAN_DATE >= @START_DATE "); parameters.Add(new DataParameter { ParameterName = "START_DATE", DataType = DbType.DateTime, Value = condition.START_DATE }); } if (string.IsNullOrEmpty(condition.END_DATE) == false) { whereBuilder.Append(" AND tppo.PLAN_DATE <= @END_DATE "); parameters.Add(new DataParameter { ParameterName = "END_DATE", DataType = DbType.DateTime, Value = condition.END_DATE }); } if (string.IsNullOrEmpty(condition.MATERIAL_CODE) == false) { whereBuilder.Append(" AND tppo.MATERIAL_CODE = @MATERIAL_CODE "); parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = condition.MATERIAL_CODE }); } //2018/1/16闫永刚 //暂时增加仪表板查询 whereBuilder.Append(" AND tppo.workcenter_code='BORAIPASSY'"); //20180123周晓东-增加班次查询条件 var shiftList = new ShiftDAL().GetAllShift(new Shift__()); //var shiftCode = ""; foreach (var shift in shiftList) { var wst = Convert.ToDateTime(shift.WORK_START_TIME.ToString("HH:mm:ss")); var wet = Convert.ToDateTime(shift.WORK_END_TIME.ToString("HH:mm:ss")); var now = Convert.ToDateTime(DateTime.Now.ToString("HH:mm:ss")); if (DateTime.Compare(now, wst)>0 && DateTime.Compare(wet, now)>0) { whereBuilder.Append(" AND tppo.SHIFT_CODE='" + shift.SHIFT_CODE + "'"); break; } } if (whereBuilder.Length > 0) { sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4)); } sqlBuilder.Append(group); return sqlBuilder.ToString(); } catch (Exception ex) { throw ex; } } #endregion #region 获取导出的数据 /// /// 获取导出的数据 /// /// 查询条件 /// 数据 public DataTable GetExportData(QTYCompletionRateDModel model) { var workcenter = "注塑"; if (model.WORKCENTER_CODE == "1") { workcenter = "门板"; } else if (model.WORKCENTER_CODE == "2") { workcenter = "仪表板"; } var list = GetAllList(model); foreach (var lq in list) { lq.WORKCENTER_NAME = workcenter; } return CopyToDataTable(list); //DataTable dt = null; //string sql = null; //List parameters = new List(); //try //{ // //构成查询语句 // sql = this.GetQuerySql(model, ref parameters); // using (IDataSession session = AppDataFactory.CreateMainSession()) // { // dt = session.GetTable(sql, parameters.ToArray()); // dt.TableName = "ProductInExp"; // } // return dt; //} //catch (Exception ex) //{ // LogManager.LogHelper.Error(new LogInfo() // { // ErrorInfo = ex, // Tag = ex.StackTrace, // Info = "导出获取数据错误!" // }); // throw ex; //} } //把list转换成DataTable public static DataTable CopyToDataTable(IEnumerable array) { var ret = new DataTable(); foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T))) ret.Columns.Add(dp.Name); foreach (T item in array) { var Row = ret.NewRow(); foreach (PropertyDescriptor dp in TypeDescriptor.GetProperties(typeof(T))) Row[dp.Name] = dp.GetValue(item); ret.Rows.Add(Row); } return ret; } #endregion } }