From 8f9b9411ca279670bd85fcfa7763987295ed9abf Mon Sep 17 00:00:00 2001
From: zhanghonglin <zhanghonglin@hnkhzn.com>
Date: 星期五, 10 四月 2026 10:55:38 +0800
Subject: [PATCH] 空桶入出扩展开发
---
项目代码/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 352 +++++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 246 insertions(+), 106 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index 0814e29..0c5dff4 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -8,6 +8,7 @@
using System.Threading.Tasks;
using Newtonsoft.Json;
using WIDESEA_Common.LocationEnum;
+using WIDESEA_Common.OutboundOrder;
using WIDESEA_Common.StockEnum;
using WIDESEA_Common.TaskEnum;
using WIDESEA_Common.Warehouse;
@@ -22,6 +23,7 @@
using WIDESEA_IStockService;
using WIDESEA_Model.Models;
using WIDESEA_Model.Models.Basic;
+using WIDESEA_Model.Models.Outbound;
using WIDESEA_Model.Models.Stock;
using WIDESEA_Model.View;
using WIDESEAWCS_DTO.Stock;
@@ -47,10 +49,10 @@
private readonly IRepository<Dt_StockInfoDetail_Hty> _IStockInfoDetailHtyRepository;
private readonly IRepository<Dt_StockInfos> _IStockInfosRepository;
private readonly IRepository<Dt_FillingOrder> _FillingOrderRepository;
- //WCS婊℃《鍑哄簱淇″彿
- private static bool kk = false;
+ private readonly IRepository<Dt_OutboundOrder> _OutboundOrderRepository;
+ private readonly IRepository<Dt_OutboundOrder_Hty> _OutboundOrderHtyRepository;
- public TaskService(IRepository<Dt_Task> BaseDal, IRepository<Dt_FillingOrder> FillingOrderRepository, IRepository<Dt_StockInfos> IStockInfosRepository, ILocationInfoService ILocationInfoService, IRepository<Dt_StockInfoDetail> IStockInfoDetailRepository, IRepository<Dt_StockInfo_hty> IStockInfohtyRepository, IRepository<Dt_StockInfoDetail_Hty> IStockInfoDetailHtyRepository, IRepository<Dt_Outstockinfo> IOutstockinfoService, IStockService IStockService, IRepository<Dt_Warehouse> WarehouseService, IRepository<Dt_Outstockinfo> OutstockinfoRepository, ILocationInfoService LocationInfoService, IRepository<Dt_StockInfo> StockInfoRepository, IRepository<Dt_LocationInfo> LocationInfoRepository, IRepository<Dt_Task_Hty> Task_HtyRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
+ public TaskService(IRepository<Dt_Task> BaseDal, IRepository<Dt_OutboundOrder_Hty> OutboundOrderHtyRepository, IRepository<Dt_OutboundOrder> OutboundOrderRepository, IRepository<Dt_FillingOrder> FillingOrderRepository, IRepository<Dt_StockInfos> IStockInfosRepository, ILocationInfoService ILocationInfoService, IRepository<Dt_StockInfoDetail> IStockInfoDetailRepository, IRepository<Dt_StockInfo_hty> IStockInfohtyRepository, IRepository<Dt_StockInfoDetail_Hty> IStockInfoDetailHtyRepository, IRepository<Dt_Outstockinfo> IOutstockinfoService, IStockService IStockService, IRepository<Dt_Warehouse> WarehouseService, IRepository<Dt_Outstockinfo> OutstockinfoRepository, ILocationInfoService LocationInfoService, IRepository<Dt_StockInfo> StockInfoRepository, IRepository<Dt_LocationInfo> LocationInfoRepository, IRepository<Dt_Task_Hty> Task_HtyRepository, IUnitOfWorkManage unitOfWorkManage) : base(BaseDal)
{
_LocationInfoService = LocationInfoService;
_unitOfWorkManage = unitOfWorkManage;
@@ -67,17 +69,19 @@
_IStockInfoDetailHtyRepository = IStockInfoDetailHtyRepository;
_IStockInfosRepository = IStockInfosRepository;
_FillingOrderRepository = FillingOrderRepository;
+ _OutboundOrderRepository = OutboundOrderRepository;
+ _OutboundOrderHtyRepository = OutboundOrderHtyRepository;
}
public IRepository<Dt_Task> Repository => BaseDal;
//娴嬭瘯
- public WebResponseContent ceshi()
+ public string ceshi()
{
WebResponseContent content = new WebResponseContent();
- Dt_StockInfos StockInfoss = _IStockInfosRepository.QueryFirst(x => x.Id == 7);
- return content;
+ Dt_LocationInfo locations = _LocationInfoService.AllotLocationInfo(2);
+ return "123";
}
@@ -86,9 +90,12 @@
{
WebResponseContent content = new WebResponseContent();
Dt_Task task = new Dt_Task();
+ //鏌ヨ褰撳墠鍏ュ簱绌烘《绫诲瀷
+ Dt_Outstockinfo Warehouse = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
//鍏ュ簱鍒嗛厤璐т綅
Dt_LocationInfo locations = _LocationInfoService.AllotLocationInfo(1);
locations.LocationStatus = (int)LocationStatusEnum.Lock;
+ locations.Remark = Warehouse.EmptyOutSet;
task.SourceAddress = location;
task.TargetAddress = locations.LocationCode;
@@ -96,7 +103,7 @@
task.Grade = 1;
task.TaskType = (int)TaskTypeEnum.InEmpty;
task.TaskState = (int)TaskStatusEnum.InNew;
- task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
@@ -122,35 +129,38 @@
//List<MESSockInfo> MESSocks = new List<MESSockInfo>();
string materielDetailedid = stock.MaterialCode1 + DateTime.Now.ToString("mmss").ObjToInt();
-
+ string kk = stock.MaterialCode1.Replace("X", "");
//鍖哄垎璐у尯
int k = 1;
- //Dt_Warehouse warehouse = _WarehouseRepository.QueryFirst(x => x.MaterialName == "");
- ////鏌ヨ鐗╂枡浜岀淮缂栫爜
- //Dt_FillingOrder FillingOrder = _FillingOrderRepository.QueryFirst(x=>x.BarCode == stock.MaterialCode1);
- //if (warehouse.MaterialType == (int)WarehouseTypeEnum.Food)
- //{
- // k = 2;
- //}
- //else if (warehouse.MaterialType == (int)WarehouseTypeEnum.Industry)
- //{
- // k = 3;
- //}
+ //鏌ヨ鐗╂枡浜岀淮缂栫爜
+ Dt_FillingOrder FillingOrder = _FillingOrderRepository.QueryFirst(x => x.BarCode == kk);
+ if (FillingOrder == null)
+ {
+ LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "婊℃《鍏ュ簱浠诲姟鐢熸垚", $"{"浜岀淮鐮佹煡璇㈠紓甯�"}" });
+ content.Message = "浜岀淮鐮佹煡璇㈠紓甯�";
+ return content;
+ }
+ if (FillingOrder.WarehouseType.Equals("椋熷搧鍖�"))
+ {
+ k = 2;
+ }
+ else if (FillingOrder.WarehouseType.Equals("宸ヤ笟鍖�"))
+ {
+ k = 3;
+ }
//鍏ュ簱鍒嗛厤璐т綅
Dt_LocationInfo locations = _LocationInfoService.AllotLocationInfo(k);
- locations.LocationStatus = (int)LocationStatusEnum.Lock;
//鍒涘缓鐗╂枡缁勭洏
Dt_StockInfo stockInfo = new Dt_StockInfo();
stockInfo.LocationCode = locations.LocationCode;
- stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨;
stockInfo.MaterielCode1 = stock.MaterialCode1;
stockInfo.MaterielCode2 = stock.MaterialCode2;
stockInfo.MaterielCode3 = stock.MaterialCode3;
stockInfo.MaterielCode4 = stock.MaterialCode4;
stockInfo.MaterielDetailedid = materielDetailedid;
- stockInfo.StockType = (int)StockTypeEmun.姘�;
+ stockInfo.MaterielName = FillingOrder.MaterialName;
//鍒涘缓鐗╂枡璇︾粏淇℃伅
//鍒ゅ畾鍏ュ簱妯″紡
@@ -158,24 +168,29 @@
//姝e父鍏ュ簱
if (outstockinfo.OutMode == 1)
{
+ locations.LocationStatus = (int)LocationStatusEnum.Lock;
+ stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鏆傚瓨;
+
task.SourceAddress = stock.location;
task.TargetAddress = locations.LocationCode;
task.Roadway = "SC01";
task.Grade = 1;
task.TaskType = (int)TaskTypeEnum.Infull;
task.TaskState = (int)TaskStatusEnum.InNew;
- task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
}
//鐩存帴鍑哄簱
else
{
+ stockInfo.StockStatus = (int)StockStatusEmun.鐩存帴鍑哄簱;
+
task.SourceAddress = "1-52-1";
task.TargetAddress = locations.LocationCode;
task.Roadway = "SC01";
task.Grade = 1;
task.TaskType = (int)TaskTypeEnum.OutDirect;
task.TaskState = (int)TaskStatusEnum.InNew;
- task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
}
//寮�濮嬫暟鎹簱浜嬪姟
@@ -195,7 +210,7 @@
return content;
}
- //WCS鍏ュ簱浠诲姟瀹屾垚
+ //WCS浠诲姟瀹屾垚
public Stock WCSAccomplishIn(int TaskNum)
{
Stock content = new Stock();
@@ -264,7 +279,7 @@
taskhty.Grade = task.Grade;
taskhty.Remark = task.Remark;
taskhty.TaskType = task.TaskType;
- taskhty.TaskState = task.TaskState;
+ taskhty.TaskState = (int)TaskStatusEnum.Task_Finish;
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
@@ -284,6 +299,7 @@
//淇敼璐т綅鐘舵��
Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+ locationInfo.Remark = "";
//鐢熸垚鍘嗗彶浠诲姟
Dt_Task_Hty taskhty = new Dt_Task_Hty();
@@ -314,7 +330,6 @@
{
//鍒犻櫎搴撳瓨淇℃伅
Dt_StockInfo stockInfo = _StockInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
- List<Dt_StockInfoDetail> stockInfoDetail = _IStockInfoDetailRepository.QueryData(x => x.MaterielDetailedid == stockInfo.MaterielDetailedid);
//鐢熸垚鍘嗗彶搴撳瓨淇℃伅
Dt_StockInfo_hty stockInfo_Hty = new Dt_StockInfo_hty();
stockInfo_Hty.PalletCode = stockInfo.PalletCode;
@@ -328,13 +343,6 @@
stockInfo_Hty.MaterielCode4 = stockInfo.MaterielCode4;
stockInfo_Hty.StockType = stockInfo.StockType;
stockInfo_Hty.MaterielDetailedid = stockInfo.MaterielDetailedid;
- List<Dt_StockInfoDetail_Hty> stockInfoDetail_Hty = new List<Dt_StockInfoDetail_Hty>();
- int k = stockInfoDetail.Count() - 1;
- for(int i = 0; i <= k; i++)
- {
- stockInfoDetail_Hty[i].MaterielCode = stockInfoDetail[i].MaterielCode;
- stockInfoDetail_Hty[i].MaterielDetailedid = stockInfoDetail[i].MaterielDetailedid;
- }
//淇敼璐т綅鐘舵��
Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
@@ -365,21 +373,20 @@
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
_StockInfoRepository.DeleteData(stockInfo);
- _IStockInfoDetailRepository.DeleteData(stockInfoDetail);
_IStockInfohtyRepository.AddData(stockInfo_Hty);
- _IStockInfoDetailHtyRepository.AddData(stockInfoDetail_Hty);
_LocationInfoRepository.UpdateData(locationInfo);
_Task_HtyRepository.AddData(taskhty);
BaseDal.DeleteData(task);
+ //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+ OrderTask(task, stockInfo);
//鎻愪氦浜嬪姟
_unitOfWorkManage.CommitTran();
}
//鐩存帴鍑哄簱
- else if(task.TaskType == (int)TaskTypeEnum.OutDirect)
+ else if (task.TaskType == (int)TaskTypeEnum.OutDirect)
{
//鍒犻櫎搴撳瓨淇℃伅
Dt_StockInfo stockInfo = _StockInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
- List<Dt_StockInfoDetail> stockInfoDetail = _IStockInfoDetailRepository.QueryData(x => x.MaterielDetailedid == stockInfo.MaterielDetailedid);
//鐢熸垚鍘嗗彶搴撳瓨淇℃伅
Dt_StockInfo_hty stockInfo_Hty = new Dt_StockInfo_hty();
stockInfo_Hty.PalletCode = stockInfo.PalletCode;
@@ -393,27 +400,6 @@
stockInfo_Hty.MaterielCode4 = stockInfo.MaterielCode4;
stockInfo_Hty.StockType = stockInfo.StockType;
stockInfo_Hty.MaterielDetailedid = stockInfo.MaterielDetailedid;
- List<Dt_StockInfoDetail_Hty> stockInfoDetail_Hty = new List<Dt_StockInfoDetail_Hty>();
- int k = stockInfoDetail.Count() - 1;
- for (int i = 0; i <= k; i++)
- {
- stockInfoDetail_Hty[i].MaterielCode = stockInfoDetail[i].MaterielCode;
- stockInfoDetail_Hty[i].MaterielDetailedid = stockInfoDetail[i].MaterielDetailedid;
- stockInfoDetail_Hty[i].BarcodeType = stockInfoDetail[i].BarcodeType;
- stockInfoDetail_Hty[i].AuxQty = stockInfoDetail[i].AuxQty;
- stockInfoDetail_Hty[i].Quantity = stockInfoDetail[i].Quantity;
- stockInfoDetail_Hty[i].MaxQty = stockInfoDetail[i].MaxQty;
- stockInfoDetail_Hty[i].BarWeight = stockInfoDetail[i].BarWeight;
- stockInfoDetail_Hty[i].PackageQty = stockInfoDetail[i].PackageQty;
- stockInfoDetail_Hty[i].QuantityIn = stockInfoDetail[i].QuantityIn;
- stockInfoDetail_Hty[i].QuantityOut = stockInfoDetail[i].QuantityOut;
- stockInfoDetail_Hty[i].Status = stockInfoDetail[i].Status;
- stockInfoDetail_Hty[i].Materialld = stockInfoDetail[i].Materialld;
- stockInfoDetail_Hty[i].BatchNum = stockInfoDetail[i].BatchNum;
- stockInfoDetail_Hty[i].CreateEmpld = stockInfoDetail[i].CreateEmpld;
- stockInfoDetail_Hty[i].Taskld = stockInfoDetail[i].Taskld;
- stockInfoDetail_Hty[i].TaskSubld = stockInfoDetail[i].TaskSubld;
- }
//鐢熸垚鍘嗗彶浠诲姟
Dt_Task_Hty taskhty = new Dt_Task_Hty();
@@ -437,19 +423,81 @@
content.MaterialCode3 = stockInfo.MaterielCode3;
content.MaterialCode4 = stockInfo.MaterielCode4;
- //寮�濮嬫暟鎹簱浜嬪姟
- _unitOfWorkManage.BeginTran();
- _StockInfoRepository.DeleteData(stockInfo);
- _IStockInfoDetailRepository.DeleteData(stockInfoDetail);
- _IStockInfohtyRepository.AddData(stockInfo_Hty);
- _IStockInfoDetailHtyRepository.AddData(stockInfoDetail_Hty);
- _Task_HtyRepository.AddData(taskhty);
- BaseDal.DeleteData(task);
- //鎻愪氦浜嬪姟
- _unitOfWorkManage.CommitTran();
+ //鏌ヨ褰撳墠鎵ц鐨勮鍗�
+ Dt_OutboundOrder OutboundOrder = _OutboundOrderRepository.QueryFirst(x => x.BoundOrderStatue == (int)OutboundOrderEnum.Execute);
+ Dt_OutboundOrder_Hty OutboundOrder_Hty = new Dt_OutboundOrder_Hty();
+ int num = OutboundOrder.BoundTaskNum + 1;
+ OutboundOrder.BoundTaskNum = num;
+ //鍒ゆ柇璁㈠崟鏄惁鎵ц瀹屾垚
+ if (num == OutboundOrder.num)
+ {
+ //鐢熸垚鍘嗗彶璁㈠崟
+ OutboundOrder_Hty.MaterielName = OutboundOrder.MaterielName;
+ OutboundOrder_Hty.num = OutboundOrder.num;
+ OutboundOrder_Hty.BoundOrderType = OutboundOrder.BoundOrderType;
+ OutboundOrder_Hty.BoundOrderCode = OutboundOrder.BoundOrderCode;
+ OutboundOrder_Hty.BoundOrderStatue = (int)OutboundOrderEnum.Accomplish;
+
+ //淇敼鍏ュ簱妯″紡
+ Dt_Outstockinfo outstockinfo = _IOutstockinfoService.QueryFirst(x => x.Id == 1);
+ outstockinfo.OutMode = 0;
+
+ //寮�濮嬫暟鎹簱浜嬪姟
+ _unitOfWorkManage.BeginTran();
+ _StockInfoRepository.DeleteData(stockInfo);
+ _IStockInfohtyRepository.AddData(stockInfo_Hty);
+ _Task_HtyRepository.AddData(taskhty);
+ BaseDal.DeleteData(task);
+ _OutboundOrderRepository.DeleteData(OutboundOrder);
+ _OutboundOrderHtyRepository.AddData(OutboundOrder_Hty);
+ _IOutstockinfoService.UpdateData(outstockinfo);
+ //鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ }
+ else
+ {
+ //寮�濮嬫暟鎹簱浜嬪姟
+ _unitOfWorkManage.BeginTran();
+ _StockInfoRepository.DeleteData(stockInfo);
+ _IStockInfohtyRepository.AddData(stockInfo_Hty);
+ _Task_HtyRepository.AddData(taskhty);
+ BaseDal.DeleteData(task);
+ _OutboundOrderRepository.UpdateData(OutboundOrder);
+ //鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ }
}
return content;
+ }
+
+ //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+ public void OrderTask(Dt_Task task, Dt_StockInfo stock)
+ {
+ //鍒ゆ柇鏄惁涓鸿鍗曚换鍔�
+ if (task.Remark != null && task.Remark.Equals(""))
+ {
+ //鍒ゆ柇褰撳墠璁㈠崟浠诲姟鏄惁杩樻湁鏈墽琛屽畬鎴愮殑
+ Dt_Task tasks = BaseDal.QueryFirst(x => x.Remark == task.Remark);
+ if (tasks == null)
+ {
+ Dt_OutboundOrder OutboundOrder = _OutboundOrderRepository.QueryFirst(x=>x.MaterielName == stock.MaterielName && x.BoundOrderCode == task.Remark);
+ //鐢熸垚鍘嗗彶璁㈠崟
+ Dt_OutboundOrder_Hty OutboundOrder_Hty = new Dt_OutboundOrder_Hty();
+ OutboundOrder_Hty.MaterielName = OutboundOrder.MaterielName;
+ OutboundOrder_Hty.num = OutboundOrder.num;
+ OutboundOrder_Hty.BoundOrderType = OutboundOrder.BoundOrderType;
+ OutboundOrder_Hty.BoundOrderCode = OutboundOrder.BoundOrderCode;
+ OutboundOrder_Hty.BoundOrderStatue = (int)OutboundOrderEnum.Accomplish;
+
+ //寮�濮嬫暟鎹簱浜嬪姟
+ _unitOfWorkManage.BeginTran();
+ _OutboundOrderHtyRepository.AddData(OutboundOrder_Hty);
+ _OutboundOrderRepository.UpdateData(OutboundOrder);
+ //鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ }
+ }
}
//鏍规嵁浠诲姟鍙锋煡璇换鍔�
@@ -489,7 +537,7 @@
Dt_Task task = new Dt_Task();
//鍑哄簱鍒嗛厤鐗╂枡
Dt_LocationInfo locations = _LocationInfoService.AllotStock(1);
- if (locations ==null)
+ if (locations == null)
{
return content;
}
@@ -501,7 +549,7 @@
task.Grade = 1;
task.TaskType = (int)TaskTypeEnum.OutEmpty;
task.TaskState = (int)TaskStatusEnum.OutNew;
- task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt();
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
@@ -519,40 +567,83 @@
}
//鏍规嵁鏁伴噺鍜岀绫讳笅鍙戞弧妗跺嚭搴撲换鍔�
- public WebResponseContent ArtificialTask(int Num, int Type)
+ public WebResponseContent ArtificialTask(int Num, string Types, string? remark)
{
WebResponseContent content = new WebResponseContent();
List<Dt_Task> tasks = new List<Dt_Task>();
List<Dt_LocationInfo> LocationInfo = new List<Dt_LocationInfo>();
List<Dt_StockInfo> StockInfo = new List<Dt_StockInfo>();
- if (Num > 0 && Type > 0 && kk == true)
+ if (Num > 0 && !Types.Equals("") && Types != null)
{
- Dt_Outstockinfo outstockinfo = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
- //婊�
- if (outstockinfo.BigOrLittle == 1)
+ Dt_Warehouse Warehouse = _WarehouseRepository.QueryFirst(x=>x.MateriaCode == Types);
+ //婊℃《鍑哄簱
+ if (Warehouse == null)
{
- //鑾峰彇骞堕攣瀹氱墿鏂�
- StockInfo = _IStockService.PriorityBig(Num, Type);
- }
- //娈�
- else
- {
- //鑾峰彇骞堕攣瀹氱墿鏂�
- StockInfo = _IStockService.PriorityLittle(Num, Type);
- }
+ Dt_Outstockinfo outstockinfo = _OutstockinfoRepository.QueryFirst(x => x.Id == 1);
+ //婊�
+ if (outstockinfo.BigOrLittle == 1)
+ {
+ //鑾峰彇骞堕攣瀹氱墿鏂�
+ StockInfo = _IStockService.PriorityBig(Num, Types);
+ if (StockInfo == null || StockInfo.Count <= 0)
+ {
+ StockInfo = _IStockService.PriorityLittle(Num, Types);
+ }
+ }
+ //娈�
+ else
+ {
+ //鑾峰彇骞堕攣瀹氱墿鏂�
+ StockInfo = _IStockService.PriorityLittle(Num, Types);
+ if (StockInfo == null || StockInfo.Count <= 0)
+ {
+ StockInfo = _IStockService.PriorityBig(Num, Types);
+ }
+ }
- //鍒涘缓浠诲姟
- if (StockInfo != null)
+ //鍒涘缓浠诲姟
+ if (StockInfo != null && StockInfo.Count > 0)
+ {
+ //鑾峰彇骞堕攣瀹氳揣浣�
+ LocationInfo = _ILocationInfoService.StockLockLocation(StockInfo);
+ //鍒涘缓浠诲姟
+ tasks = StocksAddTasks(StockInfo, remark);
+ }
+ else
+ {
+ return content.Error("鐗╂枡涓嶈冻");
+ }
+ }
+ //绌烘《鍑哄簱
+ else
{
//鑾峰彇骞堕攣瀹氳揣浣�
- LocationInfo = _ILocationInfoService.StockLockLocation(StockInfo);
- //鍒涘缓浠诲姟
- tasks = StocksAddTasks(StockInfo);
- }
- else
- {
- return WebResponseContent.Instance.Error($"鐗╂枡涓嶈冻");
+ LocationInfo = _LocationInfoRepository.QueryData(x => x.Remark == Types && x.LocationStatus == (int)LocationStatusEnum.EmptyBarrel).Take(Num).ToList();
+ if (LocationInfo.Count() == Num)
+ {
+ string StationName = "婊℃《鍑�";
+ string StationNames = SelectStationManger(StationName);
+ foreach (var item in LocationInfo)
+ {
+ item.LocationStatus = (int)LocationStatusEnum.Lock;
+
+ //鍒涘缓浠诲姟
+ Dt_Task task = new Dt_Task();
+ task.SourceAddress = item.LocationCode;
+ task.TargetAddress = StationNames;
+ task.Roadway = "SC01";
+ task.Grade = 1;
+ task.TaskType = (int)TaskTypeEnum.OutEmpty;
+ task.TaskState = (int)TaskStatusEnum.OutNew;
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt());
+ tasks.Add(task);
+ }
+ }
+ else
+ {
+ return content.Error("鐗╂枡涓嶈冻");
+ }
}
//寮�濮嬫暟鎹簱浜嬪姟
@@ -571,13 +662,14 @@
}
else
{
- LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "涓嬪彂鏁伴噺銆佺绫绘垨淇″彿寮傚父"});
+ LogLock.OutLogAOP("鎺ュ彛鏃ュ織", new string[] { "涓嬪彂鏁伴噺鎴栫绫诲紓甯�" });
+ return content.Error("涓嬪彂鏁伴噺鎴栫绫诲紓甯�");
}
return content;
}
//鏍规嵁澶氭潯鐗╂枡鍒涘缓澶氭潯鍑哄簱浠诲姟
- public List<Dt_Task> StocksAddTasks(List<Dt_StockInfo> StockInfo)
+ public List<Dt_Task> StocksAddTasks(List<Dt_StockInfo> StockInfo ,string? remark)
{
List<Dt_Task> tasks = new List<Dt_Task>();
int k = StockInfo.Count() - 1;
@@ -593,7 +685,8 @@
task.Grade = 1;
task.TaskType = (int)TaskTypeEnum.Outfull;
task.TaskState = (int)TaskStatusEnum.OutNew;
- task.TaskNum = DateTime.Now.ToString("mmss").ObjToInt() + i;
+ task.TaskNum = TaskNum(DateTime.Now.ToString("mmss").ObjToInt() + i);
+ task.Remark = remark;
tasks.Add(task);
}
@@ -654,6 +747,7 @@
{
Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+ locationInfo.Remark = "";
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
@@ -696,6 +790,8 @@
BaseDal.DeleteData(task);
WCSTaskDelete(task.TaskNum);
_Task_HtyRepository.AddData(taskhty);
+ //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+ OrderTask(task, stockInfo);
//鎻愪氦浜嬪姟
_unitOfWorkManage.CommitTran();
}
@@ -726,21 +822,65 @@
return task;
}
- //WCS婊℃《鍑哄簱淇″彿
- public WebResponseContent WCSSignal(int k)
+ //鎵ц璁㈠崟
+ public string ExecuteOrder(int k)
{
- WebResponseContent content=new WebResponseContent();
- //鍙互鍑�
- if (k == 1) {
- kk = true;
+ WebResponseContent content = new WebResponseContent();
+ Dt_OutboundOrder OutboundOrder = _OutboundOrderRepository.QueryFirst(x => x.Id == k);
+ //鐩存帴鍑哄簱璁㈠崟
+ if (OutboundOrder.BoundOrderType == 4)
+ {
+ //闃叉澶氭潯璁㈠崟鎵ц
+ Dt_OutboundOrder OutboundOrders = _OutboundOrderRepository.QueryFirst(x => x.BoundOrderStatue == (int)OutboundOrderEnum.Execute);
+ if (OutboundOrders == null)
+ {
+ //淇敼鍏ュ簱妯″紡
+ Dt_Outstockinfo outstockinfo = _IOutstockinfoService.QueryFirst(x => x.Id == 1);
+ outstockinfo.OutMode = 1;
+ OutboundOrder.BoundOrderStatue = (int)OutboundOrderEnum.Execute;
+
+ //寮�濮嬫暟鎹簱浜嬪姟
+ _unitOfWorkManage.BeginTran();
+ _IOutstockinfoService.UpdateData(outstockinfo);
+ _OutboundOrderRepository.UpdateData(OutboundOrder);
+ //鎻愪氦浜嬪姟
+ _unitOfWorkManage.CommitTran();
+ }
+ else
+ {
+ content.Message="璇风瓑寰呭叾浠栬鍗曟墽琛屽畬鎴�";
+ }
}
- //涓嶅彲浠ュ嚭
+ //鍏朵粬姝e父鍑哄簱
else
{
- kk = false;
+ content = ArtificialTask(OutboundOrder.num, OutboundOrder.MaterielName, OutboundOrder.BoundOrderCode);
+ if (content.Message == null || content.Message.Equals(""))
+ {
+ OutboundOrder.BoundOrderStatue = (int)OutboundOrderEnum.Execute;
+ _OutboundOrderRepository.UpdateData(OutboundOrder);
+ }
}
+ return content.Message;
+ }
- return content;
+ //闃叉浠诲姟鍙烽噸澶�
+ public int TaskNum(int num)
+ {
+ int k = num;
+ while (true)
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == k);
+ if (task == null)
+ {
+ return k;
+ }
+ else
+ {
+ k = DateTime.Now.ToString("mmss").ObjToInt();
+ continue;
+ }
+ }
}
}
}
--
Gitblit v1.9.3