From a0a0df2e824b6fe7e5a3c0afce78127fecf84fc9 Mon Sep 17 00:00:00 2001
From: wangxinhui <wangxinhui@hnkhzn.com>
Date: 星期一, 03 十一月 2025 08:23:05 +0800
Subject: [PATCH] ERP接口代码更新,WCS代码优化,出入库分配优化
---
项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs | 1414 +++-------------------------------------------------------
1 files changed, 72 insertions(+), 1,342 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
index 0df30d5..1ded967 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs"
@@ -19,7 +19,6 @@
using WIDESEA_Core.Helper;
using WIDESEA_DTO;
using WIDESEA_DTO.ERP;
-using WIDESEA_DTO.MES;
using WIDESEA_ITaskInfoRepository;
using WIDESEA_ITaskInfoService;
using WIDESEA_Model.Models;
@@ -30,222 +29,56 @@
using WIDESEA_DTO.Stock;
using SqlSugar;
using OfficeOpenXml.FormulaParsing.Excel.Functions.RefAndLookup;
+using WIDESEA_DTO.MES;
namespace WIDESEA_TaskInfoService
{
public partial class TaskService
{
static object lock_out = new object();
-
/// <summary>
- /// 娴嬭瘯鏋跺嚭浠�
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent TestToolOut(TestToolOutModel model)
- {
- lock (lock_out)
- {
- MesResponseContent responseContent = new MesResponseContent();
- try
- {
- Dt_Task exsit = Repository.QueryFirst(x => x.TargetAddress == model.TargetAddressCode);
- if (exsit != null)
- {
- return responseContent.Error($"鐩爣鍦板潃閲嶅");
- }
-
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA64.ToString());
- //鑾峰彇搴撳瓨璁板綍
- List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
- x.WarehouseId == warehouse.WarehouseId &&
- x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚).Includes(x => x.Details).ToList();
- Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == model.ToolCode));
- if (stockInfo == null)
- {
- return responseContent.Error($"娴嬭瘯鏋�:{model.ToolCode}鏃犲彲鐢ㄥ簱瀛�");
- }
- Dt_Task exsit2 = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
- if (exsit2 != null)
- {
- return responseContent.Error($"娴嬭瘯鏋舵壒娆″彿閲嶅");
- }
-
- Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == stockInfo.LocationCode &&
- x.WarehouseId == stockInfo.WarehouseId &&
- x.LocationStatus == (int)LocationStatusEnum.InStock &&
- (x.EnableStatus == (int)EnableStatusEnum.Normal || x.EnableStatus == (int)EnableStatusEnum.OnlyOut));
- if (locationInfo == null)
- {
- return responseContent.Error($"娴嬭瘯鏋惰揣浣嶃�傘�傘�傘�傘�傘�傘�傘�傘��:{stockInfo.LocationCode}鍑哄簱鏉′欢涓嶆弧瓒�");
- }
- //鐢熸垚娴嬭瘯鏋跺嚭搴撲换鍔� 閿佸畾搴撳瓨 鏇存敼璐т綅鐘舵��
- Dt_Task taskOut = new()
- {
- CurrentAddress = stockInfo.LocationCode,
- Grade = 0,
- PalletCode = stockInfo.PalletCode,
- NextAddress = "",
- Roadway = locationInfo.RoadwayNo,
- SourceAddress = stockInfo.LocationCode,
- TargetAddress = model.TargetAddressCode,
- TaskStatus = (int)TaskStatusEnum.New,
- TaskType = (int)TaskTypeEnum.Outbound,
- TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
- PalletType = stockInfo.PalletType,
- WarehouseId = stockInfo.WarehouseId,
- };
- stockInfo.StockStatus = (int)StockStatusEmun.鍑哄簱閿佸畾;
- LocationStatusEnum locationStatus = (LocationStatusEnum)locationInfo.LocationStatus;
- locationInfo.LocationStatus = (int)LocationStatusEnum.Lock;
- //鍒ゆ柇鏄惁鏈夊嚭搴撳崟淇℃伅
- _unitOfWorkManage.BeginTran();
- //鏇存柊搴撳瓨鐘舵��
- _stockRepository.StockInfoRepository.UpdateData(stockInfo);
- //鏇存柊璐т綅鐘舵��
- _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, stockInfo.PalletType, LocationStatusEnum.Lock, stockInfo.WarehouseId);
- //鏂板缓浠诲姟
- BaseDal.AddData(taskOut);
- //鍔犲叆璐т綅鍙樺姩璁板綍
- _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, locationStatus, LocationStatusEnum.Lock, LocationChangeType.OutboundAssignLocation, stockInfo.Details.FirstOrDefault()?.OrderNo ?? "", taskOut.TaskNum);
- _unitOfWorkManage.CommitTran();
- //灏嗕换鍔℃帹閫佸埌WCS
- PushTasksToWCS(new List<Dt_Task>() { taskOut }, "AGV_CSJ");
- responseContent.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- responseContent.Error(ex.Message);
- }
- return responseContent;
- }
- }
- /// <summary>
- /// 娴嬭瘯鏋堕��搴�
+ /// MES鑷姩鍙枡鎺ュ彛
/// </summary>
/// <returns></returns>
- public MesResponseContent TestToolBack(TestToolBackModel backModel)
- {
- MesResponseContent responseContent = new MesResponseContent();
- try
- {
- //鑾峰彇娴嬭瘯鏋跺師搴撳瓨淇℃伅
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA64.ToString());
- //鑾峰彇搴撳瓨璁板綍
- List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
- x.WarehouseId == warehouse.WarehouseId &&
- x.StockStatus == (int)StockStatusEmun.鍑哄簱瀹屾垚).Includes(x => x.Details).ToList();
- Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == backModel.TestToolCode));
- if (stockInfo == null)
- {
- return responseContent.Error($"{backModel.TestToolCode}搴撳瓨淇℃伅涓嶅瓨鍦�");
- }
- //鐢熸垚閫�搴撲换鍔�
- Dt_Task taskIn = new()
- {
- CurrentAddress = backModel.SourceAddressCode,
- Grade = 0,
- PalletCode = stockInfo.PalletCode,
- NextAddress = "",
- Roadway = "",
- SourceAddress = backModel.SourceAddressCode,
- TargetAddress = "",
- TaskStatus = (int)TaskStatusEnum.New,
- TaskType = (int)TaskTypeEnum.ProductionReturn,
- TaskNum = BaseDal.GetTaskNum(nameof(SequenceEnum.SeqTaskNum)),
- PalletType = stockInfo.PalletType,
- WarehouseId = stockInfo.WarehouseId,
- };
- //鏇存敼搴撳瓨鐘舵��
- stockInfo.StockStatus = StockStatusEmun.閫�搴�.ObjToInt();
- BaseDal.AddData(taskIn);
- _stockRepository.StockInfoRepository.UpdateData(stockInfo);
- //灏嗕换鍔℃帹閫佸埌WCS
- PushTasksToWCS(new List<Dt_Task>() { taskIn }, "AGV_CSJ"); ;
- responseContent.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- responseContent.Error(ex.Message);
- }
- return responseContent;
- }
- /// <summary>
- /// 娴嬭瘯鏋舵姤搴�
- /// </summary>
- /// <returns></returns>
- public MesResponseContent TestScrap(TestToolScrap toolScraps)
- {
- MesResponseContent responseContent = new MesResponseContent();
- try
- {
- //鑾峰彇娴嬭瘯鏋舵壒娆″彿搴撳瓨
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA64.ToString());
- //鑾峰彇搴撳瓨璁板綍
- List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
- x.WarehouseId == warehouse.WarehouseId &&
- x.StockStatus == (int)StockStatusEmun.鍑哄簱瀹屾垚).Includes(x => x.Details).ToList();
- List<Dt_StockInfo> stockInfoUpdates = new List<Dt_StockInfo>();
- List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>();
- foreach (var item in toolScraps.ToolCodes)
- {
- Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.BatchNo == item));
- if (stockInfo == null)
- {
- return responseContent.Error($"{item}搴撳瓨淇℃伅涓嶅瓨鍦�");
- }
- stockInfoUpdates.Add(stockInfo);
- stockInfoDetails.Add(stockInfo.Details.FirstOrDefault());
- }
- //娓呴櫎搴撳瓨淇℃伅
- _unitOfWorkManage.BeginTran();
- _stockRepository.StockInfoRepository.DeleteAndMoveIntoHty(stockInfoUpdates, OperateTypeEnum.鑷姩鍒犻櫎);
- _stockService.StockInfoDetailService.Repository.DeleteAndMoveIntoHty(stockInfoDetails, OperateTypeEnum.鑷姩鍒犻櫎);
- _unitOfWorkManage.CommitTran();
- responseContent.OK($"鎶ュ簾鎴愬姛");
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- responseContent.Error(ex.Message);
- }
- return responseContent;
- }
- /// <summary>
- /// 鍚屾娴嬭瘯鏋跺鍛�
- /// </summary>
- /// <param name="toolSynInfo"></param>
- /// <returns></returns>
- public WebResponseContent TestSynStock(TestToolSynInfo toolSynInfo)
+ public WebResponseContent ReceiveAutoIssue(MESAutoIssueDTO autoIssueDTO)
{
WebResponseContent content = new WebResponseContent();
try
{
- Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_TestToolSync.ToString());
- MESRoot<TestToolSynInfo> root = new MESRoot<TestToolSynInfo>()
+ if (autoIssueDTO == null)
{
- From = "WMS",
- DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Content = toolSynInfo
- };
- JsonSerializerSettings settings = new JsonSerializerSettings
- {
- ContractResolver = new CamelCasePropertyNamesContractResolver()
- };
- string request = JsonConvert.SerializeObject(root, settings);
- string response = HttpMesHelper.Post(apiInfo.ApiAddress, request);
- MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
- //璋冪敤鎺ュ彛
- if (mesResponseContent.BSucc == true)
- {
- content.OK(mesResponseContent.StrMsg);
+ return content.Error("浼犲叆淇℃伅涓嶈兘涓虹┖");
}
- else
+ //鑾峰彇瀵瑰簲鍗曟嵁
+ Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x=>x.OutDetailId==autoIssueDTO.OutDetailId);
+ if (outMESOrder==null)
{
- content.Error(mesResponseContent.StrMsg);
+ return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{autoIssueDTO.OutDetailId}涓嶅瓨鍦�");
}
+ if (outMESOrder.OutMESOrderStatus==OutOrderStatusEnum.鍏抽棴.ObjToInt())
+ {
+ return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}宸ュ崟宸插叧闂�");
+ }
+ //鑾峰彇鍛ㄨ浆浣嶇疆缂栧彿
+ Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x=>x.MESPointCode==autoIssueDTO.PointCode);
+ if (stationInfo == null)
+ {
+ return content.Error($"棰嗘枡璁″垝鍛ㄨ浆浣峽nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}涓嶅瓨鍦�");
+ }
+ if (autoIssueDTO.IsEmptyPallet>0)
+ {
+ return content.Error($"棰嗘枡璁″垝鍛ㄨ浆浣峽nameof(MESAutoIssueDTO.PointCode)}{autoIssueDTO.PointCode}瀛樺湪绌烘墭");
+ }
+ //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
+ ////鑾峰彇浠诲姟
+ //if (task == null)
+ //{
+ // return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
+ //}
+ //task.TaskStatus = TaskStatusEnum.New.ObjToInt();
+ //task.TargetAddress = stationInfo.AGVStationCode;
+ //PushTasksToWCS(new List<Dt_Task> { task });
+ return content.OK("鍙枡鎴愬姛");
}
catch (Exception ex)
{
@@ -254,39 +87,41 @@
return content;
}
- /// <summary>
- /// 鐗╂枡鍑哄簱锛學MS鍚屾鍑哄簱鐗╂枡鎵规鑷矼ES
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public WebResponseContent UploadMesMaterialLotaAcept(MesMaterialLotaAceptModel model)
+ public WebResponseContent ReceiveManualIssue(MESManualIssueDTO manualIssueDTO)
{
WebResponseContent content = new WebResponseContent();
try
{
- Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_MaterialLotaAcept.ToString());
- MESRoot<MesMaterialLotaAceptModel> root = new MESRoot<MesMaterialLotaAceptModel>()
+ if (manualIssueDTO == null)
{
- From = "WMS",
- DateTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
- Content = model
- };
- JsonSerializerSettings settings = new JsonSerializerSettings
- {
- ContractResolver = new CamelCasePropertyNamesContractResolver()
- };
- string request = JsonConvert.SerializeObject(root, settings);
- string response = HttpMesHelper.Post(apiInfo.ApiAddress, request);
- MesResponseContent mesResponseContent = response.DeserializeObject<MesResponseContent>();
- //璋冪敤鎺ュ彛
- if (mesResponseContent.BSucc == true)
- {
- content.OK(mesResponseContent.StrMsg);
+ return content.Error("浼犲叆淇℃伅涓嶈兘涓虹┖");
}
- else
+ //鑾峰彇瀵瑰簲鍗曟嵁
+ Dt_OutMESOrder? outMESOrder = _outboundRepository.OutMESOrderRepository.QueryFirst(x => x.OutDetailId == manualIssueDTO.OutDetailId);
+ if (outMESOrder == null)
{
- content.Error(mesResponseContent.StrMsg);
+ return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{manualIssueDTO.OutDetailId}涓嶅瓨鍦�");
}
+ if (outMESOrder.OutMESOrderStatus == OutOrderStatusEnum.鍏抽棴.ObjToInt())
+ {
+ return content.Error($"棰嗘枡璁″垝{nameof(MESAutoIssueDTO.OutDetailId)}{outMESOrder.ProductOrderNo}宸ュ崟宸插叧闂�");
+ }
+ //鑾峰彇鍛ㄨ浆浣嶇疆缂栧彿
+ Dt_AGVStationInfo? stationInfo = _basicRepository.AGVStationInfoRepository.QueryFirst(x => x.MESPointCode == manualIssueDTO.PointCode);
+ if (stationInfo == null)
+ {
+ return content.Error($"棰嗘枡璁″垝鍛ㄨ浆浣峽nameof(MESAutoIssueDTO.PointCode)}{manualIssueDTO.PointCode}涓嶅瓨鍦�");
+ }
+ //Dt_Task? task = BaseDal.QueryData(x => x.OrderNo == outMESOrder.OutMESOrderNo && x.TaskStatus == TaskStatusEnum.CallPending.ObjToInt()).OrderByDescending(x => x.Grade).ThenBy(x => x.TaskNum).FirstOrDefault();
+ ////鑾峰彇浠诲姟
+ //if (task == null)
+ //{
+ // return content.Error($"鏈壘鍒伴鏂欒鍒掔紪鍙穥outMESOrder.ProductOrderNo}鍙厤閫佷换鍔�");
+ //}
+ //task.TaskStatus = TaskStatusEnum.New.ObjToInt();
+ //task.TargetAddress = stationInfo.AGVStationCode;
+ //PushTasksToWCS(new List<Dt_Task> { task });
+ return content.OK("鍙枡鎴愬姛");
}
catch (Exception ex)
{
@@ -294,1136 +129,31 @@
}
return content;
}
- /// <summary>
- ///
- /// </summary>
- /// <param name="stockInfo"></param>
- /// <param name="stockInfoDetail"></param>
- /// <param name="taskNo"></param>
- /// <param name="warehouseCode"></param>
- /// <param name="quantity"></param>
- /// <param name="cutedType"></param>
- /// <param name="ppWidth"></param>
- /// <returns></returns>
- public MesMaterialLotaAceptModel GetMesMaterialLotaAceptModel(Dt_StockInfo stockInfo, Dt_StockInfoDetail stockInfoDetail, string taskNo, string warehouseCode, float quantity, string cutedType = "", float ppWidth = 0)
- {
- MesMaterialLotaAceptModel model = new MesMaterialLotaAceptModel()
- {
- CarrierCode = stockInfo.PalletCode,
- CutedType = cutedType,
- ExpirationDate = stockInfoDetail.EffectiveDate,
- MaterialBarCode = stockInfoDetail.SerialNumber,
- MaterialCode = stockInfoDetail.MaterielCode,
- MaterialLot = stockInfoDetail.MaterielCode + "," + stockInfoDetail.BatchNo,
- MaterialName = stockInfoDetail.MaterielName,
- PPWidth = ppWidth,
- ProductionDate = stockInfoDetail.ProductionDate,
- Quantity = quantity,
- Supplier = "",
- TaskNo = taskNo,
- Type = 1,
- WarehouseArea = warehouseCode,
- WarehouseLocation = warehouseCode
- };
- return model;
- }
-
- /// <summary>
- /// 鍩烘澘鍑哄簱
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent SubstrateOut(SubstrateOutModel model)
+ public WebResponseContent ReceiveReturnIssue(List<MESReturnIssueDTO> returnIssueDTOs)
{
+ WebResponseContent content = new WebResponseContent();
try
{
- string line = string.Empty;
- if (!model.Line.Contains("SCUTL"))
+ if (returnIssueDTOs==null || returnIssueDTOs.Count<=0)
{
- line = WarehouseEnum.HA58.ToString();
+ return content.Error("浼犲叆淇℃伅涓嶈兘涓虹┖");
}
- else
+ //鑾峰彇鎵�鏈堿GV鐐逛綅
+ List<Dt_AGVStationInfo> aGVStationInfos= _basicRepository.AGVStationInfoRepository.QueryData(x => !string.IsNullOrEmpty(x.MESPointCode));
+ MESReturnIssueDTO? returnIssueDTO = returnIssueDTOs.FirstOrDefault(x=> !aGVStationInfos.Select(x=>x.MESPointCode).Contains(x.PointCode));
+ if (returnIssueDTO != null)
{
- line = WarehouseEnum.HA57.ToString();
+ return content.Error($"鍛ㄨ浆浣峽nameof(MESReturnIssueDTO.PointCode)}{returnIssueDTO.PointCode}涓嶅瓨鍦�");
}
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == line);
- if (warehouse == null)
- {
- return MesResponseContent.Instance.Error($"浠撳簱鍩虹淇℃伅鏈厤缃�");
- }
-
- Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == model.MaterialCode);
- if (materielInfo == null)
- {
- return MesResponseContent.Instance.Error($"鏈壘鍒拌鐗╂枡淇℃伅");
- }
-
- Dt_MesOutboundOrder mesOutboundOrder = new Dt_MesOutboundOrder()
- {
- CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
- Line = model.Line,
- MaterialCode = model.MaterialCode,
- MaterialName = model.MaterialName,
- OrderQuantity = model.RequiredQuantity,
- TaskNo = model.TaskNo,
- Unit = model.Unit,
- OrderType = MesOutboundOrderTypeEnum.SubstrateOut.ObjToInt(),
- OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
- WarehouseId = warehouse.WarehouseId
- };
-
- List<Dt_Task> tasks = new List<Dt_Task>();
-
- List<Dt_StockInfo>? stockInfos = null;
- List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- List<Dt_LocationInfo>? locationInfos = null;
- {
- (List<Dt_StockInfo>, Dt_MesOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesOutboundOrderService.AssignStockOutbound(mesOutboundOrder);
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
- result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- result.Item3.ForEach(x =>
- {
- x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- });
-
- stockInfos = result.Item1;
- mesOutboundOrder = result.Item2;
- outStockLockInfos = result.Item3;
- locationInfos = result.Item4;
- }
- else
- {
- throw new Exception("鏃犲簱瀛�");
- }
- }
- tasks.ForEach(x =>
- {
- x.TargetAddress = model.Line;
- x.OrderNo = mesOutboundOrder.TaskNo;
- });
- _unitOfWorkManage.BeginTran();
-
- int id = BaseDal.AddData(tasks);
- outStockLockInfos.ForEach(x =>
- {
- x.OrderNo = mesOutboundOrder.TaskNo;
- x.OrderDetailId = id;
- });
- _outboundService.MesOutboundOrderService.Repository.AddData(mesOutboundOrder);
- if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- {
- WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks);
-
- if (!content.Status)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(content.Message);
- }
- }
- _unitOfWorkManage.CommitTran();
- PushTasksToWCS(tasks);
-
-
- return MesResponseContent.Instance.OK();
+ content.OK("鍛煎彨鎴愬姛");
}
catch (Exception ex)
{
- return MesResponseContent.Instance.Error(ex.Message);
+ content.Error(ex.Message);
}
- }
-
- /// <summary>
- /// 鍩烘澘浣欐枡閫�搴�
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent SubstrateBack(SubstrateBackModel model)
- {
- try
- {
- Dt_PalletTypeInfo palletTypeInfo = _palletTypeInfoRepository.QueryFirst(x => model.CarrierCode.Contains(x.CodeStartStr));
- if (palletTypeInfo == null)
- {
- return MesResponseContent.Instance.Error($"鏈瘑鍒鎵樼洏绫诲瀷锛岃纭鎵樼洏鍙�");
- }
-
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == palletTypeInfo.WarehouseId);
-
-
- Dt_StockInfo_Hty stockInfo_Hty = _stockRepository.StockInfo_HtyRepository.QueryData(x => x.PalletCode == model.CarrierCode).OrderByDescending(x => x.SourceId).First();
- Dt_StockInfoDetail_Hty stockInfoDetail_Hty = _stockRepository.StockInfoDetail_HtyRepository.QueryFirst(x => x.StockId == stockInfo_Hty.SourceId);
-
- Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
- {
- MaterielSpec = stockInfoDetail_Hty.MaterielSpec,
- BatchNo = stockInfoDetail_Hty?.BatchNo ?? "",
- EffectiveDate = model.ExpirationDate,
- MaterielCode = model.MaterialCode,
- InboundOrderRowNo = stockInfoDetail_Hty?.InboundOrderRowNo ?? 0,
- MaterielName = stockInfoDetail_Hty.MaterielName,
- ProductionDate = model.ProductionDate,
- OrderNo = stockInfoDetail_Hty?.OrderNo ?? "",
- OutboundQuantity = 0,
- SerialNumber = stockInfoDetail_Hty?.SerialNumber ?? "0",
- StockQuantity = model.Quantity,
- Status = model.Quantity <= 0.0 ? StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt() : StockStatusEmun.MES閫�搴�.ObjToInt(),
- Unit = model.Unit
- };
- Dt_StockInfo stockInfo = new Dt_StockInfo()
- {
- PalletCode = model.CarrierCode,
- PalletType = palletTypeInfo.PalletType,
- WarehouseId = warehouse.WarehouseId,
- StockStatus = stockInfoDetail.StockQuantity <= 0.0 ? StockStatusEmun.MES绌烘墭閫�搴�.ObjToInt() : StockStatusEmun.MES閫�搴�.ObjToInt(),
- Details = new List<Dt_StockInfoDetail> { stockInfoDetail },
- Remark = stockInfoDetail.StockQuantity <= 0.0 ? StockStatusEmun.MES绌烘墭閫�搴�.ToString() : StockStatusEmun.MES閫�搴�.ToString()
- };
- //Dt_Task task = new Dt_Task()
- //{
- // PalletCode = stockInfo.PalletCode,
- // CurrentAddress = "",
- // NextAddress = "",
- // PalletType = stockInfo.PalletType,
- // Roadway = "RGV01_BC",
- // SourceAddress = "RGV01_BC",
- // TargetAddress = "",
- // TaskStatus = TaskStatusEnum.New.ObjToInt(),
- // TaskType = TaskTypeEnum.MesMatReturn.ObjToInt(),
- // WarehouseId = warehouse.WarehouseId
- //};
-
- _unitOfWorkManage.BeginTran();
- Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
- //BaseDal.AddData(task);
- _unitOfWorkManage.CommitTran();
-
- return MesResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(ex.Message);
- }
- }
-
- /// <summary>
- /// PP澶у嵎鍑哄簱-杩涜鍒嗗嵎
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent PPSubsectionOut(PPSubsectionOutModel model)
- {
- MesResponseContent modelCount = new MesResponseContent();
- try
- {
-
- Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString());
- if (warehouse == null)
- {
- return MesResponseContent.Instance.Error("浠撳簱淇℃伅鏈厤缃�");
- }
- Dt_MesPPOutboundOrder mesPPOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First();
- if (mesPPOutboundOrder != null)
- {
- return MesResponseContent.Instance.Error("宸插瓨鍦ㄦ浠诲姟鍗曞彿");
- }
- List<Dt_MesPPOutboundOrderDetail> mesPPOutboundOrderDetail = new List<Dt_MesPPOutboundOrderDetail>();
- foreach (var item in model.Carriers)
- {
- //mesPPOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPOutboundOrderDetail>(item));
- Dt_MesPPOutboundOrderDetail dt_MesPPOutboundOrderDetail = new Dt_MesPPOutboundOrderDetail
- {
- CarrierCode = item.CarrierCode,
- Warehouse = item.Warehouse,
- OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt()
- };
- mesPPOutboundOrderDetail.Add(dt_MesPPOutboundOrderDetail);
- }
- Dt_MesPPOutboundOrder mesOutboundOrder = new Dt_MesPPOutboundOrder()
- {
- CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
- MaterialCode = model.MaterialCode,
- MaterialName = model.MaterialName,
- OrderQuantity = model.RequiredQuantity,
- TaskNo = model.TaskNo,
- Unit = model.Unit,//PP闇�瑕佽浆鎹㈡垚绫�(闇�姹傚钩鏂�(PNL鏁�*闈㈢Н)/瀹藉害)
- Width = model.Width,
- TargetAddressCode = model.TargetAddressCode,
- OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
- OrderType = OutOrderTypeEnum.Issue.ObjToInt(),
- WarehouseId = warehouse.WarehouseId,
- Details = mesPPOutboundOrderDetail
- };
- #region
- //Db.InsertNav(mesOutboundOrder).Include(x=>x.Details).ExecuteCommand();
- // List<Dt_Task> tasks = new List<Dt_Task>();
-
- // List<Dt_StockInfo>? stockInfos = null;
- // List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- // List<Dt_LocationInfo>? locationInfos = null;
- // {
- //(List<Dt_StockInfo>, Dt_MesPPOutboundOrder, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesOutboundOrder);
- // if (result.Item1 != null && result.Item1.Count > 0)
- // {
- // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
- // result.Item2.OrderStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- // result.Item3.ForEach(x =>
- // {
- // x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- // });
-
- // stockInfos = result.Item1;
- // mesOutboundOrder = result.Item2;
- // outStockLockInfos = result.Item3;
- // locationInfos = result.Item4;
- // mesPPOutboundOrderDetail.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
-
- // }
- // else
- // {
- // throw new Exception("鏃犲簱瀛�");
- // }
- // }
- // tasks.ForEach(x =>
- // {
- // x.TargetAddress = model.TargetAddressCode;
- // });
- // _unitOfWorkManage.BeginTran();
-
- // int id = BaseDal.AddData(tasks);
- // outStockLockInfos.ForEach(x =>
- // {
- // x.OrderNo = mesOutboundOrder.TaskNo;
- // x.OrderDetailId = id;
- // });
- // //_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder);
- // Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand();
- // if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- // {
- // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks);
-
- // if (!content.Status)
- // {
- // _unitOfWorkManage.RollbackTran();
- // return MesResponseContent.Instance.Error(content.Message);
- // }
- // }
- // _unitOfWorkManage.CommitTran();
- // PushTasksToWCS(tasks);
-
- //}
- #endregion
- _unitOfWorkManage.BeginTran();
- Db.InsertNav(mesOutboundOrder).Include(x => x.Details).ExecuteCommand();
- _unitOfWorkManage.CommitTran();
- return MesResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(ex.Message);
- }
-
- }
-
- /// <summary>
- /// PP灏忓嵎鍑哄簱
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent PPCutOut(PPCutOutModle model)
- {
- try
- {
-
- Dt_Warehouse warehouse = _basicService.WarehouseService.Repository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString());
- if (warehouse == null)
- {
- return MesResponseContent.Instance.Error("浠撳簱鍩虹淇℃伅鏈厤缃�");
- }
- Dt_MesPPCutOutboundOrder mesPPCutOutboundOrder = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrder>().Where(x => x.TaskNo == model.TaskNo).Includes(x => x.Details).First();
- if (mesPPCutOutboundOrder != null)
- {
- return MesResponseContent.Instance.Error("宸插瓨鍦ㄦ浠诲姟鍗曞彿");
- }
- List<Dt_MesPPCutOutboundOrderDetail> mesPPCutOutboundOrderDetail = new List<Dt_MesPPCutOutboundOrderDetail>();
- foreach (var item in model.MaterialDetails)
- {
- mesPPCutOutboundOrderDetail.Add(_mapper.Map<Dt_MesPPCutOutboundOrderDetail>(item));
- }
- Dt_MesPPCutOutboundOrder mesPPOutboundOrder = new Dt_MesPPCutOutboundOrder()
- {
- CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
- TaskNo = model.TaskNo,
- OrderType = OutOrderTypeEnum.Issue.ObjToInt(),
- OrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(),
- WarehouseId = warehouse.WarehouseId,
- Details = mesPPCutOutboundOrderDetail,
- };
- _unitOfWorkManage.BeginTran();
- Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand();
- _unitOfWorkManage.CommitTran();
- #region
- //List<Dt_Task> tasks = new List<Dt_Task>();
-
- //List<Dt_StockInfo>? stockInfos = null;
- //List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- //List<Dt_LocationInfo>? locationInfos = null;
- //{
- //(List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPOutboundOrderService.AssignStockOutbound(mesPPOutboundOrder, mesPPCutOutboundOrderDetail);
- // if (result.Item1 != null && result.Item1.Count > 0)
- // {
- // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
- // result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- // result.Item3.ForEach(x =>
- // {
- // x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- // });
-
- // stockInfos = result.Item1;
- // mesPPCutOutboundOrderDetail = result.Item2;
- // outStockLockInfos = result.Item3;
- // locationInfos = result.Item4;
-
- // }
- // else
- // {
- // throw new Exception("鏃犲簱瀛�");
- // }
- //}
- //tasks.ForEach(x =>
- //{
- // x.TargetAddress = mesPPCutOutboundOrderDetail.TargetAddressCode;
- //});
- //_unitOfWorkManage.BeginTran();
-
- //int id = BaseDal.AddData(tasks);
- //outStockLockInfos.ForEach(x =>
- //{
- // x.OrderNo = mesPPOutboundOrder.TaskNo;
- // x.OrderDetailId = id;
- //});
- ////_outboundService.MesPPOutboundOrderService.Repository.AddData(mesOutboundOrder);
- //Db.InsertNav(mesPPOutboundOrder).Include(x => x.Details).ExecuteCommand();
- //if (stockInfos != null && stockInfos.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- //{
- // WebResponseContent content = _outboundService.MesOutboundOrderService.LockOutboundStockDataUpdate(stockInfos, outStockLockInfos, locationInfos, tasks: tasks);
-
- // if (!content.Status)
- // {
- // _unitOfWorkManage.RollbackTran();
- // return MesResponseContent.Instance.Error(content.Message);
- // }
- //}
- //_unitOfWorkManage.CommitTran();
- //PushTasksToWCS(tasks, "AGV_PP");
- #endregion
- return MesResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(ex.Message);
- }
- }
-
- /// <summary>
- /// PP鍏ュ簱(澶у嵎銆佸皬鍗枫�佸紶鏂�)
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent PPBack(PPBackModel model)
- {
- try
- {
- //涓�娆″彧鍙戜竴鍗风墿鏂欏叆搴撴槑缁�
- foreach (var item in model.MaterialLotInfo)
- {
- //鑾峰彇鐗╂枡淇℃伅
- Dt_MaterielInfo materielInfo = _basicRepository.MaterielInfoRepository.QueryFirst(x => x.MaterielCode == item.MaterialCode);
- if (materielInfo == null)
- {
- return MesResponseContent.Instance.Error($"鐗╂枡{item.MaterialCode}涓嶅瓨鍦�!");
- }
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString());
- if (warehouse == null)
- {
- return MesResponseContent.Instance.Error($"鏈壘鍒颁粨搴撲俊鎭�");
- }
- Dt_MesPPBackInboundOrderDetail mesPPBackInboundOrderDetail = new Dt_MesPPBackInboundOrderDetail()
- {
- MaterialLot = item.MaterialLot,
- MaterielCode = item.MaterialCode,
- OrderQuantity = item.Quantity,
- CutedWidth = item.CutedWidth,
- MaterialLotOld = item.MaterialLotOld,
- Unit = item.Unit,
- ProductionDate = item.ProductionDate,
- EffectiveDate = item.ExpirationDate,
- OrderDetailStatus = OrderDetailStatusEnum.New.ObjToInt(),
- };
- Dt_MesPPBackInboundOrder mesPPBackInboundOrder = new Dt_MesPPBackInboundOrder()
- {
- WarehouseId = warehouse.WarehouseId,
- SourceAddressCode = model.SourceAddressCode,
- CarrierCode = model.CarrierCode,
- OrderStatus = InOrderStatusEnum.鏈紑濮�.ObjToInt(),
- CreateType = OrderCreateTypeEnum.UpperSystemPush.ObjToInt(),
- Details = new List<Dt_MesPPBackInboundOrderDetail> { mesPPBackInboundOrderDetail }
- };
-
- Dt_StockInfoDetail stockInfoDetail = new Dt_StockInfoDetail()
- {
- BatchNo = mesPPBackInboundOrderDetail.MaterialLot,
- MaterielCode = mesPPBackInboundOrderDetail.MaterielCode,
- MaterielName = materielInfo.MaterielName,
- OrderNo = "",
- SerialNumber = "",
- StockQuantity = mesPPBackInboundOrderDetail.OrderQuantity,
- OutboundQuantity = 0,
- Unit = materielInfo.MaterielUnit,
- Status = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
- ProductionDate = mesPPBackInboundOrderDetail.ProductionDate,
- EffectiveDate = mesPPBackInboundOrderDetail.EffectiveDate,
- InboundOrderRowNo = mesPPBackInboundOrderDetail.RowNo,
- };
-
- Dt_StockInfo stockInfo = new Dt_StockInfo()
- {
- PalletCode = model.CarrierCode,
- StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(),
- WarehouseId = mesPPBackInboundOrder.WarehouseId,
- Details = new List<Dt_StockInfoDetail> { stockInfoDetail }
- };
- _unitOfWorkManage.BeginTran();
- Db.InsertNav(mesPPBackInboundOrder).Include(x => x.Details).ExecuteCommand();
- Db.InsertNav(stockInfo).Include(x => x.Details).ExecuteCommand();
- WebResponseContent content = DeviceRequestInboundTask(mesPPBackInboundOrder, stockInfo);
- if (!content.Status)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(content.Message);
- }
- _unitOfWorkManage.CommitTran();
- }
- return MesResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return MesResponseContent.Instance.Error(ex.Message);
- }
-
- }
-
- public WebResponseContent DeviceRequestInboundTask(Dt_MesPPBackInboundOrder mesPPBackInboundOrder, Dt_StockInfo stockInfo)
- {
- try
- {
- Dt_Task task = Repository.QueryFirst(x => x.PalletCode == stockInfo.PalletCode);
- if (task != null)
- {
- PushTasksToWCS(new List<Dt_Task> { task });
- return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡鐢熸垚浠诲姟");
- }
- if (Repository.QueryFirst(x => x.SourceAddress == stockInfo.PalletCode && x.TaskStatus == TaskStatusEnum.New.ObjToInt()) != null)
- {
- return WebResponseContent.Instance.Error($"璇ョ珯鐐瑰凡鏈夋湭鎵ц鐨勪换鍔�");
- }
- //Dt_StockInfo stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x => x.PalletCode == palletCode).Includes(x => x.Details).First();
- //if (stockInfos == null)
- //{
- // 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())
- //{
- // return WebResponseContent.Instance.Error($"璇ユ墭鐩樼姸鎬佷笉姝g‘,涓嶅彲鐢宠鍏ュ簱");
- //}
- //if (!string.IsNullOrEmpty(stockInfo.LocationCode))
- //{
- // return WebResponseContent.Instance.Error($"璇ユ墭鐩樺凡缁戝畾璐т綅");
- //}
- //鍙叆骞冲簱,闇�鍒ゆ柇骞冲簱瀹氫箟璐т綅绫诲瀷銆傘�傘�傘�傘�傘�傘�傘�傘�傘�傘�傘��
- Dt_LocationInfo? locationInfos = _basicRepository.LocationInfoRepository.QueryFirst(x => x.WarehouseId == stockInfo.WarehouseId && x.LocationType == LocationTypeEnum.MediumPallet.ObjToInt());
- Dt_LocationInfo? locationInfo = _basicService.LocationInfoService.AssignLocation(locationInfos.RoadwayNo, stockInfo.PalletType, stockInfo.WarehouseId);
- if (locationInfo == null)
- {
- return WebResponseContent.Instance.Error($"璐т綅鍒嗛厤澶辫触,鏈壘鍒板彲鍒嗛厤璐т綅");
- }
-
- Dt_Task newTask = new Dt_Task()
- {
- CurrentAddress = mesPPBackInboundOrder.SourceAddressCode,
- Grade = 0,
- NextAddress = locationInfo.LocationCode,
- PalletCode = stockInfo.PalletCode,
- Roadway = locationInfo.RoadwayNo,//宸烽亾鍙峰寘鍚獳GV
- SourceAddress = mesPPBackInboundOrder.SourceAddressCode,
- TargetAddress = locationInfo.LocationCode,
- TaskType = TaskTypeEnum.Inbound.ObjToInt(),
- 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,
- };
- LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus;
- _unitOfWorkManage.BeginTran();
- _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.Lock, LocationChangeType.InboundAssignLocation);
- _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, newTask.PalletType, LocationStatusEnum.Lock, newTask.WarehouseId);
- BaseDal.AddData(newTask);
- _stockRepository.StockInfoRepository.UpdateData(stockInfo);
- _unitOfWorkManage.CommitTran();
-
- PushTasksToWCS(new List<Dt_Task> { newTask });
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
-
- /// <summary>
- /// PP搴撳瓨鏌ヨ
- /// </summary>
- /// <param name="model"></param>
- /// <returns></returns>
- public MesResponseContent QueryPpByWidth(QueryPpByWidthModel model)
- {
- MesResponseContent content = new MesResponseContent();
- try
- {
- //闇�鍒ゆ柇鏌ヨ绔嬪簱,骞冲簱
- Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA58.ToString());
- List<Dt_StockInfo> stockInfos = _stockRepository.StockInfoRepository.Db.Queryable<Dt_StockInfo>().Where(x =>
- x.WarehouseId == warehouse.WarehouseId &&
- x.StockStatus == (int)StockStatusEmun.鍏ュ簱瀹屾垚).Includes(x => x.Details).ToList();
- Dt_StockInfo? stockInfo = stockInfos.FirstOrDefault(x => x.Details.Any(x => x.MaterielCode == model.MaterialCode && x.CutedWidth == model.CutedWidth));
- if (stockInfo == null)
- {
- return content.Error($"PP浠撶珛搴�/骞冲簱锛氱墿鏂欑紪鍙�:{model.MaterialCode},瑁佸垏瀹�:{model.CutedWidth},鏈壘鍒版鐗╂枡搴撳瓨淇℃伅");
- }
- var stock = stockInfo.Details.FirstOrDefault();
- if (stock != null)
- {
- content.Content = new
- {
- MaterialCode = stock.MaterielCode,
- Quantity = stock.StockQuantity,
- Unit = stock.Unit,
- Warehouse = warehouse.WarehouseCode,
- WarehouseName = warehouse.WarehouseName,
- CutedWidth = stock.CutedWidth,
- CarrierCode = stockInfo.PalletCode,
- MaterialLot = stock.BatchNo,
- };
- }
- return content.OK();
- }
- catch (Exception ex)
- {
- return MesResponseContent.Instance.Error(ex.Message);
- }
+ return content;
}
-
-
- /// <summary>
- /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟
- /// </summary>
- /// <param name="keys">鍑哄簱鍗曟槑缁嗕富閿�</param>
- /// <returns></returns>
- public WebResponseContent MESPPGenerateOutboundTasks(int[] keys)
- {
- try
- {
- List<Dt_Task> tasks = new List<Dt_Task>();
- List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>();
- List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
- List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPOutboundOrderDetail>();
- List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
- List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
-
- (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, Dt_MesPPOutboundOrder mesPPOutboundOrder) result = MESPPOutboundTaskDataHandle(keys);
- if (result.Item2 != null && result.Item2.Count > 0)
- {
- stockInfos.AddRange(result.Item2);
- }
- if (result.Item3 != null && result.Item3.Count > 0)
- {
- outboundOrderDetails.AddRange(result.Item3);
- }
- if (result.Item4 != null && result.Item4.Count > 0)
- {
- outStockLockInfos.AddRange(result.Item4);
- }
- if (result.Item5 != null && result.Item5.Count > 0)
- {
- locationInfos.AddRange(result.Item5);
- }
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- tasks.AddRange(result.Item1);
- }
- if (result.mesPPOutboundOrder != null)
- {
-
- }
-
- WebResponseContent content = MESPPGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, result.mesPPOutboundOrder);
- return content;
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
-
- /// <summary>
- /// PP澶у嵎鍑哄簱浠诲姟鏁版嵁澶勭悊
- /// </summary>
- /// <param name="orderDetailId"></param>
- /// <param name="stockSelectViews"></param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?, Dt_MesPPOutboundOrder mesPPOutboundOrder) MESPPOutboundTaskDataHandle(int[] keys)
- {
- List<Dt_Task> tasks = new List<Dt_Task>();
- List<Dt_MesPPOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList();
- if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
- {
- throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
- }
- if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null)
- {
- throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
- }
- List<Dt_StockInfo>? stockInfos = null;
- List<Dt_MesPPOutboundOrderDetail>? orderDetails = null;
- List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- List<Dt_LocationInfo>? locationInfos = null;
- Dt_MesPPOutboundOrder? mesPPOutboundOrders = null;
- if (outboundOrderDetails.FirstOrDefault().OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
- {
- (List<Dt_StockInfo>, List<Dt_MesPPOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>, Dt_MesPPOutboundOrder mesPPOutboundOrder) result = _outboundService.MesPPOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- Dt_MesPPOutboundOrder outboundOrder = _outboundService.MesPPOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
- TaskTypeEnum typeEnum = outboundOrder.OrderType switch
- {
- (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
- (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate,
- (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
- _ => new TaskTypeEnum()
- };
- tasks = GetTasks(result.Item1, typeEnum);
- result.Item2.ForEach(x =>
- {
- x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- });
- result.Item3.ForEach(x =>
- {
- x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- });
-
- stockInfos = result.Item1;
- orderDetails = result.Item2;
- outStockLockInfos = result.Item3;
- locationInfos = result.Item4;
- mesPPOutboundOrders = result.mesPPOutboundOrder;
- }
- else
- {
- throw new Exception("鏃犲簱瀛�");
- }
- }
- //else
- //{
- // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetails.oi, OutLockStockStatusEnum.宸插垎閰�);
- // if (stockLockInfos != null && stockLockInfos.Count > 0)
- // {
- // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList());
- // tasks = GetTasks(stocks);
- // }
- //}
-
- return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos, mesPPOutboundOrders);
- }
-
- /// <summary>
- /// PP骞冲簱鐩存帴鍑哄簱
- /// </summary>
- /// <param name="orderDetailId"></param>
- /// <param name="stockSelectViews"></param>
- /// <returns></returns>
- public WebResponseContent PPGeneratePKOutboundTask(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews)
- {
- try
- {
- (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPOutboundTaskDataHandle(orderDetailId, stockSelectViews);
-
- WebResponseContent content = PPGenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5);
-
- return content;
- }
- catch (Exception ex)
- {
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
- /// <summary>
- /// PP绔嬪簱灏忓嵎鐩存帴鍑哄簱
- /// </summary>
- /// <param name="orderDetailId"></param>
- /// <param name="stockSelectViews"></param>
- /// <returns></returns>
- public WebResponseContent PPCutOutGenerateOutboundTasks(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews)
- {
- try
- {
- (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPOutboundTaskDataHandle(orderDetailId, stockSelectViews);
-
- WebResponseContent content = PPGenerateOutboundTaskDataUpdate(result.Item1, result.Item2, result.Item3, result.Item4, result.Item5);
-
- return content;
- }
- catch (Exception ex)
- {
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
-
- /// <summary>
- /// 鍑哄簱浠诲姟鏁版嵁澶勭悊
- /// </summary>
- /// <param name="orderDetailId"></param>
- /// <param name="stockSelectViews"></param>
- /// <returns></returns>
- /// <exception cref="Exception"></exception>
- public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) PPOutboundTaskDataHandle(int orderDetailId, List<PPStockSelectViewDTO> stockSelectViews)
- {
- List<Dt_Task> tasks = new List<Dt_Task>();
- Dt_MesPPCutOutboundOrderDetail outboundOrderDetail = _outboundService.MesPPCutOutboundOrderDetailService.Repository.QueryFirst(x => x.Id == orderDetailId);
-
- if (outboundOrderDetail == null)
- {
- throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
- }
-
- if (stockSelectViews.Sum(x => x.UseableQuantity) > outboundOrderDetail.OrderQuantity - outboundOrderDetail.LockQuantity)
- {
- throw new Exception("閫夋嫨鏁伴噺瓒呭嚭鍗曟嵁鏁伴噺");
- }
- List<Dt_StockInfo>? stockInfos = null;
- Dt_MesPPCutOutboundOrderDetail? orderDetail = null;
- List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- List<Dt_LocationInfo>? locationInfos = null;
- if (outboundOrderDetail.OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
- {
- (List<Dt_StockInfo>, Dt_MesPPCutOutboundOrderDetail, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPCutOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetail, stockSelectViews);
- if (result.Item1 != null && result.Item1.Count > 0)
- {
- Dt_MesPPCutOutboundOrder outboundOrder = _outboundService.MesPPCutOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetail.OrderId);
- TaskTypeEnum typeEnum = outboundOrder.OrderType switch
- {
- (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
- (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate,
- (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
- _ => new TaskTypeEnum()
- };
- tasks = GetTasks(result.Item1, TaskTypeEnum.Outbound);
- result.Item2.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- result.Item3.ForEach(x =>
- {
- x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- });
-
- stockInfos = result.Item1;
- orderDetail = result.Item2;
- outStockLockInfos = result.Item3;
- locationInfos = result.Item4;
- }
- else
- {
- throw new Exception("鏃犲簱瀛�");
- }
- }
- else
- {
- List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetail.OrderId, OutLockStockStatusEnum.宸插垎閰�);
- if (stockLockInfos != null && stockLockInfos.Count > 0)
- {
- List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList());
- tasks = GetTasks(stocks, TaskTypeEnum.Outbound);
- }
- }
-
- return (tasks, stockInfos, orderDetail == null ? null : new List<Dt_MesPPCutOutboundOrderDetail> { orderDetail }, outStockLockInfos, locationInfos);
- }
-
- public WebResponseContent PPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPCutOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null)
- {
- try
- {
- _unitOfWorkManage.BeginTran();
-
- BaseDal.AddData(tasks);
- if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- {
- stockInfos.ForEach(x =>
- {
- x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
- });
- WebResponseContent content = _outboundService.MesPPCutOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
- if (!content.Status)
- {
- _unitOfWorkManage.RollbackTran();
- return content;
- }
- }
- else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0)
- {
- outboundOrderDetails.ForEach(x =>
- {
- x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- });
-
- _outboundService.MesPPCutOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
- }
- _unitOfWorkManage.CommitTran();
- PushTasksToWCS(tasks);
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
-
- }
- #region
- /// <summary>
- /// 鐢熸垚PP灏忓嵎鍑哄簱浠诲姟
- /// </summary>
- /// <param name="keys">鍑哄簱鍗曟槑缁嗕富閿�</param>
- /// <returns></returns>
- //public WebResponseContent PPCutOutGenerateOutboundTasks(int[] keys)
- //{
- // try
- // {
- // List<Dt_Task> tasks = new List<Dt_Task>();
- // List<StockSelectViewDTO> stockSelectViews = new List<StockSelectViewDTO>();
- // List<Dt_StockInfo> stockInfos = new List<Dt_StockInfo>();
- // List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails = new List<Dt_MesPPCutOutboundOrderDetail>();
- // List<Dt_OutStockLockInfo> outStockLockInfos = new List<Dt_OutStockLockInfo>();
- // List<Dt_LocationInfo> locationInfos = new List<Dt_LocationInfo>();
-
- // (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) result = PPCutOutboundTaskDataHandle(keys);
- // if (result.Item2 != null && result.Item2.Count > 0)
- // {
- // stockInfos.AddRange(result.Item2);
- // }
- // if (result.Item3 != null && result.Item3.Count > 0)
- // {
- // outboundOrderDetails.AddRange(result.Item3);
- // }
- // if (result.Item4 != null && result.Item4.Count > 0)
- // {
- // outStockLockInfos.AddRange(result.Item4);
- // }
- // if (result.Item5 != null && result.Item5.Count > 0)
- // {
- // locationInfos.AddRange(result.Item5);
- // }
- // if (result.Item1 != null && result.Item1.Count > 0)
- // {
- // tasks.AddRange(result.Item1);
- // }
-
- // WebResponseContent content = PPCutOutGenerateOutboundTaskDataUpdate(tasks, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos);
- // return content;
- // }
- // catch (Exception ex)
- // {
- // _unitOfWorkManage.RollbackTran();
- // return WebResponseContent.Instance.Error(ex.Message);
- // }
- //}
-
- ///// <summary>
- ///// PP灏忓嵎鍑哄簱浠诲姟鏁版嵁澶勭悊
- ///// </summary>
- ///// <param name="orderDetailId"></param>
- ///// <param name="stockSelectViews"></param>
- ///// <returns></returns>
- ///// <exception cref="Exception"></exception>
- //public (List<Dt_Task>, List<Dt_StockInfo>?, List<Dt_MesPPCutOutboundOrderDetail>?, List<Dt_OutStockLockInfo>?, List<Dt_LocationInfo>?) PPCutOutboundTaskDataHandle(int[] keys)
- //{
- // List<Dt_Task> tasks = new List<Dt_Task>();
- // List<Dt_MesPPCutOutboundOrderDetail> outboundOrderDetails = BaseDal.Db.Queryable<Dt_MesPPCutOutboundOrderDetail>().Where(x => keys.Contains(x.Id)).ToList();
- // if (outboundOrderDetails == null || outboundOrderDetails.Count == 0)
- // {
- // throw new Exception("鏈壘鍒板嚭搴撳崟鏄庣粏淇℃伅");
- // }
- // if (outboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus > OrderDetailStatusEnum.New.ObjToInt() && x.OrderDetailStatus != OrderDetailStatusEnum.AssignOverPartial.ObjToInt()) != null)
- // {
- // throw new Exception("鎵�閫夊嚭搴撳崟鏄庣粏瀛樺湪鍑哄簱涓垨宸插畬鎴�");
- // }
- // List<Dt_StockInfo>? stockInfos = null;
- // List<Dt_MesPPCutOutboundOrderDetail>? orderDetails = null;
- // List<Dt_OutStockLockInfo>? outStockLockInfos = null;
- // List<Dt_LocationInfo>? locationInfos = null;
- // if (outboundOrderDetails.FirstOrDefault().OrderDetailStatus == OrderDetailStatusEnum.New.ObjToInt())
- // {
- // (List<Dt_StockInfo>, List<Dt_MesPPCutOutboundOrderDetail>, List<Dt_OutStockLockInfo>, List<Dt_LocationInfo>) result = _outboundService.MesPPCutOutboundOrderDetailService.AssignStockOutbound(outboundOrderDetails);
- // if (result.Item1 != null && result.Item1.Count > 0)
- // {
- // Dt_MesPPCutOutboundOrder outboundOrder = _outboundService.MesPPCutOutboundOrderService.Repository.QueryFirst(x => x.Id == outboundOrderDetails.FirstOrDefault().OrderId);
- // //TaskTypeEnum typeEnum = outboundOrder.OrderType switch
- // //{
- // // (int)OutOrderTypeEnum.Issue => TaskTypeEnum.Outbound,
- // // (int)OutOrderTypeEnum.Allocate => TaskTypeEnum.OutAllocate,
- // // (int)OutOrderTypeEnum.Quality => TaskTypeEnum.OutQuality,
- // // _ => new TaskTypeEnum()
- // //};
- // tasks = GetTasks(result.Item1, TaskTypeEnum.MesOutbound);
- // result.Item2.ForEach(x =>
- // {
- // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- // });
- // result.Item3.ForEach(x =>
- // {
- // x.Status = OutLockStockStatusEnum.鍑哄簱涓�.ObjToInt();
- // });
-
- // stockInfos = result.Item1;
- // orderDetails = result.Item2;
- // outStockLockInfos = result.Item3;
- // locationInfos = result.Item4;
- // }
- // else
- // {
- // throw new Exception("鏃犲簱瀛�");
- // }
- // }
- // //else
- // //{
- // // List<Dt_OutStockLockInfo> stockLockInfos = _outboundService.OutboundStockLockInfoService.GetByOrderDetailId(outboundOrderDetails.OrderId, OutLockStockStatusEnum.宸插垎閰�);
- // // if (stockLockInfos != null && stockLockInfos.Count > 0)
- // // {
- // // List<Dt_StockInfo> stocks = _stockService.StockInfoService.Repository.GetStockInfosByPalletCodes(stockLockInfos.Select(x => x.PalletCode).Distinct().ToList());
- // // tasks = GetTasks(stocks);
- // // }
- // //}
-
- // return (tasks, stockInfos, orderDetails, outStockLockInfos, locationInfos);
- //}
-
- ///// <summary>
- ///// 鐢熸垚PP灏忓嵎鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴�
- ///// </summary>
- ///// <param name="tasks"></param>
- ///// <param name="stockInfos"></param>
- ///// <param name="outboundOrderDetails"></param>
- ///// <param name="outStockLockInfos"></param>
- ///// <param name="locationInfos"></param>
- ///// <returns></returns>
- //public WebResponseContent PPCutOutGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPCutOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null)
- //{
- // try
- // {
- // _unitOfWorkManage.BeginTran();
-
- // BaseDal.AddData(tasks);
- // if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- // {
- // stockInfos.ForEach(x =>
- // {
- // x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
- // });
- // WebResponseContent content = _outboundService.MesPPCutOutboundOrderDetailService.LockOutboundStockDataUpdate(stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
-
- // if (!content.Status)
- // {
- // _unitOfWorkManage.RollbackTran();
- // return content;
- // }
- // }
- // else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0)
- // {
- // outboundOrderDetails.ForEach(x =>
- // {
- // x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- // });
-
- // _outboundService.MesPPCutOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
- // }
- // _unitOfWorkManage.CommitTran();
- // PushTasksToWCS(tasks,"AGV_PP");
- // return WebResponseContent.Instance.OK();
- // }
- // catch (Exception ex)
- // {
- // _unitOfWorkManage.RollbackTran();
- // return WebResponseContent.Instance.Error(ex.Message);
- // }
- //}
- #endregion
- /// <summary>
- /// 鐢熸垚PP澶у嵎鍑哄簱浠诲姟鍚庢暟鎹洿鏂板埌鏁版嵁搴�
- /// </summary>
- /// <param name="tasks"></param>
- /// <param name="stockInfos"></param>
- /// <param name="outboundOrderDetails"></param>
- /// <param name="outStockLockInfos"></param>
- /// <param name="locationInfos"></param>
- /// <returns></returns>
- public WebResponseContent MESPPGenerateOutboundTaskDataUpdate(List<Dt_Task> tasks, List<Dt_StockInfo>? stockInfos = null, List<Dt_MesPPOutboundOrderDetail>? outboundOrderDetails = null, List<Dt_OutStockLockInfo>? outStockLockInfos = null, List<Dt_LocationInfo>? locationInfos = null, Dt_MesPPOutboundOrder? mesPPOutboundOrder = null)
- {
- try
- {
- _unitOfWorkManage.BeginTran();
-
- BaseDal.AddData(tasks);
- if (stockInfos != null && stockInfos.Count > 0 && outboundOrderDetails != null && outboundOrderDetails.Count > 0 && outStockLockInfos != null && outStockLockInfos.Count > 0 && locationInfos != null && locationInfos.Count > 0)
- {
- stockInfos.ForEach(x =>
- {
- x.StockStatus = StockStatusEmun.鍑哄簱閿佸畾.ObjToInt();
- });
- WebResponseContent content = _outboundService.MesPPOutboundOrderDetailService.LockOutboundStockDataUpdate(mesPPOutboundOrder, stockInfos, outboundOrderDetails, outStockLockInfos, locationInfos, tasks: tasks);
-
- if (!content.Status)
- {
- _unitOfWorkManage.RollbackTran();
- return content;
- }
- }
- else if (outboundOrderDetails != null && outboundOrderDetails.Count > 0)
- {
- outboundOrderDetails.ForEach(x =>
- {
- x.OrderDetailStatus = OrderDetailStatusEnum.Outbound.ObjToInt();
- });
-
- _outboundService.MesPPOutboundOrderDetailService.Repository.UpdateData(outboundOrderDetails);
- }
- _unitOfWorkManage.CommitTran();
- PushTasksToWCS(tasks);
- return WebResponseContent.Instance.OK();
- }
- catch (Exception ex)
- {
- _unitOfWorkManage.RollbackTran();
- return WebResponseContent.Instance.Error(ex.Message);
- }
- }
-
}
}
--
Gitblit v1.9.3