| | |
| | | using AutoMapper; |
| | | using Autofac.Core; |
| | | using AutoMapper; |
| | | using Microsoft.AspNetCore.Mvc; |
| | | using Microsoft.Extensions.Logging; |
| | | using SqlSugar; |
| | | using WIDESEA_BasicService; |
| | | using WIDESEA_Common.AllocateEnum; |
| | | using WIDESEA_Common.OrderEnum; |
| | | using WIDESEA_Core; |
| | | using WIDESEA_Core.BaseRepository; |
| | | using WIDESEA_Core.BaseServices; |
| | | using WIDESEA_Core.CodeConfigEnum; |
| | | using WIDESEA_Core.DB; |
| | | using WIDESEA_Core.Enums; |
| | | using WIDESEA_Core.Helper; |
| | | using WIDESEA_Core.Seed; |
| | | using WIDESEA_IBasicService; |
| | | using WIDESEA_IOutboundService; |
| | | using WIDESEA_Model.Models; |
| | | |
| | |
| | | { |
| | | private readonly IMapper _mapper; |
| | | private readonly IUnitOfWorkManage _unitOfWorkManage; |
| | | private readonly IMaterielInfoService _materielInfoService; |
| | | public IRepository<Dt_OutboundOrder> Repository => BaseDal; |
| | | |
| | | private readonly ILogger<OutboundOrderService> _logger; |
| | | private readonly IRepository<Dt_OutboundOrderDetail> _outboundOrderDetailRepository; |
| | | |
| | | public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository) : base(BaseDal) |
| | | private readonly IMaterialUnitService _materialUnitService; |
| | | private readonly IRepository<Dt_OutStockLockInfo> _outStockLockInfoRepository; |
| | | public OutboundOrderService(IRepository<Dt_OutboundOrder> BaseDal, IMapper mapper, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_OutboundOrderDetail> outboundOrderDetailRepository, ILogger<OutboundOrderService> logger, IMaterialUnitService materialUnitService, IMaterielInfoService materielInfoService, IRepository<Dt_OutStockLockInfo> outStockLockInfoRepository) : base(BaseDal) |
| | | { |
| | | _mapper = mapper; |
| | | _unitOfWorkManage = unitOfWorkManage; |
| | | _outboundOrderDetailRepository = outboundOrderDetailRepository; |
| | | _logger = logger; |
| | | _materialUnitService = materialUnitService; |
| | | _materielInfoService = materielInfoService; |
| | | _outStockLockInfoRepository = outStockLockInfoRepository; |
| | | } |
| | | |
| | | public WebResponseContent ReceiveOutboundOrder(Dt_OutboundOrder model, int operateType) |
| | | private int[] OrderTypes = new int[] { (int)InOrderTypeEnum.AllocatOutbound, (int)InOrderTypeEnum.InternalAllocat, (int)InOrderTypeEnum.ReCheck }; |
| | | public async Task<WebResponseContent> ReceiveOutboundOrder(Dt_OutboundOrder model, int operateType) |
| | | { |
| | | try |
| | | { |
| | | return operateType switch |
| | | { |
| | | 1 => AddOutboundOrder(model), |
| | | 2 => UpdateOutboundOrder(model), |
| | | 1 => await AddOutboundOrder(model), |
| | | 2 => await UpdateOutboundOrder(model), |
| | | 3 => DeleteOutboundOrder(model), |
| | | |
| | | _ => WebResponseContent.Instance.OK(), |
| | |
| | | } |
| | | } |
| | | |
| | | public WebResponseContent AddOutboundOrder(Dt_OutboundOrder model) |
| | | public async Task<WebResponseContent> AddOutboundOrder(Dt_OutboundOrder model) |
| | | { |
| | | try |
| | | { |
| | | |
| | | if (BaseDal.QueryFirst(x => x.UpperOrderNo == model.UpperOrderNo) != null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"åºåºåå·éå¤"); |
| | | return WebResponseContent.Instance.Error($"{model.UpperOrderNo}åºåºåå·éå¤"); |
| | | } |
| | | |
| | | model.OrderNo = CreateCodeByRule(nameof(RuleCodeEnum.OutboundOrderRule)); |
| | | var materielCodes = model.Details.Select(x => x.MaterielCode).Distinct().ToList(); |
| | | var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>().Where(x => materielCodes.Contains(x.MaterielCode)).ToList(); |
| | | |
| | | foreach (var item in model.Details) |
| | | { |
| | | var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty); |
| | | item.Unit = issueoStockResult.Unit; |
| | | item.OrderQuantity = issueoStockResult.Quantity; |
| | | var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty); |
| | | item.MoveQty = moveissueoStockResult.Quantity; |
| | | if (materielInfos.Any()) |
| | | { |
| | | item.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? ""; |
| | | } |
| | | |
| | | } |
| | | if (!OrderTypes.Contains(model.OrderType)) |
| | | { |
| | | model.OrderNo = CreateCodeByRule(nameof(RuleCodeEnum.OutboundOrderRule)); |
| | | } |
| | | |
| | | Db.InsertNav(model).Include(x => x.Details).ExecuteCommand(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | public WebResponseContent UpdateOutboundOrder(Dt_OutboundOrder model) |
| | | public async Task<WebResponseContent> UpdateOutboundOrder(Dt_OutboundOrder model) |
| | | { |
| | | try |
| | | { |
| | | |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First(); |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>() |
| | | .Where(x => x.UpperOrderNo == model.UpperOrderNo) |
| | | .Includes(x => x.Details) |
| | | .First(); |
| | | if (outboundOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåä¿¡æ¯"); |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåæç»ä¿¡æ¯"); |
| | | } |
| | | List<Dt_OutboundOrderDetail> inboundOrderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | List<Dt_OutboundOrderDetail> updateInboundOrderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | List<Dt_OutboundOrderDetail> outboundOrderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | List<Dt_OutboundOrderDetail> updateoutboundOrderDetails = new List<Dt_OutboundOrderDetail>(); |
| | | List<int> detailIds = new List<int>(); |
| | | |
| | | var materielCodes = model.Details.Select(x => x.MaterielCode).Distinct().ToList(); |
| | | var materielInfos = _materielInfoService.Db.Queryable<Dt_MaterielInfo>() |
| | | .Where(x => materielCodes.Contains(x.MaterielCode)) |
| | | .ToList(); |
| | | |
| | | foreach (var item in model.Details) |
| | | { |
| | | |
| | | var outboundOrderDetail = outboundOrder.Details.FirstOrDefault(x => x.lineNo == item.lineNo); |
| | | if (outboundOrderDetail == null) |
| | | { |
| | |
| | | BatchNo = item.BatchNo, |
| | | Unit = item.Unit, |
| | | WarehouseCode = item.WarehouseCode, |
| | | MoveQty=item.MoveQty, |
| | | OrderQuantity = item.OrderQuantity |
| | | MoveQty = item.MoveQty, |
| | | OrderQuantity = item.OrderQuantity, |
| | | BarcodeMoveQty = item.MoveQty, |
| | | BarcodeQty = item.OrderQuantity, |
| | | BarcodeUnit = item.Unit, |
| | | }; |
| | | inboundOrderDetails.Add(outboundOrderDetail); |
| | | var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty); |
| | | outboundOrderDetail.Unit = issueoStockResult.Unit; |
| | | outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity; |
| | | var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty); |
| | | outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity; |
| | | |
| | | outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? ""; |
| | | outboundOrderDetails.Add(outboundOrderDetail); |
| | | } |
| | | else |
| | | { |
| | | outboundOrderDetail.lineNo = item.lineNo; |
| | | outboundOrderDetail.MaterielCode = item.MaterielCode; |
| | | outboundOrderDetail.SupplyCode = item.SupplyCode; |
| | | outboundOrderDetail.BatchNo = item.BatchNo; |
| | | outboundOrderDetail.Unit = item.Unit; |
| | | outboundOrderDetail.WarehouseCode = item.WarehouseCode; |
| | | outboundOrderDetail.MoveQty = item.MoveQty; |
| | | outboundOrderDetail.OrderQuantity = item.OrderQuantity; |
| | | #region éå®ç¶æä¸éæ°éåæ®µä¸è´æ§æ ¡éª |
| | | if (outboundOrderDetail.LockQuantity != 0) |
| | | { |
| | | var isFieldChanged = !string.Equals(outboundOrderDetail.MaterielCode, item.MaterielCode) |
| | | || !string.Equals(outboundOrderDetail.SupplyCode, item.SupplyCode) |
| | | || !string.Equals(outboundOrderDetail.BatchNo, item.BatchNo) |
| | | || !string.Equals(outboundOrderDetail.Unit, item.Unit) |
| | | || !string.Equals(outboundOrderDetail.WarehouseCode, item.WarehouseCode) |
| | | || !string.Equals(outboundOrderDetail.lineNo, item.lineNo) |
| | | ; |
| | | |
| | | updateInboundOrderDetails.Add(outboundOrderDetail); |
| | | if (isFieldChanged) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¡å·{item.lineNo}å·²éå®åºåºï¼é宿°éï¼{outboundOrderDetail.LockQuantity}ï¼ï¼ä»
å
许修æ¹è®¢åæ°éï¼ç¦æ¢ä¿®æ¹ç©æ/æ¹æ¬¡/ä»åºçå
¶ä»ä¿¡æ¯"); |
| | | } |
| | | else |
| | | { |
| | | if(item.MoveQty > (outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity)) |
| | | { |
| | | return WebResponseContent.Instance.Error($"è¡å·{item.lineNo}æªææ°éä¸è½è¶
è¿å©ä¸çè®¢åæ°é{outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity}"); |
| | | } |
| | | outboundOrderDetail.MoveQty = item.MoveQty; |
| | | } |
| | | } |
| | | #endregion |
| | | |
| | | #region åææ°éæ ¡éªé»è¾ä¿ç |
| | | if (item.OrderQuantity < outboundOrderDetail.LockQuantity + outboundOrderDetail.MoveQty) |
| | | { |
| | | return WebResponseContent.Instance.Error($"ä¿®æ¹çè¡å·{item.lineNo}æ°éè¶
è¿äºæºä»åºåºé宿°éå 䏿ªææ°éï¼ä¸å
许修æ¹"); |
| | | } |
| | | #endregion |
| | | |
| | | #region åæ®µèµå¼é»è¾ï¼éå®ç¶æä»
æ¹æ°éï¼æªéå®åå
¨éæ´æ° |
| | | if (outboundOrderDetail.LockQuantity == 0) |
| | | { |
| | | outboundOrderDetail.lineNo = item.lineNo; |
| | | outboundOrderDetail.MaterielCode = item.MaterielCode; |
| | | outboundOrderDetail.SupplyCode = item.SupplyCode; |
| | | outboundOrderDetail.BatchNo = item.BatchNo; |
| | | outboundOrderDetail.Unit = item.Unit; |
| | | outboundOrderDetail.WarehouseCode = item.WarehouseCode; |
| | | outboundOrderDetail.MoveQty = item.MoveQty; |
| | | outboundOrderDetail.BarcodeMoveQty = item.MoveQty; |
| | | outboundOrderDetail.BarcodeQty = item.OrderQuantity; |
| | | outboundOrderDetail.BarcodeUnit = item.Unit; |
| | | |
| | | var issueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeQty); |
| | | outboundOrderDetail.Unit = issueoStockResult.Unit; |
| | | outboundOrderDetail.OrderQuantity = issueoStockResult.Quantity; |
| | | var moveissueoStockResult = await _materialUnitService.ConvertFromToStockAsync(item.MaterielCode, item.BarcodeUnit, item.BarcodeMoveQty); |
| | | outboundOrderDetail.MoveQty = moveissueoStockResult.Quantity; |
| | | } |
| | | else |
| | | { |
| | | outboundOrderDetail.OrderQuantity = item.OrderQuantity; |
| | | } |
| | | #endregion |
| | | |
| | | outboundOrderDetail.MaterielName = materielInfos.FirstOrDefault(x => x.MaterielCode == item.MaterielCode)?.MaterielName ?? ""; |
| | | |
| | | updateoutboundOrderDetails.Add(outboundOrderDetail); |
| | | detailIds.Add(outboundOrderDetail.Id); |
| | | } |
| | | } |
| | | |
| | | |
| | | outboundOrder.UpperOrderNo = model.UpperOrderNo; |
| | | outboundOrder.BusinessType = model.BusinessType; |
| | |
| | | _unitOfWorkManage.BeginTran(); |
| | | foreach (var item in deletePurchaseOrderDetails) |
| | | { |
| | | _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.èªå¨å é¤); |
| | | if (item.LockQuantity > 0) |
| | | { |
| | | return WebResponseContent.Instance.Error($"ååæ®è¡å·{item.lineNo}å·²ç»éå®åºåºï¼ä¸å
许å é¤ï¼è¯·éæ°æ´æ¹æ°æ®æ¨é"); |
| | | } |
| | | _outboundOrderDetailRepository.DeleteData(item); |
| | | } |
| | | |
| | | _outboundOrderDetailRepository.UpdateData(updateInboundOrderDetails); |
| | | _outboundOrderDetailRepository.AddData(inboundOrderDetails); |
| | | _outboundOrderDetailRepository.UpdateData(updateoutboundOrderDetails); |
| | | _outboundOrderDetailRepository.AddData(outboundOrderDetails); |
| | | |
| | | if (outboundOrder.Details.All(x => x.OverOutQuantity >= x.OrderQuantity - x.MoveQty)) |
| | | { |
| | | outboundOrder.OrderStatus = (int)OutOrderStatusEnum.åºåºå®æ; |
| | | } |
| | | BaseDal.UpdateData(outboundOrder); |
| | | |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | |
| | | { |
| | | try |
| | | { |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First(); |
| | | var outboundOrder = Db.Queryable<Dt_OutboundOrder>().Where(x => x.UpperOrderNo == model.UpperOrderNo).Includes(x => x.Details).First(); |
| | | if (outboundOrder == null) |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåä¿¡æ¯"); |
| | |
| | | { |
| | | return WebResponseContent.Instance.Error($"æªæ¾å°åºåºåæç»ä¿¡æ¯"); |
| | | } |
| | | //Db.DeleteNav(inboundOrder).Include(x => x.Details).ExecuteCommand(); |
| | | if (outboundOrder.OrderStatus != (int)OutOrderStatusEnum.æªå¼å§) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该订åç¶æä¸å
许å é¤"); |
| | | } |
| | | _unitOfWorkManage.BeginTran(); |
| | | BaseDal.DeleteAndMoveIntoHty(outboundOrder, OperateTypeEnum.èªå¨å é¤); |
| | | //BaseDal.DeleteAndMoveIntoHty(outboundOrder, OperateTypeEnum.èªå¨å é¤); |
| | | foreach (var item in outboundOrder.Details) |
| | | { |
| | | _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.èªå¨å é¤); |
| | | // _outboundOrderDetailRepository.DeleteAndMoveIntoHty(item, OperateTypeEnum.èªå¨å é¤);\\ |
| | | _outboundOrderDetailRepository.DeleteData(item); |
| | | } |
| | | BaseDal.DeleteData(outboundOrder); |
| | | _unitOfWorkManage.CommitTran(); |
| | | |
| | | return WebResponseContent.Instance.OK(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | _unitOfWorkManage.RollbackTran(); |
| | | _logger.LogInformation(ex.Message); |
| | | return WebResponseContent.Instance.Error(ex.Message); |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®IDè·ååºåºå |
| | | /// </summary> |
| | | public async Task<WebResponseContent> GetById(int id) |
| | | { |
| | | var order = await Db.Queryable<Dt_OutboundOrder>().FirstAsync(o => o.Id == id); |
| | | if (order == null) |
| | | { |
| | | return WebResponseContent.Instance.Error("æªæ¾å°åºåºåä¿¡æ¯"); |
| | | } |
| | | return WebResponseContent.Instance.OK(null, order); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// æ ¹æ®æçå·è·ååæ®ç¼å· |
| | | /// </summary> |
| | | public WebResponseContent GetOrderNoByPalletCode(string palletCode) |
| | | { |
| | | var orderNo = _outStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode).Select(x=>x.OrderNo).FirstOrDefault(); |
| | | if(string.IsNullOrWhiteSpace(orderNo)) |
| | | { |
| | | return WebResponseContent.Instance.Error($"该æç{palletCode}å·²æ£éå®"); |
| | | } |
| | | return WebResponseContent.Instance.OK(data: orderNo); |
| | | } |
| | | |
| | | static object lock_code = new object(); |
| | |
| | | return code; |
| | | } |
| | | } |
| | | |
| | | |
| | | public override PageGridData<Dt_OutboundOrder> GetPageData(PageDataOptions options) |
| | | { |
| | | Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties); |
| | | List<OrderByModel> orderByModels = new List<OrderByModel>(); |
| | | foreach (var item in orderbyDic) |
| | | { |
| | | OrderByModel orderByModel = new() |
| | | { |
| | | FieldName = item.Key, |
| | | OrderByType = item.Value |
| | | }; |
| | | orderByModels.Add(orderByModel); |
| | | } |
| | | |
| | | ISugarQueryable<Dt_OutboundOrder> sugarQueryable1 = BaseDal.Db.Queryable<Dt_OutboundOrder>().Includes(x => x.Details); |
| | | int totalCount = 0; |
| | | List<SearchParameters> searchParametersList = new List<SearchParameters>(); |
| | | if (!string.IsNullOrEmpty(options.Wheres)) |
| | | { |
| | | try |
| | | { |
| | | searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>(); |
| | | options.Filter = searchParametersList; |
| | | |
| | | if (searchParametersList.Count > 0) |
| | | { |
| | | var materielCodeParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals("materielCode", StringComparison.OrdinalIgnoreCase)); |
| | | if (materielCodeParam != null && !string.IsNullOrEmpty(materielCodeParam.Value?.ToString())) |
| | | { |
| | | string materielCode = materielCodeParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => |
| | | x.Details.Any(d => d.MaterielCode.Contains(materielCode))); |
| | | } |
| | | var upperOrderNoParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals(nameof(Dt_OutboundOrder.UpperOrderNo).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)); |
| | | if (upperOrderNoParam != null && !string.IsNullOrEmpty(upperOrderNoParam.Value?.ToString())) |
| | | { |
| | | string upperOrderNo = upperOrderNoParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.UpperOrderNo.Contains(upperOrderNo)); |
| | | } |
| | | var orderNoParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals(nameof(Dt_OutboundOrder.OrderNo).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)); |
| | | if (orderNoParam != null && !string.IsNullOrEmpty(orderNoParam.Value?.ToString())) |
| | | { |
| | | string orderNo = orderNoParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.OrderNo.Contains(orderNo)); |
| | | } |
| | | var orderStatusParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals(nameof(Dt_OutboundOrder.OrderStatus).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)); |
| | | if (orderStatusParam != null && !string.IsNullOrEmpty(orderStatusParam.Value?.ToString())) |
| | | { |
| | | string orderStatus = orderStatusParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.OrderStatus.Equals(orderStatus)); |
| | | } |
| | | var returnToMESStatusParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals(nameof(Dt_OutboundOrder.ReturnToMESStatus).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)); |
| | | if (returnToMESStatusParam != null && !string.IsNullOrEmpty(returnToMESStatusParam.Value?.ToString())) |
| | | { |
| | | string returnToMESStatus = returnToMESStatusParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.ReturnToMESStatus.Equals(returnToMESStatus)); |
| | | } |
| | | |
| | | var businessTypeParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals(nameof(Dt_OutboundOrder.BusinessType).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)); |
| | | if (businessTypeParam != null && !string.IsNullOrEmpty(businessTypeParam.Value?.ToString())) |
| | | { |
| | | string businessType = businessTypeParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.BusinessType.Equals(businessType)); |
| | | } |
| | | |
| | | var departmentNameParam = searchParametersList.FirstOrDefault(x => |
| | | x.Name.Equals("departmentName", StringComparison.OrdinalIgnoreCase)); |
| | | if (departmentNameParam != null && !string.IsNullOrEmpty(departmentNameParam.Value?.ToString())) |
| | | { |
| | | string departmentName = departmentNameParam.Value.ToString().Trim(); |
| | | sugarQueryable1 = sugarQueryable1.Where(x => |
| | | x.DepartmentName.Contains(departmentName)); |
| | | } |
| | | |
| | | var createDateParams = searchParametersList |
| | | .Where(x => x.Name.Equals("createDate", StringComparison.OrdinalIgnoreCase) |
| | | && !string.IsNullOrEmpty(x.Value?.ToString())) |
| | | .ToList(); |
| | | |
| | | DateTime? minCreateDate = null; |
| | | DateTime? maxCreateDate = null; |
| | | |
| | | foreach (var dateParam in createDateParams) |
| | | { |
| | | if (DateTime.TryParse(dateParam.Value.ToString(), out DateTime dateValue)) |
| | | { |
| | | LinqExpressionType expressionType = dateParam.DisplayType.GetLinqCondition(); |
| | | switch (expressionType) |
| | | { |
| | | case LinqExpressionType.ThanOrEqual: |
| | | minCreateDate = dateValue; |
| | | break; |
| | | case LinqExpressionType.LessThanOrEqual: |
| | | maxCreateDate = dateValue; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (minCreateDate.HasValue) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate >= minCreateDate.Value); |
| | | } |
| | | if (maxCreateDate.HasValue) |
| | | { |
| | | sugarQueryable1 = sugarQueryable1.Where(x => x.CreateDate <= maxCreateDate.Value); |
| | | } |
| | | } |
| | | } |
| | | catch { } |
| | | } |
| | | var data = sugarQueryable1 |
| | | .Where(x => x.OrderType == 0 || x.OrderType == 116) |
| | | .OrderBy(orderByModels) |
| | | .ToPageList(options.Page, options.Rows, ref totalCount); |
| | | |
| | | return new PageGridData<Dt_OutboundOrder>(totalCount, data); |
| | | } |
| | | } |
| | | } |