private void AddSubject(bool isSubSubject) { TreeViewItem parentTreeViewItem = this.currentTreeViewItem; object parentOrderEntity = CurrentOrderEntity.Entity; object subType = CurrentOrderEntity.Entity; if (CurrentOrderEntity.OrderType == typeof(T_FB_SUBJECT)) { subType = CurrentOrderEntity.GetObjValue("Entity.T_FB_SUBJECTTYPE"); if (!isSubSubject) { parentOrderEntity = CurrentOrderEntity.GetObjValue("Entity.T_FB_SUBJECT2"); parentTreeViewItem = currentTreeViewItem.Parent as TreeViewItem; } } else { parentOrderEntity = null; } OrderEntity oeSubjectType = dictTreeViewItem[subType as EntityObject]; FBEntity subjectNew = oeSubjectType.CreateFBEntity <T_FB_SUBJECT>(); OrderEntity orderEntityNew = new OrderEntity(subjectNew); orderEntityNew.SetObjValue("Entity.SUBJECTID", Guid.NewGuid().ToString()); orderEntityNew.SetObjValue("Entity.T_FB_SUBJECTTYPE", subType); orderEntityNew.SetObjValue("Entity.T_FB_SUBJECT2", parentOrderEntity); orderEntityNew.SetObjValue("Entity.SUBJECTNAME", GetName(orderEntityNew.Entity, "科目")); orderEntityNew.SetObjValue("Entity.EDITSTATES", "1"); this.currentTreeViewItem = parentTreeViewItem.Items.AddObject <OrderEntity>(orderEntityNew, subjectTemplate); parentTreeViewItem.IsExpanded = true; currentTreeViewItem.IsSelected = true; this.CurrentOrderEntity = orderEntityNew; }
/// <summary> /// 导入借款单 /// Creator:安凯航 /// 日期:2011年5月30日 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void btnImportBorrowData_Click(object sender, RoutedEventArgs e) { //导入时间 DateTime createTime = DateTime.Now; OpenFileDialog dialog = new OpenFileDialog() { Multiselect = false, Filter = "Excel 2007-2010 File(*.xlsx)|*.xlsx" }; bool? userClickedOK = dialog.ShowDialog(); // Process input if the user clicked OK. if (userClickedOK != true) { return; } try { //待保存数据列表 List<OrderEntity> orders = new List<OrderEntity>(); #region 读取Excel文件 XLSXReader reader = new XLSXReader(dialog.File); List<string> subItems = reader.GetListSubItems(); var maseters = reader.GetData(subItems[0]); var listm = maseters.ToDataSource(); var details = reader.GetData(subItems[1]); var listd = details.ToDataSource(); List<dynamic> masterList = new List<dynamic>(); foreach (var item in listm) { dynamic d = item; masterList.Add(d); } //排除第一行信息 masterList.Remove(masterList.First()); List<dynamic> detailList = new List<dynamic>(); foreach (var item in listd) { dynamic d = item; detailList.Add(d); } //排除第一行信息 detailList.Remove(detailList.First()); #endregion #region 添加主表 List<T_FB_BORROWAPPLYMASTER> import = new List<T_FB_BORROWAPPLYMASTER>(); foreach (var item in masterList) { //构造OrderEntity数据 OrderEntity oe = new OrderEntity(typeof(T_FB_BORROWAPPLYMASTER)); orders.Add(oe); T_FB_BORROWAPPLYMASTER t = oe.FBEntity.Entity as T_FB_BORROWAPPLYMASTER; t.BORROWAPPLYMASTERID = Guid.NewGuid().ToString(); t.BORROWAPPLYMASTERCODE = item.单据号; if (item.借款类型 == "普通借款") { t.REPAYTYPE = 1; } else if (item.借款类型 == "备用金借款") { t.REPAYTYPE = 2; } else if (item.借款类型 == "专项借款") { t.REPAYTYPE = 3; } else { continue; } t.REMARK = item.备注; import.Add(t); } #endregion #region 添加子表 foreach (var item in detailList) { OrderEntity oe = orders.FirstOrDefault(oen => { T_FB_BORROWAPPLYMASTER bm = oen.FBEntity.Entity as T_FB_BORROWAPPLYMASTER; if (bm.BORROWAPPLYMASTERCODE == item.单据号) { return true; } else { return false; } }); if (oe == null) { string message = "导入的借款单明细借款单号为\"" + item.单据号 + "\"的明细,没有相应的借款单对应.请检查借款Excel中是否有此借款单的数据"; throw new InvalidOperationException(message); } FBEntity fbdetail = oe.CreateFBEntity<T_FB_BORROWAPPLYDETAIL>(); T_FB_BORROWAPPLYDETAIL d = fbdetail.Entity as T_FB_BORROWAPPLYDETAIL; d.BORROWAPPLYDETAILID = Guid.NewGuid().ToString(); d.REMARK = item.摘要; d.BORROWMONEY = Convert.ToDecimal(item.借款金额); d.UNREPAYMONEY = Convert.ToDecimal(item.未还款金额); d.T_FB_SUBJECT = d.T_FB_SUBJECT ?? new T_FB_SUBJECT(); d.T_FB_SUBJECT.SUBJECTID = item.借款科目; d.CREATEDATE = createTime; d.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; d.UPDATEDATE = createTime; d.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; } #endregion //服务 OrderEntityService service = new OrderEntityService(); #region 得到科目信息 QueryExpression reExp = QueryExpressionHelper.Equal("OWNERID", SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID); QueryExpression exp = QueryExpressionHelper.Equal("OWNERPOSTID", SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID); exp.QueryType = "T_FB_BORROWAPPLYDETAIL"; exp.RelatedExpression = reExp; exp.IsUnCheckRight = true; #endregion #region 获取申请人信息 ObservableCollection<string> numbers = new ObservableCollection<string>(); masterList.ForEach(item => numbers.Add(item.申请人身份证号));//拿到所有身份证号 SMT.Saas.Tools.PersonnelWS.PersonnelServiceClient client = new Saas.Tools.PersonnelWS.PersonnelServiceClient(); client.GetEmployeesByIdnumberAsync(numbers); #endregion #region 先获取申请人信息,待申请人信息填充完毕之后进行下一步操作 client.GetEmployeesByIdnumberCompleted += new EventHandler<Saas.Tools.PersonnelWS.GetEmployeesByIdnumberCompletedEventArgs>((oo, ee) => { if (ee.Error == null) { string message = null; try { masterList.ForEach(m => { //添加owner和creator SMT.Saas.Tools.PersonnelWS.V_EMPLOYEEVIEW userview = null; try { userview = ee.Result.First(t => t.IDNUMBER == m.申请人身份证号); } catch (InvalidOperationException ex) { message = ex.Message + "\n" + "在系统中找不到身份证号为\"" + m.申请人身份证号 + "\"的,员工信息.也可能是您没有相应的权限."; throw new InvalidOperationException(message); } T_FB_BORROWAPPLYMASTER master = null; try { master = import.First(t => t.BORROWAPPLYMASTERCODE == m.单据号); } catch (InvalidOperationException ex) { message = ex.Message + "\n" + "导入的借款单明细借款单号为\"" + m.单据号 + "\"的明细,没有相应的借款单对应.请检查借款Excel中是否有此借款单的数据"; throw new InvalidOperationException(message); } master.OWNERCOMPANYID = userview.OWNERCOMPANYID; master.OWNERCOMPANYNAME = userview.OWNERCOMPANYID; master.OWNERDEPARTMENTID = userview.OWNERDEPARTMENTID; master.OWNERID = userview.EMPLOYEEID; master.OWNERPOSTID = userview.OWNERPOSTID; master.CREATECOMPANYID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyID; master.CREATECOMPANYNAME = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].CompanyName; master.CREATEDEPARTMENTID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentID; master.CREATEDEPARTMENTNAME = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].DepartmentName; master.CREATEPOSTID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostID; master.CREATEPOSTNAME = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.UserPosts[0].PostName; master.CREATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; master.CREATEUSERNAME = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeName; master.CREATEDATE = createTime; master.UPDATEUSERID = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeID; master.UPDATEUSERNAME = SMT.SAAS.Main.CurrentContext.Common.CurrentLoginUserInfo.EmployeeName; master.UPDATEDATE = createTime; }); //填充完申请人信息之后开始填充科目信息 service.QueryFBEntities(exp); } catch (Exception ex) { SMT.SaaS.FrameworkUI.ChildWidow.ComfirmWindow.ConfirmationBoxs("导入出错", ex.Message, "确定", MessageIcon.Exclamation); } } }); #endregion #region 填充完申请人信息之后开始填充科目信息 service.QueryFBEntitiesCompleted += new EventHandler<QueryFBEntitiesCompletedEventArgs>((o, args) => { if (args.Error == null) { //构造明细科目及账务信息 string message = null; try { import.ForEach(m => { OrderEntity oe = orders.FirstOrDefault(oen => { T_FB_BORROWAPPLYMASTER bm = oen.FBEntity.Entity as T_FB_BORROWAPPLYMASTER; if (bm.BORROWAPPLYMASTERCODE == m.BORROWAPPLYMASTERCODE) { return true; } else { return false; } }); var dlist = oe.GetRelationFBEntities("T_FB_BORROWAPPLYDETAIL"); List<T_FB_BORROWAPPLYDETAIL> detailslist = new List<T_FB_BORROWAPPLYDETAIL>(); dlist.ForEach(ddd => { detailslist.Add(ddd.Entity as T_FB_BORROWAPPLYDETAIL); }); detailslist.ForEach(d => { FBEntity en = null; try { en = args.Result.First(a => ((T_FB_BORROWAPPLYDETAIL)a.Entity).T_FB_SUBJECT.SUBJECTCODE == d.T_FB_SUBJECT.SUBJECTID); } catch (InvalidOperationException ex) { message = ex.Message + "\n" + "导入的借款单明细中,在系统中找不到ID为\"" + d.T_FB_SUBJECT.SUBJECTID + "\"的科目,也可能是您没有相应的权限"; throw new InvalidOperationException(message); } T_FB_BORROWAPPLYDETAIL t = en.Entity as T_FB_BORROWAPPLYDETAIL; if (t != null) { t.T_FB_SUBJECT.T_FB_BORROWAPPLYDETAIL.Clear(); d.T_FB_SUBJECT = t.T_FB_SUBJECT; d.CHARGETYPE = t.CHARGETYPE; d.USABLEMONEY = t.USABLEMONEY; #region 清理科目信息中的无用数据 t.T_FB_SUBJECT.T_FB_BORROWAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_BUDGETACCOUNT.Clear(); t.T_FB_SUBJECT.T_FB_BUDGETCHECK.Clear(); t.T_FB_SUBJECT.T_FB_CHARGEAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_COMPANYBUDGETAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_COMPANYBUDGETMODDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_COMPANYBUDGETMODDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_COMPANYTRANSFERDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_DEPTBUDGETADDDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_DEPTBUDGETAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_DEPTTRANSFERDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_EXTENSIONORDERDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_PERSONBUDGETADDDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_PERSONBUDGETAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_PERSONMONEYASSIGNDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_REPAYAPPLYDETAIL.Clear(); t.T_FB_SUBJECT.T_FB_SUBJECTCOMPANY.Clear(); t.T_FB_SUBJECT.T_FB_SUBJECTDEPTMENT.Clear(); t.T_FB_SUBJECT.T_FB_SUBJECTPOST.Clear(); t.T_FB_SUBJECT.T_FB_TRAVELEXPAPPLYDETAIL.Clear(); #endregion } }); }); //保存 service.SaveList(orders); } catch (Exception ex) { SMT.SaaS.FrameworkUI.ChildWidow.ComfirmWindow.ConfirmationBoxs("导入出错", ex.Message, "确定", MessageIcon.Exclamation); } } }); #endregion #region 所有信息构造完成之后保存数据 service.SaveListCompleted += new EventHandler<ActionCompletedEventArgs<bool>>((s, evgs) => { if (evgs.Result) { SMT.SaaS.FrameworkUI.ChildWidow.ComfirmWindow.ConfirmationBox("导入成功", "导入成功", "确定"); } else { SMT.SaaS.FrameworkUI.ChildWidow.ComfirmWindow.ConfirmationBox("导入失败", "导入失败", "确定"); } }); #endregion } catch (Exception ex) { SMT.SaaS.FrameworkUI.ChildWidow.ComfirmWindow.ConfirmationBoxs("导入出错", ex.Message, "确定", MessageIcon.Exclamation); } }