/// <summary>
 /// 设置属性值
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="fieldName"></param>
 /// <param name="fieldValue"></param>
 /// <param name="?"></param>
 /// <returns></returns>
 public static bool SetValue(this AkProduceReportModel entity, string fieldName, string fieldValue)
 {
     try
     {
         Type         entityType   = entity.GetType();
         PropertyInfo propertyInfo = entityType.GetProperty(fieldName);
         propertyInfo.SetValue(entity, fieldValue, null);
         return(true);
     }
     catch { }
     return(false);
 }
 /// <summary>
 /// 获取属性值
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="fieldName"></param>
 /// <returns></returns>
 public static string GetValue(this AkProduceReportModel entity, string fieldName)
 {
     try
     {
         Type         entityType   = entity.GetType();
         PropertyInfo propertyInfo = entityType.GetProperty(fieldName);
         object       obj          = propertyInfo.GetValue(entity, null);
         if (obj != null)
         {
             return(obj.ToString());
         }
     }
     catch
     {
     }
     return(null);
 }
        /// <summary>
        /// 添加数据记录
        /// </summary>
        /// <param name="repastName"></param>
        /// <param name="source"></param>
        /// <param name="startTime"></param>
        /// <param name="endTime"></param>
        /// <param name="ltResult"></param>
        private void AddRecode(string repastName, string startTime, string endTime, List <AkProduceReportModel> lt_result, int type = 0)
        {
            AkProduceReportModel model = new AkProduceReportModel();

            if (type == 0)
            {
                model.TimeInterval = repastName;
                model.HourTime     = startTime + "-" + endTime;
            }
            else if (type == 1)
            {
                model.TimeInterval = repastName + "合计";
                model.HourTime     = startTime + "-" + endTime;
            }
            else if (type == 2)
            {
                model.TimeInterval = repastName + "合计";
                model.HourTime     = startTime + "-" + endTime;
            }

            model.SalesTurnover = this.DefaultValue;
            model.RemindHealth  = this.DefaultValue;

            //1线
            model.OrderNum1      = this.DefaultValue;
            model.ProductNum1    = this.DefaultValue;
            model.ProductAvgNum1 = this.DefaultValue;
            model.ProduceTime1   = this.DefaultValue;

            //2线
            model.OrderNum2      = this.DefaultValue;
            model.ProductNum2    = this.DefaultValue;
            model.ProductAvgNum2 = this.DefaultValue;
            model.ProduceTime2   = this.DefaultValue;

            //3线
            model.OrderNum3      = this.DefaultValue;
            model.ProductNum3    = this.DefaultValue;
            model.ProductAvgNum3 = this.DefaultValue;
            model.ProduceTime3   = this.DefaultValue;

            //4线
            model.OrderNum4      = this.DefaultValue;
            model.ProductNum4    = this.DefaultValue;
            model.ProductAvgNum4 = this.DefaultValue;
            model.ProduceTime4   = this.DefaultValue;

            //5线
            model.OrderNum5      = this.DefaultValue;
            model.ProductNum5    = this.DefaultValue;
            model.ProductAvgNum5 = this.DefaultValue;
            model.ProduceTime5   = this.DefaultValue;

            //合计
            model.OrderNumTotal      = this.DefaultValue;
            model.ProductNumTotal    = this.DefaultValue;
            model.ProductAvgNumTotal = this.DefaultValue;
            model.ProduceTimeTotal   = this.DefaultValue;
            model.RowIndex           = rowIndex++;

            lt_result.Add(model);
        }
        private void setTotalProductData(string startTime, string endTime, AkProduceReportModel model)
        {
            startTime = startTime + ":00";
            endTime   = endTime + ":00";

            if (model != null)
            {
                //@1.设置营业额
                decimal salesTurnover = AkDaoHelper.Instance_Product.GetSalesTurnover(startTime, endTime);
                model.SalesTurnover = salesTurnover.ConvertDigits(0);

                //@2.分线健康率
                model.RemindHealth = AkDaoHelper.Instance_Product.GetHealthNumber(startTime, endTime);

                //@3.订单数量
                Dictionary <string, decimal> dict_order = AkDaoHelper.Instance_Product.GetOrderNumber(startTime, endTime);
                if (dict_order != null && dict_order.Count > 0)
                {
                    model.OrderNumTotal = dict_order["All"].ConvertDigits(0);
                    model.OrderNum1     = dict_order["StationA"].ConvertDigits(0);
                    model.OrderNum2     = dict_order["StationB"].ConvertDigits(0);
                    model.OrderNum3     = dict_order["StationC"].ConvertDigits(0);
                    model.OrderNum4     = dict_order["StationD"].ConvertDigits(0);

                    //@4.超时订单100%
                    model.TimeOut = AkDaoHelper.Instance_Product.GetTimeOut(dict_order["All"], startTime, endTime);
                }

                //@5.产品数量
                Dictionary <string, decimal> dict_product = AkDaoHelper.Instance_Product.GetProductNumber(startTime, endTime);
                if (dict_order != null && dict_order.Count > 0)
                {
                    model.ProductNumTotal = dict_product["All"].ConvertDigits(0);
                    model.ProductNum1     = dict_product["StationA"].ConvertDigits(0);
                    model.ProductNum2     = dict_product["StationB"].ConvertDigits(0);
                    model.ProductNum3     = dict_product["StationC"].ConvertDigits(0);
                    model.ProductNum4     = dict_product["StationD"].ConvertDigits(0);
                }

                //@6.产品平均数

                if (dict_order != null && dict_order.Count > 0 && dict_product != null && dict_product.Count > 0)
                {
                    model.ProductAvgNumTotal = dict_order["All"] > 0 ? (dict_product["All"] / dict_order["All"]).ConvertDigits(1) : string.Empty;
                    model.ProductAvgNum1     = dict_order["StationA"] > 0 ? (dict_product["StationA"] / dict_order["StationA"]).ConvertDigits(1) : string.Empty;
                    model.ProductAvgNum2     = dict_order["StationB"] > 0 ? (dict_product["StationB"] / dict_order["StationB"]).ConvertDigits(1) : string.Empty;
                    model.ProductAvgNum3     = dict_order["StationC"] > 0 ? (dict_product["StationC"] / dict_order["StationC"]).ConvertDigits(1) : string.Empty;
                    model.ProductAvgNum4     = dict_order["StationD"] > 0 ? (dict_product["StationD"] / dict_order["StationD"]).ConvertDigits(1) : string.Empty;
                }

                //@7.生产时间
                Dictionary <string, decimal> dict_produce_time = AkDaoHelper.Instance_Product.GetProduceTime(dict_order, startTime, endTime);
                if (dict_produce_time != null && dict_produce_time.Count > 0)
                {
                    model.ProduceTimeTotal = dict_produce_time["All"].ConvertDigits(0);
                    model.ProduceTime1     = dict_produce_time["StationA"].ConvertDigits(0);
                    model.ProduceTime2     = dict_produce_time["StationB"].ConvertDigits(0);
                    model.ProduceTime3     = dict_produce_time["StationC"].ConvertDigits(0);
                    model.ProduceTime4     = dict_produce_time["StationD"].ConvertDigits(0);
                }
            }
        }
        /// <summary>
        /// Excel添加行数据
        /// </summary>
        /// <param name="sheet"></param>
        /// <param name="model"></param>
        private void AddRow(ISheet sheet, AkProduceReportModel model, List <int> ltStyle)
        {
            IRow dataRow = sheet.CreateRow(rowIndex);

            dataRow.Height = 18 * 20;
            int column = 0;

            ICell newCel0 = dataRow.CreateCell(column++);
            ICell newCel1 = dataRow.CreateCell(column++);
            ICell newCel2 = dataRow.CreateCell(column++);
            ICell newCel3 = dataRow.CreateCell(column++);
            ICell newCel4 = dataRow.CreateCell(column++);

            ICell newCel21 = dataRow.CreateCell(column++);
            ICell newCel22 = dataRow.CreateCell(column++);
            ICell newCel23 = dataRow.CreateCell(column++);
            ICell newCel24 = dataRow.CreateCell(column++);

            ICell newCel5 = dataRow.CreateCell(column++);
            ICell newCel6 = dataRow.CreateCell(column++);
            ICell newCel7 = dataRow.CreateCell(column++);
            ICell newCel8 = dataRow.CreateCell(column++);

            ICell newCel9  = dataRow.CreateCell(column++);
            ICell newCel10 = dataRow.CreateCell(column++);
            ICell newCel11 = dataRow.CreateCell(column++);
            ICell newCel12 = dataRow.CreateCell(column++);

            ICell newCel13 = dataRow.CreateCell(column++);
            ICell newCel14 = dataRow.CreateCell(column++);
            ICell newCel15 = dataRow.CreateCell(column++);
            ICell newCel16 = dataRow.CreateCell(column++);

            ICell newCel17 = dataRow.CreateCell(column++);
            ICell newCel18 = dataRow.CreateCell(column++);
            ICell newCel19 = dataRow.CreateCell(column++);
            ICell newCel20 = dataRow.CreateCell(column++);

            newCel0.SetCellValue(model.TimeInterval);
            newCel1.SetCellValue(model.HourTime);
            newCel2.SetCellValue(model.SalesTurnover);
            newCel3.SetCellValue(model.RemindHealth);
            newCel4.SetCellValue(model.TimeOut);

            newCel5.SetCellValue(model.OrderNum1);
            newCel6.SetCellValue(model.ProductNum1);
            newCel7.SetCellValue(model.ProductAvgNum1);
            newCel8.SetCellValue(model.ProduceTime1);

            newCel9.SetCellValue(model.OrderNum2);
            newCel10.SetCellValue(model.ProductNum2);
            newCel11.SetCellValue(model.ProductAvgNum2);
            newCel12.SetCellValue(model.ProduceTime2);

            newCel13.SetCellValue(model.OrderNum3);
            newCel14.SetCellValue(model.ProductNum3);
            newCel15.SetCellValue(model.ProductAvgNum3);
            newCel16.SetCellValue(model.ProduceTime3);

            newCel17.SetCellValue(model.OrderNum4);
            newCel18.SetCellValue(model.ProductNum4);
            newCel19.SetCellValue(model.ProductAvgNum4);
            newCel20.SetCellValue(model.ProduceTime4);

            newCel21.SetCellValue(model.OrderNumTotal);
            newCel22.SetCellValue(model.ProductNumTotal);
            newCel23.SetCellValue(model.ProductAvgNumTotal);
            newCel24.SetCellValue(model.ProduceTimeTotal);

            if (ltStyle != null && ltStyle.Contains(rowIndex))
            {
                newCel0.CellStyle = this.StyleForegroundThin;
                newCel1.CellStyle = this.StyleForegroundThin;
                newCel2.CellStyle = this.StyleForegroundThin;
                newCel3.CellStyle = this.StyleForegroundThin;
                newCel4.CellStyle = this.StyleForegroundThin;
                newCel5.CellStyle = this.StyleForegroundThin;
                newCel6.CellStyle = this.StyleForegroundThin;
                newCel7.CellStyle = this.StyleForegroundThin;
                newCel8.CellStyle = this.StyleForegroundThin;
                newCel9.CellStyle = this.StyleForegroundThin;

                newCel10.CellStyle = this.StyleForegroundThin;
                newCel11.CellStyle = this.StyleForegroundThin;
                newCel12.CellStyle = this.StyleForegroundThin;
                newCel13.CellStyle = this.StyleForegroundThin;
                newCel14.CellStyle = this.StyleForegroundThin;
                newCel15.CellStyle = this.StyleForegroundThin;
                newCel16.CellStyle = this.StyleForegroundThin;
                newCel17.CellStyle = this.StyleForegroundThin;
                newCel18.CellStyle = this.StyleForegroundThin;
                newCel19.CellStyle = this.StyleForegroundThin;
                newCel20.CellStyle = this.StyleForegroundThin;
                newCel21.CellStyle = this.StyleForegroundThin;
                newCel22.CellStyle = this.StyleForegroundThin;
                newCel23.CellStyle = this.StyleForegroundThin;
                newCel24.CellStyle = this.StyleForegroundThin;
            }
            else
            {
                newCel0.CellStyle = this.StyleThin;
                newCel1.CellStyle = this.StyleThin;
                newCel2.CellStyle = this.StyleThin;
                newCel3.CellStyle = this.StyleThin;
                newCel4.CellStyle = this.StyleThin;
                newCel5.CellStyle = this.StyleThin;
                newCel6.CellStyle = this.StyleThin;
                newCel7.CellStyle = this.StyleThin;
                newCel8.CellStyle = this.StyleThin;
                newCel9.CellStyle = this.StyleThin;

                newCel10.CellStyle = this.StyleThin;
                newCel11.CellStyle = this.StyleThin;
                newCel12.CellStyle = this.StyleThin;
                newCel13.CellStyle = this.StyleThin;
                newCel14.CellStyle = this.StyleThin;
                newCel15.CellStyle = this.StyleThin;
                newCel16.CellStyle = this.StyleThin;
                newCel17.CellStyle = this.StyleThin;
                newCel18.CellStyle = this.StyleThin;
                newCel19.CellStyle = this.StyleThin;
                newCel20.CellStyle = this.StyleThin;
                newCel21.CellStyle = this.StyleThin;
                newCel22.CellStyle = this.StyleThin;
                newCel23.CellStyle = this.StyleThin;
                newCel24.CellStyle = this.StyleThin;
            }
            rowIndex++;
        }
        /// <summary>
        /// 获取表头信息
        /// </summary>
        private List <AkProduceReportModel> getHeaderData()
        {
            List <AkProduceReportModel> lt_headers = new List <AkProduceReportModel>();

            AkProduceReportModel model1 = new AkProduceReportModel();
            AkProduceReportModel model2 = new AkProduceReportModel();
            AkProduceReportModel model3 = new AkProduceReportModel();
            AkProduceReportModel model4 = new AkProduceReportModel();

            model1.TimeInterval  = AkConfig.StartDate.Replace("-", "") + "—" + AkConfig.EndDate.Replace("-", "") + " BK-SOS-Report-产区";
            model1.OrderNumTotal = "生产速度报表";
            lt_headers.Add(model1);

            model2.TimeInterval  = "时段";
            model2.HourTime      = "小时";
            model2.SalesTurnover = "营业额";
            model2.RemindHealth  = "分线健康率";
            model2.TimeOut       = "超时订单率";

            model2.OrderNumTotal      = "Total生产时间";
            model2.ProductNumTotal    = "Total生产时间";
            model2.ProductAvgNumTotal = "Total生产时间";
            model2.ProduceTimeTotal   = "Total生产时间";

            model2.OrderNum1      = "A屏生产时间";
            model2.ProductNum1    = "A屏生产时间";
            model2.ProductAvgNum1 = "A屏生产时间";
            model2.ProduceTime1   = "A屏生产时间";

            model2.OrderNum2      = "B屏生产时间";
            model2.ProductNum2    = "B屏生产时间";
            model2.ProductAvgNum2 = "B屏生产时间";
            model2.ProduceTime2   = "B屏生产时间";

            model2.OrderNum3      = "C屏生产时间";
            model2.ProductNum3    = "C屏生产时间";
            model2.ProductAvgNum3 = "C屏生产时间";
            model2.ProduceTime3   = "C屏生产时间";

            model2.OrderNum4      = "D屏生产时间";
            model2.ProductNum4    = "D屏生产时间";
            model2.ProductAvgNum4 = "D屏生产时间";
            model2.ProduceTime4   = "D屏生产时间";
            lt_headers.Add(model2);

            model3.TimeInterval  = "时段";
            model3.HourTime      = "小时";
            model3.SalesTurnover = "营业额";
            model3.RemindHealth  = "分线健康率";
            lt_headers.Add(model3);

            model4.TimeInterval  = "时段";
            model4.HourTime      = "小时";
            model4.SalesTurnover = "营业额";
            model4.RemindHealth  = "分线健康率";

            model4.OrderNumTotal      = "订单数量";
            model4.ProductNumTotal    = "产品数量";
            model4.ProductAvgNumTotal = "产品平均数";
            model4.ProduceTimeTotal   = "生产时间";

            model4.OrderNum1      = "订单数量";
            model4.ProductNum1    = "产品数量";
            model4.ProductAvgNum1 = "产品平均数";
            model4.ProduceTime1   = "A屏生产时间";

            model4.OrderNum2      = "订单数量";
            model4.ProductNum2    = "产品数量";
            model4.ProductAvgNum2 = "产品平均数";
            model4.ProduceTime2   = "B屏生产时间";

            model4.OrderNum3      = "订单数量";
            model4.ProductNum3    = "产品数量";
            model4.ProductAvgNum3 = "产品平均数";
            model4.ProduceTime3   = "C屏生产时间";

            model4.OrderNum4      = "订单数量";
            model4.ProductNum4    = "产品数量";
            model4.ProductAvgNum4 = "产品平均数";
            model4.ProduceTime4   = "D屏生产时间";
            lt_headers.Add(model4);
            return(lt_headers);
        }