From a6e0ea9ce13e791f3edae4edffeb3be3ccb760be Mon Sep 17 00:00:00 2001 From: wangxinhui <wangxinhui@hnkhzn.com> Date: 星期一, 31 三月 2025 02:14:59 +0800 Subject: [PATCH] 版本更新 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs | 270 ++++++++++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 244 insertions(+), 26 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" index 80bd640..4460c6b 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_TaskInfoService/TaskService.cs" @@ -32,6 +32,7 @@ using WIDESEA_Core.BaseServices; using WIDESEA_Core.Enums; using WIDESEA_Core.Helper; +using WIDESEA_DTO; using WIDESEA_DTO.Inbound; using WIDESEA_DTO.MES; using WIDESEA_DTO.Stock; @@ -231,7 +232,7 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌浠诲姟淇℃伅"); } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); - if (warehouse.WarehouseCode==WarehouseEnum.HA71.ToString()) + if (warehouse.WarehouseType==WarehouseTypEnum.鎴愬搧.ToString()) { return InProductCompleted(task); } @@ -251,8 +252,9 @@ return WebResponseContent.Instance.Error($"鏈壘鍒拌鎵樼洏搴撳瓨鏄庣粏淇℃伅"); } #region 绌烘墭閫�搴� - if (task.TaskType == TaskTypeEnum.MesPalletReturn.ObjToInt()) + if (task.TaskType == TaskTypeEnum.MesPalletLargeReturn.ObjToInt() || task.TaskType == TaskTypeEnum.MesPalletSmallReturn.ObjToInt()) { + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); _unitOfWorkManage.BeginTran(); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚); _stockService.StockInfoService.Repository.DeleteAndMoveIntoHty(stockInfo, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); @@ -389,11 +391,11 @@ //瀛樺湪鍏ュ簱鍗曞苟鐘舵�佷负瀹屾垚鐘舵�佹帹閫佽嚦ERP if (inboundOrder != null && inboundOrder.OrderStatus == InOrderStatusEnum.鍏ュ簱瀹屾垚.ObjToInt() && inboundOrder.OrderType != InOrderTypeEnum.Allocat.ObjToInt()) { - if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt()) + if (inboundOrder.OrderType == InOrderTypeEnum.Return.ObjToInt() && returnOrder!=null) { _inboundOrderService.FeedbackReturnOrder(inboundOrder, returnOrder); } - else + else if(inboundOrderDetail != null) { _inboundOrderService.FeedbackInboundOrder(inboundOrder.Id); } @@ -412,6 +414,58 @@ public WebResponseContent InProductCompleted(Dt_Task task) { WebResponseContent content=new WebResponseContent(); + try + { + switch (task.TaskType) + { + case (int)TaskTypeEnum.EmptyProductBack: + EmptyProBackCompleted(task); + break; + case (int)TaskTypeEnum.InProduct: + content = InProCompleted(task); + break; + case (int)TaskTypeEnum.InProductBack: + content = InProBackCompleted(task); + break; + default: + content.Error("鏈煡浠诲姟绫诲瀷"); + break; + } + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + public WebResponseContent EmptyProBackCompleted(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鏇存柊鍏ュ簱鐘舵�� + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚); + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } + /// <summary> + /// MES鍐呭寘鍏ュ簱浠诲姟瀹屾垚 + /// </summary> + /// <param name="task"></param> + /// <returns></returns> + public WebResponseContent InProCompleted(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); try { //鑾峰彇缁勭洏淇℃伅 @@ -433,7 +487,7 @@ locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt(); proStockInfo.LocationCode = locationInfo.LocationCode; //鑾峰彇MES鍏ュ簱鍗曟嵁 - Dt_MesProInOrder mesProInOrder = _inboundRepository.MesProInOrderRepository.Db.Queryable<Dt_MesProInOrder>().Where(x => x.BatchNo == task.PalletCode).Includes(x => x.Details).First(); + Dt_MesProInOrder mesProInOrder = _inboundRepository.MesProInOrderRepository.Db.Queryable<Dt_MesProInOrder>().Where(x => x.BatchNo == task.PalletCode && x.MesProStatus == InOrderStatusEnum.鍏ュ簱涓�.ObjToInt()).Includes(x => x.Details).OrderByDescending(x => x.Id).First(); if (mesProInOrder == null || mesProInOrder.Details == null || mesProInOrder.Details.Count <= 0) { return content.Error("鏈壘鍒癕ES鍐呭寘鍗曟嵁淇℃伅"); @@ -453,7 +507,7 @@ task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); _unitOfWorkManage.BeginTran(); BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚); - _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, proStockInfo.WarehouseId); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, locationInfo.WarehouseId); _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo); _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails); _inboundRepository.MesProInOrderRepository.UpdateData(mesProInOrder); @@ -462,13 +516,69 @@ _unitOfWorkManage.CommitTran(); //涓婁紶ERP _inboundOrderService.FeedbackProIn(mesProInOrder); + content.OK(); } catch (Exception ex) { _unitOfWorkManage.RollbackTran(); content.Error(ex.Message); } - return content.OK(); + return content; + } + /// <summary> + /// 鎴愬搧浣欐枡閫�搴撲换鍔″畬鎴� + /// </summary> + /// <param name="task"></param> + /// <returns></returns> + public WebResponseContent InProBackCompleted(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); + try + { + //鑾峰彇缁勭洏淇℃伅 + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First(); + if (proStockInfo == null) + { + return content.Error($"鏈壘鍒拌兌妗嗕负{task.PalletCode}缁勭洏淇℃伅"); + } + Dt_LocationInfo locationInfo = _basicService.LocationInfoService.Repository.QueryFirst(x => x.LocationCode == task.TargetAddress); + if (locationInfo == null) + { + return content.Error($"鏈壘鍒扮洰鏍囪揣浣嶄俊鎭�"); + } + if (locationInfo.LocationStatus == LocationStatusEnum.InStock.ObjToInt()) + { + return content.Error($"璐т綅鐘舵�佷笉姝g‘"); + } + if (proStockInfo.StockStatus!=StockStatusEmun.鎴愬搧浣欐枡鍥炲簱.ObjToInt()) + { + return content.Error($"鑳舵{proStockInfo.PalletCode}搴撳瓨鐘舵�佷笉姝g‘"); + } + LocationStatusEnum lastStatus = (LocationStatusEnum)locationInfo.LocationStatus; + locationInfo.LocationStatus = LocationStatusEnum.InStock.ObjToInt(); + proStockInfo.LocationCode = locationInfo.LocationCode; + proStockInfo.StockStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); + proStockInfo.proStockInfoDetails.ForEach(x => + { + x.ProOutDetailStatus = StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt(); + }); + //鏇存柊鍏ュ簱鐘舵�� + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + _unitOfWorkManage.BeginTran(); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId > 0 ? OperateTypeEnum.浜哄伐瀹屾垚 : OperateTypeEnum.鑷姩瀹屾垚); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.InStock, locationInfo.WarehouseId); + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfo.proStockInfoDetails); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, lastStatus, LocationStatusEnum.InStock, LocationChangeType.InboundCompleted); + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; } /// <summary> /// 鍑哄簱浠诲姟瀹屾垚 @@ -486,7 +596,7 @@ } Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseId == task.WarehouseId); //鎴愬搧鍑哄簱浠诲姟瀹屾垚 - if (warehouse.WarehouseCode==WarehouseEnum.HA71.ToString()) + if (warehouse.WarehouseType==WarehouseTypEnum.鎴愬搧.ToString()) { return OutProCompleted(task); } @@ -569,7 +679,12 @@ } stockInfo.LocationCode = ""; stockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); - _stockService.StockInfoService.Repository.UpdateData(stockInfo); + stockInfo.Details.ForEach(x => + { + x.Status = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + }); + _stockRepository.StockInfoRepository.UpdateData(stockInfo); + _stockRepository.StockInfoDetailRepository.UpdateData(stockInfo.Details); } else if (task.TaskType == TaskTypeEnum.OutEmpty.ObjToInt()) { @@ -625,34 +740,60 @@ WebResponseContent content = new WebResponseContent(); try { + switch (task.TaskType) + { + case (int)TaskTypeEnum.OutProduct: + content = OutProductCompleted(task); + break; + case (int)TaskTypeEnum.OutMesRworkProduct: + content = OutMesRworkCompleted(task); + break; + default: + content.Error("鏈煡浠诲姟绫诲瀷"); + break; + } + } + catch (Exception ex) + { + content.Error(ex.Message); + } + return content; + } + //鎴愬搧璁㈠崟鍑哄簱浠诲姟瀹屾垚 + public WebResponseContent OutProductCompleted(Dt_Task task) + { + WebResponseContent content = new WebResponseContent(); + try + { //鑾峰彇璐т綅 Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); - if (locationInfo==null) + if (locationInfo == null) { return content.Error("鏈壘鍒拌揣浣嶄俊鎭�"); } //鏍规嵁浠诲姟鑾峰彇鎴愬搧鍑哄簱璇︽儏浠诲姟鍙婄墿鏂欎俊鎭� - Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x=>x.TaskNum==task.TaskNum); + Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum); if (outProStockInfo == null) { return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鎯�"); } //鑾峰彇鎴愬搧鍑哄簱璁㈠崟 Dt_ProOutOrder proOutOrder = _outboundService.ProOutOrderService.Repository.Db.Queryable<Dt_ProOutOrder>().Where(x => x.ProOutOrderNo == outProStockInfo.OrderNo).Includes(x => x.Details).First(); - if (proOutOrder==null) + + if (proOutOrder == null) { return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鍗�"); } //鑾峰彇鎴愬搧搴撳瓨 - Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x=>x.PalletCode==task.PalletCode).Includes(x=>x.proStockInfoDetails).First(); - if (proStockInfo==null) + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode == task.PalletCode).Includes(x => x.proStockInfoDetails).First(); + if (proStockInfo == null) { - return content.Error("鏈壘鍒版垚鍝佸簱瀛樹俊鎭�"); + return content.Error($"鏈壘鍒皗task.PalletCode}鎴愬搧搴撳瓨淇℃伅"); } List<Dt_ProStockInfoDetail> proStockInfoDetails = proStockInfo.proStockInfoDetails; - if (proStockInfoDetails.Count<=0) + if (proStockInfoDetails.Count <= 0) { - return content.Error("鎴愬搧搴撳瓨鏄庣粏"); + return content.Error($"{proStockInfo.PalletCode}鎴愬搧搴撳瓨鏄庣粏涓虹┖"); } proStockInfoDetails.ForEach(x => { @@ -672,15 +813,18 @@ // updateStockDetails.AddRange(updateStockDetails); //} //鑾峰彇鎴愬搧鍑哄簱鍗曟槑缁� - Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x=>x.Id== outProStockInfo.OrderDetailId); - if (proOutOrderDetail==null) + Dt_ProOutOrderDetail? proOutOrderDetail = proOutOrder.Details.FirstOrDefault(x => x.Id == outProStockInfo.OrderDetailId); + if (proOutOrderDetail == null) { return content.Error("鏈壘鍒板搴斾换鍔℃垚鍝佽鍗曟槑缁�"); } //if (deleteStockDetails?.Sum(x=>x.StockPcsQty)== proStockInfo.proStockInfoDetails.Sum(x=>x.StockPcsQty)) //{ proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); - proStockInfo.LocationCode = "鍑鸿嚦鎴愬搧寰呭彂璐у尯"; + //鑾峰彇鎴愬搧骞冲簱 + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString()); + proStockInfo.WarehouseId = warehouse.WarehouseId; + proStockInfo.LocationCode = "鎴愬搧鍖呰鎷h揣鍖�"; //} task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); outProStockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); @@ -688,13 +832,8 @@ //璐т綅鍙樺姩璁板綍 int beforeStatus = locationInfo.LocationStatus; locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); - _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, proStockInfo.WarehouseId); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, locationInfo.WarehouseId); _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, proOutOrder?.ProOutOrderNo ?? "", task.TaskNum); - if (proOutOrder.ProOrderStatus == OutOrderStatusEnum.鏈紑濮�.ObjToInt()) - { - proOutOrder.ProOrderStatus = OutOrderStatusEnum.鍑哄簱涓�.ObjToInt(); - _outboundService.ProOutOrderService.UpdateData(proOutOrder); - } //if (deleteStockDetails!=null && deleteStockDetails.Count>0) //{ @@ -723,5 +862,84 @@ } return content; } + /// <summary> + /// 鎴愬搧MES鎻愬簱浠诲姟瀹屾垚 + /// </summary> + public WebResponseContent OutMesRworkCompleted(Dt_Task task) + { + WebResponseContent content=new WebResponseContent(); + try + { + //鑾峰彇璐т綅 + Dt_LocationInfo locationInfo = _basicRepository.LocationInfoRepository.QueryFirst(x => x.LocationCode == task.SourceAddress); + if (locationInfo == null) + { + return content.Error("鏈壘鍒拌揣浣嶄俊鎭�"); + } + //鏍规嵁浠诲姟鑾峰彇鎴愬搧鍑哄簱璇︽儏浠诲姟鍙婄墿鏂欎俊鎭� + Dt_OutProStockInfo outProStockInfo = _outProStockInfoRepository.QueryFirst(x => x.TaskNum == task.TaskNum); + if (outProStockInfo == null) + { + return content.Error("鏈壘鍒版垚鍝佸嚭搴撹鎯�"); + } + //鑾峰彇MES鎻愬簱鍗� + Dt_MesRworkOutboundOrder mesRworkOutboundOrder = _outboundRepository.RworkOutboundOrderRepository.QueryFirst(x=>x.TaskNo==task.OrderNo); + if (mesRworkOutboundOrder==null) + { + return content.Error("鏈壘鍒癕ES鎴愬搧鎻愬簱鍗�"); + } + if (mesRworkOutboundOrder.OrderStatus==OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt()) + { + return content.Error($"MES鎴愬搧鎻愬簱鍗晎mesRworkOutboundOrder.TaskNo}宸插畬鎴�"); + } + //鑾峰彇褰撳墠搴撳瓨 + Dt_ProStockInfo proStockInfo = _stockRepository.ProStockInfoRepository.Db.Queryable<Dt_ProStockInfo>().Where(x => x.PalletCode ==task.PalletCode).Includes(x=>x.proStockInfoDetails).First(); + if (proStockInfo==null) + { + return content.Error($"鏈壘鍒皗task.PalletCode}搴撳瓨淇℃伅"); + } + List<Dt_ProStockInfoDetail> proStockInfoDetails = proStockInfo.proStockInfoDetails; + if (proStockInfoDetails.Count <= 0) + { + return content.Error("鎴愬搧搴撳瓨鏄庣粏涓虹┖"); + } + proStockInfoDetails.ForEach(x => + { + x.OutboundQuantity = 0; + x.ProOutDetailStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + }); + proStockInfo.StockStatus = StockStatusEmun.鍑哄簱瀹屾垚.ObjToInt(); + //鑾峰彇鎴愬搧骞冲簱 + Dt_Warehouse warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA101.ToString()); + proStockInfo.WarehouseId = warehouse.WarehouseId; + proStockInfo.LocationCode = "鎴愬搧鍖呰鎷h揣鍖�"; + task.TaskStatus = TaskStatusEnum.Finish.ObjToInt(); + outProStockInfo.Status = OutLockStockStatusEnum.鍑哄簱瀹屾垚.ObjToInt(); + _unitOfWorkManage.BeginTran(); + //璐т綅鍙樺姩璁板綍 + int beforeStatus = locationInfo.LocationStatus; + locationInfo.LocationStatus = LocationStatusEnum.Free.ObjToInt(); + _basicService.LocationInfoService.UpdateLocationStatus(locationInfo, proStockInfo.PalletType, LocationStatusEnum.Free, locationInfo.WarehouseId); + _recordService.LocationStatusChangeRecordSetvice.AddLocationStatusChangeRecord(locationInfo, (LocationStatusEnum)beforeStatus, LocationStatusEnum.Free, LocationChangeType.OutboundCompleted, mesRworkOutboundOrder?.TaskNo ?? "", task.TaskNum); + _stockRepository.ProStockInfoRepository.UpdateData(proStockInfo); + _stockRepository.ProStockInfoDetailRepository.UpdateData(proStockInfoDetails); + _outProStockInfoRepository.UpdateData(outProStockInfo); + BaseDal.DeleteAndMoveIntoHty(task, App.User.UserId == 0 ? OperateTypeEnum.鑷姩瀹屾垚 : OperateTypeEnum.浜哄伐瀹屾垚); + //MES鎴愬搧搴撳瓨鏉垮嚭搴撳悓姝� + //WebResponseContent responseContent = ProductOutBoundSync(MesProOutBound(mesRworkOutboundOrder, proStockInfoDetails)); + //if (!responseContent.Status) + //{ + // throw new Exception("鍚屾MES搴撳瓨鏉垮嚭搴撳け璐�,閿欒:"+ responseContent.Message); + //} + _unitOfWorkManage.CommitTran(); + content.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + content.Error(ex.Message); + } + return content; + } } } -- Gitblit v1.9.3