예제 #1
0
        public int getNotificationCount()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(NotificationManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria mainCriteria = DetachedCriteria.For <Entity_Notification>("notification");

            mainCriteria.Add(Restrictions.Eq("notification.myConfigObj.currentBatch", Common.loggedUser.myConfigObj.currentBatch));
            mainCriteria.Add(Restrictions.Eq("notification.myConfigObj.currentDegree", Common.loggedUser.myConfigObj.currentDegree));
            mainCriteria.SetProjection(Projections.Count("notification.notificationId"));

            DetachedCriteria subCriteria = DetachedCriteria.For <Entity_UserNotification>("userNotification");

            subCriteria.Add(Restrictions.EqProperty("userNotification.notificationId", "notification.notificationId"));
            subCriteria.Add(Restrictions.Eq("userNotification.staffId", Common.loggedUser.staffId));
            subCriteria.SetProjection(Projections.Distinct(Projections.Property("userNotification.notificationId")));

            mainCriteria.Add(Subqueries.NotExists(subCriteria));

            IList list = persistence.findByCriteria(mainCriteria);

            if (list != null && list.Count > 0)
            {
                return(Convert.ToInt32(list[0]));
            }
            else
            {
                return(0);
            }
        }
예제 #2
0
    private void SetCriteria()
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(InProcessLocationDetail));

        criteria.CreateAlias("OrderLocationTransaction", "olt");
        criteria.CreateAlias("InProcessLocation", "ip");
        criteria.Add(Expression.Eq("ip.Status", BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE));
        criteria.Add(Expression.Eq("ip.Type", BusinessConstants.CODE_MASTER_INPROCESS_LOCATION_TYPE_VALUE_NORMAL));

        if (this.IOType == BusinessConstants.IO_TYPE_IN)
        {
            DetachedCriteria subCriteria = DetachedCriteria.For(typeof(OrderLocationTransaction));
            subCriteria.CreateAlias("OrderDetail", "od");
            subCriteria.CreateAlias("od.OrderHead", "oh");
            OrderHelper.SetOpenOrderStatusCriteria(subCriteria, "oh.Status");
            subCriteria.Add(Expression.Eq("IOType", BusinessConstants.IO_TYPE_IN));
            subCriteria.Add(Expression.Eq("Item.Code", this.Item));
            subCriteria.Add(Expression.Eq("Location.Code", this.Location));
            subCriteria.SetProjection(Projections.ProjectionList().Add(Projections.GroupProperty("OrderDetail.Id")));

            criteria.Add(Subqueries.PropertyIn("olt.OrderDetail.Id", subCriteria));
        }
        else
        {
            criteria.Add(Expression.Eq("olt.Item.Code", this.Item));
            criteria.Add(Expression.Eq("olt.Location.Code", this.Location));
        }

        DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(criteria);

        selectCountCriteria.SetProjection(Projections.Count("Id"));
        this.SetSearchCriteria(criteria, selectCountCriteria);
    }
예제 #3
0
        /// <summary>
        ///     Versuch über ein Detached Criteria die Where-Klauseln zu verarbeiten, damit es mit dem Order nicht zu
        ///     komplikationen kommt.
        /// </summary>
        protected virtual IPage <T> Find(IPageable pageable, Action <DetachedCriteria> criteriaBuilder, Action <ICriteria> ordersBuilder = null)
        {
            Require.NotNull(pageable, "pageable");
            Require.NotNull(criteriaBuilder, "criteriaBuilder");

            HibernateDelegate <IPage <T> > finder = delegate(ISession session) {
                DetachedCriteria whereCriteria = DetachedCriteria.For(typeof(T));
                criteriaBuilder(whereCriteria);
                whereCriteria.SetProjection(Projections.Property("Id"));

                ICriteria elementsCriteria = session.CreateCriteria(typeof(T));
                elementsCriteria.Add(Subqueries.PropertyIn("Id", whereCriteria));

                if (ordersBuilder != null)
                {
                    ordersBuilder(elementsCriteria);
                }
                ApplyPaging(pageable, elementsCriteria);

                ICriteria countCriteria = session.CreateCriteria(typeof(T));
                countCriteria.Add(Subqueries.PropertyIn("Id", whereCriteria));
                countCriteria.SetProjection(Projections.RowCountInt64());

                IFutureValue <long> futureTotalCount = countCriteria.FutureValue <long>();
                IEnumerable <T>     futureElements   = elementsCriteria.Future <T>();
                Page <T>            page             = new Page <T>(futureElements.ToList(), pageable, futureTotalCount.Value);
                return(page);
            };

            return(HibernateTemplate.Execute(finder));
        }
