From c5afc23437b37d717e892b16b23923907825d2cd Mon Sep 17 00:00:00 2001
From: helongyang <647556386@qq.com>
Date: 星期一, 13 十月 2025 23:09:20 +0800
Subject: [PATCH] 钉钉推送完善,任务取消优化
---
代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 417 +++++++++++++++++++++++++++++++++++++++++++++++++++++++----
1 files changed, 389 insertions(+), 28 deletions(-)
diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
index b3dcf34..84eef92 100644
--- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
+++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs"
@@ -139,29 +139,6 @@
return WebResponseContent.Instance.Error(ex.Message);
}
}
- /// <summary>
- /// 鏀捐揣瀹屾垚
- /// </summary>
- /// <param name="code"></param>
- /// <returns></returns>
- public WebResponseContent PutFinish(string code, string barCode = "", string taskNum = "")
- {
- try
- {
- string url = AppSettings.Get("WCS");
- if (string.IsNullOrEmpty(url))
- {
- return WebResponseContent.Instance.Error($"鏈壘鍒癢CSAApi鍦板潃,璇锋鏌ラ厤缃枃浠�");
- }
- string response = HttpHelper.Post($"{url}/api/CTU_AGV/PutFinish?code={code}&barCode={barCode}&taskNum={taskNum}" );
-
- return JsonConvert.DeserializeObject<WebResponseContent>(response) ?? WebResponseContent.Instance.Error("杩斿洖閿欒");
- }
- catch (Exception ex)
- {
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
public WebResponseContent AGVTasks(SaveModel saveModel)
{
@@ -213,6 +190,7 @@
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,
+ BatchNo = stockInfo.Details.Where(x => x.StockId == stockInfo.Id).FirstOrDefault()?.BatchNo
};
_unitOfWorkManage.BeginTran();
BaseDal.AddData(newTask);
@@ -265,6 +243,7 @@
if (task.TaskType == TaskTypeEnum.MesPalletLargeReturn.ObjToInt() || task.TaskType == TaskTypeEnum.MesPalletSmallReturn.ObjToInt())
{
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+ FeedBackWCSTaskCompleted(taskNum);
_unitOfWorkManage.BeginTran();
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
_stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
@@ -293,6 +272,7 @@
{
stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+ FeedBackWCSTaskCompleted(taskNum);
stockInfo.Details.ForEach(x =>
{
x.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
@@ -380,7 +360,7 @@
});
//鏇存柊浠诲姟鐘舵��
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
- FeedBackWCSTaskCompleted(taskNum);
+
_unitOfWorkManage.BeginTran();
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚);
_basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
@@ -411,6 +391,7 @@
_inboundOrderService.FeedbackInboundOrder(inboundOrder.Id);
}
}
+ FeedBackWCSTaskCompleted(taskNum);
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -721,7 +702,7 @@
}
task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
- FeedBackWCSTaskCompleted(taskNum);
+
_unitOfWorkManage.BeginTran();
if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt() || task.TaskType == TaskTypeEnum.OutQuality.ObjToInt() || task.TaskType == TaskTypeEnum.OutAllocate.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandPickOutbound.ObjToInt() || task.TaskType == TaskTypeEnum.MesHandOutbound.ObjToInt())
@@ -807,6 +788,7 @@
MesMaterialLotaAceptModel model = GetMesMaterialLotaAceptModel(stockInfo, stockInfo.Details.FirstOrDefault(), mesOutboundOrders.FirstOrDefault().TaskNo, warehouse.WarehouseCode, stockInfo.Details.Where(x => x.MaterielCode == mesOutboundOrders.FirstOrDefault().MaterialCode).Sum(x => x.StockQuantity));
UploadMesMaterialLotaAcept(model);
}
+ FeedBackWCSTaskCompleted(taskNum);
return WebResponseContent.Instance.OK();
}
catch (Exception ex)
@@ -824,10 +806,14 @@
switch (task.TaskType)
{
case (int)TaskTypeEnum.OutProduct:
+ case (int)TaskTypeEnum.OutSendProduct:
content = OutProductCompleted(task);
break;
case (int)TaskTypeEnum.OutMesRworkProduct:
content = OutMesRworkCompleted(task);
+ break;
+ case (int)TaskTypeEnum.OutProScrap:
+ content = OutProScrapCompleted(task);
break;
default:
content.Error("鏈煡浠诲姟绫诲瀷");
@@ -932,9 +918,12 @@
BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
_unitOfWorkManage.CommitTran();
//MES鎴愬搧鍑哄簱鍚屾
- MesShipmentOrderSync shipmentOrderSync = MesOutSync(outProStockInfo, proOutOrderDetail, proStockInfoDetails);
- ShipmentOrderSync(shipmentOrderSync);
- ShipmentOrderMESSync(shipmentOrderSync);
+ if (task.TaskType!= TaskTypeEnum.OutSendProduct.ObjToInt())
+ {
+ MesShipmentOrderSync shipmentOrderSync = MesOutSync(outProStockInfo, proOutOrderDetail, proStockInfoDetails);
+ ShipmentOrderSync(shipmentOrderSync);
+ ShipmentOrderMESSync(shipmentOrderSync);
+ }
content.OK();
}
catch (Exception ex)
@@ -1023,6 +1012,89 @@
}
return content;
}
+ public WebResponseContent OutProScrapCompleted(Dt_Task task)
+ {
+ WebResponseContent content = new WebResponseContent();
+ try
+ {
+ //鑾峰彇璐т綅
+ Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ if (locationInfo == null)
+ {
+ return content.Error("鏈壘鍒拌揣浣嶄俊鎭�");
+ }
+ //鏍规嵁浠诲姟鑾峰彇鎴愬搧鍑哄簱璇︽儏浠诲姟鍙婄墿鏂欎俊鎭�
+ Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum);
+ if (outProStockInfo == null)
+ {
+ return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鎯�");
+ }
+ //鑾峰彇鎴愬搧鎶ュ簾鍗�
+
+ Dt_ErpProScrapSheet erpProScrapSheet = _outboundRepository.ErpProScrapSheetRepository.Db.Queryable<Dt_ErpProScrapSheet>().Where(x => x.ProScrapSheetOrderNo == outProStockInfo.OrderNo).Includes(x=>x.Details).First();
+ if (erpProScrapSheet == null)
+ {
+ return content.Error("鏈壘鍒版垚鍝佹姤搴熷崟");
+ }
+ Dt_ErpProScrapSheetDetail erpProScrapSheetDetail = erpProScrapSheet.Details.FirstOrDefault(x => x.Id == outProStockInfo.OrderDetailId);
+ if (erpProScrapSheetDetail == null)
+ {
+ return content.Error("鏈壘鍒版垚鍝佹姤搴熷崟鏄庣粏");
+ }
+ if (erpProScrapSheetDetail.ScrapProDetailStatus == OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt())
+ {
+ return content.Error($"鎴愬搧鎶ュ簾鍗曟槑缁嗚{erpProScrapSheetDetail.Id}宸插畬鎴�");
+ }
+ erpProScrapSheetDetail.ScrapProDetailStatus = OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+ //鑾峰彇褰撳墠搴撳瓨
+ Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First();
+ if (proStockInfo == null)
+ {
+ return content.Error($"鏈壘鍒皗task.PalletCode}搴撳瓨淇℃伅");
+ }
+ List<Dt_ProStockInfoDetail> proStockInfoDetails = proStockInfo.proStockInfoDetails;
+ if (proStockInfoDetails.Count <= 0)
+ {
+ return content.Error("鎴愬搧搴撳瓨鏄庣粏涓虹┖");
+ }
+ proStockInfoDetails.ForEach(x =>
+ {
+ x.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ });
+ proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ //鑾峰彇鎴愬搧骞冲簱
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString());
+ proStockInfo.WarehouseId = warehouse.WarehouseId;
+ proStockInfo.LocationCode = "鎴愬搧鍖呰鎷h揣鍖�";
+ task.TaskStatus = TaskStatusEnum.Finish.ObjToInt();
+ outProStockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ //璐т綅鍙樺姩璁板綍
+ int beforeStatus = locationInfo.LocationStatus;
+ locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+ _outboundRepository.ErpProScrapDetailRepository.UpdateData(erpProScrapSheetDetail);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, locationInfo.WarehouseId);
+ _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, erpProScrapSheet?.ProScrapSheetOrderNo ?? "", task.TaskNum);
+ _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo);
+ _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails);
+ _outProStockInfoRepository.UpdateData(outProStockInfo);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚);
+ //MES鎴愬搧搴撳瓨鏉垮嚭搴撳悓姝�
+ //WebResponseContent responseContent = ProductOutBoundSync(MesProOutBound(mesRworkOutboundOrder, proStockInfoDetails));
+ //if (!responseContent.Status)
+ //{
+ // throw new Exception("鍚屾MES搴撳瓨鏉垮嚭搴撳け璐�,閿欒:"+ responseContent.Message);
+ //}
+ _unitOfWorkManage.CommitTran();
+ content.OK();
+ }
+ catch (Exception ex)
+ {
+ _unitOfWorkManage.RollbackTran();
+ content.Error(ex.Message);
+ }
+ return content;
+ }
/// <summary>
/// 鐩樼偣鍑哄簱瀹屾垚
/// </summary>
@@ -1087,5 +1159,294 @@
}
return content;
}
+
+ public WebResponseContent InboundTaskHandCancel(int taskNum)
+ {
+ try
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅");
+ }
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+ if (warehouse.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString())
+ {
+ if(task.TaskType == TaskTypeEnum.EmptyProductBack.ObjToInt())
+ {
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ FeedBackWCSTaskHandCancel(taskNum);
+ _unitOfWorkManage.BeginTran();
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.鑷姩鍒犻櫎);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First();
+ if (proStockInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌兌妗嗕负{task.PalletCode}缁勭洏淇℃伅");
+ }
+ Dt_LocationInfo prolocationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+ if (prolocationInfo != null)
+ {
+ if (prolocationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ prolocationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+ }
+ if(task.TaskType == TaskTypeEnum.InProduct.ObjToInt())
+ {
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ FeedBackWCSTaskHandCancel(taskNum);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.鑷姩鍒犻櫎);
+ _stockService.ProStockInfoService.Repository.DeleteAndMoveIntoHty(proStockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _stockService.ProStockInfoDetailService.Repository.DeleteAndMoveIntoHty(proStockInfo.proStockInfoDetails, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _basicService.LocationInfoService.UpdateLocationStatus(prolocationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ else
+ {
+ proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ proStockInfo.proStockInfoDetails.ForEach(x =>
+ {
+ x.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ });
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ FeedBackWCSTaskHandCancel(taskNum);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.鑷姩鍒犻櫎);
+ _stockService.ProStockInfoService.Repository.UpdateData(proStockInfo);
+ _stockService.ProStockInfoDetailService.Repository.UpdateData(proStockInfo.proStockInfoDetails);
+ _basicService.LocationInfoService.UpdateLocationStatus(prolocationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ }
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == task.PalletCode && x.WarehouseId == task.WarehouseId).Includes(x => x.Details).First();
+ if (stockInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺搴旂殑缁勭洏淇℃伅");
+ }
+ if (!string.IsNullOrEmpty(stockInfo.LocationCode))
+ {
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
+ }
+ if (stockInfo.Details.Count == 0 && stockInfo.PalletType != PalletTypeEnum.Empty.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌鎵樼洏搴撳瓨鏄庣粏淇℃伅");
+ }
+ if (task.TaskType == TaskTypeEnum.MesPalletLargeReturn.ObjToInt() || task.TaskType == TaskTypeEnum.MesPalletSmallReturn.ObjToInt())
+ {
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ FeedBackWCSTaskHandCancel(taskNum);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.鑷姩鍒犻櫎);
+ _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+ if (locationInfo != null)
+ {
+ if (locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt();
+ }
+ Dt_InboundOrder? inboundOrder = _inboundRepository.InboundOrderRepository.Db.Queryable<Dt_InboundOrder>().Where(x => x.InboundOrderNo == stockInfo.Details.FirstOrDefault().OrderNo).Includes(x => x.Details).First();
+ Dt_InboundOrderDetail? inboundOrderDetail = null;
+ Dt_ReturnOrder? returnOrder = null;
+ //鏍囧噯鍏ュ簱娴佺▼鏌ユ壘鍏ュ簱鍗曟嵁
+ if (inboundOrder != null && stockInfo.StockStatus == StockStatusEmun.鍏ュ簱纭.ObjToInt()&&(task.WarehouseId == 11 || task.WarehouseId == 4))
+ {
+ inboundOrderDetail = inboundOrder.Details.FirstOrDefault(x => x.RowNo == stockInfo.Details.FirstOrDefault()?.InboundOrderRowNo);
+ foreach (var item in stockInfo.Details)
+ {
+ if (inboundOrderDetail == null)
+ {
+ continue;
+ }
+ inboundOrderDetail.ReceiptQuantity -= item.StockQuantity;
+ }
+ //鍒ゆ柇鏄惁涓洪��鏂欏叆搴撳崟
+ if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt())
+ {
+ returnOrder = _inboundRepository.ReturnOrderRepository.Db.Queryable<Dt_ReturnOrder>().Where(x => x.OrderNo == inboundOrder.UpperOrderNo).Includes(x => x.Details).First();
+ returnOrder.ReturnOrderStatus = ReturnOrderStatusEnum.Returned.ObjToInt();
+ foreach (var item in inboundOrder.Details)
+ {
+ Dt_ReturnOrderDetail returnOrderDetail = returnOrder.Details?.FirstOrDefault(x => x.MCode == item.MaterielCode);
+ if (returnOrderDetail != null)
+ {
+ returnOrderDetail.ReturnQty -= item.ReceiptQuantity;
+ }
+ }
+ }
+ }
+ if(task.WarehouseId == 11 || task.WarehouseId == 4||task.WarehouseId == 13)
+ {
+ _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfo.Details, App.User.UserId == 0 ? OperateTypeEnum.鑷姩鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ }else if(task.WarehouseId == 6 && task.TaskType == TaskTypeEnum.ProductionReturn.ObjToInt())
+ {
+ stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt();
+ }
+ else
+ {
+ stockInfo.StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt();
+ }
+
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ FeedBackWCSTaskHandCancel(taskNum);
+ _unitOfWorkManage.BeginTran();
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ if(locationInfo != null)
+ {
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
+ }
+ _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+ if (inboundOrder != null && inboundOrderDetail != null)
+ {
+ _inboundRepository.InboundOrderRepository.UpdateData(inboundOrder);
+ _inboundRepository.InboundOrderDetailRepository.UpdateData(inboundOrderDetail);
+ }
+ if (returnOrder != null)
+ {
+ _inboundRepository.ReturnOrderRepository.UpdateData(returnOrder);
+ _inboundRepository.ReturnOrderDetailRepository.UpdateData(returnOrder.Details);
+ }
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+
+ }
+ catch(Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent OutboundTaskHandCancel(int taskNum)
+ {
+ try
+ {
+ Dt_Task task = BaseDal.QueryFirst(x => x.TaskNum == taskNum);
+ if (task == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅");
+ }
+ Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId);
+ if (warehouse.WarehouseType == WarehouseTypEnum.鎴愬搧.ToString())
+ {
+
+ Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First();
+ if (proStockInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌兌妗嗕负{task.PalletCode}缁勭洏淇℃伅");
+ }
+ Dt_LocationInfo prolocationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ if (prolocationInfo != null)
+ {
+ if (prolocationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ prolocationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+ }
+ proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+ proStockInfo.proStockInfoDetails.ForEach(x =>
+ {
+ x.ProOutDetailStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+ x.OutboundQuantity = 0;
+ });
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ _unitOfWorkManage.BeginTran();
+ FeedBackWCSTaskHandCancel(taskNum);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.鑷姩鍒犻櫎);
+ _stockService.ProStockInfoService.Repository.UpdateData(proStockInfo);
+ _stockService.ProStockInfoDetailService.Repository.UpdateData(proStockInfo.proStockInfoDetails);
+ _basicService.LocationInfoService.UpdateLocationStatus(prolocationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, proStockInfo.WarehouseId);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ Dt_StockInfo stockInfo = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == task.PalletCode && x.WarehouseId == task.WarehouseId).Includes(x => x.Details).First();
+ if (stockInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒版墭鐩樺搴旂殑缁勭洏淇℃伅");
+ }
+ if (string.IsNullOrEmpty(stockInfo.LocationCode))
+ {
+ return WebResponseContent.Instance.Error($"璇ユ墭鐩樺湪绔嬪簱鏈粦瀹氳揣浣�");
+ }
+ if (stockInfo.Details.Count == 0 && stockInfo.PalletType != PalletTypeEnum.Empty.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒拌鎵樼洏搴撳瓨鏄庣粏淇℃伅");
+ }
+ Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ if (locationInfo != null)
+ {
+ if (locationInfo.LocationStatus == LocationStatusEnum.Free.ObjToInt())
+ {
+ return WebResponseContent.Instance.Error($"璐т綅鐘舵�佷笉姝g‘");
+ }
+ locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt();
+ }
+
+ stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+ stockInfo.Details.ForEach(x =>
+ {
+ x.Status = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+ x.OutboundQuantity = 0;
+ });
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ FeedBackWCSTaskHandCancel(taskNum);
+ _unitOfWorkManage.BeginTran();
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐鍒犻櫎 : OperateTypeEnum.浜哄伐鍒犻櫎);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
+ _stockRepository.StockInfoRepository.UpdateData(stockInfo);
+ _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
+ catch (Exception ex)
+ {
+ return WebResponseContent.Instance.Error(ex.Message);
+ }
+ }
+
+ public WebResponseContent RelocationTaskHandCancel(Dt_Task task)
+ {
+ Dt_StockInfo stockInfo = _stockService.StockInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ if (stockInfo == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒板搴旇揣浣嶇殑搴撳瓨淇℃伅");
+ }
+
+ Dt_LocationInfo locationInfoStart = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.SourceAddress);
+ if (locationInfoStart == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑璧风偣璐т綅淇℃伅");
+ }
+
+ Dt_LocationInfo locationInfoEnd = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress);
+ if (locationInfoEnd == null)
+ {
+ return WebResponseContent.Instance.Error($"鏈壘鍒板搴旂殑缁堢偣璐т綅淇℃伅");
+ }
+ task.TaskStatus = TaskStatusEnum.Cancel.ObjToInt();
+ FeedBackWCSTaskHandCancel(task.TaskNum);
+ _unitOfWorkManage.BeginTran();
+ stockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt();
+ _stockService.StockInfoService.Repository.UpdateData(stockInfo);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfoStart, stockInfo.PalletType, LocationStatusEnum.InStock, stockInfo.WarehouseId);
+ _basicService.LocationInfoService.UpdateLocationStatus(locationInfoEnd, stockInfo.PalletType, LocationStatusEnum.Free, stockInfo.WarehouseId);
+ BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? WIDESEA_Core.Enums.OperateTypeEnum.浜哄伐鍒犻櫎 : WIDESEA_Core.Enums.OperateTypeEnum.鑷姩鍒犻櫎);
+ _unitOfWorkManage.CommitTran();
+ return WebResponseContent.Instance.OK();
+ }
}
}
--
Gitblit v1.9.3