public void DeleteAircraftLeaseOrder(AircraftLeaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } var deleteAircraftLeaseOrder = _orderRepository.Get(dto.Id); if (deleteAircraftLeaseOrder != null) { _relatedDocRepository.GetFiltered(r => r.SourceId == deleteAircraftLeaseOrder.SourceGuid) .ToList() .ForEach(r => _relatedDocRepository.Remove(r)); _orderRepository.Remove(deleteAircraftLeaseOrder); } }
public void UpdateAircraftLeaseOrder(AircraftLeaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } var order = _orderRepository.Get(dto.Id) as AircraftLeaseOrder; if (order != null) { // 更新当前记录 order.SetCurrency(dto.CurrencyId); order.SetLinkman(dto.LinkmanId); order.SetName(dto.Name); order.SetOperatorName(dto.OperatorName); order.SetOrderStatus((OrderStatus) dto.Status); if (!string.IsNullOrWhiteSpace(dto.LogWriter)) { order.SetNote(dto.LogWriter); } if (dto.ContractDocGuid != Guid.Empty) { order.SetContractDoc(dto.ContractDocGuid, dto.ContractName); } // 获取引进方式 var importType = _actionCategoryRepository.GetFiltered(a => a.ActionType == "引进" && a.ActionName == "经营租赁") .FirstOrDefault(); var trade = _tradeRepository.Get(order.TradeId); // 处理订单行 var dtoOrderLines = dto.AircraftLeaseOrderLines; var orderLines = order.OrderLines; DataHelper.DetailHandle(dtoOrderLines.ToArray(), orderLines.OfType<AircraftLeaseOrderLine>().ToArray(), c => c.Id, p => p.Id, i => InsertOrderLine(order, dto, i, importType, trade.SupplierId), UpdateOrderLine, d => _orderRepository.RemoveOrderLine(d)); // 处理分解合同 var dtoContents = dto.ContractContents; var contents = order.ContractContents; DataHelper.DetailHandle(dtoContents.ToArray(), contents.ToArray(), c => c.Id, p => p.Id, i => InsertContractContent(order, i), UpdateContractContent, d => _orderRepository.RemoveContractContent(d)); } }
/// <summary> /// 插入新订单行 /// </summary> /// <param name="order">订单</param> /// <param name="dto">订单DTO</param> /// <param name="line">订单行DTO</param> /// <param name="importType">引进方式</param> /// <param name="supplierId">供应商ID</param> private void InsertOrderLine(AircraftLeaseOrder order, AircraftLeaseOrderDTO dto, AircraftLeaseOrderLineDTO line, ActionCategory importType, int supplierId) { // 获取飞机物料机型 var material = _materialRepository.GetFiltered(m => m.Id == line.AircraftMaterialId) .OfType<AircraftMaterial>() .FirstOrDefault(); if (material == null) { throw new ArgumentException("未能获取飞机物料!"); } var aircraftTypeId = material.AircraftTypeId; // 添加订单行 var orderLine = order.AddNewAircraftLeaseOrderLine(line.UnitPrice, line.Amount, line.Discount, line.EstimateDeliveryDate); orderLine.SetAircraftMaterial(line.AircraftMaterialId); // 创建或引用合同飞机 var persist = _contractAircraftRepository.Get(line.ContractAircraftId) as LeaseContractAircraft; var contractAircraft = ContractAircraftFactory.CreateLeaseContractAircraft(dto.Name, line.RankNumber); contractAircraft.ChangeCurrentIdentity(line.ContractAircraftId); contractAircraft.SetAircraftType(aircraftTypeId); contractAircraft.SetImportCategory(importType); contractAircraft.SetCSCNumber(line.CSCNumber); contractAircraft.SetSerialNumber(line.SerialNumber); contractAircraft.SetSupplier(supplierId); contractAircraft.SetPlanAircraft(line.PlanAircraftID); if (persist == null) { orderLine.SetContractAircraft(contractAircraft); } else { orderLine.SetContractAircraft(persist); _contractAircraftRepository.Merge(persist, contractAircraft); } }
public void InsertAircraftLeaseOrder(AircraftLeaseOrderDTO dto) { if (dto == null) { throw new ArgumentException("参数为空!"); } // 获取版本号 var id = dto.TradeId; var version = _orderRepository.GetFiltered(o => o.TradeId == id).Count() + 1; var date = DateTime.Now.Date; var seq = _orderRepository.GetFiltered(t => t.CreateDate > date).Count() + 1; // 创建订单 var order = OrderFactory.CreateAircraftLeaseOrder(version, dto.OperatorName, dto.OrderDate); order.SetTrade(dto.TradeId); order.SetCurrency(dto.CurrencyId); order.SetContractNumber(seq); order.SetLinkman(dto.LinkmanId); order.SetSourceGuid(dto.SourceGuid); order.SetName(dto.Name); order.SetOrderStatus((OrderStatus) dto.Status); if (!string.IsNullOrWhiteSpace(dto.LogWriter)) { order.SetNote(dto.LogWriter); } if (dto.ContractDocGuid != Guid.Empty) { order.SetContractDoc(dto.ContractDocGuid, dto.ContractName); } // 获取引进方式 var importType = _actionCategoryRepository.GetFiltered(a => a.ActionType == "引进" && a.ActionName == "经营租赁") .FirstOrDefault(); // 处理订单行 dto.AircraftLeaseOrderLines.ToList() .ForEach(line => InsertOrderLine(order, dto, line, importType, dto.SupplierId)); // 处理分解合同 dto.ContractContents.ToList().ForEach(c => InsertContractContent(order, c)); _orderRepository.Add(order); }