From 28bfb5dc1e3c0ce432e93e7af5a1c78a1a09e061 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期三, 15 十月 2025 15:45:57 +0800
Subject: [PATCH] 更新 ResponeAgingInputDto 属性类型及数据库文件
---
Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs | 159 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 138 insertions(+), 21 deletions(-)
diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
index a4044f6..dd6432e 100644
--- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
+++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs
@@ -1,42 +1,159 @@
-锘�
+锘縰sing AngleSharp.Dom;
using Mapster;
-using WIDESEA_Core.HttpContextUser;
-using WIDESEA_Core.Seed;
+using Masuit.Tools;
+using SqlSugar;
+using System.Collections;
+using System.Collections.Generic;
+using System.Drawing.Printing;
+using System.Linq.Expressions;
+using System.Threading.Tasks;
+using WIDESEA_Cache;
+using WIDESEA_Common;
+using WIDESEA_Core;
namespace WIDESEA_StorageBasicService;
public class StockInfoService : ServiceBase<DtStockInfo, IStockInfoRepository>, IStockInfoService
{
- public StockInfoService(IStockInfoRepository BaseDal) : base(BaseDal)
+
+ private readonly ISimpleCacheService _simpleCacheService;
+ private readonly ILocationStatusChangeRecordRepository _locationStatusChangeRecordRepository;
+ public StockInfoService(IStockInfoRepository BaseDal, ISimpleCacheService simpleCacheService, ILocationStatusChangeRecordRepository locationStatusChangeRecordRepository) : base(BaseDal)
{
+ _simpleCacheService = simpleCacheService;
+ _locationStatusChangeRecordRepository = locationStatusChangeRecordRepository;
}
+ /// <summary>
+ /// 鍒嗛〉
+ /// </summary>
+ /// <param name="options"></param>
+ /// <returns></returns>
public override PageGridData<DtStockInfo> GetPageData(PageDataOptions options)
{
- var data = base.GetPageData(options);
- foreach (var item in data.Rows)
+ string wheres = ValidatePageOptions(options);
+ //鑾峰彇鎺掑簭瀛楁
+ Dictionary<string, SqlSugar.OrderByType> orderbyDic = GetPageDataSort(options, TProperties);
+ List<OrderByModel> orderByModels = new List<OrderByModel>();
+ foreach (var item in orderbyDic)
{
- if (item.IsFull)
- item.Remark = item.StockInfoDetails.Count().ToString();
- else
- item.Remark = "0";
+ OrderByModel orderByModel = new()
+ {
+ FieldName = item.Key,
+ OrderByType = item.Value
+ };
+ orderByModels.Add(orderByModel);
}
- return data;
+
+
+ int totalCount = 0;
+ List<SearchParameters> searchParametersList = new List<SearchParameters>();
+ if (!string.IsNullOrEmpty(options.Wheres))
+ {
+ try
+ {
+ searchParametersList = options.Wheres.DeserializeObject<List<SearchParameters>>();
+ options.Filter = searchParametersList;
+ }
+ catch { }
+ }
+
+ Expression<Func<DtStockInfo, bool>> locationStatus = null;
+ Expression<Func<DtStockInfo, bool>> roadwayNo = null;
+ Expression<Func<DtStockInfo, bool>> materielCode = null;
+ foreach (var item in searchParametersList)
+ {
+ if (item.Name.Contains("locationStatus"))
+ {
+ locationStatus = x => x.LocationInfo.LocationStatus == Convert.ToInt32(item.Value);
+ }
+ else if (item.Name.Contains("roadwayNo"))
+ {
+ roadwayNo = x => x.LocationInfo.RoadwayNo.Contains(item.Value);
+ }
+ else if (item.Name.Contains("materielCode"))
+ {
+ materielCode = x => x.StockInfoDetails.Any(d => d.MaterielCode.Contains(item.Value));
+ }
+ }
+ //.IncludesAllFirstLayer()
+ var data = BaseDal.Db.Queryable<DtStockInfo>()
+ .Includes(x => x.StockInfoDetails)
+ .Includes(x => x.LocationInfo)
+ .WhereIF(!wheres.IsNullOrEmpty(), wheres)
+ .WhereIF(locationStatus != null, locationStatus)
+ .WhereIF(roadwayNo != null, roadwayNo)
+ .WhereIF(materielCode != null, materielCode)
+ .OrderBy(orderByModels)
+ .ToPageList(options.Page, options.Rows, ref totalCount);
+ new PageGridData<DtStockInfo>(totalCount, data);
+ return new PageGridData<DtStockInfo>(totalCount, data);
}
+ /// <summary>
+ /// 鎵归噺鍒犻櫎
+ /// </summary>
+ /// <param name="keys"></param>
+ /// <returns></returns>
public override WebResponseContent DeleteData(object[] keys)
{
- List<DtStockInfo_Hty> stockInfos = new List<DtStockInfo_Hty>();
- foreach (var item in keys)
+ try
{
- var stock = BaseDal.QueryFirstNavAsync(x => x.Id == item.ObjToInt()).Result;
- var stockHty = stock.Adapt<DtStockInfo_Hty>();
- stockInfos.Add(stockHty);
- }
- var hty = BaseDal.Db.InsertNav(stockInfos)
- .Include(x => x.StockInfoDetails)
- .ExecuteCommand();
+ List<DtStockInfo_Hty> stockInfos = new List<DtStockInfo_Hty>();
+ List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
- return base.DeleteData(keys);
+
+ var stocks = new List<string>();
+
+ foreach (var item in keys)
+ {
+ var stock = BaseDal.QueryFirstNavAsync(x => x.Id == item.ObjToInt()).Result;
+ var stockHty = stock.Adapt<DtStockInfo_Hty>();
+ stockInfos.Add(stockHty);
+
+ var location = SqlSugarHelper.DbWMS.Queryable<DtLocationInfo>().FirstAsync(x => x.Id == stock.LocationId).Result;
+ var lastStatus = location.LocationStatus;
+ location.LocationStatus = (int)LocationEnum.Free;
+ locationInfos.Add(location);
+ stocks.Add(stock.PalletCode);
+ _locationStatusChangeRecordRepository.AddLocationStatusChangeRecord(location, lastStatus, (int)StatusChangeTypeEnum.ManualOperation, 0);
+ }
+
+ //_simpleCacheService.HashDel<DtStockInfo>(CacheConst.Cache_DtStockInfo, stocks.ToArray());
+ //var hty = BaseDal.Db.InsertNav(stockInfos)
+ // .Include(x => x.StockInfoDetails)
+ // .ExecuteCommand();
+
+ //var locationd = SqlSugarHelper.DbWMS.Updateable(locationInfos).ExecuteCommandHasChange();
+ //return base.DeleteData(keys);
+
+ var hty = BaseDal.Db.InsertNav(stockInfos)
+ .Include(x => x.StockInfoDetails)
+ .ExecuteCommand();
+
+ var locationd = SqlSugarHelper.DbWMS.Updateable(locationInfos).ExecuteCommandHasChange();
+ return base.DeleteData(keys);
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
}
+
+ // 鏍规嵁浼犲叆搴撳瓨绫诲瀷鑾峰彇涓嶅悓宸烽亾鐨勫簱瀛�
+ public async Task<Dictionary<string, int>> GetLocationByStockType(bool stockType, string areaCode)
+ {
+ var stockInfos = await BaseDal.Db.Queryable<DtStockInfo>().Where(x => x.IsFull == stockType && x.AreaCode == areaCode)
+ .Includes(x => x.LocationInfo).ToListAsync();
+
+ var result = stockInfos
+ .GroupBy(x => x.LocationInfo.RoadwayNo)
+ .ToDictionary(x => x.Key, x => x.Count());
+ return result;
+ }
+
+ //public override WebResponseContent UpdateData(DtStockInfo entity)
+ //{
+ // return base.UpdateData(entity);
+ //}
}
\ No newline at end of file
--
Gitblit v1.9.3