using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Globalization;
using System.Linq;
using System.Linq.Dynamic.Core;
using System.Reflection;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Web.Http.Results;
using System.Web.Mvc;
using System.Web.UI.WebControls;
using System.Xml;
using Abp.Application.Services;
using Abp.Application.Services.Dto;
using Abp.Auditing;
using Abp.Authorization;
using Abp.Domain.Repositories;
using Abp.Extensions;
using Abp.Linq;
using Abp.Linq.Extensions;
using Abp.Runtime.Caching;
using IwbZero.AppServiceBase;
using IwbZero.IdentityFramework;
using IwbZero.Setting;
using Microsoft.AspNet.Identity;
using NPOI.SS.Formula.Functions;
using ShwasherSys.BasicInfo;
using ShwasherSys.BasicInfo.OutFactory;
using ShwasherSys.BasicInfo.OutFactory.Dto;
using ShwasherSys.BasicInfo.StoreHouseLocations.Dto;
using ShwasherSys.Common.Dto;
using ShwasherSys.CompanyInfo;
using ShwasherSys.CompanyInfo.DeviceInfo.Dto;
using ShwasherSys.CompanyInfo.FixedAssetInfo.Dto;
using ShwasherSys.CompanyInfo.MoldInfo.Dto;
using ShwasherSys.CustomerInfo;
using ShwasherSys.CustomerInfo.Dto;
using ShwasherSys.Inspection;
using ShwasherSys.Invoice;
using ShwasherSys.Lambda;
using ShwasherSys.NotificationInfo;
using ShwasherSys.NotificationInfo.Dto;
using ShwasherSys.Order;
using ShwasherSys.OrderSendInfo;
using ShwasherSys.PackageInfo;
using ShwasherSys.ProductInfo;
using ShwasherSys.ProductInfo.Dto;
using ShwasherSys.ProductionOrderInfo;
using ShwasherSys.ProductionOrderInfo.Dto;
using ShwasherSys.ProductStoreInfo;
using ShwasherSys.RmStore;
using ShwasherSys.SemiProductStoreInfo;
using TemplateInfo = ShwasherSys.Inspection.TemplateInfo;
namespace ShwasherSys.Common
{
public interface IQueryAppService : IApplicationService
{
///
/// 查询外协厂商信息
///
///
///
Task> GetOutFactory(IwbPagedRequestDto input);
///
/// 查询客户信息
///
///
///
Task> GetCustomer(IwbPagedRequestDto input);
///
/// 查询半成品实时库存信息
///
///
///
Task> GetCurrentSemiStore(IwbPagedRequestDto input);
///
/// 查询半成品信息
///
///
///
Task> GetSemiProduct(IwbPagedRequestDto input);
Task GetSemiProductName(string id);
Task GetSingleSemiProduct(string input);
///
/// 查询产品信息
///
///
///
Task> GetProduct(IwbPagedRequestDto input);
Task GetProductById(EntityDto input);
Task GetProductName(string id);
///
/// 查询库位信息
///
///
///
Task> GetStoreHouseLocation(IwbPagedRequestDto input);
Task> QueryProductionLog(IwbPagedRequestDto input);
string GetDefualtProductByOrderNo(string orderNo);
string GetDefaultProductByPartNo(string partNo,string orderNo);
string QueryProductByCustomerAndPartNo(string partNo, string customerId) ;
string GetDefualtProductByCustomerId(string customerId);
Customer GetCustomerInfo(EntityDto input);
CustomerSend GetCustomerSendInfo(EntityDto input);
List GetCustomerSendDtoByCustomerId(CustomerSendDto customerId);
List GetProductPropertyList(string pcPropertyName);
List QueryStore(string productNo);
List QueryStoreFilter(string productNo,string customerId);
BulletinInfo GetBulletinInfo(EntityDto input);
ShortMessage GetShortMsgDetailInfo(ShortMsgDetailDto input);
Task> GetQueryCustomerDefaultProduct(IwbPagedRequestDto input);
List QueryStoreHouse(int houseType=0);
List QueryStoreHouseSelect(int houseType=0);
string QueryStoreHouseSelectStr(int houseType = 0);
List QueryEnterStoresByPoNo(string productionOrderNo);
Task QueryTemplate(string tmpKey, int type);
Task> QueryAllCurrency();
Task> QueryCurrencyRate(string from,string to);
Task GetExpressNameById(int id);
PagedResultDto QueryEmployee(IwbPagedRequestDto input);
Task> QueryMold(IwbPagedRequestDto input);
Task> QueryFixedAsset(IwbPagedRequestDto input);
Task> QuerySendGood(IwbPagedRequestDto input);
Task> QueryInvoice(IwbPagedRequestDto input);
Task> GetRmProduct(IwbPagedRequestDto input);
Task> GetRmCurrentStore(IwbPagedRequestDto input);
Task> GetSemiEnterStoreCheckUnqualified(IwbPagedRequestDto input);
Task> GetProductProperty(IwbPagedRequestDto input);
Task CalcTaxPrice(int type, string input,string rate);
Task> QueryOrderItem(IwbPagedRequestDto input);
Task QueryOrderProductProcess(int orderItemId);
#region 2023
Task> QueryProductionOrderDtoByProNo(PagedRequestDto input);
Task> QueryViewCurrentProductStoreHouseByProNo(
PagedRequestDto input);
Task> QueryViewCurrentSemiStoreHouseByProNo(PagedRequestDto input);
#endregion
#region 2024
Task>> QueryNeedMaintenanceMoldPlan();
#endregion
#region 2025
Task> GetCustomerDefaultProductByCustomerId(string customerId);
Task> GetProductPropertyEntity(string productPropertyType);
ShortMsgDetail ReadShortMsgDetailInfo(ShortMsgDetailDto input);
#endregion
}
[AbpAuthorize,DisableAuditing]
public class QueryAppService : ApplicationService, IQueryAppService
{
protected ICacheManager CacheManager { get; set; }
protected new IIwbSettingManager SettingManager { get; set; }
public QueryAppService(
IRepository customerRepository,
IRepository currentSemiRepository,
IRepository semiProductRepository,
IRepository productRepository,
IRepository shlRepository,
IIwbSettingManager settingManager,
ICacheManager cacheManager, IRepository customerDefaultProductRepository, IRepository customerSendRepository, IRepository orderHeaderRepository, IRepository currentProductStoreHouseRepository, IRepository bulletinInfoRepository, IRepository shortMessageRepository, IRepository shortMsgDetailRepository, IRepository storeHouseRepository, IRepository viewSemiEnterStoreRepository, IRepository outFactoryRepository, IRepository templateInfoRepository, IRepository currencyRepository, IRepository currencyExchangeRateRepository, IRepository viewEmployeeRepository, IRepository rmRepository, IRepository viewCurrentRmStoreHouseRepository, IRepository productionLogRepository, IRepository customerDisabledProductRepository, IRepository expressRepository, IRepository moldRepository, IRepository fixedAssetRepository, IRepository viewOrderSendRepository, IRepository viewStickBillRepository, IRepository productPropertyRepository, IRepository viewOrderItemsRepository, IRepository orderProductionRepository, IRepository productionOrderRepository, IRepository packageApplyRepository, IRepository viewCurrentProductStoreHouseRepository, IRepository viewCurrentSemiStoreHouseRepository, IRepository deviceMgPlanRepository)
{
CustomerRepository = customerRepository;
CurrentSemiRepository = currentSemiRepository;
SemiProductRepository = semiProductRepository;
ProductRepository = productRepository;
ShlRepository = shlRepository;
CacheManager = cacheManager;
CustomerDefaultProductRepository = customerDefaultProductRepository;
CustomerSendRepository = customerSendRepository;
OrderHeaderRepository = orderHeaderRepository;
CurrentProductStoreHouseRepository = currentProductStoreHouseRepository;
BulletinInfoRepository = bulletinInfoRepository;
SettingManager = settingManager;
ShortMessageRepository = shortMessageRepository;
ShortMsgDetailRepository = shortMsgDetailRepository;
StoreHouseRepository = storeHouseRepository;
ViewSemiEnterStoreRepository = viewSemiEnterStoreRepository;
OutFactoryRepository = outFactoryRepository;
TemplateInfoRepository = templateInfoRepository;
CurrencyRepository = currencyRepository;
CurrencyExchangeRateRepository = currencyExchangeRateRepository;
ViewEmployeeRepository = viewEmployeeRepository;
RmRepository = rmRepository;
ViewCurrentRmStoreHouseRepository = viewCurrentRmStoreHouseRepository;
ProductionLogRepository = productionLogRepository;
CustomerDisabledProductRepository = customerDisabledProductRepository;
ExpressRepository = expressRepository;
MoldRepository = moldRepository;
FixedAssetRepository = fixedAssetRepository;
ViewOrderSendRepository = viewOrderSendRepository;
ViewStickBillRepository = viewStickBillRepository;
ProductPropertyRepository = productPropertyRepository;
ViewOrderItemsRepository = viewOrderItemsRepository;
OrderProductionRepository = orderProductionRepository;
ProductionOrderRepository = productionOrderRepository;
PackageApplyRepository = packageApplyRepository;
ViewCurrentProductStoreHouseRepository = viewCurrentProductStoreHouseRepository;
ViewCurrentSemiStoreHouseRepository = viewCurrentSemiStoreHouseRepository;
AsyncQueryableExecuter = NullAsyncQueryableExecuter.Instance;
DeviceMgPlanRepository = deviceMgPlanRepository;
}
protected IRepository FixedAssetRepository { get; }
protected IRepository MoldRepository { get; }
protected IRepository ExpressRepository { get; }
protected IRepository ProductionLogRepository { get; }
protected IRepository OutFactoryRepository { get; }
protected IRepository CustomerRepository { get; }
protected IRepository CurrentSemiRepository { get; }
protected IRepository SemiProductRepository { get; }
protected IRepository ProductRepository { get; }
public IRepository ShlRepository { get; }
protected IRepository CustomerDefaultProductRepository { get; }
protected IRepository CustomerSendRepository { get; }
protected IRepository OrderHeaderRepository { get; }
protected IRepository CurrentProductStoreHouseRepository { get; }
protected IRepository BulletinInfoRepository { get; }
protected IRepository ShortMessageRepository { get; }
protected IRepository ShortMsgDetailRepository { get; }
protected IRepository StoreHouseRepository { get; }
protected IRepository ViewSemiEnterStoreRepository { get; }
protected IRepository TemplateInfoRepository { get; }
protected IRepository CurrencyRepository { get; }
protected IRepository CurrencyExchangeRateRepository { get; }
protected IRepository ViewEmployeeRepository { get; }
protected IRepository RmRepository { get; }
protected IRepository ViewCurrentRmStoreHouseRepository { get; }
protected IRepository CustomerDisabledProductRepository { get; }
protected IRepository ViewOrderSendRepository { get; }
public IAsyncQueryableExecuter AsyncQueryableExecuter { get; set; }
protected IRepository ProductPropertyRepository { get; }
protected IRepository ViewOrderItemsRepository { get; }
protected IRepository OrderProductionRepository { get; }
protected IRepository ProductionOrderRepository { get; }
protected IRepository PackageApplyRepository { get; }
protected IRepository ViewCurrentProductStoreHouseRepository { get; }
protected IRepository ViewCurrentSemiStoreHouseRepository { get; }
protected IRepository DeviceMgPlanRepository { get; }
///
/// 查询快递名称
///
///
///
public async Task GetExpressNameById(int id)
{
var express = await ExpressRepository.FirstOrDefaultAsync(a => a.Id == id);
return express?.ExpressName ?? "";
}
///
/// 查询外协厂商信息
///
///
///
public async Task> GetOutFactory(IwbPagedRequestDto input)
{
var query = OutFactoryRepository.GetAll().Where(a => a.IsLock == "N");
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
var totalCount = await query.CountAsync();
query = query.OrderByDescending(i => i.TimeCreated);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = await query.ToListAsync();
var dtos = new PagedResultDto(
totalCount,
entities.Select(ObjectMapper.Map).ToList()
);
return dtos;
}
///
/// 查询客户信息
///
///
///
public async Task> GetCustomer(IwbPagedRequestDto input)
{
var query = CustomerRepository.GetAll().Where(a => a.IsLock == "N");
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
var totalCount = await query.CountAsync();
query = query.OrderByDescending(i => i.TimeCreated);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = await query.ToListAsync();
var dtos = new PagedResultDto(
totalCount,
entities.Select(ObjectMapper.Map).ToList()
);
return dtos;
}
///
/// 查询半成品实时库存信息
///
///
///
public async Task> GetCurrentSemiStore(IwbPagedRequestDto input)
{
var query = CurrentSemiRepository.GetAll();
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
query = query.Where(i => (i.ActualQuantity - i.FreezeQuantity) > 0);//过滤掉可用数量小于等于0
var totalCount = await query.CountAsync();
query = query.OrderByDescending(i => i.TimeCreated);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = await query.ToListAsync();
var dtos = new PagedResultDto(totalCount,entities);
return dtos;
}
///
/// 查询半成品信息
///
///
///
public async Task> GetSemiProduct(IwbPagedRequestDto input)
{
var query = SemiProductRepository.GetAll().Where(a => a.IsLock == "N");
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
//检查查询条件中带有规格且多个分割条件的
ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
var totalCount = await query.CountAsync();
query = query.OrderByDescending(i => i.TimeCreated);
//query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
//var entities = await query.ToListAsync();
string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
List entities;
//检查查询条件中带有规格且多个分割条件的
if (!pattern.IsNullOrEmpty())
{
var es = query.ToList();
es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
totalCount = es.Count;
entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
}
else
{
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
entities = await AsyncQueryableExecuter.ToListAsync(query);
}
var dtos = new PagedResultDto(
totalCount,
entities.Select(ObjectMapper.Map).ToList()
);
return dtos;
}
public async Task GetSingleSemiProduct(string input)
{
var query = await SemiProductRepository.FirstOrDefaultAsync(i=>i.Id==input);
return ObjectMapper.Map(query);
}
public async Task GetSemiProductName(string id)
{
var entity = await CacheManager.GetCache(ShwasherConsts.SemiProductCache)
.GetAsync(id, () => SemiProductRepository.FirstOrDefaultAsync(i => i.Id == id));
return entity?.SemiProductName ?? "";
}
public async Task GetProductName(string id)
{
var entity = await CacheManager.GetCache(ShwasherConsts.FinshedProductCache)
.GetAsync(id, () => ProductRepository.FirstOrDefaultAsync(i => i.Id == id));
return entity?.ProductName ?? "";
}
///
/// 查询产品信息
///
///
///
public async Task> GetProduct(IwbPagedRequestDto input)
{
var query = ProductRepository.GetAll().Where(a => a.IsLock == "N");
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
//检查查询条件中带有规格且多个分割条件的
ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
var totalCount = await query.CountAsync();
query = !input.Sorting.IsNullOrWhiteSpace() ? query.OrderBy(input.Sorting) : query.OrderByDescending(i => i.TimeCreated);
string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
List entities;
//检查查询条件中带有规格且多个分割条件的
if (!pattern.IsNullOrEmpty())
{
var es = query.ToList();
es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
totalCount = es.Count;
entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
}
else
{
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
entities = await AsyncQueryableExecuter.ToListAsync(query);
}
//query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
//var entities = await query.ToListAsync();
var dtos = new PagedResultDto(
totalCount,
entities.Select(ObjectMapper.Map).ToList()
);
return dtos;
}
public async Task GetProductById(EntityDto input)
{
return await ProductRepository.FirstOrDefaultAsync(input.Id);
}
///
/// 查询库位信息
///
///
///
public async Task> GetStoreHouseLocation(IwbPagedRequestDto input)
{
var query = ShlRepository.GetAll();
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = query.Where(exp);
}
var totalCount = await query.CountAsync();
query = query.OrderByDescending(i => i.CreationTime);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = await query.ToListAsync();
var dtos = new PagedResultDto(
totalCount,
entities.Select(ObjectMapper.Map).ToList()
);
return dtos;
}
///
/// 根据订单号查询当前客户默认的产品
///
///
///
public string GetDefualtProductByOrderNo(string orderNo)
{
var orderHeader = OrderHeaderRepository.Get(orderNo);
return GetDefualtProductByCustomerId(orderHeader.CustomerId);
}
///
/// 根据订单号和零件号查询当前客户默认的产品
///
///
///
///
public string GetDefaultProductByPartNo(string partNo,string orderNo)
{
var orderHeader = OrderHeaderRepository.Get(orderNo);
var defaultProduct = CustomerDefaultProductRepository.FirstOrDefault(i => i.CustomerId == orderHeader.CustomerId&&i.PartNo== partNo);
if (defaultProduct != null)
{
return defaultProduct.ProductNo;
}
return "";
}
///
/// 根据订单号和客户编码查询当前客户默认的产品
///
///
///
///
public string QueryProductByCustomerAndPartNo(string partNo, string customerId)
{
var defaultProduct = CustomerDefaultProductRepository.FirstOrDefault(i => i.CustomerId == customerId && i.PartNo == partNo);
if (defaultProduct != null)
{
return defaultProduct.ProductNo;
}
return "";
}
///
/// 根据客户号查询当前客户默认的产品
///
///
///
public string GetDefualtProductByCustomerId(string customerId)
{
var defualtProducts = CustomerDefaultProductRepository.GetAll().Where(i => i.CustomerId == customerId);
string lcRetval = "";
foreach (var item in defualtProducts)
{
lcRetval += $"";
}
return lcRetval;
}
public Customer GetCustomerInfo(EntityDto input)
{
return CustomerRepository.FirstOrDefault(input.Id);
}
public CustomerSend GetCustomerSendInfo(EntityDto input)
{
return CustomerSendRepository.FirstOrDefault(input.Id);
}
[DisableAuditing]
public List GetProductPropertyList(string pcPropertyName)
{
var objList = new List();
if (pcPropertyName.IsNullOrEmpty())
{
return objList;
}
var entitys = ProductRepository.GetAll().Where(i => i.IsLock == "N");
var loPropertyInfo = typeof(Product).GetProperty(pcPropertyName,
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.Public);
if (loPropertyInfo == null)
{
throw new ArgumentException($"{pcPropertyName} is not a property of type {typeof(Product)}.");
}
IQueryable query = null;
switch (pcPropertyName)
{
case "Material":
query = entitys.Select(i => i.Material).Distinct();
break;
case "SurfaceColor":
query = entitys.Select(i => i.SurfaceColor).Distinct();
break;
case "Rigidity":
query = entitys.Select(i => i.Rigidity).Distinct();
break;
}
if (query != null)
{
foreach (var product in query)
{
objList.Add(new SelectListItem()
{
Text = product,
Value = product
});
}
}
return objList;
}
#region 库存记录查询
public List QueryStore(string productNo)
{
if (string.IsNullOrEmpty(productNo))
{
CheckErrors(IwbIdentityResult.Failed("请求的产品编码不存在!"));
}
var entity = CurrentProductStoreHouseRepository.GetAll().Where(i => i.ProductNo == productNo && (i.Quantity > 0||i.ProductionOrderNo.StartsWith("VS"))).OrderByDescending(i => i.TimeLastMod);
List productionOrder = new List();
List hasProductionOrder = new List();
if (entity.Any())
{
productionOrder = entity.Where(i => string.IsNullOrEmpty(i.ProductionOrderNo)).ToList();
hasProductionOrder = entity.Where(i => !string.IsNullOrEmpty(i.ProductionOrderNo)).ToList();
}
productionOrder.AddRange(hasProductionOrder);
return productionOrder;
}
public List QueryStoreFilter(string productNo,string customerId)
{
if (string.IsNullOrEmpty(productNo))
{
CheckErrors(IwbIdentityResult.Failed("请求的产品编码不存在!"));
}
var entity = CurrentProductStoreHouseRepository.GetAll().Where(i => i.ProductNo == productNo && (i.Quantity > 0 || i.ProductionOrderNo.StartsWith("VS"))&&i.InventoryCheckState!=2);
var disabledOrderNo = CustomerDisabledProductRepository.GetAll().Where(i => i.CustomerNo == customerId)
.Select(i => i.ProductOrderNo).Distinct();
entity = entity.Where(i => !disabledOrderNo.Contains(i.ProductionOrderNo))
.OrderByDescending(i => i.TimeLastMod);
List productionOrder = new List();
List hasProductionOrder = new List();
if (entity.Any())
{
productionOrder = entity.Where(i => string.IsNullOrEmpty(i.ProductionOrderNo)&& i.Quantity>0).ToList();
hasProductionOrder = entity.Where(i => !string.IsNullOrEmpty(i.ProductionOrderNo)&& i.Quantity>0).ToList();
}
productionOrder.AddRange(hasProductionOrder);
return productionOrder;
}
#endregion
public BulletinInfo GetBulletinInfo(EntityDto input)
{
var entity = BulletinInfoRepository.FirstOrDefault(i => i.Id == input.Id);
return entity;
}
protected virtual void CheckErrors(IdentityResult identityResult)
{
identityResult.CheckErrors(LocalizationManager);
}
protected virtual void CheckErrors(String error)
{
var identityResult = IdentityResult.Failed(error);
CheckErrors(identityResult);
//identityResult.CheckErrors(LocalizationManager);
}
public ShortMessage GetShortMsgDetailInfo(ShortMsgDetailDto input)
{
var entity = ShortMessageRepository.FirstOrDefault(input.MsgID);
//var detailInfo = ShortMsgDetailRepository.FirstOrDefault(input.Id);
//detailInfo.IsRead = "Y";
//ShortMsgDetailRepository.UpdateAsync(detailInfo);
return entity;
}
public ShortMsgDetail ReadShortMsgDetailInfo(ShortMsgDetailDto input)
{
//var entity = ShortMessageRepository.FirstOrDefault(input.MsgID);
var detailInfo = ShortMsgDetailRepository.FirstOrDefault(input.Id);
detailInfo.IsRead = "Y";
ShortMsgDetailRepository.UpdateAsync(detailInfo);
return detailInfo;
}
public List GetCustomerSendDtoByCustomerId(CustomerSendDto customerId)
{
var entities = CustomerSendRepository.GetAll().Where(i => i.CustomerId == customerId.CustomerId && i.IsLock == "N");
return ObjectMapper.Map>(entities.ToList());
}
public async Task> GetQueryCustomerDefaultProduct(IwbPagedRequestDto input)
{
var query = ProductRepository.GetAll();
query = query.Where(i => i.IsLock == "N");
string lcCustomerId = "";
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
if (o.KeyField == "CustomerId" || o.KeyField == "customerId")
{
lcCustomerId = keyWords + "";
continue;
}
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
if (exp != null)
{
query = query.Where(exp);
}
}
List loNotContain = new List();
if (!lcCustomerId.IsNullOrEmpty())
{
var loDefualtProducts = CustomerDefaultProductRepository.GetAll().Where(i => i.CustomerId == lcCustomerId);
foreach (CustomerDefaultProduct defaultProduct in loDefualtProducts)
{
loNotContain.Add(defaultProduct.ProductNo);
}
}
if (loNotContain.Any())
{
query = query.Where(i => !loNotContain.Contains(i.Id));
}
var totalCount = query.Count();
query = query.SortBy("Id");
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = query.ToList();
var dtos = new PagedResultDto(
totalCount,
entities
);
return dtos;
}
public async Task> QueryProductionLog(IwbPagedRequestDto input)
{
var query = ProductionLogRepository.GetAllIncluding(a=>a.EmployeeInfo);
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = query.OrderBy(a=>a.CreationTime);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities.Select(a=>new ProductionLogDto
{
Id = a.Id,
ProductionNo = a.ProductionNo,
ProductOrderNo = a.ProductOrderNo,
EmployeeId = a.EmployeeId,
EmployeeNo = a.EmployeeInfo.No,
EmployeeName = a.EmployeeInfo.Name,
CarNo = a.CarNo,
QuantityWeight = a.QuantityWeight,
QuantityPcs = a.QuantityPcs,
KgWeight = a.KgWeight,
CreationTime = a.CreationTime
}).ToList());
return dtoList;
}
public List QueryStoreHouse(int houseType=0)
{
/*List result = CacheManager.GetCache(ShwasherConsts.StoreHouseCache).Get("All",
() => { return StoreHouseRepository.GetAllList(i => i.IsLock == "N"); });*/
var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N" );
if (houseType > 0)
{
query = query.Where(i => i.StoreHouseTypeId == houseType);
}
return query.ToList();
}
public List QueryStoreHouseSelect(int houseType=0)
{
var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N");
if (houseType > 0)
{
query = query.Where(i => i.StoreHouseTypeId == houseType);
}
List resultList = new List()
{
new SelectListItem()
{
Text = @"请选择仓库...",
Value = "",
Selected = true
}
};
foreach (var entityHouse in query)
{
SelectListItem item = new SelectListItem()
{
Text = entityHouse.StoreHouseName,
Value = entityHouse.Id.ToString()
};
resultList.Add(item);
}
return resultList;
}
public string QueryStoreHouseSelectStr(int houseType=0)
{
var query = StoreHouseRepository.GetAll().Where(i => i.IsLock == "N");
if (houseType > 0)
{
query = query.Where(i => i.StoreHouseTypeId == houseType);
}
string str = "";// "";
foreach (var l in query)
{
str += $"";
}
return str;
}
public List QueryEnterStoresByPoNo(string productionOrderNo)
{
var entities = ViewSemiEnterStoreRepository.GetAllList(i => i.ProductionOrderNo == productionOrderNo);
return entities;
}
public async Task QueryTemplate(string tmpKey, int type)
{
var tmps =await TemplateInfoRepository.FirstOrDefaultAsync(i => i.TempKey == tmpKey && i.Type == type);
return tmps;
}
public async Task> QueryAllCurrency()
{
return await CurrencyRepository.GetAllListAsync();
}
public async Task> QueryCurrencyRate(string from="", string to="")
{
if (from.IsNullOrEmpty()&&!to.IsNullOrEmpty())
{
return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.ToCurrencyId == to);
}
else if (!from.IsNullOrEmpty() && to.IsNullOrEmpty())
{
return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.FromCurrencyId == from );
}
else
{
return await CurrencyExchangeRateRepository.GetAllListAsync(i => i.FromCurrencyId == from && i.ToCurrencyId == to);
}
}
public PagedResultDto QueryEmployee(IwbPagedRequestDto input)
{
var query = ViewEmployeeRepository.GetAll();
if (input.SearchList != null && input.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in input.SearchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
if (exp != null)
{
query = query.Where(exp);
}
}
var totalCount = query.Count();
query = query.SortBy("No");
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = query.ToList();
var dtos = new PagedResultDto(
totalCount,
entities
);
return dtos;
}
///
/// 查询模具信息
///
///
///
public async Task> QueryMold(IwbPagedRequestDto input)
{
var query = MoldRepository.GetAll();
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = _ApplySorting(query, input);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities.Select(ObjectMapper.Map).ToList());
return dtoList;
}
///
/// 查询模具信息
///
///
///
public async Task> QueryFixedAsset(IwbPagedRequestDto input)
{
var query = FixedAssetRepository.GetAll();
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = _ApplySorting(query, input);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities.Select(ObjectMapper.Map).ToList());
return dtoList;
}
///
/// 查询发货明细信息
///
///
///
public async Task> QuerySendGood(IwbPagedRequestDto input)
{
var query = ViewOrderSendRepository.GetAll().Where(a=>!string.IsNullOrEmpty(a.OrderSendBillNo));
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = query.OrderByDescending(a=>a.OrderItemId);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities);
return dtoList;
}
protected IRepository ViewStickBillRepository { get; }
///
/// 查询发票信息
///
///
///
public async Task> QueryInvoice(IwbPagedRequestDto input)
{
var query = ViewStickBillRepository.GetAll();
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = query.OrderByDescending(a=>a.TimeCreated);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities);
return dtoList;
}
public async Task> GetRmProduct(IwbPagedRequestDto input)
{
var query = RmRepository.GetAll();
query = ApplyFilter(query,input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = _ApplySorting(query, input);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities);
return dtoList;
}
public async Task> GetRmCurrentStore(IwbPagedRequestDto input)
{
var query = ViewCurrentRmStoreHouseRepository.GetAll();
query = ApplyFilter(query, input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = _ApplySorting(query, input);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities);
return dtoList;
}
public async Task> GetSemiEnterStoreCheckUnqualified(IwbPagedRequestDto input)
{
var checkState = EnterStoreApplyStatusEnum.UnChecked.ToInt() + "";
var query = ViewSemiEnterStoreRepository.GetAll().Where(a => a.ApplyStatus == checkState);
query = ApplyFilter(query, input);
var totalCount = query.Count();
query = query.OrderByDescending(i => i.TimeCreated);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dots = new PagedResultDto(
totalCount, entities
);
return dots;
}
///
/// 查询产品属性
///
///
///
public async Task> GetProductProperty(IwbPagedRequestDto input)
{
var query = ProductPropertyRepository.GetAll();
query = ApplyFilter(query, input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = _ApplySorting(query, input);
query = _ApplyPaging(query, input);
var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities.Select(ObjectMapper.Map).ToList());
return dtoList;
}
///
/// 查询订单明细信息
///
///
///
public async Task> QueryOrderItem(IwbPagedRequestDto input)
{
var query = ViewOrderItemsRepository.GetAll();
query = ApplyFilter(query, input);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = query.OrderByDescending(a => a.SendDate);
string pattern = ProductModelSearch.GetModelGreaterOneReg(input.SearchList);
List entities;
//检查查询条件中带有规格且多个分割条件的
if (!pattern.IsNullOrEmpty())
{
var es = query.ToList();
es = es.Where(f => f.Model != null && Regex.IsMatch(f.Model, pattern)).ToList();
totalCount = es.Count;
entities = es.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();
}
else
{
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
entities = await AsyncQueryableExecuter.ToListAsync(query);
}
//query = _ApplyPaging(query, input);
//var entities = await AsyncQueryableExecuter.ToListAsync(query);
var dtoList = new PagedResultDto(totalCount, entities);
return dtoList;
}
public async Task QueryOrderProductProcess(int orderItemId)
{
OrderProductProcessDto result = new OrderProductProcessDto();
var rs = OrderProductionRepository.GetAllList(i => i.OrderItemId == orderItemId);
if (rs.Any())
{
var productionNoArr = rs.Select(i => i.ProductionOrderNo);
List pas =
await PackageApplyRepository.GetAllListAsync(i => productionNoArr.Contains(i.ProductionOrderNo));
List pos = await ProductionOrderRepository.GetAllListAsync(i => productionNoArr.Contains(i.ProductionOrderNo));
result.PackageApplyList = pas;
result.ProductionOrderList = pos;
}
return result;
}
protected IQueryable ApplyFilter(IQueryable query, IwbPagedRequestDto input)
{
var pagedInput = input as IIwbPagedRequest;
if (pagedInput == null)
{
return query;
}
if (!string.IsNullOrEmpty(pagedInput.KeyWords))
{
object keyWords = pagedInput.KeyWords;
LambdaObject obj = new LambdaObject()
{
FieldType = (LambdaFieldType)pagedInput.FieldType,
FieldName = pagedInput.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)pagedInput.ExpType
};
var exp = obj.GetExp();
query = exp != null ? query.Where(exp) : query;
}
if (pagedInput.SearchList != null && pagedInput.SearchList.Count > 0)
{
List objList = new List();
foreach (var o in pagedInput.SearchList)
{
if (string.IsNullOrEmpty(o.KeyWords))
continue;
object keyWords = o.KeyWords;
//检查查询条件中带有规格且多个分割条件的
ProductModelSearch.CheckModelGreaterOneFilter(o, ref keyWords);
objList.Add(new LambdaObject
{
FieldType = (LambdaFieldType)o.FieldType,
FieldName = o.KeyField,
FieldValue = keyWords,
ExpType = (LambdaExpType)o.ExpType
});
}
var exp = objList.GetExp();
query = exp != null ? query.Where(exp) : query;
}
return query;
}
///
/// 分页
///
/// The query.
/// The input.
protected IQueryable _ApplyPaging(IQueryable query, IwbPagedRequestDto input)
{
//Try to use paging if available
var pagedInput = input as IPagedResultRequest;
if (pagedInput != null)
{
return query.PageBy(pagedInput);
}
//Try to limit query result if available
var limitedInput = input as ILimitedResultRequest;
if (limitedInput != null)
{
return query.Take(limitedInput.MaxResultCount);
}
//No paging
return query;
}
///
/// 排序
///
/// The query.
/// The input.
protected IQueryable _ApplySorting(IQueryable query, IwbPagedRequestDto input)
{
//Try to sort query if available
var sortInput = input as ISortedResultRequest;
if (sortInput != null)
{
if (!sortInput.Sorting.IsNullOrWhiteSpace())
{
return query.OrderBy(sortInput.Sorting);
}
}
//IQueryable.Task requires sorting, so we should sort if Take will be used.
if (input is ILimitedResultRequest)
{
return query.OrderBy("CreationTime DESC");
}
//No sorting
return query;
}
public async Task CalcTaxPrice(int type, string input,string rate)
{
decimal result = 0;
try
{
decimal inputDec = Convert.ToDecimal(input);
decimal rateDec = Convert.ToDecimal(rate);
switch (type)
{
case 1:
result = inputDec / (1 + (rateDec / 100));
break;
case 2:
result = inputDec * (1 + (rateDec / 100));
break;
}
}
catch (Exception e)
{
result = 0;
}
return Convert.ToDouble(result).ToString("f3");
}
#region 2023
private void GetPropertiesNo(List searchList,ref string modelNo, ref string materialNo, ref string rigidityNo, ref string surfaceColorNo)
{
foreach (var o in searchList)
{
if (o.KeyWords.IsNullOrEmpty())
continue;
object keyWords = o.KeyWords;
if (o.KeyField?.ToLower() == "modelno")
{
modelNo = keyWords.ToString();
}
if (o.KeyField?.ToLower() == "materialno")
{
materialNo = keyWords.ToString();
}
if (o.KeyField?.ToLower() == "rigidityno")
{
rigidityNo = keyWords.ToString();
}
if (o.KeyField?.ToLower() == "surfacecolorno")
{
surfaceColorNo = keyWords.ToString();
}
}
}
public async Task> QueryProductionOrderDtoByProNo(PagedRequestDto input)
{
var query = ProductionOrderRepository.GetAll();
var result = from u in query
join s in SemiProductRepository.GetAll() on u.SemiProductNo equals s.Id into l
from luq in l.DefaultIfEmpty()
select new ProductionOrderDto
{
Model = luq.Model ?? "",
CarNo = u.CarNo,
EnterQuantity = u.EnterQuantity,
Id = u.Id,
ProductionType = u.ProductionType,
OutsourcingFactory = u.OutsourcingFactory,
CreatorUserId = u.CreatorUserId,
IsChecked = u.IsChecked,
IsLock = u.IsLock,
Material = luq.Material ?? "",
PartNo = luq.PartNo ?? "",
PlanProduceDate = u.PlanProduceDate,
RawMaterials = u.RawMaterials,
SurfaceColor = luq.SurfaceColor ?? "",
Rigidity = luq.Rigidity ?? "",
Remark = u.Remark,
UserIDLastMod = u.UserIDLastMod,
TimeCreated = u.TimeCreated,
TimeLastMod = u.TimeLastMod,
Size = u.Size,
ProcessingType = u.ProcessingType,
ProcessingLevel = u.ProcessingLevel,
SourceProductionOrderNo = u.SourceProductionOrderNo,
StoveNo = u.StoveNo,
Quantity = u.Quantity,
ProductionOrderNo = u.ProductionOrderNo,
ProductionOrderStatus = u.ProductionOrderStatus,
SemiProductNo = u.SemiProductNo,
SemiProductName = luq.SemiProductName,
KgWeight = u.KgWeight,
EnterDate = u.EnterDate,
InspectDate = u.InspectDate,
HasExported = u.HasExported
};
var endState = ProductionOrderStatusEnum.End.ToInt();
result = result.Where(a => (a.ProductionOrderStatus != endState));
var searchList = input.SearchList;
if (searchList != null && searchList.Count > 0)
{
//List objList = new List();
string modelNo = "", materialNo = "", rigidityNo = "", surfaceColorNo = "";
GetPropertiesNo(searchList,ref modelNo, ref materialNo, ref rigidityNo, ref surfaceColorNo);
if (modelNo.IsNullOrEmpty())
{
CheckErrors("规格不能为空!");
}
//111,110,100,000
if ((materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty())||(!materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty())|| (!materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty()) || (!materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty()))
{
result = result.Where(i => i.SemiProductNo.StartsWith("s" + modelNo + materialNo + rigidityNo + surfaceColorNo));
}//101,001,011
else if((!materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()) || (materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()) || (materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()))
{
result = result.Where(i => i.SemiProductNo.StartsWith("s" + modelNo + materialNo) && i.SemiProductNo.Contains(rigidityNo + surfaceColorNo));
}//010
else if (materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty())
{
result = result.Where(i => i.SemiProductNo.StartsWith("s" + modelNo));
result = result.Where(i => i.SemiProductNo.Contains( rigidityNo));
}
}
var totalCount = await AsyncQueryableExecuter.CountAsync(result);
result = result.OrderByDescending(i => i.TimeCreated);
result = result.Skip(input.SkipCount).Take(input.MaxResultCount);
var dtos = new PagedResultDto(
totalCount,
result.ToList()
);
return dtos;
}
public async Task> QueryViewCurrentProductStoreHouseByProNo(PagedRequestDto input)
{
var query = ViewCurrentProductStoreHouseRepository.GetAll();
var searchList = input.SearchList;
if (searchList != null && searchList.Count > 0)
{
//List objList = new List();
//foreach (var o in searchList)
//{
// if (o.KeyWords.IsNullOrEmpty())
// continue;
// object keyWords = o.KeyWords;
// if (o.KeyField?.ToLower() == "productno")
// {
// query = query.Where(a => a.ProductNo.StartsWith(o.KeyWords));
// }
//}
string modelNo = "", materialNo = "", rigidityNo = "", surfaceColorNo = "";
GetPropertiesNo(searchList, ref modelNo, ref materialNo, ref rigidityNo, ref surfaceColorNo);
if (modelNo.IsNullOrEmpty())
{
CheckErrors("规格不能为空!");
}
//111,110,100,000
if ((materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty()) || (!materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()) || (!materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty()) || (!materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty()))
{
query = query.Where(i => i.ProductNo.StartsWith("s" + modelNo + materialNo + rigidityNo + surfaceColorNo));
}//101,001,011
else if ((!materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()) || (materialNo.IsNullOrEmpty() && rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()) || (materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && !surfaceColorNo.IsNullOrEmpty()))
{
query = query.Where(i => i.ProductNo.StartsWith("s" + modelNo + materialNo) && i.ProductNo.Contains(rigidityNo + surfaceColorNo));
//query = query.Where(i => i.ProductNo.EndsWith(rigidityNo + surfaceColorNo));
}//010
else if (materialNo.IsNullOrEmpty() && !rigidityNo.IsNullOrEmpty() && surfaceColorNo.IsNullOrEmpty())
{
query = query.Where(i => i.ProductNo.StartsWith("s" + modelNo));
query = query.Where(i => i.ProductNo.Contains(rigidityNo));
}
}
query = query.Where(i => i.ActualQuantity > 0);
var totalCount = await AsyncQueryableExecuter.CountAsync(query);
query = query.OrderByDescending(i => i.TimeCreated);
query = query.Skip(input.SkipCount).Take(input.MaxResultCount);
var dtos = new PagedResultDto(
totalCount,
query.ToList()
);
return dtos;
}
public async Task> QueryViewCurrentSemiStoreHouseByProNo(PagedRequestDto input)
{
var query = ViewCurrentSemiStoreHouseRepository.GetAll();
var searchList = input.SearchList;
if (searchList != null && searchList.Count > 0)
{
//List objList = new List