From a27f32ecbfc7390ceb9e3a8d8651c57ada88bfa0 Mon Sep 17 00:00:00 2001
From: zjh <2207896513@qq.com>
Date: 星期五, 19 十二月 2025 20:51:42 +0800
Subject: [PATCH] Merge branch 'master' of http://43.142.96.171:8080/r/~tjx/XB_MES_API
---
StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs | 222 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 220 insertions(+), 2 deletions(-)
diff --git a/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs b/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
index 90ef3df..053cfcc 100644
--- a/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
+++ b/StandardPda/MES.Service/service/BasicData/SalesReturnNoticeManager.cs
@@ -1,5 +1,8 @@
-锘縰sing MES.Service.DB;
+锘縰sing System.Globalization;
+using MES.Service.DB;
+using MES.Service.Dto.webApi;
using MES.Service.Modes;
+using SqlSugar;
namespace MES.Service.service.BasicData;
@@ -7,5 +10,220 @@
{
//褰撳墠绫诲凡缁忕户鎵夸簡 Repository 澧炪�佸垹銆佹煡銆佹敼鐨勬柟娉�
- //杩欓噷闈㈠啓鐨勪唬鐮佷笉浼氱粰瑕嗙洊,濡傛灉瑕侀噸鏂扮敓鎴愯鍒犻櫎 SalesReturnNoticeManager.cs
+ private readonly SalesReturnNoticeDetailManager _SalesReturnDetailManager =
+ new();
+
+ //ErpSalesRerurn
+ public bool Save(ErpSalesRerurn SalesReturn)
+ {
+ var erpSalesReturnDto = SalesReturn.OrderDto;
+ var mesSalesReturn = ConvertErpToSalesReturn(SalesReturn.OrderDto);
+ var mesSalesReturnDatas =
+ ConvertErpToSalesReturnDetail(SalesReturn.Items);
+
+ return UseTransaction(db =>
+ {
+ switch (erpSalesReturnDto.Type)
+ {
+ // case "2":
+ // return InsertData(db, mesSalesReturn, mesSalesReturnDatas,
+ // rohInErpRohIn.FBILLTYPE)
+ // ? 1
+ // : 0;
+ case "3":
+ return UpdateData(db, mesSalesReturn, mesSalesReturnDatas)
+ ? 1
+ : 0;
+ case "2":
+ case "4":
+ return SaveOrUpdateData(db, mesSalesReturn,
+ mesSalesReturnDatas, erpSalesReturnDto.Type)
+ ? 1
+ : 0;
+ default:
+ throw new NotImplementedException(
+ $"type娌℃湁{erpSalesReturnDto.Type}杩欎釜绫诲瀷");
+ }
+ }) > 0;
+ }
+
+ private bool UpdateData(SqlSugarScope db, SalesReturnNotice mesSalesReturn,
+ List<SalesReturnNoticeDetail> mesSalesReturnDatas)
+ {
+ var decimals = mesSalesReturnDatas.Select(s => s.Id).ToArray();
+ var update = base.DeleteById(mesSalesReturn.Id);
+ var insertOrUpdate = db
+ .Deleteable<SalesReturnNoticeDetail>().In(decimals)
+ .ExecuteCommand() > 0;
+
+ if (update && insertOrUpdate) return true;
+ throw new NotImplementedException("鏇存柊澶辫触");
+ }
+
+ // 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
+ private bool SaveOrUpdateData(SqlSugarScope db,
+ SalesReturnNotice mesSalesReturn,
+ List<SalesReturnNoticeDetail> mesSalesReturnDatas, string type)
+ {
+ if (mesSalesReturn.Id != null) base.DeleteById(mesSalesReturn.Id);
+
+ if (mesSalesReturnDatas.Count > 0)
+ db.Deleteable<SalesReturnNoticeDetail>()
+ .Where(s => s.ErpHeadId == mesSalesReturn.ErpId)
+ .ExecuteCommand();
+
+ var orUpdate = base.Insert(mesSalesReturn);
+ var baOrUpdate =
+ _SalesReturnDetailManager.InsertRange(mesSalesReturnDatas);
+ if (orUpdate && baOrUpdate) return true;
+
+
+ throw new NotImplementedException("鎻掑叆鎴栨洿鏂板け璐�");
+ }
+
+ // 鎵归噺淇濆瓨璁板綍鐨勬柟娉�
+ public bool SaveList(List<ErpSalesRerurn> salesOrder)
+ {
+ var result = salesOrder.Select(Save).ToList();
+ return result.All(b => b);
+ }
+
+ private SalesReturnNotice ConvertErpToSalesReturn(
+ ErpSalesReturnDto erpDto)
+ {
+ DateTime parsedDate;
+
+ // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "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; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+ }
+
+ var salesOrder = new SalesReturnNotice
+ {
+ BillNo = erpDto.FBillNo,
+ ErpId = erpDto.ErpID,
+ FDate = ParseDateTime(erpDto.FDate) ?? null,
+ BillType = erpDto.FBillTypeID, // 鍗曟嵁绫诲瀷
+ ReturnCustomer = erpDto.FRetcustId, // 閫�璐у鎴�
+ ReturnReason = erpDto.FRetcustReason, // 閫�璐у師鍥�
+ DeliveryLocation = erpDto.FHeadLocId, // 浜よ揣鍦扮偣
+ ReceiverContact = erpDto.FReceiveCusContact, // 鏀惰揣鏂硅仈绯讳汉
+ ReceiverAddress = erpDto.FReceiveAddress, // 鏀惰揣鏂瑰湴鍧�
+ CreatedBy = erpDto.FCreatorId, // 鍒涘缓浜�
+ CreatedDate = ParseDateTime(erpDto.FCreateDate) ?? null, // 鍒涘缓鏃堕棿
+ ApprovedBy = erpDto.FApproverId, // 瀹℃牳浜�
+ ApprovedDate = ParseDateTime(erpDto.FApproveDate) ?? null, // 瀹℃牳鏃ユ湡
+ BillStatus = erpDto.FDocumentStatus, //鍗曟嵁鐘舵��
+ ReturnType = erpDto.ReturnType, // 閫�鍥炵被鍨�
+ TotalQuantity = erpDto.TotalQuantity, // 鎬绘暟閲�
+ SourceDocumentCategory = erpDto.SourceDocumentCategory, // 鏉ユ簮鍗曟嵁绫诲埆
+ SourceDocument = erpDto.SourceDocument, // 婧愬崟鎹�
+ ReplenishmentOrganization =
+ erpDto.ReplenishmentOrganization, // 琛ヨ揣缁勭粐
+ CustomerRequestDate = erpDto.CustomerRequestDate, // 瀹㈡埛瑕佹眰鏃ユ湡
+ ReturnSalesman = erpDto.ReturnSalesman, // 閫�璐ч攢鍞憳
+ ReturnDescription = erpDto.ReturnDescription, // 閫�璐ц鏄�
+ ReturnDepartment = erpDto.ReturnDepartment // 閫�璐ч儴闂�
+ };
+
+ var single = base.GetSingle(it => it.ErpId == erpDto.ErpID);
+ if (single != null) salesOrder.Id = single.Id;
+
+ return salesOrder;
+ }
+
+ private List<SalesReturnNoticeDetail> ConvertErpToSalesReturnDetail(
+ List<ErpSalesReturnDetailDto> erpDtoList)
+
+ {
+ var salesOrderSubList =
+ new List<SalesReturnNoticeDetail>();
+
+ DateTime parsedDate;
+
+ // 鏃堕棿鏍煎紡杞崲鍑芥暟锛孍RP鏃堕棿鏍煎紡涓� "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; // 濡傛灉杞崲澶辫触锛岃繑鍥瀗ull
+ }
+
+
+ foreach (var erpDto in erpDtoList)
+ {
+ var salesOrderSub = new SalesReturnNoticeDetail
+ {
+ ErpLineId = erpDto.ErpID, //ERP琛孖D
+ ErpHeadId = erpDto.EHID, //ERP澶碔D
+ MaterialId = erpDto.FMaterialId, //鐗╂枡缂栧彿
+ //SalesUnitId = erpDto.FUnitID,//閿�鍞崟浣�
+ SalesQuantity = Convert.ToDecimal(erpDto.FQty), //閿�鍞暟閲�
+ //IsFree = erpDto.FIsFree,//鏄惁璧犲搧
+ //ReturnDate = ParseDateTime(erpDto.FDeliverydate),//閫�璐ф棩鏈�
+ Warehouse = erpDto.FStockId, //浠撳簱
+ //PlanTrackingNumber = erpDto.FMtoNo,//璁″垝璺熻釜鍙�
+ LotNumber = erpDto.FLot, //鎵瑰彿
+ Note = erpDto.FEntryDescription, //澶囨敞
+ //ReturnType = erpDto.FRmType,//閫�璐х被鍨�
+ //InventoryUnit = erpDto.FStockUnitID,//搴撳瓨鍗曚綅
+ //InventoryQuantity = Convert.ToDecimal(erpDto.FStockQty),//搴撳瓨鏁伴噺
+ //OwnerTypeId = erpDto.FOwnerTypeID,//璐т富绫诲瀷
+ OwnerId = erpDto.FOwnerId, //璐т富
+ SourceBillType = erpDto.FSrcType,
+ SourceBillNo = erpDto.FSrcBillNo,
+ OrderBillNo = erpDto.FOrderNo,
+ FLineNumber = erpDto.FLineNumber, // 琛屽彿
+ FLineStatus = erpDto.FLineStatus, // 琛岀姸鎬�
+ FRefundCustomer = erpDto.FRefundCustomer, // 閫�娆惧鎴�
+ FSupplier = erpDto.FSupplier, // 渚涘簲鍟�
+ FFreebieType = erpDto.FFreebieType, // 鍏嶈垂鍝佺被鍨�
+ FFreebieReason = erpDto.FFreebieReason, // 鍏嶈垂鍝佸師鍥�
+ FSourceDocLineNo = erpDto.FSourceDocLineNo, // 婧愬ご鍗曟嵁琛屽彿
+ FSourceDocSubLineNo = erpDto.FSourceDocSubLineNo, // 婧愬ご鍗曟嵁瀛愯鍙�
+ FSourceDocType = erpDto.FSourceDocType, // 婧愬ご鍗曟嵁绫诲瀷
+ FOriginalDocLineNo = erpDto.FOriginalDocLineNo, // 鍘熷鍗曟嵁琛屽彿
+ FReplenishOrg = erpDto.FReplenishOrg, // 琛ヨ揣缁勭粐
+ FReceivingOrg = erpDto.FReceivingOrg, // 鏀惰揣缁勭粐
+ FOriginalSalesman = erpDto.FOriginalSalesman, // 鍘熷閿�鍞憳
+ FOriginalDept = erpDto.FOriginalDept, // 鍘熷閮ㄩ棬
+ FProject = erpDto.FProject, // 椤圭洰
+ FReturnReason = erpDto.FReturnReason, // 閫�璐у師鍥�
+ FReturnDescription = erpDto.FReturnDescription // 閫�璐ц鏄�
+ };
+
+ var single = _SalesReturnDetailManager.GetSingle(it =>
+ it.ErpLineId == salesOrderSub.ErpLineId);
+ if (single != null) salesOrderSub.Id = single.Id;
+ var mesLinkU9 = Db.Queryable<MesLinkU9>()
+ .Where(x => x.U9Id == erpDto.FMaterialId
+ && x.OrgId == erpDto.FReceivingOrg
+ && x.TableType == "MES_ITEMS").First();
+
+ if (mesLinkU9 != null) salesOrderSub.MaterialId = mesLinkU9.MesId;
+
+
+ var mesLinkU92 = Db.Queryable<MesLinkU9>()
+ .Where(x => x.U9Id == erpDto.FProject
+ && x.OrgId == erpDto.FReceivingOrg
+ && x.TableType == "MES_PROJECT").First();
+
+ if (mesLinkU92 != null) salesOrderSub.FProject = mesLinkU92.MesId;
+
+ salesOrderSubList.Add(salesOrderSub);
+ }
+
+ return salesOrderSubList;
+ }
}
\ No newline at end of file
--
Gitblit v1.9.3