From 08d4252c79d088d7bf97a08d314ec8577d96e2d2 Mon Sep 17 00:00:00 2001
From: 刘磊 <1161824510@qq.com>
Date: 星期六, 14 六月 2025 19:57:47 +0800
Subject: [PATCH] 火警

---
 Code Management/WMS/WIDESEA_WMSServer/WIDESEA_StorageBasicServices/Stock/StockInfoService.cs |  152 ++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 146 insertions(+), 6 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 7bd4021..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,19 +1,159 @@
-锘�
+锘縰sing AngleSharp.Dom;
+using Mapster;
+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)
         {
-            item.Remark = item.StockInfoDetails.Count().ToString();
+            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)
+    {
+        try
+        {
+            List<DtStockInfo_Hty> stockInfos = new List<DtStockInfo_Hty>();
+            List<DtLocationInfo> locationInfos = new List<DtLocationInfo>();
+
+
+            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