From 8fcd7a67e4391a5f1fbdb590c2a3f913aeb2a0a0 Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期二, 31 三月 2026 14:11:23 +0800
Subject: [PATCH] PP平库功能上线,PDA优化,部分问题点优化
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs | 311 ++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 233 insertions(+), 78 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
index e3935d1..a40c4b3 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService_Inbound.cs"
@@ -61,7 +61,7 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
}
- if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+ if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
{
return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
}
@@ -98,8 +98,9 @@
TaskStatus = TaskStatusEnum.New.ObjToInt(),
WarehouseId = stockInfo.WarehouseId,
PalletType = stockInfo.PalletType,
- MaterielCode = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
- Quantity = (float)stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.StockQuantity,
+ MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+ Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity),
+ BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo
};
//鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
Dt_InboundOrder? inboundOrder = null;
@@ -135,10 +136,15 @@
stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
}
- else if (stockInfo.StockStatus == StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+ else if (stockInfo.StockStatus == StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt())
{
stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
newTask.TaskType = TaskTypeEnum.InQuality.ObjToInt();
+ }
+ else if(stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
+ {
+ stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+ newTask.TaskType = TaskTypeEnum.InInventory.ObjToInt();
}
else
{
@@ -187,9 +193,9 @@
{
return content.Error($"璇ユ墭鐩樺簱瀛樻槑缁嗕负绌�");
}
- if (stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+ if (stockInfo.StockStatus != StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt())
{
- return content.Error($"璇ユ墭鐩樿繕鏈�佹鍑哄簱瀹屾垚");
+ return content.Error($"璇ユ墭鐩樿繕鏈�佹妫�楠屽畬鎴�");
}
Dt_OutStockLockInfo? outStockLockInfo = _outboundRepository.OutboundStockLockInfoRepository.QueryData(x => x.PalletCode == palletCode && x.Status == OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt() && x.OrderType== OutOrderTypeEnum.Quality.ObjToInt()).OrderByDescending(x=>x.Id).FirstOrDefault();
if (outStockLockInfo != null)
@@ -270,7 +276,7 @@
_stockRepository.StockInfoRepository.AddData(stockInfo);
_unitOfWorkManage.CommitTran();
PushTasksToWCS(new List<Dt_Task> { newTask });
- PutFinish(address, newTask.PalletCode, newTask.TaskNum.ToString());
+ //PutFinish(address, newTask.PalletCode, newTask.TaskNum.ToString());
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -385,8 +391,18 @@
TaskStatus = TaskStatusEnum.New.ObjToInt(),
WarehouseId = stockInfoPPorGM.WarehouseId,
PalletType = stockInfoPPorGM.PalletType,
- TaskLength= stockInfoPPorGM.StockLength
+ TaskLength= stockInfoPPorGM.StockLength,
+
};
+ string MaterielCodeGMPP = stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).FirstOrDefault()?.MaterielCode;
+ float QuantityGMPP = (float)stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).Sum(x => x.StockQuantity);
+ string batchNo = stockInfoPPorGM.Details?.Where(x => x.StockId == stockInfoPPorGM.Id).FirstOrDefault()?.BatchNo;
+ if (MaterielCodeGMPP != null && QuantityGMPP != null && batchNo != null)
+ {
+ newTaskPPorGM.MaterielCode = MaterielCodeGMPP;
+ newTaskPPorGM.Quantity = QuantityGMPP;
+ newTaskPPorGM.BatchNo = batchNo;
+ }
//鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
Dt_InboundOrder? inboundOrderPPorGM = null;
@@ -425,7 +441,7 @@
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
}
- if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.MES閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+ if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.MES閫�搴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt() && stockInfo.StockStatus!=StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
{
return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
}
@@ -454,6 +470,15 @@
WarehouseId = stockInfo.WarehouseId,
PalletType = stockInfo.PalletType,
};
+ string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+ float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+ string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+ if (MaterielCode != null && Quantity != null && BatchNo != null)
+ {
+ newTask.MaterielCode = MaterielCode;
+ newTask.Quantity = Quantity;
+ newTask.BatchNo = BatchNo;
+ }
//鑾峰彇鏄惁瀛樺湪鍏ュ簱鍗�
Dt_InboundOrder? inboundOrder = null;
@@ -484,12 +509,18 @@
}
else if (stockInfo.StockStatus == StockStatusEmun.鎷i�夊畬鎴�.ObjToInt())
{
+ stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
newTask.TaskType = TaskTypeEnum.InPick.ObjToInt();
}
- else if (stockInfo.StockStatus == StockStatusEmun.閫佹瀹屾垚.ObjToInt())
+ else if (stockInfo.StockStatus == StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt())
{
stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
newTask.TaskType = TaskTypeEnum.InQuality.ObjToInt();
+ }
+ else if (stockInfo.StockStatus == StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
+ {
+ stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
+ newTask.TaskType = TaskTypeEnum.InInventory.ObjToInt();
}
else
{
@@ -507,7 +538,7 @@
WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
PushTasksToWCS(new List<Dt_Task> { newTask });
- if (newTask.WarehouseId == 5) PutFinish(stationCode.ToString(),newTask.PalletCode, newTask.TaskNum.ToString());
+ //if (newTask.WarehouseId == 5) PutFinish(stationCode.ToString(),newTask.PalletCode, newTask.TaskNum.ToString());
return WebResponseContent.Instance.OK(data: wMSTaskDTO);
}
catch (Exception ex)
@@ -538,8 +569,7 @@
{
return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
}
-
- Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
if (stockInfo == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -567,7 +597,15 @@
WarehouseId = stockInfo.WarehouseId,
PalletType = stockInfo.PalletType,
};
-
+ string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+ float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+ string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+ if (MaterielCode != null && Quantity != null && BatchNo != null)
+ {
+ newTask.MaterielCode = MaterielCode;
+ newTask.Quantity = Quantity;
+ newTask.BatchNo = BatchNo;
+ }
if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
{
@@ -603,7 +641,7 @@
WMSTaskDTO wMSTaskDTO = _mapper.Map<WMSTaskDTO>(newTask);
PushTasksToWCS(new List<Dt_Task> { newTask });
- if (newTask.WarehouseId == 5) PutFinish(stationCode, newTask.PalletCode, newTask.TaskNum.ToString());
+ //if (newTask.WarehouseId == 5) PutFinish(stationCode, newTask.PalletCode, newTask.TaskNum.ToString());
return WebResponseContent.Instance.OK(data: wMSTaskDTO);
}
catch (Exception ex)
@@ -639,7 +677,7 @@
string roadwayNo = AssignRoadwayNo(staions, palletCode, heightType);
- Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.QueryFirst(x => x.PalletCode == palletCode);
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
if (stockInfo == null)
{
return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
@@ -667,7 +705,15 @@
WarehouseId = stockInfo.WarehouseId,
PalletType = stockInfo.PalletType,
};
-
+ string MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode;
+ float Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity);
+ string BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo;
+ if (MaterielCode != null && Quantity != null && BatchNo != null)
+ {
+ newTask.MaterielCode = MaterielCode;
+ newTask.Quantity = Quantity;
+ newTask.BatchNo = BatchNo;
+ }
if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
{
stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
@@ -807,7 +853,7 @@
WebResponseContent content = new WebResponseContent();
try
{
- //鑾峰彇娴嬭瘯鏋跺師搴撳瓨淇℃伅
+ //鑾峰彇闃荤剨搴撳瓨淇℃伅
Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA154.ToString());
//鑾峰彇搴撳瓨璁板綍
List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
@@ -821,26 +867,32 @@
{
return content.Error($"搴撳瓨淇℃伅宸插瓨鍦�");
}
+
+ Dt_Task task = BaseDal.QueryFirst(x => x.PalletCode == palletCode);
+ if(task != null)
+ {
+ return content.Error($"鎵樼洏{palletCode}宸茬粡瀛樺湪浠诲姟锛岃鍕块噸澶嶄笅杈�");
+ }
Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x=>x.CodeStartStr== palletType);
if (palletTypeInfo == null)
{
return content.Error($"鎵樼洏绫诲瀷淇℃伅涓嶅瓨鍦�");
}
- ////鑾峰彇闃荤剨鎵规
- //WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
- //if (!requestLotInfo.Status)
- //{
- // return content.Error($"璇锋眰闃荤剨鎵规淇℃伅澶辫触,{requestLotInfo.Message}");
- //}
- //MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
- MesLotInfoModel mesLotInfo = new MesLotInfoModel()
+ //鑾峰彇闃荤剨鎵规
+ WebResponseContent requestLotInfo = GetZHMesMaterialLot(materialLot);
+ if (!requestLotInfo.Status)
{
- Product="FH001",
- ProductVersion="A1",
- Qty=20,
- LotNo= materialLot,
- IsFullNumber=true
- };
+ return content.Error($"璇锋眰闃荤剨鎵规淇℃伅澶辫触,{requestLotInfo.Message}");
+ }
+ MesLotInfoModel mesLotInfo = JsonConvert.DeserializeObject<MesLotInfoModel>(requestLotInfo.Data.ToString());
+ //MesLotInfoModel mesLotInfo = new MesLotInfoModel()
+ //{
+ // Product="FH001",
+ // ProductVersion="A1",
+ // Qty=20,
+ // LotNo= materialLot,
+ // IsFullNumber=true
+ //};
Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
{
MaterielSpec = mesLotInfo.ProductVersion,
@@ -881,7 +933,10 @@
TaskType = palletTypeInfo.LocaitonCount==2? (int)TaskTypeEnum.InZHProductLarge : (int)TaskTypeEnum.InZHProductSmall,
TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
PalletType = palletTypeInfo.PalletType,
- WarehouseId = warehouse.WarehouseId
+ WarehouseId = warehouse.WarehouseId,
+ MaterielCode = mesLotInfo.Product,
+ Quantity = (float)mesLotInfo.Qty,
+ BatchNo = mesLotInfo.LotNo
};
_unitOfWorkManage.BeginTran();
Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
@@ -980,6 +1035,7 @@
{
x.ProOutDetailStatus = StockStatusEmun.鎴愬搧浣欐枡鍥炲簱.ObjToInt();
});
+ proStockInfo.WarehouseId = locationInfo.WarehouseId;
Dt_Task newTask = new Dt_Task()
{
CurrentAddress = startPoint,
@@ -993,8 +1049,10 @@
TaskStatus = TaskStatusEnum.New.ObjToInt(),
WarehouseId = warePoint.WarehouseId,
PalletType = proStockInfo.PalletType,
- MaterielCode = proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
- Quantity = (float)proStockInfo.proStockInfoDetails.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty)
+ MaterielCode = proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.ProductCode,
+ Quantity = (float)proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).Sum(x => x.StockPcsQty),
+ BatchNo = proStockInfo.proStockInfoDetails?.Where(x => x.ProStockId == proStockInfo.Id).FirstOrDefault()?.LotNumber
+
};
_unitOfWorkManage.BeginTran();
int taskId = BaseDal.AddData(newTask);
@@ -1013,78 +1071,175 @@
}
return content;
}
+ private static object emptyBack_inbound = new object();
/// <summary>
/// 绌烘鍥炲簱
/// </summary>
public WebResponseContent EmptyBackTask(string barCode, string startPoint)
{
- WebResponseContent content = new WebResponseContent();
+ lock (emptyBack_inbound)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ string palletCode = @"^C\d{5}$"; // 姝e垯琛ㄨ揪寮�
+ bool isValid = Regex.IsMatch(barCode, palletCode);
+ if (!isValid)
+ {
+ return content.Error($"妗嗙爜鏍煎紡閿欒{barCode}");
+ }
+ if (!OutStartPonits.Contains(startPoint))
+ {
+ return content.Error($"璧风偣閿欒{startPoint}");
+ }
+ //鍒ゆ柇褰撳墠鐐逛綅鏄惁閲嶅
+ Dt_Task taskOldPoint = BaseDal.QueryFirst(x => x.SourceAddress == startPoint && (x.TaskStatus == TaskStatusEnum.New.ObjToInt() || x.TaskStatus == TaskStatusEnum.Line_Execute.ObjToInt() || x.TaskStatus == TaskStatusEnum.Line_Executing.ObjToInt()));
+ //if (taskOldPoint != null)
+ //{
+ // return content.Error($"绔欑偣{startPoint}宸插瓨鍦ㄤ换鍔�");
+ //}
+ Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == barCode);
+ if (taskOld != null)
+ {
+ return content.Error($"鑳舵{barCode}浠诲姟宸插瓨鍦�");
+ }
+ //if (_stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode) != null)
+ //{
+ // return content.Error($"鑳舵{barCode}搴撳瓨淇℃伅宸插瓨鍦�");
+ //}
+ //todo:涓存椂瑙g粦
+ Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode && x.StockStatus == StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt());
+ if (_stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode) != null)
+ {
+ proStockInfo.PalletCode = proStockInfo.PalletCode + ":" + DateTime.Now.ToString("MM/dd");
+ }
+ //鑾峰彇鎴愬搧骞冲簱
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
+ Dt_Task newTask = new Dt_Task()
+ {
+ CurrentAddress = startPoint,
+ Grade = 0,
+ NextAddress = "",
+ PalletCode = barCode,
+ Roadway = "CL01_CP",
+ SourceAddress = startPoint,
+ TargetAddress = "",
+ TaskType = TaskTypeEnum.EmptyProductBack.ObjToInt(),
+ TaskStatus = TaskStatusEnum.New.ObjToInt(),
+ WarehouseId = warehouse.WarehouseId,
+ PalletType = 1
+ };
+ _unitOfWorkManage.BeginTran();
+ int taskId = BaseDal.AddData(newTask);
+ if (proStockInfo != null)
+ {
+ _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+ }
+ newTask.TaskId = taskId;
+ _unitOfWorkManage.CommitTran();
+ //鎺ㄩ�佷换鍔�
+ PushTasksToWCS(new List<Dt_Task> { newTask });
+ content.OK("鍙戦�佹垚鍔�");
+ }
+ catch (Exception ex)
+ {
+ content.Error(ex.Message);
+ }
+ return content;
+ }
+
+ }
+
+ /// <summary>
+ /// PP骞冲簱鐢宠鍏ュ簱浠诲姟
+ /// </summary>
+ /// <param name="saveModel"></param>
+ /// <returns></returns>
+ public WebResponseContent PPPKRequestInboundTask(SaveModel saveModel)
+ {
try
{
- string palletCode = @"^C\d{5}$"; // 姝e垯琛ㄨ揪寮�
- bool isValid = Regex.IsMatch(barCode, palletCode);
- if (!isValid)
+ var palletCode = saveModel.MainData["barcode"].ToString();
+ var warehouseId = saveModel.MainData["warehouseId"].ObjToInt();
+ var stationCode = saveModel.MainData["startPoint"].ToString();
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == warehouseId);
+ if (warehouse == null)
{
- return content.Error($"妗嗙爜鏍煎紡閿欒{barCode}");
+ return WebResponseContent.Instance.Error($"鏈壘鍒板簱鍖�");
}
- if (!OutStartPonits.Contains(startPoint))
+
+ Dt_Task task = Repository.QueryFirst(x => x.PalletCode == palletCode && x.WarehouseId == warehouseId);
+ if (task != null)
{
- return content.Error($"璧风偣閿欒{startPoint}");
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡鐢熸垚浠诲姟");
}
- //鍒ゆ柇褰撳墠鐐逛綅鏄惁閲嶅
- Dt_Task taskOldPoint = BaseDal.QueryFirst(x => x.SourceAddress == startPoint && (x.TaskStatus == TaskStatusEnum.New.ObjToInt() || x.TaskStatus == TaskStatusEnum.Line_Execute.ObjToInt() || x.TaskStatus == TaskStatusEnum.Line_Executing.ObjToInt()));
- //if (taskOldPoint != null)
- //{
- // return content.Error($"绔欑偣{startPoint}宸插瓨鍦ㄤ换鍔�");
- //}
- Dt_Task taskOld = BaseDal.QueryFirst(x => x.PalletCode == barCode);
- if (taskOld != null)
+
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
+ if (stockInfo == null)
{
- return content.Error($"鑳舵{barCode}浠诲姟宸插瓨鍦�");
+ return WebResponseContent.Instance.Error($"鏈壘鍒扮粍鐩樹俊鎭�");
}
- //if (_stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode) != null)
- //{
- // return content.Error($"鑳舵{barCode}搴撳瓨淇℃伅宸插瓨鍦�");
- //}
- //todo:涓存椂瑙g粦
- Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode);
- if (_stockRepository.ProStockInfoRepository.QueryFirst(x => x.PalletCode == barCode) != null)
+ if (stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鎷i�夊畬鎴�.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.閫佹搴撳瓨瀹屾垚.ObjToInt() && stockInfo.StockStatus != StockStatusEmun.鐩樼偣搴撳瓨瀹屾垚.ObjToInt())
{
- proStockInfo.PalletCode = proStockInfo.PalletCode + ":" + DateTime.Now.ToString("MM/dd");
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
}
- //鑾峰彇鎴愬搧骞冲簱
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
+ if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+ {
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+ }
+ if (warehouseId != stockInfo.WarehouseId)
+ {
+ return WebResponseContent.Instance.Error($"浠撳簱涓嶆纭�");
+ }
+
+ Dt_LocationInfo? locationInfoPPPK = _basicService.LocationInfoService.AssignLocation("AGV_PP", stockInfo.PalletType, stockInfo.WarehouseId);
+ if (locationInfoPPPK == null)
+ {
+ return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
+ }
Dt_Task newTask = new Dt_Task()
{
- CurrentAddress = startPoint,
+ CurrentAddress = stationCode,
Grade = 0,
NextAddress = "",
- PalletCode = barCode,
- Roadway = "CL01_CP",
- SourceAddress = startPoint,
- TargetAddress = "",
- TaskType = TaskTypeEnum.EmptyProductBack.ObjToInt(),
+ PalletCode = palletCode,
+ Roadway = "AGV_PP",
+ SourceAddress = stationCode,
+ TargetAddress = locationInfoPPPK.LocationCode,
+ TaskType = TaskTypeEnum.PPPKInbound.ObjToInt(),
TaskStatus = TaskStatusEnum.New.ObjToInt(),
- WarehouseId = warehouse.WarehouseId,
- PalletType = 1
+ WarehouseId = stockInfo.WarehouseId,
+ PalletType = stockInfo.PalletType,
+ MaterielCode = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.MaterielCode,
+ Quantity = (float)stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).Sum(x => x.StockQuantity),
+ BatchNo = stockInfo.Details?.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo
};
- _unitOfWorkManage.BeginTran();
- int taskId = BaseDal.AddData(newTask);
- if (proStockInfo!=null)
+ if (stockInfo.StockStatus == StockStatusEmun.鎵嬪姩缁勭洏鏆傚瓨.ObjToInt())
{
- _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+ stockInfo.StockStatus = StockStatusEmun.鎵嬪姩缁勭洏鍏ュ簱纭.ObjToInt();
}
+ else
+ {
+ stockInfo.StockStatus = StockStatusEmun.鍏ュ簱纭.ObjToInt();
+ }
+
+ _unitOfWorkManage.BeginTran();
+ LocationStatusEnum lastStatusPPorGM = (LocationStatusEnum)locationInfoPPPK.LocationStatus;
+ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfoPPPK, lastStatusPPorGM, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfoPPPK, newTask.PalletType, LocationStatusEnum.Lock, newTask.WarehouseId);
+ int taskId = BaseDal.AddData(newTask);
newTask.TaskId = taskId;
+ _stockRepository.StockInfoRepository.UpdateData(stockInfo);
_unitOfWorkManage.CommitTran();
- //鎺ㄩ�佷换鍔�
- PushTasksToWCS(new List<Dt_Task> { newTask });
- content.OK("鍙戦�佹垚鍔�");
+ PushTasksToWCS(new List<Dt_Task> { newTask },"AGV_PP");
+ return WebResponseContent.Instance.OK(data: newTask);
+
}
catch (Exception ex)
{
- content.Error(ex.Message);
+ _unitOfWorkManage.RollbackTran();
+ return WebResponseContent.Instance.Error(ex.Message);
}
- return content;
}
}
}
--
Gitblit v1.9.3