From 981a80940e47409300c09847684ca530f75b4a5f Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期五, 10 一月 2025 23:56:33 +0800
Subject: [PATCH] 优化WCS辅料出库逻辑
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs | 147 ++++++++++++++++++++++++------------------------
1 files changed, 74 insertions(+), 73 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
index a843426..15ebd4b 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs"
@@ -8,12 +8,14 @@
using System.Drawing.Printing;
using System.Dynamic;
using System.Linq;
+using System.Linq.Expressions;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
+using WIDESEA_Core.Const;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
using WIDESEA_Core.Utilities;
@@ -37,84 +39,83 @@
public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
{
+ List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>();
- //string where = options.ValidatePageOptions(typeof(StockViewDTO).GetProperties());
- //鑾峰彇鎺掑簭瀛楁
- //Dictionary<string, OrderByType> orderbyDic = options.GetPageDataSort(typeof(StockViewDTO).GetProperties());
- //List<OrderByModel> orderByModels = new List<OrderByModel>();
- //foreach (var item in orderbyDic)
- //{
- // OrderByModel orderByModel = new OrderByModel()
- // {
- // FieldName = item.Key,
- // OrderByType = item.Value
- // };
- // orderByModels.Add(orderByModel);
- //}
+ string where = string.Empty;
+ ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x => x.Details);
+ if (!string.IsNullOrEmpty(options.Wheres))
+ {
+ try
+ {
+ List<SearchParameters> searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ if (searchParametersList.Count > 0)
+ {
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.MaterielCode).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.MaterielCode.Contains(searchParameters.Value)));
+ }
+ }
+
+ {
+ SearchParameters? searchParameters = searchParametersList.FirstOrDefault(x => x.Name == nameof(Dt_StockInfoDetail.BatchNo).FirstLetterToLower());
+ if (searchParameters != null)
+ {
+ sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.BatchNo.Contains(searchParameters.Value)));
+ }
+ }
+
+ }
+
+ }
+ catch { }
+ }
+
+ EntityProperties.ValidatePageOptions(options, ref sugarQueryable1);
+
+ ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+
+ EntityProperties.ValidatePageOptions(options, ref sugarQueryable);
+
+ ISugarQueryable<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
+ => new StockViewDTO
+ {
+ LocationCode = b.LocationCode,
+ Column = a.Column,
+ CreateDate = b.CreateDate,
+ Creater = b.Creater,
+ Depth = a.Depth,
+ EnalbeStatus = a.EnableStatus,
+ Layer = a.Layer,
+ WarehouseId = b.WarehouseId,
+ LocationName = a.LocationName,
+ LocationStatus = a.LocationStatus,
+ LocationType = a.LocationType,
+ Modifier = b.Modifier,
+ ModifyDate = b.ModifyDate,
+ PalletCode = b.PalletCode,
+ StockRemark = b.Remark,
+ RoadwayNo = a.RoadwayNo,
+ Row = a.Row,
+ StockId = b.Id,
+ StockStatus = b.StockStatus,
+ Details = b.Details,
+ });
+
+
int totalCount = 0;
- ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x=>x.Details);
- ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
-
- List<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
- => new StockViewDTO
+ stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
+
+ stockViewDTOs.ForEach(x =>
{
- LocationCode = b.LocationCode,
- Column = a.Column,
- CreateDate = b.CreateDate,
- Creater = b.Creater,
- Depth = a.Depth,
- EnalbeStatus = a.EnableStatus,
- Layer = a.Layer,
- LocationName = a.LocationName,
- LocationStatus = a.LocationStatus,
- LocationType = a.LocationType,
- Modifier = b.Modifier,
- ModifyDate = b.ModifyDate,
- PalletCode = b.PalletCode,
- StockRemark = b.Remark,
- RoadwayNo = a.RoadwayNo,
- Row = a.Row,
- StockId = b.Id,
- StockStatus = b.StockStatus,
- Details = b.Details,
- }).ToPageList(options.Page, options.Rows, ref totalCount);
- list.ForEach(x =>
- {
- x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct());
- x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct());
- }
- );
- if (options.Wheres.IsNotEmptyOrNull())
- {
- List<SearchParameters> searchParameters = options.Wheres.DeserializeObject<List<SearchParameters>>();
- foreach (var item in searchParameters)
- {
- switch (item.Name)
- {
- case "palletCode":
- list = list.Where(x => x.PalletCode.Contains(item.Value)).ToList();
- break;
- case "locationStatus":
- List<int> locationStatus = item.Value.Split(",").Select(int.Parse).ToList();
- list = list.Where(x => locationStatus.Contains(x.LocationStatus)).ToList();
- break;
- case "stockStatus":
- List<int> stockStatus = item.Value.Split(",").Select(int.Parse).ToList();
- list = list.Where(x => stockStatus.Contains(x.StockStatus)).ToList();
- break;
- case "materielCode":
- list = list.Where(x => x.MaterielCode.Contains(item.Value)).ToList();
- break;
- case "batchNo":
- list=list.Where(x => x.BatchNo.Contains(item.Value)).ToList();
- break;
- default:
- break;
- }
- }
+ x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct());
+ x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct());
}
- return new PageGridData<StockViewDTO>(totalCount, list);
+ );
+
+ return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
}
--
Gitblit v1.9.3