From 695571c6009ecbc12e7d4a4fb147df7967a1260e Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 07 七月 2025 20:21:19 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/MeiRuiAn/HuaiAn
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_StockService/StockViewService.cs | 330 ++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 279 insertions(+), 51 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 7ff0ca5..58a7512 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"
@@ -1,5 +1,7 @@
锘�
using HslCommunication.Secs.Types;
+using Magicodes.ExporterAndImporter.Core;
+using Magicodes.ExporterAndImporter.Excel;
using Microsoft.AspNetCore.Http;
using SqlSugar;
using System;
@@ -12,12 +14,15 @@
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
+using WIDESEA_Common.LocationEnum;
using WIDESEA_Core;
using WIDESEA_Core.BaseRepository;
using WIDESEA_Core.BaseServices;
using WIDESEA_Core.Const;
+using WIDESEA_Core.DB.Models;
using WIDESEA_Core.Enums;
using WIDESEA_Core.Helper;
+using WIDESEA_Core.HostedService;
using WIDESEA_Core.Utilities;
using WIDESEA_DTO.Stock;
using WIDESEA_IStockRepository;
@@ -39,85 +44,119 @@
public virtual PageGridData<StockViewDTO> GetPageData(PageDataOptions options)
{
- List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>();
-
- string where = string.Empty;
- ISugarQueryable<Dt_StockInfo> sugarQueryable1 = _dbBase.Queryable<Dt_StockInfo>().Includes(x => x.Details);
- if (!string.IsNullOrEmpty(options.Wheres))
+ try
{
- 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)));
- }
- }
+ List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>();
+ 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.BatchNo).FirstLetterToLower());
- if (searchParameters != null)
{
- sugarQueryable1 = sugarQueryable1.Where(x => x.Details.Any(v => v.BatchNo.Contains(searchParameters.Value)));
+ 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 { }
}
- catch { }
- }
+ string whereSto = GetDataRole(typeof(Dt_StockInfo));
+ sugarQueryable1 = sugarQueryable1.Where(whereSto);
+ EntityProperties.ValidatePageOptions(options, ref sugarQueryable1);
- EntityProperties.ValidatePageOptions(options, ref sugarQueryable1);
+ string whereLo = GetDataRole(typeof(Dt_LocationInfo));
+ ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>().Where(whereLo);
- ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>();
+ EntityProperties.ValidatePageOptions(options, ref sugarQueryable);
- 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,
+ WarehouseId = b.WarehouseId,
+ 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,
+ });
- ISugarQueryable<StockViewDTO> list = sugarQueryable1.InnerJoin(sugarQueryable, (b, a) => a.LocationCode == b.LocationCode).Select((b, a)
- => new StockViewDTO
+ var pklist = sugarQueryable1.Where(b => b.LocationCode == "骞冲簱浣�").Select(b => new StockViewDTO
{
- WarehouseId=a.WarehouseId,
LocationCode = b.LocationCode,
- Column = a.Column,
+ Column = 0,
+ WarehouseId = b.WarehouseId,
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,
+ Depth = 0,
+ EnalbeStatus = EnableStatusEnum.Normal.ObjToInt(),
+ Layer = 0,
+ LocationName = "骞冲簱浣�",
+ LocationStatus = LocationStatusEnum.InStock.ObjToInt(),
+ LocationType = LocationTypeEnum.Undefined.ObjToInt(),
Modifier = b.Modifier,
ModifyDate = b.ModifyDate,
PalletCode = b.PalletCode,
StockRemark = b.Remark,
- RoadwayNo = a.RoadwayNo,
- Row = a.Row,
+ RoadwayNo = "骞冲簱",
+ Row = 0,
StockId = b.Id,
StockStatus = b.StockStatus,
Details = b.Details,
});
+ int totalCount = 0;
+ int pktotalCount = 0;
- int totalCount = 0;
+ stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
+ stockViewDTOs.AddRange(pklist.ToPageList(options.Page, options.Rows, ref pktotalCount));
- stockViewDTOs = list.ToPageList(options.Page, options.Rows, ref totalCount);
-
- stockViewDTOs.ForEach(x =>
- {
- x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct());
- x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct());
+ stockViewDTOs.ForEach(x =>
+ {
+ x.MaterielCode = string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct());
+ x.BatchNo = string.Join(",", x.Details.Select(x => x.BatchNo).Distinct());
+ x.MaterielSpec = x.Details.FirstOrDefault()?.MaterielSpec ?? "";
+ x.MaterielName = x.Details.FirstOrDefault()?.MaterielName ?? "";
+ }
+ );
+ return new PageGridData<StockViewDTO>(totalCount + pktotalCount, stockViewDTOs);
}
- );
+ catch (Exception ex)
+ {
- return new PageGridData<StockViewDTO>(totalCount, stockViewDTOs);
-
+ }
+ return new PageGridData<StockViewDTO>();
}
public virtual object GetDetailPage(PageDataOptions pageData)
@@ -136,11 +175,200 @@
Navigate? navigate = propertyInfo.GetCustomAttribute<Navigate>();
if (navigate != null)
{
- List<ExpandoObject> list = _dbBase.Queryable(detailType.Name, "detail").Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
- return new PageGridData<ExpandoObject>(totalCount, list);
+ List<Dt_StockInfoDetail> list = _dbBase.Queryable<Dt_StockInfoDetail>().Where(navigate.GetName(), "=", pageData.Value).ToPageList(pageData.Page, pageData.Rows, ref totalCount);
+ decimal sum = 0;
+ list.ForEach(x =>
+ {
+ sum += Convert.ToDecimal(x.StockQuantity);
+ });
+ PageGridData<Dt_StockInfoDetail> pageGridData = new PageGridData<Dt_StockInfoDetail>()
+ {
+ Total = totalCount,
+ Rows = list,
+ Summary = new
+ {
+ StockQuantity = Math.Round(sum, 3),
+ }
+ };
+ return pageGridData;
}
}
return new PageGridData<object>(total: 0, null);
}
+ public virtual WebResponseContent Export(PageDataOptions options)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ Type t = typeof(StockViewDTO);
+
+ string savePath = AppDomain.CurrentDomain.BaseDirectory + $"ExcelExport";
+ IExporter exporter = new ExcelExporter();
+ options.Page = 1;
+ options.Rows = 30;
+ options.Order = "desc";
+ options.Sort = "stockId";
+ List<StockViewDTO> stockViewDTOs = new List<StockViewDTO>();
+
+ 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 { }
+ }
+ string whereSto = GetDataRole(typeof(Dt_StockInfo));
+ sugarQueryable1 = sugarQueryable1.Where(whereSto);
+ EntityProperties.ValidatePageOptions(options, ref sugarQueryable1);
+
+ string whereLo = GetDataRole(typeof(Dt_LocationInfo));
+ ISugarQueryable<Dt_LocationInfo> sugarQueryable = _dbBase.Queryable<Dt_LocationInfo>().Where(whereLo);
+
+ 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,
+ WarehouseId = b.WarehouseId,
+ 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,
+ });
+
+ var pklist = sugarQueryable1.Where(b => b.LocationCode == "骞冲簱浣�").Select(b => new StockViewDTO
+ {
+ LocationCode = b.LocationCode,
+ Column = 0,
+ WarehouseId = b.WarehouseId,
+ CreateDate = b.CreateDate,
+ Creater = b.Creater,
+ Depth = 0,
+ EnalbeStatus = EnableStatusEnum.Normal.ObjToInt(),
+ Layer = 0,
+ LocationName = "骞冲簱浣�",
+ LocationStatus = LocationStatusEnum.InStock.ObjToInt(),
+ LocationType = LocationTypeEnum.Undefined.ObjToInt(),
+ Modifier = b.Modifier,
+ ModifyDate = b.ModifyDate,
+ PalletCode = b.PalletCode,
+ StockRemark = b.Remark,
+ RoadwayNo = "骞冲簱",
+ Row = 0,
+ StockId = b.Id,
+ StockStatus = b.StockStatus,
+ Details = b.Details,
+ });
+ stockViewDTOs = list.ToList();
+ stockViewDTOs.AddRange(pklist.ToList());
+ stockViewDTOs.ForEach(x =>
+ {
+ x.MaterielCode = (string.Join(",", x.Details.Select(x => x.MaterielCode).Distinct())) ?? "绌虹";
+ x.BatchNo = (string.Join(",", x.Details.Select(x => x.BatchNo).Distinct())) ?? "鏃�";
+ x.StockCounts = Math.Round(x.Details.Sum(x => x.StockQuantity),3).ToString() + x.Details.FirstOrDefault()?.Unit;
+ x.MaterielSpec= x.Details.FirstOrDefault()?.MaterielSpec ?? "";
+ x.MaterielName= x.Details.FirstOrDefault()?.MaterielName ?? "";
+ }
+ );
+
+ byte[] data = exporter.ExportAsByteArray(stockViewDTOs).Result;
+
+ string fileName = "搴撳瓨瑙嗗浘.xlsx";
+
+ FileHelper.WriteFile(savePath, fileName, data);
+
+ content = WebResponseContent.Instance.OK(data: savePath + "\\" + fileName);
+ }
+ catch (Exception ex)
+ {
+ content = WebResponseContent.Instance.Error(ex.Message);
+ }
+ return content;
+ }
+ private string GetDataRole(Type type)
+ {
+ try
+ {
+ UserRole? userRole = PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == App.User.UserId);
+ if (userRole == null)
+ throw new Exception($"鏃犳潈闄�");
+
+ if (type.IsAssignableFrom(typeof(BaseWarehouseEntity)) || type.GetProperty(nameof(BaseWarehouseEntity.WarehouseId)) != null)
+ {
+ if (userRole.WarehouseIds.Count > 0)
+ {
+ return $"{nameof(BaseWarehouseEntity.WarehouseId)} in ({userRole.WarehouseIds.Serialize().Replace("[", "").Replace("]", "")})";
+ }
+
+ else
+ return $"1 != 1";
+ }
+ else
+ {
+ return "1 = 1";
+ }
+
+ //UserRole? userRole = PermissionDataHostService.UserRoles.FirstOrDefault(x => x.UserId == App.User.UserId);
+ //if (userRole == null)
+ // throw new Exception($"鏃犳潈闄�");
+
+ //if (userRole.AuthorityScope == (int)AuthorityScopeEnum.CurrentRole)
+ //{
+ // List<int> userId = PermissionDataHostService.UserRoles.Where(x => x.RoleId == userRole.RoleId).Select(x => x.UserId).ToList();
+ // return $"creater in ({userId.Serialize()})";
+ //}
+ //else if (userRole.AuthorityScope == (int)AuthorityScopeEnum.OnlySelf)
+ //{
+ // return $"creater = '{userRole.UserName}'";
+ //}
+ //else if (userRole.AuthorityScope == (int)AuthorityScopeEnum.None)
+ //{
+ // return $"1 != 1";
+ //}
+ //return "";
+ }
+ catch (Exception ex)
+ {
+ throw new Exception($"鏃犳潈闄愶紝{ex.Message}");
+ }
+ }
}
}
--
Gitblit v1.9.3