private void ClearItems(Employee driver = null) { FineItem item = null; if (driver != null) { item = Entity.ObservableItems.Where(x => x.Employee == driver).FirstOrDefault(); } Entity.ObservableItems.Clear(); if (driver != null) { if (item != null) { Entity.ObservableItems.Add(item); } else { Entity.AddItem(driver); } } }
public bool ServiceInitialize(CustomerCompany company, XmlDocument obj, out string message) { if (company.CustomsAuthenticationID.HasValue) { message = "该公司已经初始化"; return(false); } else { bool b = false; using (var tran = this.BeginTransaction()) { try { DateTime createtime = DateTime.Now; var document = new CustomsAuthentication() { TitleName = obj.TitleName, CustomsVersion = obj.CustomsVersion, CustomsID = obj.CustomsID, CreateTime = createtime }; List <OutlineClass> classli = new List <OutlineClass>(); b = obj.OutlineClasses.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Count() > 0; if (!b) { foreach (var xmlclass in obj.OutlineClasses) { var outlintclass = new OutlineClass() { OutlineClassName = xmlclass.OutlineClassName, CustomsID = xmlclass.CustomsID, CreateTime = createtime, CustomsAuthentication = document }; List <Clauses> clausesli = new List <Clauses>(); b = xmlclass.Clauseses.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Count() > 0; if (!b) { foreach (var xmlclauses in xmlclass.Clauseses) { var clauses = new Clauses() { ClausesName = xmlclauses.ClausesName, CustomsID = xmlclauses.CustomsID, CreateTime = createtime, OutlineClass = outlintclass }; List <Item> itemli = new List <Item>(); b = xmlclauses.Items.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Count() > 0; if (!b) { foreach (var xmlitem in xmlclauses.Items) { var item = new Item() { ItemName = xmlitem.ItemName, CustomsID = xmlitem.CustomsID, CreateTime = createtime, Clauses = clauses, IsImportant = xmlitem.IsImportant }; List <ItemScoreConfigure> iscli = new List <ItemScoreConfigure>(); foreach (var sl in xmlitem.ScoreLevels) { var isc = new ItemScoreConfigure() { Item = item, ScoreValue = sl, CreateTime = DateTime.Now }; iscli.Add(isc); } item.ScoreConfigure = iscli; List <FineItem> fineitemli = new List <FineItem>(); b = xmlitem.FineItems.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Count() > 0; if (!b) { foreach (var xmlfineitem in xmlitem.FineItems) { var fineitem = new FineItem() { FineItemName = xmlfineitem.FineItemName, CustomsID = xmlfineitem.CustomsID, CreateTime = createtime, Item = item }; List <FileRequire> filerequireli = new List <FileRequire>(); b = xmlfineitem.FileRequires.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Count() > 0; if (!b) { foreach (var xmlfilerequire in xmlfineitem.FileRequires) { var filerequire = new FileRequire() { Description = xmlfilerequire.Description, SuggestFileName = xmlfilerequire.SuggestFileName, CustomsID = xmlfilerequire.CustomsID, CreateTime = createtime, CustomerCompany = company, FineItem = fineitem }; filerequireli.Add(filerequire); } } else { message = string.Format("细项:{0}下的文件要求CustomsID{1}重复", xmlfineitem.FineItemName, string.Join(",", xmlfineitem.FileRequires.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Select(o => o.Key))); return(false); } fineitem.FileRequires = filerequireli; fineitemli.Add(fineitem); } } else { message = string.Format("项:{0}下的细项CustomsID{1}重复", xmlitem.ItemName, string.Join(",", xmlitem.FineItems.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Select(o => o.Key))); return(false); } item.FineItems = fineitemli; itemli.Add(item); } } else { message = string.Format("条:{0}下的项CustomsID{1}重复", xmlclauses.ClausesName, string.Join(",", xmlclauses.Items.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Select(o => o.Key))); return(false); } clauses.Items = itemli; clausesli.Add(clauses); } } else { message = string.Format("类:{0}下的条CustomsID{1}重复", xmlclass.OutlineClassName, string.Join(",", xmlclass.Clauseses.GroupBy(l => l.CustomsID).Where(g => g.Count() > 1).Select(o => o.Key))); return(false); } outlintclass.Clauseses = clausesli; classli.Add(outlintclass); } } else { message = "该类模板初始化失败,请联系客服"; return(false); } document.OutlineClasses = classli; company.CustomsAuthentication = document; this.Update(company); tran.Commit(); message = "成功执行"; return(true); } catch (Exception ex) { message = ex.Message; tran.Rollback(); return(false); } } } }
private IQueryOver <UndeliveredOrder> GetUndeliveredOrdersQuery(IUnitOfWork uow) { UndeliveredOrderJournalNode resultAlias = null; UndeliveredOrder undeliveredOrderAlias = null; Domain.Orders.Order oldOrderAlias = null; Domain.Orders.Order newOrderAlias = null; Employee driverAlias = null; Employee oldOrderAuthorAlias = null; Employee authorAlias = null; Employee editorAlias = null; Employee registratorAlias = null; Nomenclature nomenclatureAlias = null; OrderItem orderItemAlias = null; OrderEquipment orderEquipmentAlias = null; Counterparty counterpartyAlias = null; DeliveryPoint undeliveredOrderDeliveryPointAlias = null; DeliverySchedule undeliveredOrderDeliveryScheduleAlias = null; DeliverySchedule newOrderDeliveryScheduleAlias = null; RouteList routeListAlias = null; RouteListItem routeListItemAlias = null; Subdivision subdivisionAlias = null; Fine fineAlias = null; FineItem fineItemAlias = null; Employee finedEmployeeAlias = null; Subdivision inProcessAtSubdivisionAlias = null; Subdivision authorSubdivisionAlias = null; GuiltyInUndelivery guiltyInUndeliveryAlias = null; var subqueryDrivers = QueryOver.Of <RouteListItem>(() => routeListItemAlias) .Where(() => routeListItemAlias.Order.Id == oldOrderAlias.Id) .Left.JoinQueryOver(i => i.RouteList, () => routeListAlias) .Left.JoinAlias(i => i.Driver, () => driverAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT(?1, ' ', LEFT(?2,1),'.',LEFT(?3,1)) ORDER BY ?4 DESC SEPARATOR '\n\t↑\n')"), //⬆ NHibernateUtil.String, Projections.Property(() => driverAlias.LastName), Projections.Property(() => driverAlias.Name), Projections.Property(() => driverAlias.Patronymic), Projections.Property(() => routeListItemAlias.Id) ) ); var subquery19LWaterQty = QueryOver.Of <OrderItem>(() => orderItemAlias) .Where(() => orderItemAlias.Order.Id == oldOrderAlias.Id) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Where(n => n.Category == NomenclatureCategory.water && n.TareVolume == TareVolume.Vol19L) .Select(Projections.Sum(() => orderItemAlias.Count)); var subqueryGoodsToClient = QueryOver.Of <OrderEquipment>(() => orderEquipmentAlias) .Where(() => orderEquipmentAlias.Order.Id == oldOrderAlias.Id) .Where(() => orderEquipmentAlias.Direction == Direction.Deliver) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "TRIM(GROUP_CONCAT(CONCAT(IF(?1 IS NULL, ?2, ?1),':',?3) SEPARATOR ?4))"), NHibernateUtil.String, Projections.Property(() => nomenclatureAlias.ShortName), Projections.Property(() => nomenclatureAlias.Name), Projections.Property(() => orderEquipmentAlias.Count), Projections.Constant("\n") ) ); var subqueryGoodsFromClient = QueryOver.Of <OrderEquipment>(() => orderEquipmentAlias) .Where(() => orderEquipmentAlias.Order.Id == oldOrderAlias.Id) .Where(() => orderEquipmentAlias.Direction == Direction.PickUp) .Left.JoinQueryOver(i => i.Nomenclature, () => nomenclatureAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "TRIM(GROUP_CONCAT(CONCAT(IF(?1 IS NULL, ?2, ?1),':',?3) SEPARATOR ?4))"), NHibernateUtil.String, Projections.Property(() => nomenclatureAlias.ShortName), Projections.Property(() => nomenclatureAlias.Name), Projections.Property(() => orderEquipmentAlias.Count), Projections.Constant("\n") ) ); var subqueryGuilty = QueryOver.Of <GuiltyInUndelivery>(() => guiltyInUndeliveryAlias) .Where(() => undeliveredOrderAlias.Id == guiltyInUndeliveryAlias.UndeliveredOrder.Id) .Left.JoinQueryOver(g => g.GuiltyDepartment, () => subdivisionAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT(" + "CASE ?1 " + $"WHEN '{nameof(GuiltyTypes.Client)}' THEN 'Клиент' " + $"WHEN '{nameof(GuiltyTypes.Driver)}' THEN 'Водитель' " + $"WHEN '{nameof(GuiltyTypes.Department)}' THEN 'Отд' " + $"WHEN '{nameof(GuiltyTypes.ServiceMan)}' THEN 'Мастер СЦ' " + $"WHEN '{nameof(GuiltyTypes.ForceMajor)}' THEN 'Форс-мажор' " + $"WHEN '{nameof(GuiltyTypes.None)}' THEN 'Нет (не недовоз)' " + "ELSE 'Неизвестно' " + "END, " + "IF(?1 = 'Department' AND ?2 = '', ':Неизвестно', " + "IF(?1 = 'Department' AND ?2 != '', CONCAT(':', ?2), ''))) " + "SEPARATOR '\n')"), NHibernateUtil.String, Projections.Property(() => guiltyInUndeliveryAlias.GuiltySide), Projections.Property(() => subdivisionAlias.ShortName) ) ); var subqueryFined = QueryOver.Of <Fine>(() => fineAlias) .Where(() => fineAlias.UndeliveredOrder.Id == undeliveredOrderAlias.Id) .Left.JoinAlias(() => fineAlias.Items, () => fineItemAlias) .Left.JoinAlias(() => fineItemAlias.Employee, () => finedEmployeeAlias) .Select( Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "GROUP_CONCAT(CONCAT_WS(': ', ?1, ?2) SEPARATOR '\n')"), NHibernateUtil.String, Projections.Property(() => finedEmployeeAlias.LastName), Projections.Property(() => fineItemAlias.Money) ) ); var query = uow.Session.QueryOver <UndeliveredOrder>(() => undeliveredOrderAlias) .Left.JoinAlias(u => u.OldOrder, () => oldOrderAlias) .Left.JoinAlias(u => u.NewOrder, () => newOrderAlias) .Left.JoinAlias(() => oldOrderAlias.Client, () => counterpartyAlias) .Left.JoinAlias(() => newOrderAlias.DeliverySchedule, () => newOrderDeliveryScheduleAlias) .Left.JoinAlias(() => oldOrderAlias.Author, () => oldOrderAuthorAlias) .Left.JoinAlias(() => oldOrderAlias.DeliveryPoint, () => undeliveredOrderDeliveryPointAlias) .Left.JoinAlias(() => oldOrderAlias.DeliverySchedule, () => undeliveredOrderDeliveryScheduleAlias) .Left.JoinAlias(u => u.Author, () => authorAlias) .Left.JoinAlias(u => u.LastEditor, () => editorAlias) .Left.JoinAlias(u => u.EmployeeRegistrator, () => registratorAlias) .Left.JoinAlias(u => u.InProcessAtDepartment, () => inProcessAtSubdivisionAlias) .Left.JoinAlias(u => u.Author.Subdivision, () => authorSubdivisionAlias) .Left.JoinAlias(() => undeliveredOrderAlias.GuiltyInUndelivery, () => guiltyInUndeliveryAlias) .Left.JoinAlias(() => guiltyInUndeliveryAlias.GuiltyDepartment, () => subdivisionAlias); if (FilterViewModel?.RestrictDriver != null) { var oldOrderIds = _undeliveredOrdersRepository.GetListOfUndeliveryIdsForDriver(UoW, FilterViewModel.RestrictDriver); query.Where(() => oldOrderAlias.Id.IsIn(oldOrderIds.ToArray())); } if (FilterViewModel?.RestrictOldOrder != null) { query.Where(() => oldOrderAlias.Id == FilterViewModel.RestrictOldOrder.Id); } if (FilterViewModel?.RestrictClient != null) { query.Where(() => counterpartyAlias.Id == FilterViewModel.RestrictClient.Id); } if (FilterViewModel?.RestrictAddress != null) { query.Where(() => undeliveredOrderDeliveryPointAlias.Id == FilterViewModel.RestrictAddress.Id); } if (FilterViewModel?.RestrictAuthorSubdivision != null) { query.Where(() => authorAlias.Subdivision.Id == FilterViewModel.RestrictAuthorSubdivision.Id); } if (FilterViewModel?.RestrictOldOrderAuthor != null) { query.Where(() => oldOrderAuthorAlias.Id == FilterViewModel.RestrictOldOrderAuthor.Id); } if (FilterViewModel?.RestrictOldOrderStartDate != null) { query.Where(() => oldOrderAlias.DeliveryDate >= FilterViewModel.RestrictOldOrderStartDate); } if (FilterViewModel?.RestrictOldOrderEndDate != null) { query.Where(() => oldOrderAlias.DeliveryDate <= FilterViewModel.RestrictOldOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel?.RestrictNewOrderStartDate != null) { query.Where(() => newOrderAlias.DeliveryDate >= FilterViewModel.RestrictNewOrderStartDate); } if (FilterViewModel?.RestrictNewOrderEndDate != null) { query.Where(() => newOrderAlias.DeliveryDate <= FilterViewModel.RestrictNewOrderEndDate.Value.AddDays(1).AddTicks(-1)); } if (FilterViewModel?.RestrictGuiltySide != null) { query.Where(() => guiltyInUndeliveryAlias.GuiltySide == FilterViewModel.RestrictGuiltySide); } if (FilterViewModel != null && FilterViewModel.RestrictIsProblematicCases) { query.Where(() => !guiltyInUndeliveryAlias.GuiltySide.IsIn(FilterViewModel.ExcludingGuiltiesForProblematicCases)); } if (FilterViewModel?.RestrictGuiltyDepartment != null) { query.Where(() => subdivisionAlias.Id == FilterViewModel.RestrictGuiltyDepartment.Id); } if (FilterViewModel?.RestrictInProcessAtDepartment != null) { query.Where(u => u.InProcessAtDepartment.Id == FilterViewModel.RestrictInProcessAtDepartment.Id); } if (FilterViewModel?.NewInvoiceCreated != null) { if (FilterViewModel.NewInvoiceCreated.Value) { query.Where(u => u.NewOrder != null); } else { query.Where(u => u.NewOrder == null); } } if (FilterViewModel?.RestrictUndeliveryStatus != null) { query.Where(u => u.UndeliveryStatus == FilterViewModel.RestrictUndeliveryStatus); } if (FilterViewModel?.RestrictUndeliveryAuthor != null) { query.Where(u => u.Author == FilterViewModel.RestrictUndeliveryAuthor); } var addressProjection = Projections.SqlFunction( new SQLFunctionTemplate(NHibernateUtil.String, "CONCAT_WS(', ', ?1, CONCAT('д.', ?2), CONCAT('лит.', ?3), CONCAT('кв/оф ', ?4))"), NHibernateUtil.String, Projections.Property(() => undeliveredOrderDeliveryPointAlias.Street), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Building), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Letter), Projections.Property(() => undeliveredOrderDeliveryPointAlias.Room)); var oldOrderAuthorProjection = CustomProjections.Concat_WS(" ", () => oldOrderAuthorAlias.LastName, () => oldOrderAuthorAlias.Name, () => oldOrderAuthorAlias.Patronymic); var registratorProjection = CustomProjections.Concat_WS(" ", () => registratorAlias.LastName, () => registratorAlias.Name, () => registratorAlias.Patronymic); var authorProjection = CustomProjections.Concat_WS(" ", () => authorAlias.LastName, () => authorAlias.Name, () => authorAlias.Patronymic); query.Where(GetSearchCriterion( () => undeliveredOrderAlias.Id, () => addressProjection, () => counterpartyAlias.Name, () => undeliveredOrderAlias.Reason, () => oldOrderAuthorProjection, () => registratorProjection, () => authorProjection) ); var itemsQuery = query.SelectList(list => list .SelectGroup(() => undeliveredOrderAlias.Id).WithAlias(() => resultAlias.Id) .Select(() => newOrderAlias.Id).WithAlias(() => resultAlias.NewOrderId) .Select(() => newOrderAlias.DeliveryDate).WithAlias(() => resultAlias.NewOrderDeliveryDate) .Select(() => newOrderDeliveryScheduleAlias.Name).WithAlias(() => resultAlias.NewOrderDeliverySchedule) .Select(() => oldOrderAlias.Id).WithAlias(() => resultAlias.OldOrderId) .Select(() => oldOrderAlias.DeliveryDate).WithAlias(() => resultAlias.OldOrderDeliveryDateTime) .Select(() => undeliveredOrderAlias.DispatcherCallTime).WithAlias(() => resultAlias.DispatcherCallTime) .Select(() => undeliveredOrderAlias.DriverCallNr).WithAlias(() => resultAlias.DriverCallNr) .Select(() => undeliveredOrderAlias.DriverCallTime).WithAlias(() => resultAlias.DriverCallTime) .Select(() => undeliveredOrderAlias.DriverCallType).WithAlias(() => resultAlias.DriverCallType) .Select(() => counterpartyAlias.Name).WithAlias(() => resultAlias.Client) .Select(() => oldOrderAuthorAlias.LastName).WithAlias(() => resultAlias.OldOrderAuthorLastName) .Select(() => oldOrderAuthorAlias.Name).WithAlias(() => resultAlias.OldOrderAuthorFirstName) .Select(() => oldOrderAuthorAlias.Patronymic).WithAlias(() => resultAlias.OldOrderAuthorMiddleName) .Select(() => undeliveredOrderDeliveryScheduleAlias.Name).WithAlias(() => resultAlias.OldDeliverySchedule) .Select(() => authorAlias.LastName).WithAlias(() => resultAlias.AuthorLastName) .Select(() => authorAlias.Name).WithAlias(() => resultAlias.AuthorFirstName) .Select(() => authorAlias.Patronymic).WithAlias(() => resultAlias.AuthorMiddleName) .Select(() => registratorAlias.LastName).WithAlias(() => resultAlias.RegistratorLastName) .Select(() => registratorAlias.Name).WithAlias(() => resultAlias.RegistratorFirstName) .Select(() => registratorAlias.Patronymic).WithAlias(() => resultAlias.RegistratorMiddleName) .Select(() => editorAlias.LastName).WithAlias(() => resultAlias.EditorLastName) .Select(() => editorAlias.Name).WithAlias(() => resultAlias.EditorFirstName) .Select(() => editorAlias.Patronymic).WithAlias(() => resultAlias.EditorMiddleName) .Select(() => undeliveredOrderAlias.Reason).WithAlias(() => resultAlias.Reason) .Select(() => undeliveredOrderAlias.UndeliveryStatus).WithAlias(() => resultAlias.UndeliveryStatus) .Select(() => undeliveredOrderAlias.OldOrderStatus).WithAlias(() => resultAlias.StatusOnOldOrderCancel) .Select(() => oldOrderAlias.OrderStatus).WithAlias(() => resultAlias.OldOrderCurStatus) .Select(() => inProcessAtSubdivisionAlias.Name).WithAlias(() => resultAlias.InProcessAt) .SelectSubQuery(subqueryDrivers).WithAlias(() => resultAlias.OldRouteListDriverName) .SelectSubQuery(subquery19LWaterQty).WithAlias(() => resultAlias.OldOrder19LBottleQty) .SelectSubQuery(subqueryGoodsToClient).WithAlias(() => resultAlias.OldOrderGoodsToClient) .SelectSubQuery(subqueryGoodsFromClient).WithAlias(() => resultAlias.OldOrderGoodsFromClient) .SelectSubQuery(subqueryFined).WithAlias(() => resultAlias.Fined) .SelectSubQuery(subqueryGuilty).WithAlias(() => resultAlias.Guilty) .Select(addressProjection).WithAlias(() => resultAlias.Address) ).OrderBy(() => oldOrderAlias.DeliveryDate).Asc .TransformUsing(Transformers.AliasToBean <UndeliveredOrderJournalNode>()); return(itemsQuery); }
public virtual void AddItem(Employee employee) { var item = new FineItem() { Employee = employee, Fine = this }; ObservableItems.Add (item); }