| | |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | |
| | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | private readonly SalesReturnNoticeDetailManager salesReturnNoticeDetailManager = new(); |
| | | |
| | | // Save 方法用于保存单个 销售订单(SalesOrder) 记录,根据类型执行不同的操作 |
| | | public bool Save(SaleReturnNotice saleReturnNotice) |
| | | { |
| | | var salesReturnNoticeErpSalesReturnNotice = saleReturnNotice.erpSalesReturnNotice; |
| | | var mesSalesReturnNotice = GetSalesReturnNotice(salesReturnNoticeErpSalesReturnNotice); |
| | | var mesSalesReturnNoticeDetails = GetErpSalesOrderDetail(saleReturnNotice.erpSalesReturnNoticeDetail, salesReturnNoticeErpSalesReturnNotice.type); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | switch (salesReturnNoticeErpSalesReturnNotice.type) |
| | | { |
| | | case "3": |
| | | return UpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails) ? 1 : 0; |
| | | case "2": |
| | | case "4": |
| | | case "5": |
| | | case "6": |
| | | return SaveOrUpdateData(db, mesSalesReturnNotice, mesSalesReturnNoticeDetails) |
| | | ? 1 |
| | | : 0; |
| | | default: |
| | | throw new NotImplementedException( |
| | | $"type没有{salesReturnNoticeErpSalesReturnNotice.type}这个类型"); |
| | | } |
| | | }) > 0; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | // 更新数据的方法(单纯的删除) |
| | | private bool UpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice, |
| | | List<SalesReturnNoticeDetail> salesReturnNoticeDetails) |
| | | { |
| | | var decimals = salesReturnNoticeDetails.Select(s => s.Id).ToArray(); |
| | | var update = base.DeleteById(salesReturnNotice.Id); |
| | | var insertOrUpdate = db |
| | | .Deleteable<SalesOrderDetail>().In(decimals) |
| | | .ExecuteCommand() > 0; |
| | | |
| | | if (update && insertOrUpdate) return true; |
| | | throw new NotImplementedException("删除失败"); |
| | | } |
| | | |
| | | // 插入或更新数据的方法 |
| | | private bool SaveOrUpdateData(SqlSugarScope db, SalesReturnNotice salesReturnNotice, |
| | | List<SalesReturnNoticeDetail> salesReturnNoticeDetails) |
| | | { |
| | | if (salesReturnNotice.Id != null) base.DeleteById(salesReturnNotice.Id); |
| | | |
| | | if (salesReturnNoticeDetails.Count > 0) |
| | | db.Deleteable<SalesOrderDetail>() |
| | | .Where(s => s.ErpId == salesReturnNotice.Id).ExecuteCommand(); |
| | | |
| | | var orUpdate = base.Insert(salesReturnNotice); |
| | | var baOrUpdate = salesReturnNoticeDetailManager.InsertRange(salesReturnNoticeDetails); |
| | | if (orUpdate && baOrUpdate) return true; |
| | | throw new NotImplementedException("插入或更新失败"); |
| | | } |
| | | |
| | | // 批量保存记录的方法 |
| | | public bool SaveList(List<SaleReturnNotice> saleReturnNotices) |
| | | { |
| | | var result = saleReturnNotices.Select(Save).ToList(); |
| | | return result.All(b => b); |
| | | } |
| | | |
| | | |
| | | // 将 ErpSalesReturnNotice 对象转换为 SalesReturnNotice 对象的方法 |
| | | public SalesReturnNotice GetSalesReturnNotice(ErpSalesReturnNotice erpSalesReturnNotice) |
| | | { |
| | | |
| | | var eid = Convert.ToDecimal(erpSalesReturnNotice.Id); |
| | | var MesSalesReturnNotice = new SalesReturnNotice(); |
| | | |
| | | var single = base.GetSingle(it => it.Id == eid); |
| | | if (single != null) MesSalesReturnNotice.Id = single.Id; |
| | | |
| | | MesSalesReturnNotice.ErpId = erpSalesReturnNotice.erpID; |
| | | MesSalesReturnNotice.BillType = erpSalesReturnNotice.fBillTypeID; |
| | | MesSalesReturnNotice.BillNo = erpSalesReturnNotice.fBillNo; |
| | | |
| | | if (erpSalesReturnNotice.fDate != null) |
| | | MesSalesReturnNotice.FDate = DateTime.ParseExact(erpSalesReturnNotice.fDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.Currency = erpSalesReturnNotice.fSettleCurrld; |
| | | MesSalesReturnNotice.SalesDept = erpSalesReturnNotice.fSaleDeptId; |
| | | MesSalesReturnNotice.ReturnCustomer = erpSalesReturnNotice.fRetcustId; |
| | | MesSalesReturnNotice.ReturnReason = erpSalesReturnNotice.fRetcustReason; |
| | | MesSalesReturnNotice.DeliveryLocation = erpSalesReturnNotice.fHeadLocId; |
| | | MesSalesReturnNotice.InventoryDept = erpSalesReturnNotice.fRetDeptId; |
| | | MesSalesReturnNotice.InventoryGroup = erpSalesReturnNotice.fStockerGroupId; |
| | | MesSalesReturnNotice.WarehouseManager = erpSalesReturnNotice.fStockerId; |
| | | MesSalesReturnNotice.SalesGroup = erpSalesReturnNotice.fSaleGroupId; |
| | | MesSalesReturnNotice.SalesPerson = erpSalesReturnNotice.fSalesManId; |
| | | MesSalesReturnNotice.Receiver = erpSalesReturnNotice.fReceiveCusId; |
| | | MesSalesReturnNotice.ReceiverContact = erpSalesReturnNotice.fReceiveCusContact; |
| | | MesSalesReturnNotice.ReceiverAddress = erpSalesReturnNotice.fReceiveAddress; |
| | | MesSalesReturnNotice.ReceiverName = erpSalesReturnNotice.fLinkMan; |
| | | MesSalesReturnNotice.SettleParty = erpSalesReturnNotice.fSettleCusId; |
| | | MesSalesReturnNotice.CreatedBy = erpSalesReturnNotice.fCreatorId; |
| | | |
| | | if (erpSalesReturnNotice.fCreateDate != null) |
| | | MesSalesReturnNotice.CreatedDate = DateTime.ParseExact(erpSalesReturnNotice.fCreateDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.ModifiedBy = erpSalesReturnNotice.fModifierId; |
| | | |
| | | if (erpSalesReturnNotice.fModifyDate != null) |
| | | MesSalesReturnNotice.ModifiedDate = DateTime.ParseExact(erpSalesReturnNotice.fModifyDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.ClosedBy = erpSalesReturnNotice.fCloserId; |
| | | MesSalesReturnNotice.CloseReason = erpSalesReturnNotice.fCloseReason; |
| | | |
| | | if (erpSalesReturnNotice.fCloseDate != null) |
| | | MesSalesReturnNotice.CloseDate = DateTime.ParseExact(erpSalesReturnNotice.fCloseDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.ApprovedBy = erpSalesReturnNotice.fApproverId; |
| | | |
| | | if (erpSalesReturnNotice.fApproveDate != null) |
| | | MesSalesReturnNotice.ApprovedDate = DateTime.ParseExact(erpSalesReturnNotice.fApproveDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.CancelStatus = erpSalesReturnNotice.fCancelStatus; |
| | | MesSalesReturnNotice.CancelledBy = erpSalesReturnNotice.fCancellerId; |
| | | |
| | | if (erpSalesReturnNotice.fCancelDate != null) |
| | | MesSalesReturnNotice.CancelDate = DateTime.ParseExact(erpSalesReturnNotice.fCancelDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesReturnNotice.CloseStatus = erpSalesReturnNotice.fBillCloseStatus; |
| | | MesSalesReturnNotice.BillStatus = erpSalesReturnNotice.fDocumentStatus; |
| | | |
| | | return MesSalesReturnNotice; |
| | | } |
| | | |
| | | // 将 ErpSalesReturnNoticeDetail 对象转换为 SalesReturnNoticeDetail 对象的方法 |
| | | public List<SalesReturnNoticeDetail> GetErpSalesOrderDetail( |
| | | List<ErpSalesReturnNoticeDetail> erpSalesReturnNoticeDetails, string type) |
| | | { |
| | | return erpSalesReturnNoticeDetails.Select(s => |
| | | { |
| | | var entity = new SalesReturnNoticeDetail |
| | | { |
| | | Id = Convert.ToDecimal(s.Id), |
| | | ErpLineId = s.erpID, |
| | | ErpHeadId =s.ehid, |
| | | MaterialId = s.fMaterialId, |
| | | MaterialName = s.fMaterialName, |
| | | MaterialSpecification = s.fMaterialModel, |
| | | SalesUnitId = s.fUnitID, |
| | | SalesQuantity = Convert.ToDecimal(s.fQty), |
| | | IsFree = s.fIsFree, |
| | | ReturnDate = s.fDeliverydate != null ? DateTime.ParseExact(s.fDeliverydate, "yyyy-MM-dd HH:mm:ss", null) : null, |
| | | WareHouse = s.fStockId, |
| | | PlanTrackingNumber = s.fMtoNo, |
| | | LotNumber = s.fLot, |
| | | Note = s.fEntryDescription, |
| | | ReturnType = s.fRmType, |
| | | InventoryUnit = s.fStockUnitID, |
| | | InventoryQuantity = Convert.ToDecimal(s.fStockQty), |
| | | MaterialCategory = s.fMaterialType, |
| | | OwnerTypeId = s.fOwnerTypeID, |
| | | OwnerId = s.fOwnerId, |
| | | SourceBillType = s.fSrcType, |
| | | SourceBillNo = s.fSrcBillNo, |
| | | OrderBillNo = s.fOrderNo, |
| | | |
| | | }; |
| | | |
| | | var single = salesReturnNoticeDetailManager.GetSingle(it => |
| | | it.Id == entity.Id); |
| | | if (single != null) entity.Id = single.Id; |
| | | |
| | | return entity; |
| | | }).ToList(); |
| | | } |
| | | |
| | | } |