using System; using System.Collections.Generic; using System.Linq; using System.Text; using QMFrameWork.Data; using QMAPP.MESReport.Entity.LineQTY; using QMAPP.DAL; using System.Data; namespace QMAPP.MESReport.DAL.LineQTY { /// <summary> /// 生产统计 /// 于子清 /// 2017-10-18 /// </summary> public class QTYInfoCountDAL : BaseDAL { /// <summary> /// 生产统计 /// </summary> /// <param name="condition"></param> /// <returns></returns> public List<QTYInfoCountDModel> GetAllList(QTYInfoCountDModel condition) { List<QTYInfoCountDModel> list = new List<QTYInfoCountDModel>(); string sql = null; List<DataParameter> parameters = new List<DataParameter>(); try { sql = this.GetQuerySql(condition, ref parameters); using (IDataSession session = AppDataFactory.CreateMainSession()) { list = session.GetList<QTYInfoCountDModel>(sql, parameters.ToArray()).ToList(); } return list; } catch (Exception ex) { throw ex; } } #region 获取查询语句 /// <summary> /// 获取查询语句 /// </summary> /// <param name="user">查询条件</param> /// <param name="parameters">参数</param> /// <returns>查询语句</returns> private string GetQuerySql(QTYInfoCountDModel condition, ref List<DataParameter> parameters) { StringBuilder sqlBuilder = new StringBuilder(); StringBuilder groupBuilder = new StringBuilder(); StringBuilder whereBuilder = new StringBuilder(); try { sqlBuilder.AppendLine("SELECT M.MATERIAL_SHORT as MATERIAL_NAME"); sqlBuilder.AppendLine(" ,C.[MATRIAL_CODE] AS [MATERIAL_CODE] "); sqlBuilder.AppendLine(" ,SUM(C.[QTY]) AS [QTY] "); groupBuilder.AppendLine(" GROUP BY M.MATERIAL_SHORT "); groupBuilder.AppendLine(" ,C.[MATRIAL_CODE] "); //构成查询语句 if (condition.TYPE_COUNT=="WEEK") { sqlBuilder.AppendLine(" ,DATENAME(WEEK,DATEADD(DAY,-1,C.[STATIS_DATE])) AS TDAY "); groupBuilder.AppendLine(" ,DATENAME(WEEK,DATEADD(DAY,-1,C.[STATIS_DATE])) "); } else if (condition.TYPE_COUNT=="MONTH") { sqlBuilder.AppendLine(" ,MONTH(C.[STATIS_DATE]) AS TDAY "); groupBuilder.AppendLine(" ,MONTH(C.[STATIS_DATE]) "); } else { sqlBuilder.AppendLine(" ,DAY(C.[STATIS_DATE]) AS TDAY "); groupBuilder.AppendLine(" ,DAY(C.[STATIS_DATE]) "); } sqlBuilder.AppendLine(" FROM [T_SA_WORKCELLQTYCOUNT] AS C "); sqlBuilder.AppendLine(" JOIN [T_MD_MATERIAL] AS M "); sqlBuilder.AppendLine(" ON C.[MATRIAL_CODE] = M.[MATERIAL_CODE] "); sqlBuilder.AppendLine(" JOIN [T_MD_MATERIAL_CLASS] AS MC "); sqlBuilder.AppendLine(" ON M.[MATERIAL_TYPE_CODE] = MC.[MATERIAL_TYPE_CODE] "); whereBuilder.Append(" AND MC.[MATERIAL_ATTRIBUTE] = '2'"); if (string.IsNullOrEmpty(condition.START_DATE) == false) { whereBuilder.Append(" AND C.[STATIS_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 STATIS_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 M.MATERIAL_CODE = @MATERIAL_CODE "); parameters.Add(new DataParameter { ParameterName = "MATERIAL_CODE", DataType = DbType.String, Value = condition.MATERIAL_CODE }); } if (string.IsNullOrEmpty(condition.HBTYPE) == false) { whereBuilder.AppendFormat(" AND charindex(M.HBTYPE,'{0}')>0 ", condition.HBTYPE); } if (string.IsNullOrEmpty(condition.COLOR) == false) { whereBuilder.Append(" AND M.COLOR = @COLOR "); parameters.Add(new DataParameter { ParameterName = "COLOR", DataType = DbType.String, Value = condition.COLOR }); } if (string.IsNullOrEmpty(condition.PROJECTCODE) == false) { whereBuilder.Append(" AND M.PROJECTCODE = @PROJECTCODE "); parameters.Add(new DataParameter { ParameterName = "PROJECTCODE", DataType = DbType.String, Value = condition.PROJECTCODE }); } if (whereBuilder.Length > 0) { sqlBuilder.Append(" WHERE " + whereBuilder.ToString().Substring(4)); } sqlBuilder.Append(groupBuilder.ToString()); sqlBuilder.AppendLine(" ORDER BY TDAY "); return sqlBuilder.ToString(); } catch (Exception ex) { throw ex; } } #endregion } }