예제 #4
0
        public static DetachedCriteria[] GetPermissionCriteriaByCategory(User user, string category)
        {
            DetachedCriteria[] criteria = new DetachedCriteria[2];

            DetachedCriteria upSubCriteria = DetachedCriteria.For <UserPermission>();

            upSubCriteria.CreateAlias("User", "u");
            upSubCriteria.CreateAlias("Permission", "pm");
            upSubCriteria.CreateAlias("pm.Category", "pmc");
            upSubCriteria.Add(Expression.Eq("pmc.Type", category));
            upSubCriteria.Add(Expression.Eq("u.Code", user.Code));
            upSubCriteria.SetProjection(Projections.ProjectionList().Add(Projections.GroupProperty("pm.Code")));

            DetachedCriteria rpSubCriteria = DetachedCriteria.For <RolePermission>();

            rpSubCriteria.CreateAlias("Role", "r");
            rpSubCriteria.CreateAlias("Permission", "pm");
            rpSubCriteria.CreateAlias("pm.Category", "pmc");
            rpSubCriteria.Add(Expression.Eq("pmc.Type", category));
            rpSubCriteria.SetProjection(Projections.ProjectionList().Add(Projections.GroupProperty("pm.Code")));

            DetachedCriteria urSubCriteria = DetachedCriteria.For <UserRole>();

            urSubCriteria.CreateAlias("User", "u");
            urSubCriteria.CreateAlias("Role", "r");
            urSubCriteria.Add(Expression.Eq("u.Code", user.Code));
            urSubCriteria.SetProjection(Projections.ProjectionList().Add(Projections.GroupProperty("r.Code")));

            rpSubCriteria.Add(Subqueries.PropertyIn("r.Code", urSubCriteria));

            criteria[0] = upSubCriteria;
            criteria[1] = rpSubCriteria;

            return(criteria);
        }
        public IList <InProcessLocationDetail> GetInProcessLocationDetailOut(IList <string> itemList, IList <string> locList)
        {
            DetachedCriteria criteria = DetachedCriteria.For(typeof(InProcessLocationDetail));

            criteria.CreateAlias("InProcessLocation", "ip");
            criteria.Add(Expression.Eq("ip.Status", BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE));
            criteria.Add(Expression.Eq("ip.Type", BusinessConstants.CODE_MASTER_INPROCESS_LOCATION_TYPE_VALUE_NORMAL));
            criteria.CreateAlias("OrderLocationTransaction", "olt");
            if (itemList.Count == 1)
            {
                criteria.Add(Expression.Eq("olt.Item.Code", itemList[0]));
            }
            else
            {
                criteria.Add(Expression.InG <string>("olt.Item.Code", itemList));
            }
            if (locList.Count == 1)
            {
                criteria.Add(Expression.Eq("olt.Location.Code", locList[0]));
            }
            else
            {
                criteria.Add(Expression.InG <string>("olt.Location.Code", locList));
            }

            criteria.SetProjection(Projections.ProjectionList()
                                   .Add(Projections.GroupProperty("olt.Location.Code").As("LocationCode"))
                                   .Add(Projections.GroupProperty("olt.Item.Code").As("ItemCode"))
                                   .Add(Projections.Sum("Qty").As("Qty")));

            criteria.SetResultTransformer(Transformers.AliasToBean(typeof(InProcessLocationDetail)));
            return(this.criteriaMgr.FindAll <InProcessLocationDetail>(criteria));
        }
예제 #6
0
파일: DaoTests.cs 프로젝트: kilonet/elfam
        public void ProdsWDate()
        {
            ISession session = GetConfiguration().BuildSessionFactory().OpenSession();

            Category category = new Category()
            {
                Id = 1
            };

            DetachedCriteria criteria = DetachedCriteria.For <Income>();

            criteria.CreateAlias("Product", "p");
            criteria.CreateAlias("p.Category", "c");
            criteria.SetProjection(
                Projections.ProjectionList()
                .Add(Projections.GroupProperty("Product"))
                .Add(Projections.GroupProperty("c.Name"))
                .Add(Projections.Max("Date")));
            //criteria.Add(Restrictions.Eq("p.Category", category));
            criteria.AddOrder(NHibernate.Criterion.Order.Asc("c.Name"));
            var list = criteria.GetExecutableCriteria(session).List();

            foreach (var VARIABLE in list)
            {
            }
        }
