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); } }
/// <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); } ; }
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); } } } }
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"); }
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(); } }