From 67348f250a1b7970059698002949a5e0a5f3c52f Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期四, 14 八月 2025 08:51:04 +0800 Subject: [PATCH] 上传最新代码 --- 项目代码/WMS/WMSServices/WIDESEA_TaskInfoService/MesTaskService.cs | 1389 --------------------------------------------------------- 1 files changed, 0 insertions(+), 1,389 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..7e96894 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" @@ -36,1394 +36,5 @@ 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> - /// 娴嬭瘯鏋堕��搴� - /// </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) - { - WebResponseContent content = new WebResponseContent(); - try - { - Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_TestToolSync.ToString()); - MESRoot<TestToolSynInfo> root = new MESRoot<TestToolSynInfo>() - { - 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); - } - else - { - content.Error(mesResponseContent.StrMsg); - } - } - catch (Exception ex) - { - content.Error(ex.Message); - } - return content; - } - - /// <summary> - /// 鐗╂枡鍑哄簱锛學MS鍚屾鍑哄簱鐗╂枡鎵规鑷矼ES - /// </summary> - /// <param name="model"></param> - /// <returns></returns> - public WebResponseContent UploadMesMaterialLotaAcept(MesMaterialLotaAceptModel model) - { - WebResponseContent content = new WebResponseContent(); - try - { - Dt_ApiInfo apiInfo = _apiInfoRepository.QueryFirst(x => x.ApiCode == APIEnum.WMS_MES_MaterialLotaAcept.ToString()); - MESRoot<MesMaterialLotaAceptModel> root = new MESRoot<MesMaterialLotaAceptModel>() - { - 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); - } - else - { - content.Error(mesResponseContent.StrMsg); - } - } - catch (Exception ex) - { - content.Error(ex.Message); - } - 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) - { - try - { - string line = string.Empty; - if (!model.Line.Contains("SCUTL")) - { - line = WarehouseEnum.HA58.ToString(); - } - else - { - line = WarehouseEnum.HA57.ToString(); - } - 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(); - } - catch (Exception ex) - { - return MesResponseContent.Instance.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); - } - } - - - - /// <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