예제 #7
0
    private decimal GetTotalOutQty(LocationDetail locationDetail)
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationTransactionView));

        //criteria.CreateAlias("Location", "l");

        #region Customize
        //SecurityHelper.SetRegionSearchCriteria(criteria, "l.Region.Code", this.CurrentUser.Code); //区域权限
        CriteriaHelper.SetStartDateCriteria(criteria, "EffDate", _criteriaParam);
        CriteriaHelper.SetEndDateCriteria(criteria, "EffDate", _criteriaParam);

        #endregion

        #region Select Parameters
        string[] regionCode   = locationDetail.Region != null ? new string[] { locationDetail.Region.Code } : null;
        string[] locationCode = locationDetail.Location != null ? new string[] { locationDetail.Location.Code } : null;
        string   itemCode     = locationDetail.Item != null ? locationDetail.Item.Code : null;
        //CriteriaHelper.SetPartyCriteria(criteria, "l.Region.Code", regionCode);
        CriteriaHelper.SetLocationCriteria(criteria, "Loc", locationCode);
        CriteriaHelper.SetItemCriteria(criteria, "Item", itemCode, MatchMode.Exact);
        criteria.Add(Expression.In("TransType", GetTransType()));
        #endregion

        criteria.SetProjection(Projections.Sum("Qty"));

        IList result = CriteriaMgr.FindAll(criteria);
        if (result[0] != null)
        {
            return((decimal)result[0]);
        }
        else
        {
            return(0);
        }
    }
        public bool CheckGoodsIssueFIFO(string locationCode, string itemCode, DateTime baseManufatureDate, IList <string> huIdList)
        {
            DetachedCriteria criteria = DetachedCriteria.For <LocationLotDetail>();

            criteria.SetProjection(Projections.Count("Id"));

            criteria.CreateAlias("Hu", "hu");
            criteria.CreateAlias("Location", "loc");
            criteria.CreateAlias("Item", "item");

            criteria.Add(Expression.IsNotNull("Hu"));
            criteria.Add(Expression.Gt("Qty", new Decimal(0)));
            criteria.Add(Expression.Eq("item.Code", itemCode));
            criteria.Add(Expression.Eq("loc.Code", locationCode));
            criteria.Add(Expression.Lt("hu.ManufactureDate", baseManufatureDate));
            criteria.Add(Expression.Not(Expression.In("hu.HuId", huIdList.ToArray <string>())));

            IList <int> list = this.criteriaMgr.FindAll <int>(criteria);

            if (list[0] > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
예제 #9
0
        public ActionResult List()
        {
            DetachedCriteria criteria = DetachedCriteria.For(typeof(User));

            criteria.CreateAlias("Orders", "o");
            criteria.SetProjection(
                Projections.ProjectionList()
                .Add(Projections.Count("Orders").As("Quantity"))
                .Add(Projections.GroupProperty("Id").As("UserId")));
            criteria.SetResultTransformer(Transformers.AliasToBean(typeof(UserOrdersReportRow)));
            IList <UserOrdersReportRow> userOrders    = daoTemplate.FindByCriteria <UserOrdersReportRow>(criteria);
            DetachedCriteria            usersCriteria = DetachedCriteria.For(typeof(User)).SetFetchMode("Orders", FetchMode.Select);
            IList <User> users = daoTemplate.FindByCriteria <User>(usersCriteria);
            IList <UserListItemViewModel> viewModels = new List <UserListItemViewModel>(users.Count);

            foreach (User user in users)
            {
                UserOrdersReportRow row = userOrders.SingleOrDefault(x => x.UserId == user.Id);
                int quantity            = row == null ? 0 : row.Quantity;
                viewModels.Add(new UserListItemViewModel()
                {
                    Quantity = quantity,
                    User     = user,
                    Profit   = user.Profit(),
                    Summ     = user.Orders.Sum(x => x.SummWithDiscount)
                });
            }
            return(View(viewModels));
        }
예제 #10
0
    protected override void SetCriteria()
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationDetail));

        criteria.CreateAlias("Location", "l");

        #region Customize
        SecurityHelper.SetRegionSearchCriteria(criteria, "l.Region.Code", this.CurrentUser.Code); //区域权限
        #endregion

        #region Select Parameters
        CriteriaHelper.SetLocationCriteria(criteria, "l.Code", this._criteriaParam);
        if (this._criteriaParam.Item != null)
        {
            criteria.Add(Expression.Eq("Item.Code", this._criteriaParam.Item));
        }

        #endregion

        if (this._criteriaParam.LocationType != null)
        {
            criteria.Add(Expression.Eq("l.Type", this._criteriaParam.LocationType));
        }

        DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(criteria);
        selectCountCriteria.SetProjection(Projections.Count("Id"));

        SetSearchCriteria(criteria, selectCountCriteria);
    }
예제 #11
0
    protected override void SetCriteria()
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationLotDetail));

        criteria.CreateAlias("Location", "l");

        #region Customize
        SecurityHelper.SetRegionSearchCriteria(criteria, "l.Region.Code", this.CurrentUser.Code); //区域权限
        #endregion

        #region Select Parameters
        if (this._criteriaParam.Location == null)
        {
            criteria.Add(Expression.Eq("l.Type", BusinessConstants.LOCATION_TYPE_WORKSHOP));
        }
        else
        {
            CriteriaHelper.SetLocationCriteria(criteria, "Location.Code", this._criteriaParam);
        }
        CriteriaHelper.SetItemCriteria(criteria, "Item.Code", this._criteriaParam);
        criteria.Add(Expression.IsNotNull("Hu.HuId"));
        criteria.Add(Expression.Not(Expression.Eq("Qty", decimal.Zero)));

        #endregion

        DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(criteria);
        selectCountCriteria.SetProjection(Projections.Count("Id"));
        SetSearchCriteria(criteria, selectCountCriteria);
    }
예제 #12
0
        public List <Entity_Staff> getUnusedUsersList()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(StaffManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria mainCriteria = DetachedCriteria.For <Entity_Staff>("staff");

            DetachedCriteria subCriteria1 = DetachedCriteria.For <Entity_Notification>("notificationObj");

            subCriteria1.Add(Restrictions.EqProperty("notificationObj.staffId", "staff.staffId"));
            subCriteria1.SetProjection(Projections.Distinct(Projections.Property("notificationObj.staffId")));

            DetachedCriteria subCriteria2 = DetachedCriteria.For <Entity_UserNotification>("userNotificationObj");

            subCriteria2.Add(Restrictions.EqProperty("userNotificationObj.staffId", "staff.staffId"));
            subCriteria2.SetProjection(Projections.Distinct(Projections.Property("userNotificationObj.staffId")));

            mainCriteria.Add(Subqueries.NotExists(subCriteria1));
            mainCriteria.Add(Subqueries.NotExists(subCriteria2));
            mainCriteria.Add(Restrictions.Gt("staffId", Convert.ToInt64(Common.adminId)));

            IList list = persistence.findByCriteria(mainCriteria);

            if (list != null && list.Count > 0)
            {
                return(list.Cast <Entity_Staff>().ToList());
            }
            else
            {
                return(null);
            }
        }
