示例#1
0
        public IQueryable <ContractInfo> SearchConditionFiltration(ContractSearchRequest condition, IQueryable <ContractInfo> query)
        {
            //查询主键信息
            if (!string.IsNullOrEmpty(condition.KeyWord))
            {
                query = query.Where(x => x.Name.Contains(condition.KeyWord) ||
                                    x.Num.Contains(condition.KeyWord) ||
                                    x.ProjectName.Contains(condition.KeyWord)
                                    );
            }
            if (condition?.ProjectTypes?.Count > 0)
            {
                query = query.Where(x => condition.ProjectTypes.Contains(x.ProjectType));
            }
            if (condition?.ProjectTypes?.Count > 0)
            {
                query = query.Where(x => condition.ContractTypes.Contains(x.Type));
            }
            if (condition.CheckStatu > 0)
            {
                //query = from
            }

            if (condition.Discard == 1)
            {
                query = query.Where(x => x.IsDelete);//这个后面考虑
            }

            if (condition.OverTime == 1)//过期和时间限定分开
            {
                query = query.Where(x => x.EndTime < DateTime.Now);
            }
            if (condition?.CreateDateStart != null)
            {
                query = query.Where(x => (x.CreateTime >= condition.CreateDateStart.Value));
            }
            if (condition?.CreateDateEnd != null)
            {
                query = query.Where(x => (x.EndTime >= x.CreateTime.Value));
            }
            if (condition.Follow == 1)
            {
                query = query.Where(x => x.IsFollow.Value);
            }

            if (condition?.OrderRule == 0 || condition?.OrderRule == null)
            {
                query = query.OrderByDescending(x => x.StartTime);
            }
            else
            {
                query = query.OrderBy(x => x.Num);
            }
            return(query);
        }
示例#2
0
        [HttpGet, Route("searchReport"), AllowAnonymous]//ShuttleClaimsAuthorize(ActionCode = ConstantsSecurity.ActionCode.WeeklyReportSearch)
        public HttpResponseMessage SearchReport([FromUri] ContractSearchRequest search)
        {
            var response = Request.CreateResponse();

            response.Content = new PushStreamContent((outputStream, httpContent, transportContext)
                                                     => _contractApplicationService.GenerateDataCsvToReportExcel(outputStream, httpContent, transportContext, search), new MediaTypeHeaderValue("text/csv"));
            response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
            {
                FileName        = "contractReportDTOs.csv",
                DispositionType = "inline"
            };
            return(response);
        }
示例#3
0
        public async Task <ContractSearchResponse <ContractInfoResponse> > SearchContractList(UserInfo User, [FromBody] ContractSearchRequest condition)
        {
            if (User.Id == null)
            {
                {
                    User.Id             = "66df64cb-67c5-4645-904f-704ff92b3e81";
                    User.UserName       = "******";
                    User.KeyWord        = "";
                    User.OrganizationId = "270";
                    User.PhoneNumber    = "18122132334";
                };
            }

            Logger.Trace($"用户{User?.UserName ?? ""}({User?.Id ?? ""})查询合同条件(condition):\r\n请求参数为:\r\n" + (condition != null ? JsonHelper.ToJson(condition) : ""));

            var pagingResponse = new ContractSearchResponse <ContractInfoResponse>();

            if (!ModelState.IsValid)
            {
                pagingResponse.Code = ResponseCodeDefines.ModelStateInvalid;
                Logger.Warn($"用户{User?.UserName ?? ""}({User?.Id ?? ""})查询合同条件(PostCustomerListSaleMan)模型验证失败:\r\n{pagingResponse.Message ?? ""},\r\n请求参数为:\r\n" + (condition != null ? JsonHelper.ToJson(condition) : ""));
                return(pagingResponse);
            }

            try
            {
                //if (await _permissionExpansionManager.HavePermission(User.Id, "SEARCH_CONTRACT"))
                //{
                // pagingResponse = await _contractListManager.SearchContract(User, condition, HttpContext.RequestAborted);
                pagingResponse = await _contractListManager.SearchContract2(User, condition, HttpContext.RequestAborted);

                //}
                //else
                //{
                //    pagingResponse.Code = ResponseCodeDefines.NotAllow;
                //    pagingResponse.Message = "权限不足";
                //}
            }
            catch (Exception e)
            {
                pagingResponse.Code    = ResponseCodeDefines.ServiceError;
                pagingResponse.Message = "服务器错误:" + e.ToString();
                Logger.Error($"用户{User?.UserName ?? ""}({User?.Id ?? ""})查询业务员条件(PostCustomerListSaleMan)请求失败:\r\n{pagingResponse.Message ?? ""},\r\n请求参数为:\r\n" + (condition != null ? JsonHelper.ToJson(condition) : ""));
            }
            return(pagingResponse);
        }
