¶Ô±ÈÐÂÎļþ |
| | |
| | | using MES.Service.DB; |
| | | using MES.Service.Dto.webApi; |
| | | using MES.Service.Modes; |
| | | using SqlSugar; |
| | | using System.Globalization; |
| | | using System.Security.Cryptography; |
| | | |
| | | namespace MES.Service.service.BasicData; |
| | | |
| | | public class SalesOrderManager : Repository<SalesOrder> |
| | | { |
| | | //å½å类已ç»ç»§æ¿äº Repository å¢ãå ãæ¥ãæ¹çæ¹æ³ |
| | | |
| | | //è¿éé¢åç代ç ä¸ä¼ç»è¦ç,妿è¦éæ°çæè¯·å é¤ SalesOrderManager.cs |
| | | //å½å类已ç»ç»§æ¿äº Repository å¢ãå ãæ¥ãæ¹çæ¹æ³ |
| | | |
| | | |
| | | private readonly SalesOrderDetailManager _SalesOrderDetailManager = |
| | | new(); |
| | | |
| | | //private Guid Tid = Guid.Empty; |
| | | |
| | | //ErpSalesOrder |
| | | public bool Save(ErpSalesOrder SalesOrder) |
| | | { |
| | | var erpSalesOrderDto = SalesOrder.OrderDto; |
| | | var mesSalesOrder = ConvertErpToSalesOrder(SalesOrder.OrderDto); |
| | | var mesSalesOrderDatas = ConvertErpToSalesOrderDetail(mesSalesOrder, SalesOrder.Items); |
| | | |
| | | return UseTransaction(db => |
| | | { |
| | | switch (erpSalesOrderDto.Type) |
| | | { |
| | | // case "2": |
| | | // return InsertData(db, mesSalesOrder, mesSalesOrderDatas, |
| | | // rohInErpRohIn.FBILLTYPE) |
| | | // ? 1 |
| | | // : 0; |
| | | case "3": |
| | | return UpdateData(db, mesSalesOrder, mesSalesOrderDatas) ? 1 : 0; |
| | | case "2": |
| | | case "4": |
| | | case "5": |
| | | return SaveOrUpdateData(db, mesSalesOrder, mesSalesOrderDatas, erpSalesOrderDto.Type) |
| | | ? 1 |
| | | : 0; |
| | | default: |
| | | throw new NotImplementedException( |
| | | $"type没æ{erpSalesOrderDto.Type}è¿ä¸ªç±»å"); |
| | | } |
| | | }) > 0; |
| | | } |
| | | |
| | | private bool UpdateData(SqlSugarScope db, SalesOrder mesSalesOrder, |
| | | List<SalesOrderDetail> mesSalesOrderDatas) |
| | | { |
| | | int update = 0; |
| | | int insertOrUpdate = 0; |
| | | |
| | | if (mesSalesOrder.ErpID != null) |
| | | { |
| | | update = db.Deleteable<SalesOrder>() |
| | | .Where(s => s.ErpID == mesSalesOrder.ErpID) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | if (mesSalesOrderDatas.Count > 0 && mesSalesOrder.ErpID != null) |
| | | { |
| | | insertOrUpdate = db.Deleteable<SalesOrderDetail>() |
| | | .Where(s => s.EHID == mesSalesOrder.ErpID) |
| | | .ExecuteCommand(); |
| | | } |
| | | |
| | | // ä¿®æ£é»è¾å¤æï¼å° int ç±»åä¸ bool ç±»åæ¯è¾æ¹ä¸ºå®é
å¼å¤æ |
| | | if (update > 0 && insertOrUpdate > 0) |
| | | { |
| | | return true; |
| | | } |
| | | |
| | | throw new NotImplementedException("æ´æ°å¤±è´¥"); |
| | | } |
| | | |
| | | // æå
¥ææ´æ°æ°æ®çæ¹æ³ |
| | | private bool SaveOrUpdateData(SqlSugarScope db, SalesOrder mesSalesOrder, |
| | | List<SalesOrderDetail> mesSalesOrderDatas, string type) |
| | | { |
| | | //if (mesSalesOrder.Id != null) base.DeleteById(mesSalesOrder.Id); |
| | | |
| | | if (mesSalesOrder.ErpID != null) |
| | | db.Deleteable<SalesOrder>() |
| | | .Where(s => s.ErpID == mesSalesOrder.ErpID).ExecuteCommand(); |
| | | |
| | | if (mesSalesOrderDatas.Count > 0) |
| | | db.Deleteable<SalesOrderDetail>() |
| | | .Where(s => s.EHID == mesSalesOrder.ErpID).ExecuteCommand(); |
| | | |
| | | //var orUpdate = base.Insert(mesSalesOrder); |
| | | //var baOrUpdate = _SalesOrderDetailManager.InsertRange(mesSalesOrderDatas); |
| | | |
| | | |
| | | var orUpdate = db.Insertable(mesSalesOrder) |
| | | .IgnoreColumns(true).ExecuteCommand() > 0; |
| | | |
| | | |
| | | var baOrUpdate = db.Insertable(mesSalesOrderDatas).PageSize(1) |
| | | .IgnoreColumnsNull() |
| | | .ExecuteCommand() > 0; |
| | | if (orUpdate && baOrUpdate) return true; |
| | | |
| | | throw new NotImplementedException("æå
¥ææ´æ°å¤±è´¥"); |
| | | } |
| | | |
| | | // æ¹éä¿åè®°å½çæ¹æ³ |
| | | public bool SaveList(List<ErpSalesOrder> salesOrder) |
| | | { |
| | | var result = salesOrder.Select(Save).ToList(); |
| | | return result.All(b => b); |
| | | } |
| | | |
| | | private SalesOrder ConvertErpToSalesOrder( |
| | | ErpSalesOrderDto erpDto) |
| | | { |
| | | DateTime parsedDate; |
| | | |
| | | // æ¶é´æ ¼å¼è½¬æ¢å½æ°ï¼ERPæ¶é´æ ¼å¼ä¸º "yyyy-MM-dd HH:mm:ss" |
| | | DateTime? ParseDateTime(string dateStr) |
| | | { |
| | | if (DateTime.TryParseExact(dateStr, "yyyy-MM-dd HH:mm:ss", |
| | | CultureInfo.InvariantCulture, |
| | | DateTimeStyles.None, |
| | | out parsedDate)) |
| | | return parsedDate; |
| | | |
| | | return null; // å¦æè½¬æ¢å¤±è´¥ï¼è¿ånull |
| | | } |
| | | |
| | | var salesOrder = new SalesOrder |
| | | { |
| | | Id = Guid.NewGuid(), |
| | | BillNo = erpDto.FBillNo, |
| | | ErpID = Convert.ToDecimal(erpDto.ErpID), |
| | | FDate = ParseDateTime(erpDto.FDate) ?? null, |
| | | BillTypeId = erpDto.FBillTypeID, // åæ®ç±»å |
| | | DocumentStatus = erpDto.FDocumentStatus, // åæ®ç¶æ |
| | | BusinessType = erpDto.FBusinessType, // ä¸å¡ç±»å |
| | | HeadDeliveryWay = erpDto.FHeadDeliveryWay, // 交货æ¹å¼ |
| | | HeadLocId = erpDto.FHEADLOCID, // 交货å°ç¹ |
| | | SaleOrgId = erpDto.FSaleOrgId, |
| | | //UnWTextKhdd = erpDto.F_UNW_Text_KHDD, // 客æ·è®¢å |
| | | //UnWDateKhxq = ParseDateTime(erpDto.F_UNW_Date_KHXQ) ?? null, // 客æ·éæ±äº¤æ |
| | | //UnWBasePropertyKhdj = erpDto.F_UNW_BaseProperty_KHDJ, // 客æ·ç级 |
| | | CustId = erpDto.FCustId, // å®¢æ· |
| | | //UnWLargetextTbkhbz = erpDto.F_UNW_LargeText_TBKHBZ, // æ·å®å®¢æ·å¤æ³¨ |
| | | CloseStatus = erpDto.FCloseStatus, // å
³éç¶æ |
| | | SaleDeptId = erpDto.FSaleDeptId, // éå®é¨é¨ |
| | | SalerId = erpDto.FSalerId, // éå®å |
| | | ChangeReason = erpDto.FChangeReason, // åæ´åå |
| | | Note = erpDto.FNote, // 夿³¨ |
| | | //UnWRemarksKhjHdd = erpDto.F_UNW_Remarks_KHJHDD, // 客æ·äº¤è´§å°ç¹ |
| | | ///ReceiveId = erpDto.FReceiveId,//æ¶è´§æ¹ |
| | | ///ReceiveContact = erpDto.FReceiveContact,//æ¶è´§æ¹è系人 |
| | | ///SettleId = erpDto.FSettleId, // ç»ç®æ¹ |
| | | ApproverId = erpDto.FApproverId, // å®¡æ ¸äºº |
| | | ///LinkMan = erpDto.FLinkMan, // æ¶è´§äººå§å |
| | | ///ChargeId = erpDto.FChargeId, // 仿¬¾æ¹ |
| | | ///LinkPhone = erpDto.FLinkPhone, // èç³»çµè¯ |
| | | CreatorId = erpDto.FCreatorId, // å建人 |
| | | //CreateDate = ParseDateTime(erpDto.FCreateDate) ?? null, // åå»ºæ¥æ |
| | | CreateDate = DateTime.TryParse(erpDto.FCreateDate, out var conveyDate) |
| | | ? (conveyDate <= new DateTime(1900, 1, 1) ? null : conveyDate) |
| | | : null, // åå»ºæ¥æ |
| | | ModifierId = erpDto.FModifierId, // æåä¿®æ¹äºº |
| | | ModifyDate = ParseDateTime(erpDto.FModifyDate) ?? null, // æåä¿®æ¹æ¥æ |
| | | ApproveDate = ParseDateTime(erpDto.FApproveDate) ?? null, // å®¡æ ¸æ¥æ |
| | | CloserId = erpDto.FCloserId, // å
³é人 |
| | | //CloseDate = ParseDateTime(erpDto.FCloseDate) ?? null, // å
³éæ¥æ |
| | | //ChangeDate = ParseDateTime(erpDto.FChangeDate) ?? null, // åæ´æ¥æ |
| | | ChangeDate = DateTime.TryParse(erpDto.FChangeDate, out var ChangeDate) |
| | | ? (ChangeDate <= new DateTime(1900, 1, 1) ? null : ChangeDate) |
| | | : null, // åæ´æ¥æ |
| | | CancelStatus = erpDto.FCancelStatus, // ä½åºç¶æ |
| | | CancellerId = erpDto.FCancellerId, // ä½åºäºº |
| | | VersionNo = Convert.ToDouble(erpDto.FVersionNo), // çæ¬å· |
| | | ChangerId = erpDto.FChangerId, // åæ´äºº |
| | | SynchronousDate = DateTime.Now |
| | | //EntryNote = erpDto.FEntryNote // 夿³¨ |
| | | //ParseDateTime() ?? null |
| | | //long.Parse() |
| | | //Convert.ToDecimal() |
| | | //Convert.ToDouble() |
| | | }; |
| | | |
| | | if (!string.IsNullOrEmpty(salesOrder.CloserId)) |
| | | salesOrder.CloseDate = string.IsNullOrEmpty(erpDto.FCloseDate) |
| | | ? (DateTime?)null |
| | | : DateTime.ParseExact(erpDto.FCloseDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); |
| | | |
| | | var single = base.GetSingle(it => it.ErpID == Convert.ToDecimal(erpDto.ErpID)); |
| | | if (single != null) salesOrder.Id = single.Id; |
| | | |
| | | return salesOrder; |
| | | } |
| | | |
| | | private List<SalesOrderDetail> ConvertErpToSalesOrderDetail( |
| | | SalesOrder salesOrder, |
| | | List<ErpSalesOrderDetailDto> erpDtoList) |
| | | { |
| | | var salesOrderSubList = |
| | | new List<SalesOrderDetail>(); |
| | | |
| | | foreach (var erpDto in erpDtoList) |
| | | { |
| | | var salesOrderSub = new SalesOrderDetail |
| | | { |
| | | Pid = salesOrder.Id, |
| | | ErpID = Convert.ToDecimal(erpDto.ErpID), |
| | | EHID = Convert.ToDecimal(erpDto.EHID), |
| | | MaterialId = erpDto.FMaterialId, |
| | | MapId = erpDto.FMapId, |
| | | MapName = erpDto.FMapName, |
| | | MapSpec = erpDto.FMapSpec, |
| | | Seq = Convert.ToInt32(erpDto.Seq), |
| | | UnitId = erpDto.FUnitID, |
| | | Qty = Convert.ToDecimal(erpDto.FQty), |
| | | PriceUnitId = erpDto.FPriceUnitId, |
| | | PriceUnitQty = Convert.ToDecimal(erpDto.FPriceUnitQty), |
| | | DeliveryDate = Convert.ToDateTime(erpDto.FDeliveryDate), |
| | | IsFree = erpDto.FIsFree, |
| | | SupplyOrgId = erpDto.FSupplyOrgId, |
| | | StockOrgId = erpDto.FStockOrgId, |
| | | SettleOrgIds = erpDto.FSettleOrgIds, |
| | | //SalesOrderNo = erpDto.F_UNW_Text_xsddh, |
| | | //SalesFollowUp = erpDto.F_UNW_Base_GDY, |
| | | OwnerTypeId = erpDto.FOwnerTypeId, |
| | | OwnerId = erpDto.FOwnerId, |
| | | EntryNote = erpDto.FEntryNote, |
| | | MtoNo = erpDto.FMtoNo, |
| | | Lot = erpDto.FLot, |
| | | DeliveryMaxQty = Convert.ToDecimal(erpDto.FDeliveryMaxQty), |
| | | DeliveryMinQty = Convert.ToDecimal(erpDto.FDeliveryMinQty), |
| | | OutLmtUnitId = erpDto.FOutLmtUnitID, |
| | | MrpCloseStatus = erpDto.FMrpCloseStatus, |
| | | MrpTerminateStatus = erpDto.FMrpTerminateStatus, |
| | | //TerminateDate = Convert.ToDateTime(erpDto.FTerminateDate), |
| | | TerminaterId = erpDto.FTerminatorId, |
| | | SrcType = erpDto.FSrcType, |
| | | SrcBillNo = erpDto.FSrcBillNo, |
| | | DeliQty = Convert.ToDecimal(erpDto.FDeliQty), |
| | | StockOutQty = Convert.ToDecimal(erpDto.FStockOutQty), |
| | | BaseRetNoticeQty = Convert.ToDecimal(erpDto.FBaseRetNoticeQty), |
| | | BaseReturnQty = Convert.ToDecimal(erpDto.FBaseReturnQty), |
| | | BaseRemainOutQty = Convert.ToDecimal(erpDto.FBaseRemainOutQty), |
| | | BASEARQTY = Convert.ToDecimal(erpDto.FBASEARQTY), |
| | | |
| | | }; |
| | | |
| | | if (!string.IsNullOrEmpty(salesOrderSub.TerminaterId)) |
| | | salesOrderSub.TerminateDate = string.IsNullOrEmpty(erpDto.FTerminateDate) |
| | | ? (DateTime?)null |
| | | : DateTime.ParseExact(erpDto.FTerminateDate, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture); |
| | | |
| | | var single = _SalesOrderDetailManager.GetSingle(it => |
| | | it.ErpID == Convert.ToDecimal(salesOrderSub.ErpID)); |
| | | if (single != null) salesOrderSub.Id = single.Id; |
| | | |
| | | salesOrderSubList.Add(salesOrderSub); |
| | | } |
| | | |
| | | return salesOrderSubList; |
| | | } |
| | | |
| | | #region æå¦æ¹æ³ |
| | | |
| | | /// <summary> |
| | | /// ä»å¨æ¹æ³æ»¡è¶³ä¸äºå¤æä¸å¡éæ±ï¼ä¸å¡ä»£ç 请å¨è¿éé¢å®ä¹æ¹æ³ |
| | | /// </summary> |
| | | public void Study() |
| | | { |
| | | /*********æ¥è¯¢*********/ |
| | | |
| | | var data1 = base.GetById(1); //æ ¹æ®IDæ¥è¯¢ |
| | | var data2 = base.GetList(); //æ¥è¯¢ææ |
| | | var data3 = base.GetList(it => 1 == 1); //æ ¹æ®æ¡ä»¶æ¥è¯¢ |
| | | //var data4 = base.GetSingle(it => 1 == 1);//æ ¹æ®æ¡ä»¶æ¥è¯¢ä¸æ¡,妿è¶
è¿ä¸æ¡ä¼æ¥é |
| | | |
| | | var p = new PageModel { PageIndex = 1, PageSize = 2 }; // å页æ¥è¯¢ |
| | | var data5 = base.GetPageList(it => 1 == 1, p); |
| | | Console.Write(p.TotalCount); //è¿åæ»æ° |
| | | |
| | | var data6 = |
| | | base.GetPageList(it => 1 == 1, p, |
| | | it => SqlFunc.GetRandom()); // å页æ¥è¯¢å æåº |
| | | Console.Write(p.TotalCount); //è¿åæ»æ° |
| | | |
| | | var conModels = new List<IConditionalModel>(); //ç»è£
æ¡ä»¶æ¥è¯¢ä½ä¸ºæ¡ä»¶å®ç° å页æ¥è¯¢å æåº |
| | | conModels.Add(new ConditionalModel |
| | | { |
| | | FieldName = typeof(SalesOrder).GetProperties()[0].Name, |
| | | ConditionalType = ConditionalType.Equal, |
| | | FieldValue = "1" |
| | | }); //id=1 |
| | | var data7 = base.GetPageList(conModels, p, it => SqlFunc.GetRandom()); |
| | | |
| | | AsQueryable().Where(x => 1 == 1) |
| | | .ToList(); //æ¯æäºè½¬æ¢æqueryable,æä»¬å¯ä»¥ç¨queryableå®ç°å¤æåè½ |
| | | |
| | | |
| | | /*********æå
¥*********/ |
| | | var insertData = new SalesOrder(); //æµè¯åæ° |
| | | var insertArray = new[] { insertData }; |
| | | base.Insert(insertData); //æå
¥ |
| | | base.InsertRange(insertArray); //æ¹éæå
¥ |
| | | var id = base.InsertReturnIdentity(insertData); //æå
¥è¿åèªå¢å |
| | | AsInsertable(insertData).ExecuteCommand(); //æä»¬å¯ä»¥è½¬æ Insertableå®ç°å¤ææå
¥ |
| | | |
| | | |
| | | /*********æ´æ°*********/ |
| | | var updateData = new SalesOrder(); //æµè¯åæ° |
| | | var updateArray = new[] { updateData }; //æµè¯åæ° |
| | | base.Update(updateData); //æ ¹æ®å®ä½æ´æ° |
| | | base.UpdateRange(updateArray); //æ¹éæ´æ° |
| | | //base.Update(it => new SalesOrder() { ClassName = "a", CreateTime = DateTime.Now }, it => it.id==1);// åªæ´æ°ClassNameååCreateTimeåï¼å
¶å®å䏿´æ°ï¼æ¡ä»¶id=1 |
| | | AsUpdateable(updateData).ExecuteCommand(); //转æUpdateableå¯ä»¥å®ç°å¤æçæå
¥ |
| | | |
| | | |
| | | /*********å é¤*********/ |
| | | var deldata = new SalesOrder(); //æµè¯åæ° |
| | | base.Delete(deldata); //æ ¹æ®å®ä½å é¤ |
| | | base.DeleteById(1); //æ ¹æ®ä¸»é®å é¤ |
| | | base.DeleteById(new[] { 1, 2 }); //æ ¹æ®ä¸»é®æ°ç»å é¤ |
| | | base.Delete(it => 1 == 2); //æ ¹æ®æ¡ä»¶å é¤ |
| | | AsDeleteable().Where(it => 1 == 2) |
| | | .ExecuteCommand(); //转æDeleteableå®ç°å¤æçæä½ |
| | | } |
| | | |
| | | #endregion |
| | | } |