From 430404d69be9b5d420ad12b9ac087508f1fa2aca Mon Sep 17 00:00:00 2001 From: duyongjia <adu_555@163.com> Date: 星期一, 23 十二月 2024 17:46:40 +0800 Subject: [PATCH] 出入库测试稳定版 --- 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs | 187 +++++++++++++++++++++++++++++++++++----------- 1 files changed, 141 insertions(+), 46 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs" index a8c5962..8435005 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_InboundService/Service/InboundOrderService.cs" @@ -46,65 +46,104 @@ WebResponseContent content = new WebResponseContent(); try { - List<MatSerialNumberDTO> matSerialNumberDTOs = CodeAnalysisHelper.CodeAnalysis<MatSerialNumberDTO>(AnalysisCode.InnerCode, materielGroupDTO.SerialNumbers); - (bool, string, object?) result2 = ModelValidate.ValidateModelData(matSerialNumberDTOs); - if (!result2.Item1) return content = WebResponseContent.Instance.Error(result2.Item2); - - List<string> materielCodes = matSerialNumberDTOs.GroupBy(x => x.MaterielCode).Select(x => x.Key).ToList(); - - List<Dt_MaterielInfo> materielInfos = _basicService.MaterielInfoService.GetMaterielInfos(materielCodes); - - Dt_InboundOrder inboundOrder = GetInboundOrder(materielGroupDTO.OrderNo); - - Dt_StockInfo? stockInfo = _stockService.StockInfoService.GetStockByPalletCode(materielGroupDTO.PalletCode); - - (bool, string, object?) result = CheckMaterielGroupParam(materielGroupDTO, matSerialNumberDTOs, materielInfos, materielCodes, inboundOrder, stockInfo); + (bool, string, object?) result = CheckMaterielGroupParam(materielGroupDTO, stockInfo); if (!result.Item1) return content = WebResponseContent.Instance.Error(result.Item2); - if (stockInfo == null) { stockInfo = new Dt_StockInfo(); - stockInfo.Details = new List<Dt_StockInfoDetail>(); - } - - List<Dt_StockInfoDetail> stockInfoDetails = _mapper.Map<List<Dt_StockInfoDetail>>(matSerialNumberDTOs); - stockInfoDetails.ForEach(x => - { - x.Status = 0; - x.OrderNo = inboundOrder.OrderNo; - x.MaterielName = materielInfos.FirstOrDefault(v => v.MaterielCode == x.MaterielCode)?.MaterielName ?? ""; - x.StockId = stockInfo.Id != 0 ? stockInfo.Id : 0; - }); - if (stockInfo.Id == 0) - { stockInfo.PalletCode = materielGroupDTO.PalletCode; stockInfo.StockStatus = StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt(); + stockInfo.Creater = "System"; + stockInfo.Details = new List<Dt_StockInfoDetail>(); + } - stockInfo.Details.AddRange(stockInfoDetails); - - List<Dt_InboundOrderDetail> inboundOrderDetails = new List<Dt_InboundOrderDetail>(); - for (int i = 0; i < materielCodes.Count; i++) + List<Dt_StockInfoDetail> stockInfoDetails = new List<Dt_StockInfoDetail>(); + List<Dt_LabelMaster> notExistLabels = new List<Dt_LabelMaster>(); + foreach (var lablel in materielGroupDTO.SerialNumbers) { - decimal stockQuantity = stockInfoDetails.Where(x => x.MaterielCode == materielCodes[i]).Sum(x => x.StockQuantity); - inboundOrderDetails.AddRange(_inboundOrderDetailService.UpdateReceiptQuantity(inboundOrder.Details.Where(x => x.MaterielCode == materielCodes[i]).ToList(), stockQuantity)); - } - List<int> updateDetailIds = inboundOrderDetails.Select(x => x.Id).ToList(); - if (inboundOrderDetails.FirstOrDefault(x => x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null && inboundOrder.Details.FirstOrDefault(x => !updateDetailIds.Contains(x.Id) && x.OrderDetailStatus != OrderDetailStatusEnum.Over.ObjToInt()) == null) - { - inboundOrder.OrderStatus = InboundStatusEnum.鍏ュ簱瀹屾垚.ObjToInt(); - BaseDal.DeleteAndMoveIntoHty(inboundOrder, App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚); - for (int i = 0; i < inboundOrderDetails.Count; i++) + Dt_LabelMaster labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == lablel); + if(labmaster == null) { - _inboundOrderDetailService.Repository.DeleteAndMoveIntoHty(inboundOrderDetails[i], App.User.UserId == 0 ? OperateType.鑷姩瀹屾垚 : OperateType.浜哄伐瀹屾垚); - } + //閫氳繃鏉$爜鎺ュ彛鍚屾鏉$爜涓绘暟鎹� + _sys_JobService.GetLabMaster(lablel); + labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == lablel); + if (labmaster == null) + { + notExistLabels.Add(labmaster); + } + } } - else if (inboundOrder.OrderStatus == InboundStatusEnum.鏈紑濮�.ObjToInt()) + if (notExistLabels.Count == 0) { - inboundOrder.OrderStatus = InboundStatusEnum.鍏ュ簱涓�.ObjToInt(); - } + foreach (var item in materielGroupDTO.SerialNumbers) + { + Dt_LabelMaster labmaster = _labelMasterRepository.QueryFirst(x => x.LABEL_NO == item); + Dt_StockInfoDetail dt_StockInfoDetail = new Dt_StockInfoDetail(); + dt_StockInfoDetail.Status = 0; + dt_StockInfoDetail.OrderNo = materielGroupDTO.OrderNo; + dt_StockInfoDetail.StockId = stockInfo.Id != 0 ? stockInfo.Id : 0; + dt_StockInfoDetail.MaterielCode = labmaster.MATNR; + dt_StockInfoDetail.MaterielName = labmaster.MAKTX; + dt_StockInfoDetail.BatchNo = labmaster.BATCH; + dt_StockInfoDetail.SerialNumber = labmaster.LABEL_NO; + dt_StockInfoDetail.StockQuantity = int.Parse(labmaster.BOX_QTY); + dt_StockInfoDetail.OutboundQuantity = 0; + dt_StockInfoDetail.Creater = "System"; + stockInfoDetails.Add(dt_StockInfoDetail); + stockInfo.Details.AddRange(stockInfoDetails); + } + content = MaterielGroupUpdateData(stockInfo); - content = MaterielGroupUpdateData(inboundOrder, inboundOrderDetails, stockInfo); + } + + + } + catch (Exception ex) + { + content = WebResponseContent.Instance.Error(ex.Message); + } + finally + { + + } + return content; + } + + + /// <summary> + /// 鎾ら攢缁勭洏 + /// </summary> + /// <param name="materielGroupDTO"></param> + /// <returns></returns> + public WebResponseContent MaterielGroupRevoke(string PalletCode) + { + WebResponseContent content = new WebResponseContent(); + try + { + Dt_StockInfo? stockInfo = _stockService.StockInfoService.GetStockByPalletCode(PalletCode); + if(stockInfo != null) + { + if(stockInfo.StockStatus!= (int)StockStatusEmun.缁勭洏鏆傚瓨) + { + return content = WebResponseContent.Instance.Error("缁勭洏鏆傚瓨鐘舵�佹墠鍙互鎾ら攢缁勭洏锛�"); + } + else + { + stockInfo.StockStatus = (int)StockStatusEmun.缁勭洏鎾ら攢; + foreach (var item in stockInfo.Details) + { + item.Status = (int)OutStockStatus.鎾ら攢; + } + } + content = MaterielGroupUpdateData(stockInfo); + + } + else + { + return content = WebResponseContent.Instance.Error("缁勭洏淇℃伅涓嶅瓨鍦紒"); + } + } catch (Exception ex) { @@ -141,6 +180,30 @@ return WebResponseContent.Instance.Error(ex.Message); } } + + /// <summary> + /// 缁勭洏鏁版嵁鏇存柊 + /// </summary> + /// <param name="inboundOrder">鍏ュ簱鍗�</param> + /// <param name="inboundOrderDetails">鍏ュ簱鍗曟槑缁�</param> + /// <param name="stockInfo">缁勭洏鏁版嵁</param> + /// <returns></returns> + public WebResponseContent MaterielGroupUpdateData(Dt_StockInfo stockInfo) + { + try + { + _unitOfWorkManage.BeginTran(); + _stockService.StockInfoService.AddMaterielGroup(stockInfo); + _unitOfWorkManage.CommitTran(); + return WebResponseContent.Instance.OK(); + } + catch (Exception ex) + { + _unitOfWorkManage.RollbackTran(); + return WebResponseContent.Instance.Error(ex.Message); + } + } + /// <summary> /// 楠岃瘉缁勭洏鏁版嵁 @@ -219,6 +282,38 @@ return (true, "鎴愬姛", materielGroupDTO); } + + /// <summary> + /// 楠岃瘉缁勭洏鏁版嵁 + /// </summary> + /// <param name="materielGroupDTO">鐗╂枡缁勭洏DTO</param> + /// <param name="stockInfo">缁勭洏淇℃伅</param> + /// <returns></returns> + public (bool, string, object?) CheckMaterielGroupParam(MaterielGroupDTO materielGroupDTO, Dt_StockInfo stockInfo) + { + (bool, string, object?) result = ModelValidate.ValidateModelData(materielGroupDTO); + if (!result.Item1) return result; + + if (_taskRepository.QueryFirst(x => x.PalletCode == materielGroupDTO.PalletCode) != null) + { + return (false, "璇ユ墭鐩樺彿宸叉湁浠诲姟", materielGroupDTO); + } + + if (stockInfo != null && !string.IsNullOrEmpty(stockInfo.LocationCode) && stockInfo.StockStatus != StockStatusEmun.缁勭洏鏆傚瓨.ObjToInt()) + { + return (false, "宸蹭笂鏋剁殑鎵樼洏涓嶈兘鍐嶆缁勭洏", materielGroupDTO); + } + + if (_stockService.StockInfoDetailService.ExistSerialNumbers(materielGroupDTO.SerialNumbers)) + { + return (false, "鏈夊簭鍒楀彿鍦ㄥ簱瀛樹腑宸插瓨鍦�", materielGroupDTO); + } + + return (true, "鎴愬姛", materielGroupDTO); + } + + + /// <summary> /// PDA鍒嗛〉鏌ヨ鏁版嵁 /// </summary> -- Gitblit v1.9.3