public void Delete(AscmWmsPreparationMain preparationMain)
 {
     try
     {
         YnDaoHelper.GetInstance().nHibernateHelper.Delete<AscmWmsPreparationMain>(preparationMain);
     }
     catch (Exception ex)
     {
         YnBaseClass2.Helper.LogHelper.GetLog().Error("删除失败(Delete AscmWmsPreparationMain)", ex);
         throw ex;
     }
 }
        public void Update(AscmWmsPreparationMain preparationMain, bool changeWipEntityStatus = false)
        {
            try
            {
                // 2014/5/14 当备料单状态变更为“已备齐”或“备料中_已确认”时,如果作业状态处于“待领料”或“已领料”则变更为“备料中”
                AscmWipDiscreteJobs wipDiscreteJobs = null;
                AscmWipDiscreteJobsStatus jobsStatus = null;
                if (changeWipEntityStatus && (preparationMain.status == AscmWmsPreparationMain.StatusDefine.prepared || preparationMain.status == AscmWmsPreparationMain.StatusDefine.preparing))
                {
                    //旧的逻辑
                    wipDiscreteJobs = AscmWipDiscreteJobsService.GetInstance().Get(preparationMain.wipEntityId.ToString());
                    if (wipDiscreteJobs.ascmStatus == AscmWipDiscreteJobs.AscmStatusDefine.unPick || wipDiscreteJobs.ascmStatus == AscmWipDiscreteJobs.AscmStatusDefine.picked)
                        wipDiscreteJobs.ascmStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing;
                    else
                        wipDiscreteJobs = null;

                    //新的逻辑,保存到明细状态
                    jobsStatus = AscmWipDiscreteJobsService.Instance.Get(preparationMain.wipEntityId, AscmWhTeamUserService.Instance.GetLeaderId(preparationMain.createUser));
                    if (jobsStatus != null && jobsStatus.subStatus == AscmWipDiscreteJobs.AscmStatusDefine.unPick || jobsStatus.subStatus == AscmWipDiscreteJobs.AscmStatusDefine.picked)
                        jobsStatus.subStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing;
                    else
                        jobsStatus = null;
                }

                using (ITransaction tx = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession().BeginTransaction())
                {
                    try
                    {
                        YnDaoHelper.GetInstance().nHibernateHelper.Update<AscmWmsPreparationMain>(preparationMain);

                        if (wipDiscreteJobs != null)
                            YnDaoHelper.GetInstance().nHibernateHelper.Update<AscmWipDiscreteJobs>(wipDiscreteJobs);

                        if (jobsStatus != null)
                            YnDaoHelper.GetInstance().nHibernateHelper.Update<AscmWipDiscreteJobsStatus>(jobsStatus);

                        tx.Commit();//正确执行提交
                    }
                    catch (Exception ex)
                    {
                        tx.Rollback();//回滚
                        throw ex;
                    }
                }
            }
            catch (Exception ex)
            {
                YnBaseClass2.Helper.LogHelper.GetLog().Error("修改失败(Update AscmWmsPreparationMain)", ex);
                throw ex;
            }
        }
 public void Save(AscmWmsPreparationMain preparationMain)
 {
     try
     {
         using (ITransaction tx = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession().BeginTransaction())
         {
             try
             {
                 YnDaoHelper.GetInstance().nHibernateHelper.Save(preparationMain);
                 tx.Commit();//正确执行提交
             }
             catch (Exception ex)
             {
                 tx.Rollback();//回滚
                 throw ex;
             }
         }
     }
     catch (Exception ex)
     {
         YnBaseClass2.Helper.LogHelper.GetLog().Error("保存失败(Save AscmWmsPreparationMain)", ex);
         throw ex;
     }
 }
 /// <summary>备料时更新备料单状态</summary>
 public void PrepareChangeStatus(AscmWmsPreparationMain preparationMain)
 {
     if (preparationMain.status == AscmWmsPreparationMain.StatusDefine.unPrepare || preparationMain.status == AscmWmsPreparationMain.StatusDefine.preparingUnConfirm || preparationMain.status == AscmWmsPreparationMain.StatusDefine.preparing)
     {
         List<AscmWmsPreparationDetail> listPreparationDetail = AscmWmsPreparationDetailService.GetInstance().GetBomBindNumberList(preparationMain.id);
         if (listPreparationDetail != null && listPreparationDetail.Exists(P => P.planQuantity > P.containerBindNumber))
             preparationMain.status = AscmWmsPreparationMain.StatusDefine.preparingUnConfirm;
         else
             preparationMain.status = AscmWmsPreparationMain.StatusDefine.prepared;
     }
 }
        /// <summary>PC端备料</summary>
        public bool DoWebPreparation(AscmWmsPreparationMain preparationMain, List<AscmWmsPreparationDetail> listPreparationDetail, ref string error, bool doMerge = false)
        {
            error = string.Empty;
            if (preparationMain == null || listPreparationDetail == null || listPreparationDetail.Count == 0)
                return false;
            //获取作业BOM
            string where = "";
            var wipEntityIds = listPreparationDetail.Select(P => P.wipEntityId).Distinct();
            where = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(where, "wipEntityId in(" + string.Join(",", wipEntityIds) + ")");
            var materialIds = listPreparationDetail.Select(P => P.materialId).Distinct();
            where = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(where, "inventoryItemId in(" + string.Join(",", materialIds) + ")");
            string hql = "from AscmWipRequirementOperations";
            if (!string.IsNullOrEmpty(where))
                hql += " where " + where;
            List<AscmWipRequirementOperations> listBom = AscmWipRequirementOperationsService.GetInstance().GetList(hql);
            if (listBom == null || listBom.Count == 0)
                return false;
            //获取备料单对应的容器备料表
            hql = "from AscmWmsContainerDelivery where preparationMainId=" + preparationMain.id;
            List<AscmWmsContainerDelivery> listContainerDelivery = AscmWmsContainerDeliveryService.GetInstance().GetList(hql);

            List<AscmWipRequirementOperations> listBomUpdate = new List<AscmWipRequirementOperations>();
            List<AscmWmsContainerDelivery> listContainerDeliverySaveOrUpdate = new List<AscmWmsContainerDelivery>();
            int containerDeliveryId = 0;
            foreach (AscmWmsPreparationDetail preparationDetail in listPreparationDetail)
            {
                if (preparationDetail.prepareQuantity == 0)
                    continue;
                //验证作业BOM备料数量
                var bom = listBom.Find(P => P.wipEntityId == preparationDetail.wipEntityId && P.inventoryItemId == preparationDetail.materialId);
                if (bom != null)
                {
                    //作业中物料备料总数=本次作业物料备料数量+作业中物料已备数量
                    decimal preparationTotal = preparationDetail.prepareQuantity + bom.ascmPreparedQuantity;
                    if (bom.requiredQuantity < preparationTotal)
                        error = "作业【" + preparationDetail.wipEntityName + "】物料【" + preparationDetail.materialDocNumber + "】的备料数量[" + preparationTotal + "]大于需求数量[" + bom.requiredQuantity + "]";
                }
                else
                    error = "作业【" + preparationDetail.wipEntityName + "】物料清单中找不到物料【" + preparationDetail.materialDocNumber + "】";
                if (!string.IsNullOrEmpty(error))
                    return false;
                bom.ascmPreparedQuantity += preparationDetail.prepareQuantity; //更新作业BOM备料数量
                listBomUpdate.Add(bom);
                //容器备料
                AscmWmsContainerDelivery containerDelivery = null;
                if (listContainerDelivery != null)
                    containerDelivery = listContainerDelivery.Find(P => P.wipEntityId == preparationDetail.wipEntityId && P.materialId == preparationDetail.materialId);
                if (containerDelivery == null)
                {
                    containerDelivery = new AscmWmsContainerDelivery();
                    containerDelivery.id = --containerDeliveryId;
                    containerDelivery.createUser = preparationDetail.modifyUser;
                    containerDelivery.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                    containerDelivery.wipEntityId = preparationDetail.wipEntityId;
                    containerDelivery.materialId = preparationDetail.materialId;
                    containerDelivery.preparationMainId = preparationMain.id;
                }
                containerDelivery.modifyUser = preparationDetail.modifyUser;
                containerDelivery.modifyTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                containerDelivery.quantity += preparationDetail.prepareQuantity;
                listContainerDeliverySaveOrUpdate.Add(containerDelivery);
            }
            if (containerDeliveryId < 0)
            {
                string maxIdKey = YnFrame.Services.YnBillKeyService.GetInstance().GetBillKey("ascm_wms_container_delivery_id", "", "", 10, Math.Abs(containerDeliveryId));
                int maxId = Convert.ToInt32(maxIdKey);
                listContainerDeliverySaveOrUpdate.Where(P => P.id < 0).ToList().ForEach(P => P.id = maxId++);
            }
            //作业备料时要对作业状态进行更新
            List<AscmWipDiscreteJobs> listWipDiscreteJobs = null;
            AscmWipDiscreteJobsStatus jobsStatus = null;
            if (preparationMain.pattern == AscmWmsPreparationMain.PatternDefine.wipJob)
            {
                //旧的逻辑
                listWipDiscreteJobs = AscmWipDiscreteJobsService.GetInstance().GetList(wipEntityIds.ToList(), "ascmStatus='" + AscmWipDiscreteJobs.AscmStatusDefine.unPrepare + "'");
                if (listWipDiscreteJobs != null)
                    listWipDiscreteJobs.ForEach(P => P.ascmStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing);

                //新的逻辑,保存到明细状态
                jobsStatus = AscmWipDiscreteJobsService.Instance.Get(preparationMain.wipEntityId, AscmWhTeamUserService.Instance.GetLeaderId(preparationMain.createUser));
                if (jobsStatus != null && jobsStatus.subStatus == AscmWipDiscreteJobs.AscmStatusDefine.unPrepare)
                {
                    jobsStatus.subStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing;
                }
                else if (jobsStatus != null && jobsStatus.subStatus == AscmWipDiscreteJobs.AscmStatusDefine.unPick)
                {
                    jobsStatus.subStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing;
                }
                else if (jobsStatus != null && jobsStatus.subStatus == AscmWipDiscreteJobs.AscmStatusDefine.picked)
                {
                    jobsStatus.subStatus = AscmWipDiscreteJobs.AscmStatusDefine.preparing;
                }
                else
                {
                    jobsStatus = null;
                }
            }
            //执行事务处理
            ISession session = YnDaoHelper.GetInstance().nHibernateHelper.GetCurrentSession();
            session.Clear();
            using (ITransaction tx = session.BeginTransaction())
            {
                try
                {
                    if (doMerge)
                        listPreparationDetail.ForEach(P => session.Merge(P));
                    else
                        YnDaoHelper.GetInstance().nHibernateHelper.UpdateList(listPreparationDetail);
                    if (listBomUpdate != null && listBomUpdate.Count > 0)
                        YnDaoHelper.GetInstance().nHibernateHelper.UpdateList(listBomUpdate);
                    if (listContainerDeliverySaveOrUpdate.Count > 0)
                        YnDaoHelper.GetInstance().nHibernateHelper.SaveOrUpdateList(listContainerDeliverySaveOrUpdate);
                    if (listWipDiscreteJobs != null && listWipDiscreteJobs.Count > 0)
                        YnDaoHelper.GetInstance().nHibernateHelper.UpdateList(listWipDiscreteJobs);
                    if (jobsStatus != null)
                        YnDaoHelper.GetInstance().nHibernateHelper.Update<AscmWipDiscreteJobsStatus>(jobsStatus);

                    tx.Commit();
                }
                catch (Exception ex)
                {
                    tx.Rollback();
                    error = ex.Message;
                }
            }
            if (!string.IsNullOrEmpty(error))
                return false;
            //更新备料单状态
            string previousStatus = preparationMain.status;
            PrepareChangeStatus(preparationMain);
            List<AscmWmsPreparationMain> listPreparationMainUpdate = new List<AscmWmsPreparationMain>();
            if (previousStatus != preparationMain.status)
                listPreparationMainUpdate.Add(preparationMain);
            //其他备料单
            string whereOther = "";
            whereOther = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(whereOther, "id<>" + preparationMain.id);
            if (preparationMain.pattern == AscmWmsPreparationMain.PatternDefine.wipJob)
            {
                whereOther = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(whereOther, "pattern='" + AscmWmsPreparationMain.PatternDefine.wipJob + "'");
                whereOther = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(whereOther, "wipEntityId=" + preparationMain.wipEntityId);
            }
            else if (preparationMain.pattern == AscmWmsPreparationMain.PatternDefine.wipRequire)
            {
                whereOther = YnBaseClass2.Helper.StringHelper.SqlWhereAndAdd(whereOther, "id in(select mainId from AscmWmsPreparationDetail where wipEntityId in(" + string.Join(",", wipEntityIds) + "))");
            }
            hql = "from AscmWmsPreparationMain where " + whereOther;
            List<AscmWmsPreparationMain> listPreparationMain = GetList(hql);
            if (listPreparationMain != null && listPreparationMain.Count > 0)
            {
                foreach (AscmWmsPreparationMain _preparationMain in listPreparationMain)
                {
                    //只有当其它备料单状态更新为“已备齐”时,才更新
                    PrepareChangeStatus(_preparationMain);
                    if (_preparationMain.status == AscmWmsPreparationMain.StatusDefine.prepared)
                        listPreparationMainUpdate.Add(_preparationMain);
                }
            }
            if (listPreparationMainUpdate.Count > 0)
                Update(listPreparationMainUpdate, preparationMain.pattern == AscmWmsPreparationMain.PatternDefine.wipJob);
            return true;
        }