예제 #13
0
    private void SetCriteria()
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(OrderLocationTransaction));

        criteria.CreateAlias("OrderDetail", "od");
        criteria.CreateAlias("od.OrderHead", "oh");

        OrderHelper.SetOpenOrderStatusCriteria(criteria, "oh.Status");//订单状态
        if (this.EndDate.HasValue)
        {
            if (IOType == BusinessConstants.IO_TYPE_IN)
            {
                criteria.Add(Expression.Le("oh.WindowTime", this.EndDate.Value));
            }
            else
            {
                criteria.Add(Expression.Lt("oh.StartTime", this.EndDate.Value));
            }
        }
        criteria.Add(Expression.Eq("Item.Code", this.Item));
        criteria.Add(Expression.Eq("Location.Code", this.Location));
        criteria.Add(Expression.Eq("IOType", this.IOType));

        DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(criteria);

        selectCountCriteria.SetProjection(Projections.Count("Id"));
        SetSearchCriteria(criteria, selectCountCriteria);
    }
예제 #14
0
    protected void Page_Load(object sender, EventArgs e)
    {
        this.tbFlowOrLoc.ServiceParameter = "string:" + this.CurrentUser.Code + ",bool:true,bool:true,bool:true,bool:true,bool:true,bool:true,string:" + BusinessConstants.PARTY_AUTHRIZE_OPTION_TO;

        this.tbFlowOrLoc.DataBind();
        this.tbFlow.ServiceParameter = "string:" + this.CurrentUser.Code + ",bool:true,bool:true,bool:true,bool:true,bool:true,bool:true,string:" + BusinessConstants.PARTY_AUTHRIZE_OPTION_TO;

        this.tbWinTime.Attributes.Add("onclick", "WdatePicker({dateFmt:'yyyy-MM-dd HH:mm',lang:'" + this.CurrentUser.UserLanguage + "'})");
        this.tbWinTime.Attributes["onchange"]  += "setStartTime();";
        this.cbIsUrgent.Attributes["onchange"] += "setStartTime();";
        if (!IsPostBack)
        {
            this.ucShift.Date = DateTime.Today;

            DetachedCriteria criteria = DetachedCriteria.For <MrpRunLog>();
            criteria.SetProjection(Projections.ProjectionList().Add(Projections.GroupProperty("RunDate")));
            criteria.AddOrder(Order.Desc("RunDate"));
            IList <DateTime> list = TheCriteriaMgr.FindAll <DateTime>(criteria, 0, 30);

            List <string> effDate = list.Select(l => l.ToString("yyyy-MM-dd")).ToList();

            this.ddlDate.DataSource = effDate;
            this.ddlDate.DataBind();
        }
    }
예제 #15
0
        private List <LeanEngine.Entity.InvBalance> GetInspectInvBalance()
        {
            //报验库存
            DetachedCriteria criteria = DetachedCriteria.For(typeof(InspectOrderDetail));

            criteria.CreateAlias("InspectOrder", "io");
            criteria.CreateAlias("LocationLotDetail", "lld");
            criteria.Add(Expression.Eq("io.Status", BusinessConstants.CODE_MASTER_STATUS_VALUE_CREATE));
            criteria.Add(Expression.Eq("io.IsSeperated", false));

            criteria.SetProjection(Projections.ProjectionList()
                                   .Add(Projections.Sum("InspectQty").As("InspectQty"))
                                   .Add(Projections.Sum("QualifiedQty").As("QualifiedQty"))
                                   .Add(Projections.Sum("RejectedQty").As("RejectedQty"))
                                   .Add(Projections.GroupProperty("LocationFrom.Code").As("LocationFromCode"))
                                   .Add(Projections.GroupProperty("lld.Item.Code").As("ItemCode")));

            criteria.SetResultTransformer(Transformers.AliasToBean(typeof(InspectOrderDetail)));
            IList <InspectOrderDetail> inspectOrderDetailList = CriteriaMgr.FindAll <InspectOrderDetail>(criteria);
            var query = from i in inspectOrderDetailList
                        select new LeanEngine.Entity.InvBalance
            {
                Loc     = i.LocationFromCode,
                Item    = i.ItemCode,
                Qty     = i.InspectedQty,
                InvType = Enumerators.InvType.Inspect
            };

            return(query.Where(q => q.Qty != 0).ToList());
        }
