From bf780b6c83012b5beb3d7515b8fb61753c5fb736 Mon Sep 17 00:00:00 2001
From: sjz <1240968267@qq.com>
Date: 星期四, 26 六月 2025 08:48:37 +0800
Subject: [PATCH] 采购承诺交期改string类型

---
 MES.Service/service/BasicData/SalesReturnNoticeManager.cs |  179 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 179 insertions(+), 0 deletions(-)

diff --git a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
index 206f0ea..c8395f6 100644
--- a/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
+++ b/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
@@ -1,4 +1,5 @@
 锘縰sing MES.Service.DB;
+using MES.Service.Dto.webApi;
 using MES.Service.Modes;
 using SqlSugar;
 
@@ -75,4 +76,182 @@
     }
 
     #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();
+    }
+
 }
\ No newline at end of file

--
Gitblit v1.9.3