Пример #6
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                List <AscmWmsPreparationMain>   listAscmWmsPreparationMain   = null;
                List <AscmWmsPreparationDetail> listAscmWmsPreparationDetail = null;
                List <AscmWmsPreparationDetail> listDetail              = new List <AscmWmsPreparationDetail>();;
                AscmWmsPreparationMain          ascmWmsPreparationMain  = null;
                List <AscmWipDiscreteJobs>      listAscmWipDiscreteJobs = null;
                string wipSupplyType = "";
                string billNoStart = "", billNoEnd = "";
                string materialDocNumberStart = "", materialDocNumberEnd = "";
                string warehouseIdStart = "", warehouseIdEnd = "";
                string scheduledStartDateStart = "", scheduledStartDateEnd = "";
                string jobScheduleGroupsStart = "", jobScheduleGroupsEnd = "";
                string jobProductionLineStart = "", jobProductionLineEnd = "";
                if (!string.IsNullOrEmpty(Request.QueryString["docNumber"]))
                {
                    string docNumber = Request.QueryString["docNumber"];
                    if (!string.IsNullOrEmpty(docNumber))
                    {
                        listAscmWmsPreparationMain = AscmWmsPreparationMainService.GetInstance().GetList(" from AscmWmsPreparationMain where docNumber='" + docNumber + "'");
                        if (listAscmWmsPreparationMain != null && listAscmWmsPreparationMain.Count() > 0)
                        {
                            YnBaseDal.YnPage ynPage = new YnBaseDal.YnPage();
                            ynPage.SetPageSize(500);  //pageRows;
                            ynPage.SetCurrentPage(1); //pageNumber;

                            ascmWmsPreparationMain = listAscmWmsPreparationMain[0];
                            //listAscmWmsPreparationDetail = AscmWmsPreparationDetailService.GetInstance().GetSumList(null,"", "", ascmWmsPreparationMain.id, "", "");
                            //listAscmWmsPreparationDetail = AscmWmsPreparationDetailService.GetInstance().GetList(ynPage,"","",ascmWmsPreparationMain.id,"","");
                            listAscmWmsPreparationDetail = AscmWmsPreparationDetailService.GetInstance().GetList(null, "", "", ascmWmsPreparationMain.id, "", "");
                            AscmWmsPreparationDetailService.GetInstance().SetWipDiscreteJobs(listAscmWmsPreparationDetail);
                            List <AscmWarelocation> listAscmWarelocation = AscmWarelocationService.GetInstance().GetList("from AscmWarelocation");
                            if (listAscmWmsPreparationDetail != null && listAscmWmsPreparationDetail.Count() > 0)
                            {
                                foreach (AscmWmsPreparationDetail ascmWmsPreparationDetail in listAscmWmsPreparationDetail)
                                {
                                    var find = listAscmWarelocation.Find(item => item.id == ascmWmsPreparationDetail.warelocationId);
                                    if (find != null)
                                    {
                                        ascmWmsPreparationDetail.locationDocNumber = find.docNumber;
                                    }
                                }
                                billNoStart            = listAscmWmsPreparationDetail.OrderBy(item => item.wipEntityName).First().wipEntityName;
                                billNoEnd              = listAscmWmsPreparationDetail.OrderBy(item => item.wipEntityName).Last().wipEntityName;
                                materialDocNumberStart = listAscmWmsPreparationDetail.OrderBy(item => item.materialDocNumber).First().materialDocNumber;
                                materialDocNumberEnd   = listAscmWmsPreparationDetail.OrderBy(item => item.materialDocNumber).Last().materialDocNumber;
                                warehouseIdStart       = listAscmWmsPreparationDetail.OrderBy(item => item.warehouseId).First().warehouseId;
                                warehouseIdEnd         = listAscmWmsPreparationDetail.OrderBy(item => item.warehouseId).Last().warehouseId;
                                //wipSupplyType = listAscmWmsPreparationDetail[0].ascmMaterialItem.wipSupplyTypeCn;
                                jobScheduleGroupsStart = listAscmWmsPreparationDetail.OrderBy(item => item.jobScheduleGroupsName).First().jobScheduleGroupsName;
                                jobScheduleGroupsEnd   = listAscmWmsPreparationDetail.OrderBy(item => item.jobScheduleGroupsName).Last().jobScheduleGroupsName;
                                jobProductionLineStart = listAscmWmsPreparationDetail.OrderBy(item => item.jobProductionLine).First().jobProductionLine;
                                jobProductionLineEnd   = listAscmWmsPreparationDetail.OrderBy(item => item.jobProductionLine).Last().jobProductionLine;
                                //string billIds = "";
                                var vbillIds = listAscmWmsPreparationDetail.Select(item => item.wipEntityId).Distinct();
                                if (vbillIds != null)
                                {
                                    string billIds = string.Empty;
                                    foreach (int billId in vbillIds)
                                    {
                                        if (!string.IsNullOrEmpty(billIds))
                                        {
                                            billIds += ",";
                                        }
                                        billIds += "'" + billId + "'";
                                    }
                                    if (!string.IsNullOrEmpty(billIds))
                                    {
                                        string whereOther = " id in (" + billIds + ")";
                                        listAscmWipDiscreteJobs = AscmWipDiscreteJobsService.GetInstance().GetList(null, "", "", "", whereOther);
                                        scheduledStartDateStart = listAscmWipDiscreteJobs.OrderBy(item => item._scheduledStartDate).First()._scheduledStartDate;
                                        scheduledStartDateEnd   = listAscmWipDiscreteJobs.OrderBy(item => item._scheduledStartDate).Last()._scheduledStartDate;
                                    }
                                }
                                #region 合计 同种物料在一个货位,进行数量合计,同种物料在不同货位,进行分开显示
                                var groupByMaterial = listAscmWmsPreparationDetail.GroupBy(p => p.materialId);
                                foreach (IGrouping <int, AscmWmsPreparationDetail> ig in groupByMaterial)
                                {
                                    //判断此物料的有多少条数据
                                    List <AscmWmsPreparationDetail> list = listAscmWmsPreparationDetail.Where(item => item.materialId == ig.Key).ToList();
                                    if (list != null && list.Count() > 1)
                                    {
                                        var groupByWarelocation = list.GroupBy(p => p.warelocationId);
                                        foreach (IGrouping <int, AscmWmsPreparationDetail> igrouping in groupByWarelocation)
                                        {
                                            AscmWmsPreparationDetail ascmWmsPreparationDetail_ByWarelocation = igrouping.First();
                                            AscmWmsPreparationDetail ascmWmsPreparationDetail = new AscmWmsPreparationDetail();
                                            ascmWmsPreparationDetail.materialId = igrouping.Key;
                                            //ascmWmsPreparationDetail.ascmMaterialItem = ascmWmsPreparationDetail_ByWarelocation.ascmMaterialItem;
                                            ascmWmsPreparationDetail.warehouseId       = ascmWmsPreparationDetail_ByWarelocation.warehouseId;
                                            ascmWmsPreparationDetail.locationDocNumber = ascmWmsPreparationDetail_ByWarelocation.locationDocNumber;
                                            ascmWmsPreparationDetail.wipSupplyType     = ascmWmsPreparationDetail_ByWarelocation.wipSupplyType;
                                            ascmWmsPreparationDetail.planQuantity      = igrouping.Sum(P => P.planQuantity);
                                            //ascmWmsPreparationDetail.quantity = igrouping.Sum(P => P.quantity);
                                            ascmWmsPreparationDetail.issueQuantity       = igrouping.Sum(P => P.issueQuantity);
                                            ascmWmsPreparationDetail.containerBindNumber = igrouping.Sum(P => P.containerBindNumber);
                                            listDetail.Add(ascmWmsPreparationDetail);
                                        }
                                    }
                                    else
                                    {
                                        AscmWmsPreparationDetail _ascmWmsPreparationDetail = ig.First();
                                        AscmWmsPreparationDetail ascmWmsPreparationDetail  = new AscmWmsPreparationDetail();
                                        ascmWmsPreparationDetail.materialId = ig.Key;
                                        //ascmWmsPreparationDetail.ascmMaterialItem = _ascmWmsPreparationDetail.ascmMaterialItem;
                                        ascmWmsPreparationDetail.warehouseId       = _ascmWmsPreparationDetail.warehouseId;
                                        ascmWmsPreparationDetail.locationDocNumber = _ascmWmsPreparationDetail.locationDocNumber;
                                        ascmWmsPreparationDetail.wipSupplyType     = _ascmWmsPreparationDetail.wipSupplyType;
                                        ascmWmsPreparationDetail.planQuantity      = ig.Sum(P => P.planQuantity);
                                        //ascmWmsPreparationDetail.quantity = ig.Sum(P => P.quantity);
                                        ascmWmsPreparationDetail.issueQuantity       = ig.Sum(P => P.issueQuantity);
                                        ascmWmsPreparationDetail.containerBindNumber = ig.Sum(P => P.containerBindNumber);
                                        listDetail.Add(ascmWmsPreparationDetail);
                                    }
                                }
                                #endregion
                            }
                            #region Code128
                            System.IO.MemoryStream    memoryStream = new System.IO.MemoryStream();
                            MideaAscm.Code.BarCode128 barCode128   = new Code.BarCode128();
                            barCode128.TitleFont   = new System.Drawing.Font("宋体", 10);
                            barCode128.HeightImage = 50;
                            System.Drawing.Bitmap bitmap = barCode128.GetCodeImage(docNumber, docNumber, Code.BarCode128.Encode.Code128B);
                            bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Gif);
                            if (listDetail != null && listDetail.Count() > 0)
                            {
                                listDetail = listDetail.OrderBy(item => item.materialDocNumber).ToList();
                                listDetail[0].barcodeShow = memoryStream.ToArray();
                            }
                            bitmap.Dispose();
                            #endregion

                            #region 条码 Code39
                            //System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();
                            //YnBaseClass2.Helper.BarCode39 barCode39 = new YnBaseClass2.Helper.BarCode39();
                            //barCode39.WidthCU = 10;
                            //barCode39.WidthXI = 3;
                            //System.Drawing.Bitmap bitmap = barCode39.CreateBarCode(docNumber, docNumber, 0, 0);
                            //bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Gif);
                            //bitmap.Dispose();
                            //if (listDetail != null && listDetail.Count()>0)
                            //    listDetail[0].barcodeShow = memoryStream.ToArray();
                            #endregion
                        }
                    }
                }
                ReportViewer1.ProcessingMode         = Microsoft.Reporting.WebForms.ProcessingMode.Local;
                ReportViewer1.LocalReport.ReportPath = Server.MapPath("WmsPreparationReport.rdlc");
                ReportDataSource rds1 = new ReportDataSource();
                rds1.Name  = "DataSet1";
                rds1.Value = listDetail;
                ReportViewer1.LocalReport.DataSources.Clear();//好像不clear也可以
                ReportViewer1.LocalReport.DataSources.Add(rds1);

                string title = "中央空调顺德工厂需求备料单";
                //string secondTitle = "车间任务物料需求报表";
                string userName = string.Empty;
                if (User.Identity.IsAuthenticated)
                {
                    userName = User.Identity.Name;
                }

                ReportParameter[] reportParameters = new ReportParameter[] {
                    new ReportParameter("ReportParameter_Title", title),
                    //new ReportParameter("ReportParameter_secondTitle", secondTitle),
                    new ReportParameter("ReportParameter_ReportTime", "打印时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")),
                    new ReportParameter("ReportParameter_wipSupplyType", "供应类型:" + wipSupplyType),
                    new ReportParameter("ReportParameter_scheduledStartDate", "计划时间从:" + scheduledStartDateStart + " 至 " + scheduledStartDateEnd),
                    new ReportParameter("ReportParameter_BillNo", "任务从:" + billNoStart + " 至 " + billNoEnd),
                    new ReportParameter("ReportParameter_materialDocNumber", "组件从:" + materialDocNumberStart + " 至 " + materialDocNumberEnd),
                    new ReportParameter("ReportParameter_warehouseId", "子库从:" + warehouseIdStart + " 至 " + warehouseIdEnd),
                    new ReportParameter("ReportParameter_jobScheduleGroups", "计划组从:" + jobScheduleGroupsStart + " 至 " + jobScheduleGroupsEnd),
                    new ReportParameter("ReportParameter_jobProductionLine", "生产线从:" + jobProductionLineStart + " 至 " + jobProductionLineEnd),
                    new ReportParameter("ReportParameter_Printer", "打印人:" + userName),
                };
                ReportViewer1.LocalReport.SetParameters(reportParameters);
                ReportViewer1.LocalReport.Refresh();
            }
        }