示例#4
0
        public async Task <ResponseDTO <PagedList <ContractSearchDTO> > > Search([FromUri] ContractSearchRequest search)
        {
            var resp = await _contractApplicationService.SearchContractAsync(search);

            return(resp);
        }
示例#5
0
 public ContractSearchRequest GetSearchRequest()
 {
     var searchRequest = new ContractSearchRequest
                             {
                                 SearchContractStatusType = StatusType,
                                 SearchValue = SearchValue,
                                 SearchType = SearchType,
                                 SearchStatus = ContractStatus,
                                 User = Users.Current
                             };
     return searchRequest;
 }
示例#6
0
        public void Search_for_contract_using_phone_nummber()
        {
            // Setup mock behaviour
            IList<Contract> contracts = new List<Contract>();
            contracts.Add(new Contract(1, DateTime.Now) { AccountId = 1, ContractNumber = "CT9999", ContractStatus = ContractStatus.Active, PhoneNumber1 = "093233904", PhoneNumber2 = "0339430449" });
            _contractRepository
                .Expect(c => c.FindByPhoneNumber("0339430449"))
                .Returns(contracts);

            _accountRepository
                .Expect(a => a.GetAccount(1))
                .Returns(new MasterAccount(1) { AccountName = "Test Account", AccountNumber = "TST0001", ContactId = 1, CompanyId = 1 });

            _contactRepository
                .Expect(c => c.GetContactEntity(1))
                .Returns(new Contact(1) { Name = "Test Contact" });

            _companyRepository
                .Expect(c => c.GetCompany(1))
                .Returns(new Company(1) { CompanyName = "Test Company" });

            User user = new User() { Username = "******", IsActive = true, Email = "*****@*****.**", IsAuthenticated = true, Name = "Test" };
            ContractSearchRequest request = new ContractSearchRequest()
            {
                SearchValue = "0339430449",
                SearchType = ContractSearchField.PhoneNumber,
                SearchStatus = ContractStatus.Active,
                SearchContractStatusType = SearchContractStatusType.UseStatus,
                User = user
            };
            ContractSearchResponse response = _service.FindContracts(request);

            Assert.IsNotNull(response, "Response is null");
            Assert.IsTrue(response.IsSuccessful, "Response is not successful");
            Assert.IsNotNull(response.Contracts, "Contracts is null");
            Assert.AreEqual(1, response.Contracts.Count, "Contacts count");
            Assert.AreEqual("0339430449", response.Contracts[0].PhoneNumber, "Phone Number");
        }
