Esempio n. 1
0
        public static long CreateOutPutByJson2(string json)
        {
            var dto = JsonConvert.DeserializeObject <OutPutDto>(json);

            using (var session = Dmo.NewSession())
            {
                var bl  = BIFactory.Create <IProduceOutputBL>(session);
                var dmo = new ProduceOutput();

                dmo.Domain_ID         = DomainContext.Current.ID;
                dmo.AccountingUnit_ID = dto.AccountingUnit_ID;
                dmo.Department_ID     = dto.Department_ID;
                dmo.ProductionUnit_ID = dto.ProductionUnit_ID;
                dmo.Time = dto.Time;

                foreach (var dtodetail in dto.Details)
                {
                    var detail = new ProduceOutput_Detail();
                    detail.Goods_ID          = dtodetail.Goods_ID ?? 0;
                    detail.CalculateGoods_ID = dtodetail.CalculateGoods_ID;
                    detail.Goods_Name        = dtodetail.Goods_Name;
                    detail.Remark            = dtodetail.CalculateSpec_Name;
                    detail.Number            = dtodetail.Number;
                    detail.SecondNumber      = dtodetail.SecondNumber;
                    detail.SecondNumber2     = dtodetail.SecondNumber2;
                    detail.RecordCount       = dtodetail.RecordCount;
                    //detail.CalculateCatalog_Name = dtodetail.CalculateCatalog_Name;
                    //var calculateCatalog = GetCalculateCatalogIDByName(session, detail.Goods_Name);
                    //if (calculateCatalog != null)
                    //{
                    //    detail.CalculateCatalog_ID = calculateCatalog.Item1;
                    //    detail.CalculateGoods_ID = calculateCatalog.Item2;
                    //}
                    if (detail.Goods_ID == 0)
                    {
                        var goodsid = GetGoodsIdByName2(session, detail.Goods_Name);
                        if (goodsid == null || goodsid == 0)
                        {
                            throw new Exception("没有找到存货名称:" + detail.Goods_Name + " 对应的存货");
                        }
                        detail.Goods_ID = goodsid.Value;
                    }
                    var id = GetProductIdByName(session, dtodetail.PlanNumber);
                    if (id == null)
                    {
                        throw new Exception("生产计划中不存在" + dtodetail.PlanNumber + "计划号");
                    }
                    detail.PlanNumber_ID = id;

                    dmo.Details.Add(detail);
                }

                bl.Insert(dmo);

                session.Commit();
                return(dmo.ID);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 载入明细
        /// </summary>
        /// <param name="dmo"></param>
        public void GetGoodsDetailList(ProduceOutput dmo)
        {
            var goodsList = GetGoodsList(dmo);

            foreach (var goods in goodsList)
            {
                var detail = new ProduceOutput_Detail();
                detail.Goods_ID         = goods.Goods_ID;
                detail.Goods_Name       = goods.Goods_Name;
                detail.Goods_Code       = goods.Goods_Code;
                detail.Goods_Spec       = goods.Goods_Spec;
                detail.Goods_MainUnit   = goods.Goods_MainUnit;
                detail.Goods_SecondUnit = goods.Goods_SecondUnit;
                detail.Number           = (Money <decimal>?)goods.Number;
                detail.SecondNumber     = (Money <decimal>?)goods.SecondNumber;

                dmo.Details.Add(detail);
            }
            ;
        }
Esempio n. 3
0
        static void LoadDetail(ProduceOutput dmo)
        {
            if (dmo.ProductLinkTemplate_ID == null)
            {
                throw new ArgumentException("请先选择生产环节模板");
            }
            var bill = new JoinAlias(typeof(ProductLinkTemplate));
            var productLinkDetail = new JoinAlias(typeof(ProductLinkTemplate_Detail));
            var query             = new DQueryDom(productLinkDetail);

            query.From.AddJoin(JoinType.Left, new DQDmoSource(bill), DQCondition.EQ(bill, "ID", productLinkDetail, "ProductLinkTemplate_ID"));
            query.Columns.Add(DQSelectColumn.Field("Goods_ID", productLinkDetail));
            query.Columns.Add(DQSelectColumn.Field("Goods_Name", productLinkDetail));
            query.Columns.Add(DQSelectColumn.Field("Goods_Code", productLinkDetail));
            query.Columns.Add(DQSelectColumn.Field("Goods_Spec", productLinkDetail));
            query.Columns.Add(DQSelectColumn.Field("Goods_MainUnitRatio", productLinkDetail));
            query.Columns.Add(DQSelectColumn.Field("Goods_SecondUnitRatio", productLinkDetail));
            query.Where.Conditions.Add(DQCondition.EQ(productLinkDetail, "ProductLinkTemplate_ID", dmo.ProductLinkTemplate_ID));
            dmo.Details.Clear();
            using (var context = new TransactionContext())
            {
                using (var reader = context.Session.ExecuteReader(query))
                {
                    while (reader.Read())
                    {
                        var detail = new ProduceOutput_Detail
                        {
                            Goods_ID              = (long)reader[0],
                            Goods_Name            = (string)reader[1],
                            Goods_Code            = (string)reader[2],
                            Goods_Spec            = (string)reader[3],
                            Goods_MainUnitRatio   = (Money <decimal>?)reader[4],
                            Goods_SecondUnitRatio = (Money <decimal>?)reader[5]
                        };
                        dmo.Details.Add(detail);
                    }
                }
            }
        }
Esempio n. 4
0
        private void CreateOutputDetailPanel(VLayoutPanel vPanel)
        {
            var hPanel = vPanel.Add(new HLayoutPanel(), new VLayoutOption(HorizontalAlign.Left));

            hPanel.Add(new LiteralControl("<h2>明细清单:</h2>"));
            if (CanSave)
            {
                hPanel.Add(new TSButton("载入明细")).Click += delegate
                {
                    GetFromUI();
                    Dmo.Details.Clear();
                    AddLoadDetailQy(Dmo);
                    outputDetailGrid.DataBind();
                    AspUtil.Alert(this, "载入产出明细成功");
                };

                hPanel.Add(new SimpleLabel("选择存货"));
                var selectEmp = hPanel.Add(new ChoiceBox(B3UnitedInfosConsts.DataSources.存货)
                {
                    Width = Unit.Pixel(130), EnableInputArgument = true, AutoPostBack = true
                });
                selectEmp.SelectedValueChanged += delegate
                {
                    outputDetailGrid.GetFromUI();
                    if (!selectEmp.IsEmpty)
                    {
                        var empID = long.Parse(selectEmp.Value);
                        if (!Dmo.Details.Any(x => x.Goods_ID == empID))
                        {
                            var d = new ProduceOutput_Detail()
                            {
                                Goods_ID = empID
                            };
                            DmoUtil.RefreshDependency(d, "Goods_ID");
                            Dmo.Details.Add(d);
                        }
                    }
                    selectEmp.Clear();
                    outputDetailGrid.DataBind();
                };
            }
            var detailEditor = new DFCollectionEditor <ProduceOutput_Detail>(() => Dmo.Details);

            detailEditor.AllowDeletionFunc = () => CanSave;
            detailEditor.CanDeleteFunc     = (detail) => CanSave;
            detailEditor.IsEditableFunc    = (field, detail) => CanSave;
            outputDetailGrid = vPanel.Add(new DFEditGrid(detailEditor)
            {
                Width = Unit.Percentage(100)
            });

            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_Name"));
            foreach (var ioc in TypeIOCCenter.GetIOCList <IOCs.BeforeDetailGridApplyLayout>(this.GetType()))
            {
                //仙坛添加数据
                ioc.Invoke(outputDetailGrid);
            }
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_Code"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_Spec"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFTextBox>("Number"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_MainUnit"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFTextBox>("SecondNumber"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_SecondUnit"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFTextBox>("SecondNumber2"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFValueLabel>("Goods_SecondUnit2"));
            outputDetailGrid.Columns.Add(new DFEditGridColumn <DFTextBox>("Remark"));


            outputDetailGrid.ValueColumns.Add("Goods_UnitConvertDirection");
            outputDetailGrid.ValueColumns.Add("Goods_MainUnitRatio");
            outputDetailGrid.ValueColumns.Add("Goods_SecondUnitRatio");
            new Main_Second_ConvertRatioRowManager(outputDetailGrid, "Number", "SecondNumber", "SecondNumber2");
        }
Esempio n. 5
0
        public void Import(Stream fileStream)
        {
            var man       = new ExcelImportManager();
            var accColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "会计单位",
                Required = true,
                Nullable = false
            });

            var deptColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "部门",
                Required = true,
                Nullable = false
            });

            var empColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "经办人",
                Required = true,
                Nullable = false
            });

            var timeColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "日期",
                Required = true,
                Nullable = false
            });

            var planNumberColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "计划号",
                Required = false,
                Nullable = true
            });

            var productLinksColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "生产环节",
                Required = false,
                Nullable = true
            });
            var remarkColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "摘要",
                Required = false,
                Nullable = true
            });


            var nameColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "存货名称",
                Required = true,
                Nullable = false
            });

            var codeColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "存货编码",
                Required = false,
                Nullable = true
            });

            var numberColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "数量",
                Required = true,
                Nullable = false
            });

            var detailRemarkColumn = man.Add(new ExecelImportColumn()
            {
                Name     = "备注",
                Required = false,
                Nullable = true
            });

            var billList = new DmoCollection <ProduceOutput>();
            int i        = 0;

            using (var context = new TransactionContext()) {
                var bl = BIFactory.Create <IProduceOutputBL>(context);

                foreach (var row in man.Parse(fileStream))
                {
                    var bill = new ProduceOutput();
                    bl.InitNewDmo(bill);
                    i++;
                    bill.ID = i;
                    billList.Add(bill);
                    long accID = default(long);
                    if (accColumn.TryGetIDByName <AccountingUnit>(row, ref accID))
                    {
                        bill.AccountingUnit_ID = accID;
                    }

                    long deptID = default(long);
                    if (deptColumn.TryGetIDByName <Department>(row, ref deptID))
                    {
                        bill.Department_ID = deptID;
                    }

                    long empID = default(long);
                    if (empColumn.TryGetIDByName <Employee>(row, ref empID))
                    {
                        bill.Employee_ID = empID;
                    }

                    long planNumberID = default(long);
                    if (ExecelImportHelper.TryGetID <ProductPlan>(planNumberColumn, row, "PlanNumber", ref planNumberID))
                    {
                        bill.PlanNumber_ID = planNumberID;
                    }

                    long productLinksID = default(long);
                    if (productLinksColumn.TryGetIDByName <ProductLinks>(row, ref productLinksID))
                    {
                        bill.ProductLinks_ID = productLinksID;
                    }

                    DateTime time = default(DateTime);
                    if (timeColumn.TryGetValue(row, ref time))
                    {
                        bill.Time = time;
                    }

                    bill.Remark = remarkColumn.GetStringValue(row);

                    var  detail  = new ProduceOutput_Detail();
                    long goodsID = default(long);
                    if (codeColumn.TryGetIDByCode <Goods>(row, ref goodsID))
                    {
                        detail.Goods_ID = goodsID;
                    }
                    else if (nameColumn.TryGetIDByName <Goods>(row, ref goodsID))
                    {
                        detail.Goods_ID = goodsID;
                    }

                    decimal number = default(decimal);
                    if (numberColumn.TryGetValue(row, ref number))
                    {
                        detail.Number = number;
                    }

                    detail.Remark = detailRemarkColumn.GetStringValue(row);

                    DmoUtil.RefreshDependency(detail, "Goods_ID");
                    ConvertToSecondNumber(detail);
                    bill.Details.Add(detail);
                }

                foreach (var group in billList.GroupBy(x => new { x.Time, x.AccountingUnit_ID, x.Employee_ID, x.Department_ID, x.PlanNumber_ID, x.ProductLinks_ID }))
                {
                    var dmo = group.FirstOrDefault();
                    foreach (var produceOutput in group)
                    {
                        if (dmo.ID == produceOutput.ID)
                        {
                            continue;
                        }
                        foreach (var detail in produceOutput.Details)
                        {
                            dmo.Details.Add(detail);
                        }
                    }
                    dmo.ID = 0;
                    bl.Insert(dmo);
                }
                context.Commit();
            }
        }