예제 #16
0
        public IList getCompanyStatCount()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(StatisticsManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria criteria = DetachedCriteria.For <Entity_CompanyDetails>();

            criteria.Add(Restrictions.Eq("myConfigObj.currentBatch", Common.loggedUser.myConfigObj.currentBatch));
            criteria.Add(Restrictions.Eq("myConfigObj.currentDegree", Common.loggedUser.myConfigObj.currentDegree));

            ProjectionList projectionList = Projections.ProjectionList();

            projectionList.Add(Projections.Count((Projections.Property("status"))));
            projectionList.Add(Projections.GroupProperty(Projections.Property("status")));

            criteria.SetProjection(projectionList);
            criteria.AddOrder(Order.Desc(Projections.Property("status")));

            IList list = persistence.findByCriteria(criteria);

            if (list != null && list.Count > 0)
            {
                return(list);
            }
            else
            {
                return(null);
            }
        }
예제 #17
0
        public int GetCount <T>() where T : DomainEntity
        {
            DetachedCriteria q = DetachedCriteria.For(typeof(T));

            q.SetProjection(Projections.Count("Id"));
            return(q.GetExecutableCriteria(Session).UniqueResult <int>());
        }
예제 #18
0
        public IDictionary <string, int> getYearlyStudentMap()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(StatisticsManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria criteria = DetachedCriteria.For <Entity_PlacementDetails>();

            criteria.CreateAlias("stuObj", "student");

            ProjectionList projectionList = Projections.ProjectionList();

            projectionList.Add(Projections.GroupProperty(Projections.Property("student.myConfigObj.currentBatch")));
            projectionList.Add(Projections.Count(Projections.Property("detailsId")));

            criteria.SetProjection(projectionList);
            criteria.Add(Restrictions.Eq("student.myConfigObj.currentDegree", Common.loggedUser.myConfigObj.currentDegree));

            IList list = persistence.findByCriteria(criteria);

            if (list != null && list.Count > 0)
            {
                IDictionary <string, int> resultMap = new Dictionary <string, int>();

                foreach (Object[] item in list)
                {
                    resultMap.Add(item[0].ToString(), Convert.ToInt32(item[1]));
                }
                return(resultMap);
            }
            else
            {
                return(null);
            }
        }
예제 #19
0
        public int getNonPlacedStudentCount()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(StatisticsManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria subCriteria = DetachedCriteria.For <Entity_PlacementDetails>("placedObj");

            subCriteria.Add(Restrictions.EqProperty("placedObj.studentId", "student.studentId"));
            subCriteria.SetProjection(Projections.Distinct(Projections.Property("placedObj.studentId")));

            DetachedCriteria mainCriteria = DetachedCriteria.For <Entity_Student>("student");

            mainCriteria.SetProjection(Projections.Count(Projections.Distinct(Projections.Property("student.studentId"))));
            mainCriteria.Add(Subqueries.NotExists(subCriteria));
            mainCriteria.Add(Restrictions.Eq("student.myConfigObj.currentBatch", Common.loggedUser.myConfigObj.currentBatch));
            mainCriteria.Add(Restrictions.Eq("student.myConfigObj.currentDegree", Common.loggedUser.myConfigObj.currentDegree));

            IList list = persistence.findByCriteria(mainCriteria);

            if (list != null && list.Count > 0)
            {
                return(Convert.ToInt32(list[0]));
            }
            else
            {
                return(0);
            }
        }
예제 #20
0
        public decimal GetCurrentInv(string location, string item)
        {
            DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationDetail));

            if (location != null && location.Trim() != string.Empty)
            {
                criteria.Add(Expression.Eq("Location.Code", location));
            }
            if (item != null && item.Trim() != string.Empty)
            {
                criteria.Add(Expression.Eq("Item.Code", item));
            }

            criteria.SetProjection(Projections.Sum("Qty"));
            IList result = CriteriaMgr.FindAll(criteria);

            if (result[0] != null)
            {
                return((decimal)result[0]);
            }
            else
            {
                return(0);
            }
        }
예제 #21
0
        public IDictionary <string, int> getYearlyCompanyMap()
        {
            Utility.logFile(Constant.METHOD_ENTER + Utility.getCurrentMethodName(1) + "(StatisticsManagerImpl)", null, Constant.LOGTYPE_INFO);
            DetachedCriteria criteria = DetachedCriteria.For <Entity_CompanyDetails>();

            criteria.Add(Restrictions.Eq("status", Utility.getEnumIndexByValue(Constant.ENUM_COMPANY_STATUS,
                                                                               EnumData.companyStatus.CONFIRMED.ToString())));
            criteria.Add(Restrictions.Eq("myConfigObj.currentDegree", Common.loggedUser.myConfigObj.currentDegree));

            ProjectionList projectionList = Projections.ProjectionList();

            projectionList.Add(Projections.GroupProperty(Projections.Property("myConfigObj.currentBatch")));
            projectionList.Add(Projections.Count(Projections.Property("compDetailsId")));

            criteria.SetProjection(projectionList);

            IList list = persistence.findByCriteria(criteria);

            if (list != null && list.Count > 0)
            {
                IDictionary <string, int> resultMap = new Dictionary <string, int>();

                foreach (Object[] item in list)
                {
                    resultMap.Add(item[0].ToString(), Convert.ToInt32(item[1]));
                }
                return(resultMap);
            }
            else
            {
                return(null);
            }
        }