示例#7
0
        public void FindContractsByContractNumberTest()
        {
            // Setup mock behaviour
            IList<Contract> contracts = new List<Contract>();
            contracts.Add(new Contract(1, DateTime.Now) { AccountId = 1, ContractNumber = "CT9999", ContractStatus = ContractStatus.Active });

            User user = new User() { Username = "******", IsActive = true, Email = "*****@*****.**", IsAuthenticated = true, Name = "Test" };
            ContractSearchRequest request = new ContractSearchRequest()
            {
                SearchValue = "CT",
                SearchType = ContractSearchField.ContractNumber,
                SearchStatus = ContractStatus.Active,
                SearchContractStatusType = SearchContractStatusType.UseStatus,
                User = user
            };
            ContractSearchResponse response = service.FindContracts(request);

            Assert.IsNotNull(response, "Response is null");
            Assert.IsTrue(response.IsSuccessful, "Response is not successful");
            Assert.IsNotNull(response.Contracts, "Contracts is null");
            Assert.AreEqual(1, response.Contracts.Count, "Contacts count");
        }
        /*EXCEL REPORT*/

        public async Task GenerateDataCsvToReportExcel(Stream outputStream, HttpContent httpContent,
                                                       TransportContext transportContext, ContractSearchRequest search)
        {
            var list = await SearchContractAsync(search);

            try
            {
                if (list.Data.Items.Count > 0)
                {
                    using (var writer = new StreamWriter(outputStream))
                    {
                        var headers = new List <string>
                        {
                            "Contract Code",
                            "Period",
                            "Tenant",
                            "Property",
                            "Start",
                            "Finish",
                            "Deposit",
                            "Rent",
                            "Unpaid periods",
                            "Due Date",
                            "Days to collect"
                        };
                        await writer.WriteLineAsync(ExcelHelper.GetHeaderDetail(headers));

                        foreach (var item in list.Data.Items)
                        {
                            await writer.WriteLineAsync(ProcessCellDataToReport(item));
                        }
                    }
                }
            }
            catch (HttpException ex)
            {
            }
            finally
            {
                outputStream.Close();
            }
        }
        public async Task <ResponseDTO <PagedList <ContractSearchDTO> > > SearchContractAsync(ContractSearchRequest search)
        {
            List <OrderExpression <ContractSearchDTO> > orderExpressionList = new List <OrderExpression <ContractSearchDTO> >();

            orderExpressionList.Add(new OrderExpression <ContractSearchDTO>(OrderType.Asc, p => p.ContractCode));

            Expression <Func <ContractSearchDTO, bool> > queryFilter = c => true;

            if (search.BeginDate.HasValue && search.EndDate.HasValue)
            {
                var toPlusADay = search.EndDate.Value.AddDays(1);
                queryFilter = queryFilter.And(p => p.CreationDate.Value >= search.BeginDate);
                queryFilter = queryFilter.And(p => p.CreationDate.Value < toPlusADay);
            }
            else if (search.BeginDate.HasValue && !search.EndDate.HasValue)
            {
                queryFilter = queryFilter.And(p => p.CreationDate.Value >= search.BeginDate);
            }
            else if (!search.BeginDate.HasValue && search.EndDate.HasValue)
            {
                var toPlusADay = search.EndDate.Value.AddDays(1);
                queryFilter = queryFilter.And(p => p.CreationDate.Value < toPlusADay);
            }

            if (!string.IsNullOrEmpty(search.ContractCode))
            {
                queryFilter = queryFilter.And(p => p.ContractCode.Contains(search.ContractCode));
            }

            if (!string.IsNullOrEmpty(search.TenantFullName))
            {
                queryFilter = queryFilter.And(p => p.TenantFullName.Contains(search.TenantFullName));
            }

            if (search.NextDaysToCollect > 0 && search.NextDaysToCollect == 1)
            {
                queryFilter = queryFilter.And(p => p.NextDaysToCollect >= 0 && p.NextDaysToCollect <= 5);
            }
            if (search.NextDaysToCollect > 0 && search.NextDaysToCollect == 2)
            {
                queryFilter = queryFilter.And(p => p.NextDaysToCollect >= 6 && p.NextDaysToCollect <= 10);
            }
            if (search.NextDaysToCollect > 0 && search.NextDaysToCollect == 3)
            {
                queryFilter = queryFilter.And(p => p.NextDaysToCollect >= 11 && p.NextDaysToCollect <= 15);
            }

            if (search.ContractStatusId.HasValue)
            {
                queryFilter = queryFilter.And(p => p.ContractStatusId == search.ContractStatusId);
            }

            if (search.HouseId.HasValue)
            {
                queryFilter = queryFilter.And(p => p.HouseId == search.HouseId);
            }

            if (search.UnpaidPeriods == "Y")
            {
                queryFilter = queryFilter.And(p => p.UnpaidPeriods > 0);
            }
            if (search.UnpaidPeriods == "N")
            {
                queryFilter = queryFilter.And(p => p.UnpaidPeriods == 0);
            }
            if (search.PeriodId.HasValue)
            {
                queryFilter = queryFilter.And(p => p.PeriodId == search.PeriodId);
            }

            var contract = await _contractSearchDataAccess.ListPagedAsync(queryFilter, search.Page, search.PageSize, orderExpressionList.ToArray());

            var pagedResult = new PagedList <ContractSearchDTO>()
            {
                Items    = contract.Items,
                PageSize = contract.PageSize,
                Page     = contract.Page,
                Total    = contract.Total
            };

            return(ResponseBuilder.Correct(pagedResult));
        }
