From cb25acc46bf41863e068b6f968f1592b7a14d1c9 Mon Sep 17 00:00:00 2001 From: helongyang <647556386@qq.com> Date: 星期六, 13 九月 2025 08:12:14 +0800 Subject: [PATCH] 功能更新优化 --- 代码管理/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs | 93 +++++++++++++++++++++++++++++++++------------- 1 files changed, 67 insertions(+), 26 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" index 833e973..34893b2 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WMS/WIDESEA_WMSServer/WIDESEA_OutboundService/ProOutOrderService.cs" @@ -80,71 +80,112 @@ /// <returns></returns> public WebResponseContent AddDeliveryOrder(ErpProOutOrderDTO outOrderDTO) { - WebResponseContent content=new WebResponseContent(); + WebResponseContent content = new WebResponseContent(); try { - if (BaseDal.QueryFirst(x => x.ProOutOrderNo == outOrderDTO.OrderNo) != null) + if (BaseDal.QueryFirst(x => x.ProOutOrderNo == outOrderDTO.OrderNo) != null) { return content.Error($"鍑哄簱鍗曞彿{outOrderDTO.OrderNo}宸插瓨鍦�!"); } - Dt_Warehouse warehouse=null; + + Dt_Warehouse warehouse = null; List<Dt_CustomerInfo> customerInfos = _basicRepository.CustomerInfoRepository.QueryData(); - if (outOrderDTO.OType==1 && string.IsNullOrEmpty(outOrderDTO.WaType)) - { - warehouse = _basicRepository.WarehouseRepository.QueryFirst(x=>x.WarehouseCode==WarehouseEnum.HA71.ToString()); - } - else if (outOrderDTO.OType==2) + + if (outOrderDTO.OType == 1 && string.IsNullOrEmpty(outOrderDTO.WaType)) { warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString()); } + else if (outOrderDTO.OType == 2) + { + warehouse = _basicRepository.WarehouseRepository.QueryFirst(x => x.WarehouseCode == WarehouseEnum.HA71.ToString()); + } + List<Dt_ProOutOrderDetail> proOutOrderDetails = new List<Dt_ProOutOrderDetail>(); - Dictionary<string,string> keyValuePairs =new Dictionary<string, string>(); + Dictionary<string, string> keyValuePairs = new Dictionary<string, string>(); + + // 澶勭悊鍘熷鏄庣粏骞跺瓨鍌ㄥ埌涓存椂鍒楄〃 + var tempDetails = new List<Dt_ProOutOrderDetail>(); foreach (var item in outOrderDTO.OrderDetails) { - //鍒ゆ柇瀹㈡埛鏄惁瀛樺湪 - Dt_CustomerInfo? customerInfo = customerInfos.Where(x=>x.Code== item.Customer).FirstOrDefault(); - if (customerInfo==null) + // 鍒ゆ柇瀹㈡埛鏄惁瀛樺湪 + Dt_CustomerInfo? customerInfo = customerInfos.FirstOrDefault(x => x.Code == item.Customer); + if (customerInfo == null) { return content.Error($"瀹㈡埛{item.Customer}涓嶅瓨鍦�!"); } + Dt_ProOutOrderDetail proOutOrderDetail = _mapper.Map<Dt_ProOutOrderDetail>(item); if (!string.IsNullOrEmpty(item.SaleOrder)) { - if (keyValuePairs!=null && keyValuePairs.ContainsKey(item.SaleOrder)) + if (keyValuePairs != null && keyValuePairs.ContainsKey(item.SaleOrder)) { proOutOrderDetail.EndCustomer = keyValuePairs[item.SaleOrder]; } else { string request = _invokeERPService.InvokeProSaleCustomer(item.SaleOrder); - ErpSaleCustomResponseContent responseContent=request.DeserializeObject<ErpSaleCustomResponseContent>(); - if (responseContent.Code!=200) + ErpSaleCustomResponseContent responseContent = request.DeserializeObject<ErpSaleCustomResponseContent>(); + if (responseContent.Code != 200) { return content.Error($"璁㈠崟{item.SaleOrder}缁堢瀹㈡埛鑾峰彇澶辫触!"); } - //鍒ゆ柇缁堢瀹㈡埛鏄惁瀛樺湪 - Dt_CustomerInfo? customerInfoEnd = customerInfos.Where(x => x.Code == responseContent.Data[0].Endcustomer).FirstOrDefault(); + + // 鍒ゆ柇缁堢瀹㈡埛鏄惁瀛樺湪 + Dt_CustomerInfo? customerInfoEnd = customerInfos.FirstOrDefault(x => x.Code == responseContent.Data[0].Endcustomer); if (customerInfoEnd == null) { return content.Error($"缁堢瀹㈡埛{responseContent.Data[0].Endcustomer}涓嶅瓨鍦�!"); } + proOutOrderDetail.EndCustomer = responseContent.Data[0].Endcustomer; keyValuePairs.Add(item.SaleOrder, responseContent.Data[0].Endcustomer); } } + + // 鍏堢疮鍔犲綋鍓嶆槑缁嗙殑鏁伴噺锛堝寘鍚鍝侊級 proOutOrderDetail.QtyPcs += proOutOrderDetail.SpareQty; - proOutOrderDetails.Add(proOutOrderDetail); + tempDetails.Add(proOutOrderDetail); } - Dt_ProOutOrder proOutOrder= new Dt_ProOutOrder() + + // 鎸夋潯浠跺垎缁勫苟鍚堝苟鏄庣粏 + var groupedDetails = tempDetails.GroupBy(detail => new { - ProOutOrderNo= outOrderDTO.OrderNo, - WarehouseId= warehouse.WarehouseId, - ProOrderType= outOrderDTO.OType, - ProOrderStatus=OutOrderStatusEnum.鏈紑濮�.ObjToInt(), - PlantShipDate= outOrderDTO.PlantShipDate.ObjToDate(), - Remark= outOrderDTO.Note, - Details= proOutOrderDetails + detail.PCode, + detail.PVer, + detail.PLot, + detail.DateCode, + }) + .Select(group => + { + // 鍙栧垎缁勪腑绗竴涓槑缁嗕綔涓哄熀纭� + var firstDetail = group.First(); + return new Dt_ProOutOrderDetail + { + // 澶嶅埗鍩虹淇℃伅 + PCode = firstDetail.PCode, + PVer = firstDetail.PVer, + PLot = firstDetail.PLot, + DateCode = firstDetail.DateCode, + EndCustomer = firstDetail.EndCustomer, + QtyPcs = group.Sum(d => d.QtyPcs), + // 绱姞澶囧搧鏁� + SpareQty = group.Sum(d => d.SpareQty) + }; + }); + + proOutOrderDetails.AddRange(groupedDetails); + + Dt_ProOutOrder proOutOrder = new Dt_ProOutOrder() + { + ProOutOrderNo = outOrderDTO.OrderNo, + WarehouseId = warehouse.WarehouseId, + ProOrderType = outOrderDTO.OType, + ProOrderStatus = OutOrderStatusEnum.鏈紑濮�.ObjToInt(), + PlantShipDate = outOrderDTO.PlantShipDate.ObjToDate(), + Remark = outOrderDTO.Note, + Details = proOutOrderDetails }; + Db.InsertNav(proOutOrder).Include(x => x.Details).ExecuteCommand(); content.OK("鎴愬姛"); } -- Gitblit v1.9.3