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 | 407 ++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 252 insertions(+), 155 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 aa3cb9d..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,7 +23,9 @@
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;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models.TaskInfo;
@@ -44,10 +47,12 @@
private readonly IRepository<Dt_StockInfoDetail> _IStockInfoDetailRepository;
private readonly IRepository<Dt_StockInfo_hty> _IStockInfohtyRepository;
private readonly IRepository<Dt_StockInfoDetail_Hty> _IStockInfoDetailHtyRepository;
- //WCS婊℃《鍑哄簱淇″彿
- private static bool kk = false;
+ private readonly IRepository<Dt_StockInfos> _IStockInfosRepository;
+ private readonly IRepository<Dt_FillingOrder> _FillingOrderRepository;
+ private readonly IRepository<Dt_OutboundOrder> _OutboundOrderRepository;
+ private readonly IRepository<Dt_OutboundOrder_Hty> _OutboundOrderHtyRepository;
- public TaskService(IRepository<Dt_Task> BaseDal, 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;
@@ -62,22 +67,21 @@
_IStockInfoDetailRepository = IStockInfoDetailRepository;
_IStockInfohtyRepository = IStockInfohtyRepository;
_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();
- string mes = AppSettings.Get("MSE");
- if (!string.IsNullOrEmpty(mes))
- {
- string k = "";
- HttpHelper.Get($"{mes}+{k}");
- }
- 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();
@@ -119,85 +126,41 @@
WebResponseContent content = new WebResponseContent();
Dt_Task task = new Dt_Task();
List<Dt_StockInfoDetail> stockInfoDetail = new List<Dt_StockInfoDetail>();
- List<MESSockInfo> MESSocks = new List<MESSockInfo>();
+ //List<MESSockInfo> MESSocks = new List<MESSockInfo>();
string materielDetailedid = stock.MaterialCode1 + DateTime.Now.ToString("mmss").ObjToInt();
-
- //鍘籑ES鏌ヨ鐗╂枡缂栧彿璇︾粏淇℃伅
- int h = 0;
- string mes = AppSettings.Get("MSE");
- if (!string.IsNullOrEmpty(mes))
- {
- if (stock.MaterialCode1 != null && !stock.MaterialCode1.Equals(""))
- {
- MESSocks[0] = JsonConvert.DeserializeObject<MESSockInfo>(HttpHelper.Get($"{mes}+{stock.MaterialCode1}"));
- stockInfoDetail[0].MaterielCode = stock.MaterialCode1;
- }
- if (stock.MaterialCode2 != null && !stock.MaterialCode2.Equals(""))
- {
- MESSocks[1] = JsonConvert.DeserializeObject<MESSockInfo>(HttpHelper.Get($"{mes}+{stock.MaterialCode2}"));
- h++;
- stockInfoDetail[1].MaterielCode = stock.MaterialCode2;
- }
- if (stock.MaterialCode3 != null && !stock.MaterialCode3.Equals(""))
- {
- MESSocks[2] = JsonConvert.DeserializeObject<MESSockInfo>(HttpHelper.Get($"{mes}+{stock.MaterialCode3}"));
- h++;
- stockInfoDetail[2].MaterielCode = stock.MaterialCode3;
- }
- if (stock.MaterialCode4 != null && !stock.MaterialCode4.Equals(""))
- {
- MESSocks[3] = JsonConvert.DeserializeObject<MESSockInfo>(HttpHelper.Get($"{mes}+{stock.MaterialCode4}"));
- h++;
- stockInfoDetail[3].MaterielCode = stock.MaterialCode4;
- }
- }
- //瀛樺偍鐗╂枡缂栧彿璇︾粏淇℃伅
- for(int m = 0; m <= h; m++)
- {
- stockInfoDetail[m].MaterielDetailedid = materielDetailedid;
- stockInfoDetail[m].BarcodeType = MESSocks[m].BarcodeType;
- stockInfoDetail[m].AuxQty = MESSocks[m].AuxQty;
- stockInfoDetail[m].Quantity = MESSocks[m].Quantity;
- stockInfoDetail[m].MaxQty = MESSocks[m].MaxQty;
- stockInfoDetail[m].BarWeight = MESSocks[m].BarWeight;
- stockInfoDetail[m].PackageQty = MESSocks[m].PackageQty;
- stockInfoDetail[m].QuantityIn = MESSocks[m].QuantityIn;
- stockInfoDetail[m].QuantityOut = MESSocks[m].QuantityOut;
- stockInfoDetail[m].Status = MESSocks[m].Status;
- stockInfoDetail[m].Materialld = MESSocks[m].Materialld;
- stockInfoDetail[m].BatchNum = MESSocks[m].BatchNum;
- stockInfoDetail[m].CreateEmpld = MESSocks[m].CreateEmpld;
- stockInfoDetail[m].Taskld = MESSocks[m].Taskld;
- stockInfoDetail[m].TaskSubld = MESSocks[m].TaskSubld;
- }
-
+ string kk = stock.MaterialCode1.Replace("X", "");
//鍖哄垎璐у尯
int k = 1;
- Dt_Warehouse warehouse = _WarehouseRepository.QueryFirst(x => x.MaterialName == "");
- if (warehouse.MaterialType == (int)WarehouseTypeEnum.Food)
+ //鏌ヨ鐗╂枡浜岀淮缂栫爜
+ 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 (warehouse.MaterialType == (int)WarehouseTypeEnum.Industry)
+ 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;
//鍒涘缓鐗╂枡璇︾粏淇℃伅
//鍒ゅ畾鍏ュ簱妯″紡
@@ -205,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());
}
//寮�濮嬫暟鎹簱浜嬪姟
@@ -242,7 +210,7 @@
return content;
}
- //WCS鍏ュ簱浠诲姟瀹屾垚
+ //WCS浠诲姟瀹屾垚
public Stock WCSAccomplishIn(int TaskNum)
{
Stock content = new Stock();
@@ -311,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();
@@ -331,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();
@@ -361,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;
@@ -375,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);
@@ -412,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;
@@ -440,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();
@@ -484,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();
+ }
+ }
}
//鏍规嵁浠诲姟鍙锋煡璇换鍔�
@@ -536,6 +537,10 @@
Dt_Task task = new Dt_Task();
//鍑哄簱鍒嗛厤鐗╂枡
Dt_LocationInfo locations = _LocationInfoService.AllotStock(1);
+ if (locations == null)
+ {
+ return content;
+ }
locations.LocationStatus = (int)LocationStatusEnum.Lock;
task.SourceAddress = locations.LocationCode;
@@ -544,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();
@@ -562,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("鐗╂枡涓嶈冻");
+ }
}
//寮�濮嬫暟鎹簱浜嬪姟
@@ -614,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;
@@ -636,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);
}
@@ -697,6 +747,7 @@
{
Dt_LocationInfo locationInfo = _LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
locationInfo.LocationStatus = (int)LocationStatusEnum.Free;
+ locationInfo.Remark = "";
//寮�濮嬫暟鎹簱浜嬪姟
_unitOfWorkManage.BeginTran();
@@ -739,6 +790,8 @@
BaseDal.DeleteData(task);
WCSTaskDelete(task.TaskNum);
_Task_HtyRepository.AddData(taskhty);
+ //鍒ゆ柇璁㈠崟浠诲姟鏄惁瀹屾垚
+ OrderTask(task, stockInfo);
//鎻愪氦浜嬪姟
_unitOfWorkManage.CommitTran();
}
@@ -762,28 +815,72 @@
}
//澶у睆鐢佃鏌ヨ浠诲姟
- public List<Dt_Task_Hty> selectTask()
+ public List<Dt_Task> selectTask()
{
- List<Dt_Task_Hty> task = new List<Dt_Task_Hty>();
- task = _Task_HtyRepository.QueryData().OrderByDescending(t => t.CreateDate).ToList();
+ List<Dt_Task> task = new List<Dt_Task>();
+ task = BaseDal.QueryData().OrderByDescending(t => t.CreateDate).ToList();
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