示例#10
0
        public virtual async Task <ContractSearchResponse <ContractInfoResponse> > SearchContract2(UserInfo user, ContractSearchRequest condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (condition == null)
            {
                throw new ArgumentNullException(nameof(condition));
            }
            var pagingResponse = new ContractSearchResponse <ContractInfoResponse>();
            var query          = _icontractInfoStore.ContractInfoAll().Where(a => true);

            query = SearchConditionFiltration(condition, query);
            var organsPer = await _permissionExpansionManager.GetOrganizationOfPermission(user.Id, "ContractSearchOrg");

            //查询部门
            if (!string.IsNullOrEmpty(condition.Organizate))
            {
                if (organsPer.Contains(condition.Organizate))//包含在此权限的范围内
                {
                    var organs = await _permissionExpansionManager.GetLowerDepartments(condition.Organizate);

                    query = query.Where(x => organs.Contains(x.OrganizateID));
                }
                else
                {
                    query = query.Where(x => organsPer.Contains(x.OrganizateID));
                }
            }
            else
            {
                query = query.Where(x => organsPer.Contains(x.OrganizateID));
            }


            if (condition.CheckStatu > 0)
            {
                int nCheckState = 0;
                //                 if ((condition.CheckStatu & 0x01) > 0)//1 2 4 8 未提交 审核中 通过 驳回
                //                 {
                //                     nCheckState = (condition.CheckStatu & 0x01);
                //                 }
                //                 if ((condition.CheckStatu & 0x02) > 0)
                //                 {
                //                     nCheckState = (condition.CheckStatu & 0x02);
                //                 }
                //                 if ((condition.CheckStatu & 0x04) > 0)
                //                 {
                //                     nCheckState = (condition.CheckStatu & 0x04);
                //                 }
                //                 if ((condition.CheckStatu & 0x08) > 0)
                //                 {
                //                     nCheckState = (condition.CheckStatu & 0x08);
                //                 }
                query = query.Where(x => (x.ExamineStatus.Value & condition.CheckStatu) > 0);
            }

            if (condition.pageIndex == -1)
            {
                var qlist = await query.ToListAsync(cancellationToken);

                foreach (var item in qlist)
                {
                    item.Organizate       = _iorganizationExpansionStore.GetFullName(item.OrganizateID).Replace("默认顶级-", "");
                    item.CreateDepartment = _iorganizationExpansionStore.GetFullName(item.OrganizateID).Replace("默认顶级-", "");
                    List <string> fullId = await _permissionExpansionManager.GetParentDepartments(item.OrganizateID);

                    fullId.Remove("0");
                    item.OrganizateFullId = string.Join("*", fullId.ToArray());
                }
                pagingResponse.TotalCount            = qlist.Count;
                pagingResponse.ValidityContractCount = qlist.Count;
                pagingResponse.PageIndex             = condition.pageIndex;
                pagingResponse.PageSize  = condition.pageSize;
                pagingResponse.Extension = _mapper.Map <List <ContractInfoResponse> >(qlist);
            }
            else
            {
                pagingResponse.TotalCount = await query.CountAsync(cancellationToken);

                pagingResponse.ValidityContractCount = pagingResponse.TotalCount;
                //需要加上排序
                var qlist = await query.Skip(condition.pageIndex *condition.pageSize).Take(condition.pageSize).ToListAsync(cancellationToken);

                foreach (var item in qlist)
                {
                    item.Organizate       = _iorganizationExpansionStore.GetFullName(item.OrganizateID).Replace("默认顶级-", "");
                    item.CreateDepartment = _iorganizationExpansionStore.GetFullName(item.OrganizateID).Replace("默认顶级-", "");
                    List <string> fullId = await _permissionExpansionManager.GetParentDepartments(item.OrganizateID);

                    fullId.Remove("0");
                    item.OrganizateFullId = string.Join("*", fullId.ToArray());
                }
                //                 qlist.Select(async x =>
                //                 {
                //                     x.Organizate = _iorganizationExpansionStore.GetFullName(x.OrganizateID);
                //                     x.CreateDepartment = _iorganizationExpansionStore.GetFullName(x.OrganizateID).Replace("默认顶级-", "");
                //                     List<string> fullId = await _permissionExpansionManager.GetParentDepartments(x.OrganizateID);
                //                     fullId.Remove("0");
                //                     x.OrganizateFullId = string.Join("*", fullId.ToArray());
                //                     return x;
                //                 });
                pagingResponse.PageIndex = condition.pageIndex;
                pagingResponse.PageSize  = condition.pageSize;
                pagingResponse.Extension = _mapper.Map <List <ContractInfoResponse> >(qlist);
            }


            return(pagingResponse);
        }