예제 #22
0
        public decimal GetDateInventory(string item, string loc, DateTime date)
        {
            decimal          currentInv = this.GetCurrentInv(loc, item);
            DetachedCriteria criteria   = DetachedCriteria.For(typeof(LocationTransaction));

            #region Customize
            criteria.Add(Expression.Gt("EffectiveDate", date));//选定日期期末库存
            #endregion

            #region Select Parameters
            if (loc != null && loc.Trim() != string.Empty)
            {
                criteria.Add(Expression.Eq("Location", loc));
            }
            if (item != null && item.Trim() != string.Empty)
            {
                criteria.Add(Expression.Eq("Item", item));
            }
            #endregion

            criteria.SetProjection(Projections.Sum("Qty"));

            IList   result   = CriteriaMgr.FindAll(criteria);
            decimal transQty = result[0] != null ? (decimal)result[0] : 0;

            return(currentInv - transQty);
        }
예제 #23
0
        public bool CheckGoodsReceiveFIFO(string locationCode, string itemCode, DateTime manufactureDate, string manufactureParty, DateTime?baseManufatureDate)
        {
            DetachedCriteria criteria = DetachedCriteria.For <LocationLotDetail>();

            criteria.SetProjection(Projections.Count("Id"));

            criteria.CreateAlias("Hu", "hu");
            criteria.CreateAlias("Location", "loc");
            criteria.CreateAlias("Item", "item");
            criteria.CreateAlias("hu.ManufactureParty", "party");

            criteria.Add(Expression.IsNotNull("Hu"));
            criteria.Add(Expression.Gt("Qty", new Decimal(0)));
            criteria.Add(Expression.Eq("item.Code", itemCode));
            criteria.Add(Expression.Eq("loc.Code", locationCode));
            criteria.Add(Expression.Gt("hu.ManufactureDate", manufactureDate));
            criteria.Add(Expression.Eq("party.Code", manufactureParty));

            if (baseManufatureDate.HasValue)
            {
                criteria.Add(Expression.Lt("hu.ManufactureDate", baseManufatureDate.Value));
            }

            IList <int> list = this.criteriaMgr.FindAll <int>(criteria);

            if (list[0] > 0)
            {
                return(false);
            }
            else
            {
                return(true);
            }
        }
예제 #24
0
        private IList <LocationTransaction> GetLocationTransaction(int mark)
        {
            DetachedCriteria criteria = DetachedCriteria.For(typeof(LocationTransaction));

            criteria.Add(Expression.Eq("IsSubcontract", false));
            criteria.Add(Expression.In("TransactionType", new string[] {
                BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_RCT_WO,
                BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO,
                BusinessConstants.CODE_MASTER_LOCATION_TRANSACTION_TYPE_VALUE_ISS_WO_BF
            }));
            criteria.Add(Expression.Gt("Id", mark));

            criteria.SetProjection(Projections.ProjectionList()
                                   .Add(Projections.Max("Id").As("Id"))
                                   .Add(Projections.GroupProperty("OrderNo").As("OrderNo"))
                                   .Add(Projections.GroupProperty("OrderDetailId").As("OrderDetailId"))
                                   .Add(Projections.GroupProperty("OrderLocationTransactionId").As("OrderLocationTransactionId"))
                                   .Add(Projections.GroupProperty("TransactionType").As("TransactionType"))
                                   .Add(Projections.GroupProperty("Item").As("Item"))
                                   .Add(Projections.GroupProperty("Location").As("Location"))
                                   .Add(Projections.Sum("Qty").As("Qty"))
                                   .Add(Projections.GroupProperty("EffectiveDate").As("EffectiveDate"))
                                   .Add(Projections.GroupProperty("PartyFrom").As("PartyFrom"))
                                   .Add(Projections.GroupProperty("PartyTo").As("PartyTo"))
                                   .Add(Projections.GroupProperty("RefLocation").As("RefLocation")));

            criteria.SetResultTransformer(Transformers.AliasToBean(typeof(LocationTransaction)));
            return(criteriaMgr.FindAll <LocationTransaction>(criteria));
        }
예제 #25
0
    protected override void DoSearch()
    {
        if (SearchEvent != null)
        {
            DateTime startDate = DateTime.Parse(this.tbStartDate.Text.Trim());


            DetachedCriteria selectCriteria = DetachedCriteria.For(typeof(RollingForecast));
            SecurityHelper.SetPartySearchCriteria(selectCriteria, "Supplier.Code", this.CurrentUser.Code);

            if (this.tbSupplier.Text.Trim() != string.Empty)
            {
                selectCriteria.Add(Expression.Eq("Supplier.Code", this.tbSupplier.Text.Trim()));
            }

            selectCriteria.Add(Expression.Ge("Date", startDate));
            selectCriteria.Add(Expression.Lt("Date", startDate.AddDays(140)));


            selectCriteria.SetProjection(Projections.ProjectionList()
                                         .Add(Projections.GroupProperty("Supplier").As("Supplier"))
                                         .Add(Projections.GroupProperty("Item").As("Item"))
                                         .Add(Projections.Max("Id").As("Id")));


            DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(selectCriteria);
            selectCountCriteria.SetProjection(Projections.Count("Id"));
            SearchEvent((new object[] { selectCriteria, selectCountCriteria, startDate, this.IsExport }), null);
        }
    }
