| | |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | |
| | |
| | | conModels.Add(new ConditionalModel |
| | | { |
| | | FieldName = typeof(SalesOrder).GetProperties()[0].Name, |
| | | ConditionalType = ConditionalType.Equal, FieldValue = "1" |
| | | ConditionalType = ConditionalType.Equal, |
| | | FieldValue = "1" |
| | | }); //id=1 |
| | | var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom()); |
| | | |
| | |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | |
| | | private readonly SalesOrderDetailManager salesOrderDetailManager = new(); |
| | | |
| | | // Save 方法用于保存单个 销售订单(SalesOrder) 记录,根据类型执行不同的操作 |
| | | public bool Save(SalesOrders salesOrders) |
| | | { |
| | | var salesOrdersErpSalesOrder = salesOrders.ErpSalesOrder; |
| | | var mesSalesOrders = GetMesSalesOrder(salesOrdersErpSalesOrder); |
| | | var mesSalesOrderDetail = GetErpSalesOrderDetail(salesOrders.ErpSalesOrderDetails,salesOrdersErpSalesOrder.Type); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | switch (salesOrdersErpSalesOrder.Type) |
| | | { |
| | | case "3": |
| | | return UpdateData(db, mesSalesOrders, mesSalesOrderDetail) ? 1 : 0; |
| | | case "2": |
| | | case "4": |
| | | case "5": |
| | | case "B": |
| | | return SaveOrUpdateData(db, mesSalesOrders, mesSalesOrderDetail) |
| | | ? 1 |
| | | : 0; |
| | | default: |
| | | throw new NotImplementedException( |
| | | $"type没有{salesOrdersErpSalesOrder.Type}这个类型"); |
| | | } |
| | | }) > 0; |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | // 更新数据的方法(单纯的删除) |
| | | private bool UpdateData(SqlSugarScope db, SalesOrder salesOrder, |
| | | List<SalesOrderDetail> salesOrderDetails) |
| | | { |
| | | var decimals = salesOrderDetails.Select(s => s.Id).ToArray(); |
| | | var update = base.DeleteById(salesOrder.Id); |
| | | var insertOrUpdate = db |
| | | .Deleteable<SalesOrderDetail>().In(decimals) |
| | | .ExecuteCommand() > 0; |
| | | |
| | | if (update && insertOrUpdate) return true; |
| | | throw new NotImplementedException("删除失败"); |
| | | } |
| | | |
| | | // 插入或更新数据的方法 |
| | | private bool SaveOrUpdateData(SqlSugarScope db, SalesOrder salesOrder, |
| | | List<SalesOrderDetail> salesOrderDetails) |
| | | { |
| | | if (salesOrder.Id != null) base.DeleteById(salesOrder.Id); |
| | | |
| | | if (salesOrderDetails.Count > 0) |
| | | db.Deleteable<SalesOrderDetail>() |
| | | .Where(s => s.ErpId == salesOrder.Id).ExecuteCommand(); |
| | | |
| | | var orUpdate = base.Insert(salesOrder); |
| | | var baOrUpdate = salesOrderDetailManager.InsertRange(salesOrderDetails); |
| | | if (orUpdate && baOrUpdate) return true; |
| | | throw new NotImplementedException("插入或更新失败"); |
| | | } |
| | | |
| | | // 批量保存记录的方法 |
| | | public bool SaveList(List<SalesOrders> salesOrders) |
| | | { |
| | | var result = salesOrders.Select(Save).ToList(); |
| | | return result.All(b => b); |
| | | } |
| | | |
| | | |
| | | // 将 ErpSalesOrder 对象转换为 SalesOrder 对象的方法 |
| | | public SalesOrder GetMesSalesOrder(ErpSalesOrder erpSalesOrder) |
| | | { |
| | | |
| | | var eid = Convert.ToDecimal(erpSalesOrder.Id); |
| | | var MesSalesOrder = new SalesOrder(); |
| | | |
| | | var single = base.GetSingle(it => it.Id == eid); |
| | | if (single != null) MesSalesOrder.Id = single.Id; |
| | | |
| | | MesSalesOrder.ErpId = Convert.ToDecimal(erpSalesOrder.ErpID); |
| | | MesSalesOrder.BillNo = erpSalesOrder.FBillNo; |
| | | MesSalesOrder.BillTypeId = erpSalesOrder.FBillTypeID; |
| | | MesSalesOrder.DocumentStatus = erpSalesOrder.FDocumentStatus; |
| | | |
| | | if (erpSalesOrder.FDate != null) |
| | | MesSalesOrder.FDate = DateTime.ParseExact(erpSalesOrder.FDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesOrder.BusinessType = erpSalesOrder.FBusinessType; |
| | | MesSalesOrder.HeadDeliveryWay = erpSalesOrder.FHeadDeliveryWay; |
| | | MesSalesOrder.CloseStatus = erpSalesOrder.FCloseStatus; |
| | | MesSalesOrder.HeadLocId = erpSalesOrder.FHEADLOCID; |
| | | MesSalesOrder.CustId = erpSalesOrder.FCustId; |
| | | MesSalesOrder.CloseStatus = erpSalesOrder.FCloseStatus; |
| | | MesSalesOrder.SaleDeptId = erpSalesOrder.FSaleDeptId; |
| | | MesSalesOrder.SalerId = erpSalesOrder.FSalerId; |
| | | MesSalesOrder.ChangeReason = erpSalesOrder.FChangeReason; |
| | | MesSalesOrder.Note = erpSalesOrder.FNote; |
| | | MesSalesOrder.SettleId = erpSalesOrder.FSettleId; |
| | | MesSalesOrder.LinkMan = erpSalesOrder.FLinkMan; |
| | | MesSalesOrder.ChargeId = erpSalesOrder.FChargeId; |
| | | MesSalesOrder.LinkPhone = erpSalesOrder.FLinkPhone; |
| | | MesSalesOrder.CreatorId = erpSalesOrder.FCreatorId; |
| | | |
| | | if (erpSalesOrder.FCreateDate != null) |
| | | MesSalesOrder.CreateDate = DateTime.ParseExact(erpSalesOrder.FCreateDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesOrder.ModifierId = erpSalesOrder.FModifierId; |
| | | |
| | | if (erpSalesOrder.FModifyDate != null) |
| | | MesSalesOrder.ModifyDate = DateTime.ParseExact(erpSalesOrder.FModifyDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | if (erpSalesOrder.FApproveDate != null) |
| | | MesSalesOrder.ApproveDate = DateTime.ParseExact(erpSalesOrder.FApproveDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesOrder.CloserId = erpSalesOrder.FCloserId; |
| | | |
| | | if (erpSalesOrder.FCloseDate != null) |
| | | MesSalesOrder.CloseDate = DateTime.ParseExact(erpSalesOrder.FCloseDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | if (erpSalesOrder.FChangeDate != null) |
| | | MesSalesOrder.ChangeDate = DateTime.ParseExact(erpSalesOrder.FChangeDate, "yyyy-MM-dd HH:mm:ss", null); |
| | | |
| | | MesSalesOrder.CancelStatus = erpSalesOrder.FCancelStatus; |
| | | MesSalesOrder.CancellerId = erpSalesOrder.FCancellerId; |
| | | MesSalesOrder.VersionNo = Convert.ToDecimal(erpSalesOrder.FVersionNo); |
| | | MesSalesOrder.ChangerId = erpSalesOrder.FChangerId; |
| | | MesSalesOrder.EntryNote = erpSalesOrder.FEntryNote; |
| | | |
| | | return MesSalesOrder; |
| | | } |
| | | |
| | | // 将 ErpSalesOrderDetail 对象转换为 SalesOrderDetail 对象的方法 |
| | | public List<SalesOrderDetail> GetErpSalesOrderDetail( |
| | | List<ErpSalesOrderDetail> erpSalesOrderDetails, string type) |
| | | { |
| | | return erpSalesOrderDetails.Select(s => |
| | | { |
| | | var entity = new SalesOrderDetail |
| | | { |
| | | Id = Convert.ToDecimal(s.Id), |
| | | ErpId = Convert.ToDecimal(s.ErpID), |
| | | EHid = Convert.ToDecimal(s.EHID), |
| | | MaterialIDd = s.FMaterialId, |
| | | UnitId = s.FUnitID, |
| | | Qty = Convert.ToDecimal(s.FQty), |
| | | PriceUnitId = s.FPriceUnitId, |
| | | PriceUnitQty = Convert.ToDecimal(s.FPriceUnitQty), |
| | | DeliveryDate = s.FDeliveryDate != null ? DateTime.ParseExact(s.FDeliveryDate, "yyyy-MM-dd HH:mm:ss", null) : null, |
| | | IsFree = s.FIsFree, |
| | | OwnerTypeId = s.FOwnerTypeId, |
| | | OwnerId = s.FOwnerId, |
| | | EntryNote = s.FEntryNote, |
| | | MtoNo = s.FMtoNo, |
| | | Lot = s.FLot, |
| | | DeliveryMaxQty = Convert.ToDecimal(s.FDeliveryMaxQty), |
| | | DeliveryMinQty = Convert.ToDecimal(s.FDeliveryMinQty), |
| | | OutLmtUnitId = s.FOutLmtUnitID, |
| | | MrpCloseStatus = s.FMrpCloseStatus, |
| | | MrpTerminateStatus = s.FMrpTerminateStatus, |
| | | TerminateDate = s.FTerminateDate != null ? DateTime.ParseExact(s.FTerminateDate, "yyyy-MM-dd HH:mm:ss", null) : null, |
| | | TerminaterId = s.FTerminaterId, |
| | | SrcType = s.FSrcType, |
| | | SrcBillNo = s.FSrcBillNo, |
| | | DeliQty = Convert.ToDecimal(s.FDeliQty), |
| | | StockOutQty = Convert.ToDecimal(s.FStockOutQty), |
| | | BaseRetNoticeQty = Convert.ToDecimal(s.FBaseRetNoticeQty), |
| | | BaseReturnQty = Convert.ToDecimal(s.FBaseReturnQty), |
| | | BaseRemainOutQty = Convert.ToDecimal(s.FBaseRemainOutQty), |
| | | BaseArQty = Convert.ToDecimal(s.FBASEARQTY), |
| | | |
| | | |
| | | |
| | | }; |
| | | |
| | | var single = salesOrderDetailManager.GetSingle(it => |
| | | it.Id == entity.Id); |
| | | if (single != null) entity.Id = single.Id; |
| | | |
| | | return entity; |
| | | }).ToList(); |
| | | } |
| | | } |