From 4b7cccd22775fd57e594bf26327206fc52773de0 Mon Sep 17 00:00:00 2001
From: heshaofeng <heshaofeng@hnkhzn.com>
Date: 星期一, 08 十二月 2025 15:15:46 +0800
Subject: [PATCH] Merge branch 'master' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu
---
项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs | 94 +++++++++++++++++++++++++++++++++++++++--------
1 files changed, 78 insertions(+), 16 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
index e20fa2b..bb8786c 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_BasicService/LocationInfoService.cs"
@@ -35,14 +35,14 @@
{
private readonly IUnitOfWorkManage _unitOfWorkManage;
private readonly IRepository<Dt_StockInfo> _stockInfoRepository;
- public IRepository<Dt_LocationInfo> Repository => BaseDal;
+ public IRepository<Dt_LocationInfo> Repository => BaseDal;
+ public readonly IRepository<Dt_LocationType> _locationTypeRepository;
-
- public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockInfoRepository ) : base(BaseDal)
+ public LocationInfoService(IRepository<Dt_LocationInfo> BaseDal, IUnitOfWorkManage unitOfWorkManage, IRepository<Dt_StockInfo> stockInfoRepository, IRepository<Dt_LocationType> locationTypeRepository) : base(BaseDal)
{
_unitOfWorkManage = unitOfWorkManage;
_stockInfoRepository = stockInfoRepository;
-
+ _locationTypeRepository = locationTypeRepository;
}
/// <summary>
@@ -122,6 +122,57 @@
/// </summary>
/// <param name="roadwayNo"></param>
/// <returns></returns>
+ public Dt_LocationInfo? AssignLocation(int locationType)
+ {
+ if (locationType <= 0)
+ {
+ throw new ArgumentOutOfRangeException("浠撳簱鍖哄煙閿欒锛�");
+ }
+ lock (_locker)
+ {
+
+ List<LocationCache> removeItems = locationCaches.Where(x => (DateTime.Now - x.DateTime).TotalMinutes > locationCacheTime).ToList();
+ int count = removeItems.Count;
+ for (int i = 0; i < count; i++)
+ {
+ locationCaches.Remove(removeItems[i]);
+ }
+
+ List<string> lockLocationCodes = locationCaches.Select(x => x.LocationCode).ToList();
+
+ //Dictionary<string, SqlSugar.OrderByType> orderBy = new Dictionary<string, OrderByType>()
+ //{
+ // { nameof(Dt_LocationInfo.RoadwayNo),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Column),OrderByType.Asc },
+ // { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
+ // { nameof(Dt_LocationInfo.Row),OrderByType.Asc }
+ //};
+
+ Dictionary<string, SqlSugar.OrderByType> orderBy = new Dictionary<string, OrderByType>()
+ {
+ //{ nameof(Dt_LocationInfo.RoadwayNo),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Layer),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Row),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Column),OrderByType.Asc },
+ { nameof(Dt_LocationInfo.Depth),OrderByType.Desc },
+
+ };
+
+
+ var first = BaseDal.QueryFirst(x => x.LocationType == locationType && x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+ if (first != null)
+ {
+ locationCaches.Add(new LocationCache { LocationCode = first?.LocationCode, DateTime = DateTime.Now });
+ Db.Updateable<Dt_LocationInfo>().SetColumns(x => new Dt_LocationInfo
+ {
+ LocationStatus = (int)LocationStatusEnum.InStockLock,
+ }).Where(x => x.Id == first.Id).ExecuteCommand();
+ }
+
+ return first;
+ }
+ }
public Dt_LocationInfo? AssignLocation()
{
lock (_locker)
@@ -145,14 +196,19 @@
{ nameof(Dt_LocationInfo.Row),OrderByType.Asc }
};
- var first= BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
-
- locationCaches.Add(new LocationCache { LocationCode = first.LocationCode, DateTime = DateTime.Now });
+ var first = BaseDal.QueryFirst(x => x.LocationStatus == LocationStatusEnum.Free.ObjToInt() && x.EnableStatus != EnableStatusEnum.Disable.ObjToInt() && !lockLocationCodes.Contains(x.LocationCode), orderBy);//鏌ヨ绌鸿揣浣嶄俊鎭苟鎺掗櫎5鍒嗛挓鍐呭垎閰嶇殑璐т綅,鏍规嵁灞傘�佸垪銆佹繁搴︺�佽鎺掑簭
+ if (first != null)
+ {
+ locationCaches.Add(new LocationCache { LocationCode = first.LocationCode, DateTime = DateTime.Now });
+ Db.Updateable<Dt_LocationInfo>().SetColumns(x => new Dt_LocationInfo
+ {
+ LocationStatus = (int)LocationStatusEnum.InStockLock,
+ }).Where(x => x.Id == first.Id).ExecuteCommand();
+ }
return first;
}
}
-
/// <summary>
/// 鑾峰彇鍙嚭搴撹揣浣嶇紪鍙�
/// </summary>
@@ -160,7 +216,7 @@
/// <returns></returns>
public List<string> GetCanOutLocationCodes()
{
- return Repository.QueryData(x => x.LocationCode, x => x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
+ return Repository.QueryData(x => x.LocationCode, x => x.LocationStatus == LocationStatusEnum.InStock.ObjToInt() && (x.EnableStatus == EnableStatusEnum.OnlyOut.ObjToInt() || x.EnableStatus == EnableStatusEnum.Normal.ObjToInt())).Distinct().ToList();
}
/// <summary>
@@ -171,6 +227,12 @@
public List<Dt_LocationInfo> GetLocationInfos(List<string> locationCodes)
{
return Repository.QueryData(x => locationCodes.Contains(x.LocationCode));
+ }
+
+ public List<LocationTypeDto> GetLocationTypes()
+ {
+ return _locationTypeRepository.Db.Queryable<Dt_LocationType>().Select(x =>
+ new LocationTypeDto { LocationType = x.LocationType, LocationTypeDesc = x.LocationTypeDesc }).ToList();
}
/// <summary>
@@ -209,7 +271,7 @@
LocationCode = $"HAI-{row.ToString().PadLeft(3, '0')}-{col.ToString().PadLeft(3, '0')}-{layer.ToString().PadLeft(2, '0')} ",
LocationName = $"{row.ToString()}琛寋col.ToString()}鍒梴layer.ToString()}灞� ",
-
+
RoadwayNo = roadwayNo,
Row = row,
Column = col,
@@ -236,7 +298,7 @@
LocationCode = $"HAI-{r1.ToString().PadLeft(3, '0')}-{col.ToString().PadLeft(3, '0')}-{layer.ToString().PadLeft(2, '0')} ",
LocationName = $"{r1.ToString()}琛寋col.ToString()}鍒梴layer.ToString()}灞� ",
-
+
RoadwayNo = roadwayNo,
Row = r1,
Column = col,
@@ -255,7 +317,7 @@
LocationName = $"{r2.ToString()}琛寋col.ToString()}鍒梴layer.ToString()}灞� ",
-
+
RoadwayNo = roadwayNo,
Row = r2,
Column = col,
@@ -316,9 +378,9 @@
Row = i + 1,
Depth = depth,
};
-
- locationInfo.LocationCode = $"HAI-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(2, '0')}";
- locationInfo.LocationName = $"HAI{locationInfo.RoadwayNo}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞�";
+
+ locationInfo.LocationCode = $"HAI-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(2, '0')}";
+ locationInfo.LocationName = $"HAI{locationInfo.RoadwayNo}宸烽亾{locationInfo.Row.ToString().PadLeft(3, '0')}琛寋locationInfo.Column.ToString().PadLeft(3, '0')}鍒梴locationInfo.Layer.ToString().PadLeft(3, '0')}灞�";
//locationInfo.LocationCode = $"{locationInfo.RoadwayNo}-{locationInfo.Row.ToString().PadLeft(3, '0')}-{locationInfo.Column.ToString().PadLeft(3, '0')}-{locationInfo.Layer.ToString().PadLeft(3, '0')}-{locationInfo.Depth.ToString().PadLeft(2, '0')}";
@@ -328,7 +390,7 @@
}
}
}
- // BaseDal.AddData(locationInfos);
+ // BaseDal.AddData(locationInfos);
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
--
Gitblit v1.9.3