1
heshaofeng
2026-03-25 37454e625df68d40897112b2e8c2e3cf4d7163e3
ÏîÄ¿´úÂë/WMSÎÞ²Ö´¢°æ/WIDESEA_WMSServer/WIDESEA_StockService/StockInfoDetailService.cs
@@ -1,10 +1,13 @@
using SqlSugar;
using WIDESEA_Common.StockEnum;
using System.Collections.Generic;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.HttpContextUser;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Stock;
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
@@ -33,9 +36,9 @@
        public PageGridData<StockInfoDetailWithPalletDto> GetPageData2(PageDataOptions options)
        {
            string wheres = ValidatePageOptions(options);
            var sugarQueryable = Db.Queryable<Dt_StockInfoDetail>().InnerJoin<Dt_StockInfo>((detail, item) => detail.StockId == item.Id);
            var sugarQueryable = Db.Queryable<Dt_StockInfoDetail>().InnerJoin<Dt_StockInfo>((detail, item) => detail.StockId == item.Id)
                .Where((detail, item) => item.StockStatus == StockStatusEmun.入库完成.ObjToInt() || item.StockStatus == StockStatusEmun.出库完成.ObjToInt());
            Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
            List<OrderByModel> orderByModels = new List<OrderByModel>();
@@ -45,9 +48,10 @@
                {
                    OrderByModel orderByModel = new()
                    {
                        FieldName = "detail."+item.Key,
                        FieldName = "detail." + item.Key,
                        OrderByType = item.Value
                    };
                    orderByModels.Add(orderByModel);
                }
                else
                {
@@ -56,8 +60,9 @@
                        FieldName = item.Key,
                        OrderByType = item.Value
                    };
                    orderByModels.Add(orderByModel);
                }
                //orderByModels.Add(orderByModel);
            }
            int totalCount = 0;
            List<SearchParameters> searchParametersList = new List<SearchParameters>();
@@ -72,11 +77,58 @@
                    {
                        foreach (var param in searchParametersList)
                        {
                            // åŒ¹é…æ‰˜ç›˜ç¼–号查询条件(小写字段名)
                            if (param.Name.Equals(nameof(Dt_StockInfo.PalletCode).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                sugarQueryable = sugarQueryable.Where((detail, item) => item.PalletCode.Contains(param.Value));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.MaterielCode.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.MaterielName).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.MaterielName.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.OrderNo).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.OrderNo.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.BatchNo.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.Barcode).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.Barcode.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.MaterielCode.Contains(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.Status).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.Status.Equals(queryValue));
                            }
                            if (param.Name.Equals(nameof(Dt_StockInfoDetail.WarehouseCode).FirstLetterToLower(), StringComparison.OrdinalIgnoreCase)
                                && !string.IsNullOrEmpty(param.Value?.ToString()))
                            {
                                string queryValue = param.Value.ToString().Trim();
                                sugarQueryable = sugarQueryable.Where((detail, item) => detail.WarehouseCode.Equals(queryValue));
                            }
                        }
                    }
@@ -84,10 +136,8 @@
                catch (Exception ex)
                {
                }
            }
            }
            var data = sugarQueryable
             .WhereIF(!wheres.IsNullOrEmpty(), wheres)
             .OrderBy(orderByModels)
             .Select((detail, item) => new StockInfoDetailWithPalletDto
             {
@@ -114,7 +164,11 @@
                 CreateDate = detail.CreateDate,
                 Modifier = detail.Modifier,
                 ModifyDate = detail.ModifyDate,
                 PalletCode = item.PalletCode
                 PalletCode = item.PalletCode,
                 LocationCode = item.LocationCode,
                 ValidDate = detail.ValidDate,
             })
             .ToPageList(options.Page, options.Rows, ref totalCount);
@@ -123,6 +177,27 @@
        }
        public async Task<WebResponseContent> LockOrUpLockStockDetail(SaveModel saveModel)
        {
            WebResponseContent content = new WebResponseContent();
            try
            {
                var details = await BaseDal.QueryDataAsync(x => saveModel.DelKeys.Contains(x.Id));
                bool flag = Convert.ToBoolean(saveModel.Extra);
                details.ForEach(x => x.Status = flag ? StockStatusEmun.手动冻结.ObjToInt(): StockStatusEmun.手动解锁.ObjToInt());
                await BaseDal.UpdateDataAsync(details);
                return content.OK(flag ? "冻结成功!" : "解锁成功!");
            }
            catch (Exception ex)
            {
                return content.Error(ex.Message);
            }
        }
    }
}