예제 #26
0
    protected override void SetCriteria()
    {
        DetachedCriteria criteria = DetachedCriteria.For(typeof(CycleCountResult));

        criteria.CreateAlias("CycleCount", "cc");
        criteria.CreateAlias("cc.Location", "l");

        #region Customize
        SecurityHelper.SetRegionSearchCriteria(criteria, "l.Region.Code", this.CurrentUser.Code); //区域权限
        OrderHelper.SetActiveOrderStatusCriteria(criteria, "cc.Status");                          //状态
        #endregion

        #region Select Parameters
        CriteriaHelper.SetPartyCriteria(criteria, "l.Region.Code", this._criteriaParam);
        CriteriaHelper.SetLocationCriteria(criteria, "cc.Location.Code", this._criteriaParam);
        CriteriaHelper.SetStartDateCriteria(criteria, "cc.EffectiveDate", this._criteriaParam);
        CriteriaHelper.SetEndDateCriteria(criteria, "cc.EffectiveDate", this._criteriaParam);
        CriteriaHelper.SetStorageBinCriteria(criteria, "StorageBin.Code", this._criteriaParam);
        CriteriaHelper.SetItemCriteria(criteria, "Item.Code", this._criteriaParam);
        CriteriaHelper.SetOrderNoCriteria(criteria, "CycleCount.Code", this._criteriaParam, MatchMode.Start);
        #endregion

        #region Projections
        ProjectionList projectionList = Projections.ProjectionList()
                                        .Add(Projections.Max("Id").As("Id"))
                                        .Add(Projections.Sum("Qty").As("Qty"))
                                        .Add(Projections.Sum("InvQty").As("InvQty"))
                                        .Add(Projections.Sum("DiffQty").As("DiffQty"))
                                        .Add(Projections.Count("HuId").As("Cartons"))
                                        .Add(Projections.GroupProperty("Item").As("Item"));

        if (!this._criteriaParam.ClassifiedOrderNo)
        {
            projectionList.Add(Projections.GroupProperty("CycleCount").As("CycleCount"));
        }
        if (!this._criteriaParam.ClassifiedLocation)
        {
            projectionList.Add(Projections.GroupProperty("cc.Location").As("Location"));
        }
        if (!this._criteriaParam.ClassifiedBin)
        {
            projectionList.Add(Projections.GroupProperty("StorageBin").As("StorageBin"));//库格
        }
        if (!this._criteriaParam.ClassifiedHuId)
        {
            projectionList.Add(Projections.GroupProperty("HuId").As("HuId"));                           //条码
            projectionList.Add(Projections.GroupProperty("LotNo").As("LotNo"));                         //批号
            projectionList.Add(Projections.GroupProperty("ReferenceLocation").As("ReferenceLocation")); //参考库位
            projectionList.Add(Projections.GroupProperty("DiffReason").As("DiffReason"));               //差异原因
        }

        criteria.SetProjection(projectionList);
        criteria.SetResultTransformer(Transformers.AliasToBean(typeof(CycleCountResult)));
        #endregion

        DetachedCriteria selectCountCriteria = CloneHelper.DeepClone <DetachedCriteria>(criteria);
        selectCountCriteria.SetProjection(Projections.Count("Id"));
        SetSearchCriteria(criteria, selectCountCriteria);
    }