示例#11
0
        public virtual async Task <ContractSearchResponse <ContractInfoResponse> > SearchContract(UserInfo user, ContractSearchRequest condition, CancellationToken cancellationToken = default(CancellationToken))
        {
            if (condition == null)
            {
                throw new ArgumentNullException(nameof(condition));
            }

            var Response = new ContractSearchResponse <ContractInfoResponse>();
            var sql      = @"SELECT a.* from XYH_DT_CONTRACTINFO as a where";

            if (condition?.CheckStatu > 0)
            {
                sql = @"SELECT a.* from XYH_DT_CONTRACTINFO as a LEFT JOIN XYH_DT_MODIFY as b ON a.`CurrentModify`=b.`ID` where";
            }

            string connectstr = " ";

            if (!string.IsNullOrEmpty(condition?.KeyWord))
            {
                sql       += connectstr + @"LOCATE('" + condition.KeyWord + "', a.`Name`)>0";
                connectstr = " and ";
            }
            else if (condition?.KeyWord != null)
            {
                sql       += connectstr + @"a.`ID`!=''";
                connectstr = " and ";
            }

            if (condition?.Discard == 1)
            {
                sql       += connectstr + @"a.IsDelete";
                connectstr = " and ";
            }

            if (condition?.OverTime == 1)//过期和时间限定分开
            {
                sql       += connectstr + @"a.`EndTime`<=CURTIME()";
                connectstr = " and ";
            }
            else if (condition?.CreateDateStart != null && condition?.CreateDateEnd != null)
            {
                sql       += connectstr + @"(a.`StartTime`<='" + condition.CreateDateStart.Value + "'";
                connectstr = " and ";
                sql       += connectstr + @"a.`EndTime`>='" + condition.CreateDateEnd.Value + "')";
            }

            if (condition?.Follow == 1)
            {
                sql       += connectstr + @"a.`Follow`!=''";
                connectstr = " and ";
            }

            if (condition?.CheckStatu > 0)
            {
                string head = "(", tail = ")";
                if ((condition?.CheckStatu & 0x01) > 0)//1 2 4 8 未提交 审核中 通过 驳回
                {
                    sql       += connectstr + head + @"b.`ExamineStatus`=0";
                    connectstr = " or ";
                    head       = "";
                }
                if ((condition?.CheckStatu & 0x02) > 0)
                {
                    sql       += connectstr + head + @"b.`ExamineStatus`=1";
                    connectstr = " or ";
                    head       = "";
                }
                if ((condition?.CheckStatu & 0x04) > 0)
                {
                    sql       += connectstr + head + @"b.`ExamineStatus`=8";
                    connectstr = " or ";
                    head       = "";
                }
                if ((condition?.CheckStatu & 0x08) > 0)
                {
                    sql       += connectstr + head + @"b.`ExamineStatus`=16";
                    connectstr = " or ";
                    head       = "";
                }

                sql       += tail;
                connectstr = " and ";
            }

            if (!string.IsNullOrEmpty(condition?.Organizate))
            {
                sql       += connectstr + @"a.`OrganizateID`='" + condition.Organizate + "'";
                connectstr = " and ";
            }


            if (condition?.OrderRule == 0 || condition?.OrderRule == null)
            {
                sql += @" ORDER BY a.`StartTime`";
            }
            else if (condition?.OrderRule == 1)
            {
                sql += @" ORDER BY a.`ID`";
            }

            var query = _icontractInfoStore.DapperSelect <ContractInfo>(sql).ToList();

            Response.ValidityContractCount = query.Count;
            Response.TotalCount            = query.Count;

            List <ContractInfo> result = new List <ContractInfo>();
            var begin = (condition.pageIndex) * condition.pageSize;
            var end   = (begin + condition.pageSize) > query.Count ? query.Count : (begin + condition.pageSize);

            for (; begin < end; begin++)
            {
                result.Add(query.ElementAt(begin));
            }

            Response.PageIndex = condition.pageIndex;
            Response.PageSize  = condition.pageSize;
            Response.Extension = _mapper.Map <List <ContractInfoResponse> >(result);

            foreach (var item in Response.Extension)
            {
                item.ExamineStatus = 0;
                if (item.CurrentModify != null)
                {
                    var moinf = await _icontractInfoStore.GetModifyAsync(a => a.Where(b => b.ID == item.CurrentModify));

                    if (moinf != null)
                    {
                        item.ExamineStatus = moinf.ExamineStatus;
                    }
                }
            }

            return(Response);


            //sql += @" limit " + condition.pageIndex * condition.pageSize + "," + condition.pageSize + "";

            //var query = _icontractInfoStore.DapperSelect<ContractInfo>(sql).ToList();

            //Response.ValidityContractCount = query.Count;
            //Response.PageIndex = condition.pageIndex;
            //Response.PageSize = condition.pageSize;
            //Response.Extension = _mapper.Map<List<ContractInfoResponse>>(query);

            //foreach (var item in Response.Extension)
            //{
            //    item.ExamineStatus = 0;
            //    if (item.CurrentModify != null)
            //    {
            //        var moinf = await _icontractInfoStore.GetModifyAsync(a => a.Where(b => b.ID == item.CurrentModify));
            //        if (moinf != null)
            //        {
            //            item.ExamineStatus = moinf.ExamineStatus;
            //        }

            //    }
            //}

            //return Response;
        }