예제 #27
0
        public IPagedList <Album> GetAlbums(ILoadOptions options)
        {
            IPagedList <Album> result = new PagedList <Album>();

            if (options == null)
            {
                return(result);
            }

            if (options.MaxResults <= 0)
            {
                return(result);
            }

            ISession session = SessionFactory.GetSession();

            try
            {
                DetachedCriteria countCriteria = GetAlbumsImpl(options);
                DetachedCriteria listCriteria  = GetAlbumsImpl(options);

                countCriteria.SetProjection(Projections.RowCount());
                countCriteria.ClearOrders();

                listCriteria.
                SetFirstResult(options.FirstResult).
                SetMaxResults(options.MaxResults);

                IMultiCriteria multiCriteria = session.CreateMultiCriteria();
                multiCriteria.Add(countCriteria);
                multiCriteria.Add(listCriteria);


                IList queryResult = multiCriteria.List();

                result.TotalItems = (int)((IList)queryResult[0])[0];

                IList recordsList = (IList)queryResult[1];

                EntityConverter entityConverter = new EntityConverter();

                foreach (var e in recordsList)
                {
                    AlbumEntity dataEntity     = e as AlbumEntity;
                    Album       businessEntity = entityConverter.FromDataEntity(dataEntity, AlbumConvertOptions.Small);
                    result.Add(businessEntity);
                }
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
            finally
            {
                session.Close();
            }

            return(result);
        }
예제 #28
0
        public override void CreateReceiptDetail(ReceiptDetail receiptDetail)
        {
            #region 记录发货明细上的收货数量
            OrderLocationTransaction inOrderLocationTransaction = receiptDetail.OrderLocationTransaction;
            OrderDetail orderDetail = inOrderLocationTransaction.OrderDetail;
            OrderHead   orderHead   = orderDetail.OrderHead;
            if (receiptDetail.ReceivedInProcessLocationDetail != null)
            {
                //如果已经在收货时做过匹配,直接把收货数记录到匹配的InProcessLocationDetail记录上
                InProcessLocationDetail inProcessLocationDetail = this.inProcessLocationDetailMgr.LoadInProcessLocationDetail(receiptDetail.ReceivedInProcessLocationDetail.Id);
                if (inProcessLocationDetail.ReceivedQty.HasValue)
                {
                    inProcessLocationDetail.ReceivedQty += receiptDetail.ReceivedQty;
                }
                else
                {
                    inProcessLocationDetail.ReceivedQty = receiptDetail.ReceivedQty;
                }
                this.inProcessLocationDetailMgr.UpdateInProcessLocationDetail(inProcessLocationDetail);
            }
            else if (orderHead.Type != BusinessConstants.CODE_MASTER_ORDER_TYPE_VALUE_PRODUCTION) //生产不需要记录收货数量
            {
                #region 找到对应的发货单IpNo
                OrderLocationTransaction outOrderLocationTransaction = this.orderLocationTransactionMgr.GetOrderLocationTransaction(orderDetail.Id, BusinessConstants.IO_TYPE_OUT)[0];

                DetachedCriteria criteria = DetachedCriteria.For <ReceiptInProcessLocation>();
                criteria.SetProjection(Projections.Property("InProcessLocation.IpNo"));
                criteria.Add(Expression.Eq("Receipt.ReceiptNo", receiptDetail.Receipt.ReceiptNo));

                IList  list = this.criteriaMgr.FindAll(criteria);
                string ipNo = (string)list[0];
                #endregion

                IList <InProcessLocationDetail> inProcessLocationDetailList = this.inProcessLocationDetailMgr.GetInProcessLocationDetail(ipNo, outOrderLocationTransaction.Id);
                if (inProcessLocationDetailList == null || inProcessLocationDetailList.Count == 0)
                {
                    throw new TechnicalException("can't find InProcessLocationDetail by ipno and outOrderLocationTransactionId");
                }
                else if (inProcessLocationDetailList.Count == 1)
                {
                    if (inProcessLocationDetailList[0].ReceivedQty.HasValue)
                    {
                        inProcessLocationDetailList[0].ReceivedQty += receiptDetail.ReceivedQty;
                    }
                    else
                    {
                        inProcessLocationDetailList[0].ReceivedQty = receiptDetail.ReceivedQty;
                    }
                    this.inProcessLocationDetailMgr.UpdateInProcessLocationDetail(inProcessLocationDetailList[0]);
                }
                else
                {
                    throw new NotImplementedException("Find serverl InProcessLocationDetails by ipno and outOrderLocationTransactionId, not impl yet.");
                }
            }
            #endregion

            this.entityDao.CreateReceiptDetail(receiptDetail);
        }
예제 #29
0
        public int Count(string name, string excludeId)
        {
            if (name == null)
            {
                throw new ArgumentNullException("name");
            }

            DetachedCriteria re = CreateDetachedCriteria()
                                  .Add(Restrictions.Eq(NameProperty, name));

            if (string.IsNullOrEmpty(excludeId))
            {
                return(re.SetProjection(Projections.RowCount()).GetExecutableCriteria(CurrentSession).UniqueResult <int>());
            }
            re = re.Add(Restrictions.Not(Restrictions.Eq(Projections.Id(), excludeId)));
            return(re.SetProjection(Projections.RowCount()).GetExecutableCriteria(CurrentSession).UniqueResult <int>());
        }
예제 #30
0
        /// <summary>
        /// Gets All Ids of objects that met's the Detached Criteria
        /// </summary>
        /// <param name="criteria">Criteia to be Searched</param>
        /// <returns>Collection of Identifiers of object that met the criteia</returns>
        public ICollection <int> GetObjectIdArray(DetachedCriteria criteria)
        {
            ICriteria executableCriteria = GetExecutableCriteria(criteria, null);

            criteria.SetProjection(Projections.Id());
            IList <int> result = executableCriteria.List <int>();

            return(result);
        }
		protected override Expression VisitMethodCall(MethodCallExpression expr)
		{
			Type = BinaryCriterionType.Criteria;

			//TODO: don't hardcode this alias 'sub'
			Criteria = DetachedCriteria.ForEntityName(rootCriteria.GetEntityOrClassName(), "sub");

			EntityExpression rootEntity = EntityExpressionVisitor.RootEntity(expr);
			if (rootEntity != null)
			{
				string identifierName = rootEntity.MetaData.IdentifierPropertyName;
				Criteria.Add(Restrictions.EqProperty(rootCriteria.Alias + "." + identifierName, "sub." + identifierName));
			}

			if (SelectArgumentsVisitor.SupportsMethod(expr.Method.Name))
			{
				var projectionVisitor = new SelectArgumentsVisitor(Criteria.Adapt(session), session);
				projectionVisitor.Visit(expr);
				Criteria.SetProjection(projectionVisitor.Projection);
			}

			return expr;
		}