From bb6f9d3a6c01c9cff72d14c2fdc679408eea6db3 Mon Sep 17 00:00:00 2001
From: 快乐的昕的电脑 <快乐的昕的电脑@DESKTOP-C2BQPQU>
Date: 星期四, 11 十二月 2025 14:43:40 +0800
Subject: [PATCH] 物料信息:启用禁用编码转换
---
MES.Service/service/BasicData/MesRohInManager.cs | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---
1 files changed, 218 insertions(+), 15 deletions(-)
diff --git a/MES.Service/service/BasicData/MesRohInManager.cs b/MES.Service/service/BasicData/MesRohInManager.cs
index 8e79bdc..56dc5da 100644
--- a/MES.Service/service/BasicData/MesRohInManager.cs
+++ b/MES.Service/service/BasicData/MesRohInManager.cs
@@ -8,7 +8,9 @@
using System.Security.AccessControl;
namespace MES.Service.service.BasicData;
-
+/// <summary>
+/// 閲囪喘璁㈠崟
+/// </summary>
public class MesRohInManager : Repository<MesRohIn>
{
private readonly MesRohInDataManager rohInDataManager = new();
@@ -17,9 +19,10 @@
public bool Save(RohIn rohIn)
{
var rohInErpRohIn = rohIn.ErpRohIn;
+
var mesRohIn = GetMesRohIn(rohInErpRohIn);
var mesRohInDatas =
- GetMesRohInDatas(rohIn.ErpRohinDatas);
+ GetMesRohInDatas(rohIn.ErpRohinDatas, mesRohIn);
//1 | 鏈疄鐜� | 鎶涘嚭寮傚父
//2 | 瀹℃牳 | 璋冪敤 SaveOrUpdateData锛屾甯告彃鍏�/鏇存柊
@@ -65,13 +68,18 @@
}
// 鎻掑叆鎴栨洿鏂版暟鎹殑鏂规硶
- private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,
- List<MesRohInData> mesRohInDatas, string type)
+ private bool SaveOrUpdateData(SqlSugarScope db, MesRohIn mesRohIn,List<MesRohInData> mesRohInDatas, string type)
{
+ ////浼犱粈涔堬紝c灏辨敼鎴愪粈涔�
+ //if (type == "3" || (mesRohIn.DocumentStatus != null && mesRohIn.DocumentStatus != "C"))//C琛ㄧず宸插鏍哥姸鎬�
+ //{
+ // mesRohIn.BillNo = mesRohIn.BillNo + "F" + mesRohIn.EbelnK3id.ToString();
+ //}
- if (type == "3" || (mesRohIn.DocumentStatus != null && mesRohIn.DocumentStatus != "C"))
+ //浼犱粈涔堬紝c灏辨敼鎴愪粈涔�
+ if (type == "3" || (mesRohIn.DocumentStatus != null && mesRohIn.DocumentStatus != "Y"))//Y琛ㄧず宸插鏍哥姸鎬�
{
- mesRohIn.BillNo = mesRohIn.BillNo + "F" + mesRohIn.EbelnK3id.ToString();
+ mesRohIn.BillNo = mesRohIn.BillNo + "Y" + mesRohIn.EbelnK3id.ToString();
}
if (mesRohIn.Guid != null)
@@ -104,6 +112,23 @@
// 灏� ErpRohIn 瀵硅薄杞崲涓� MesRohIn 瀵硅薄鐨勬柟娉�
private MesRohIn GetMesRohIn(ErpRohIn rohIn)
{
+ //鏍规嵁鍗曞彿+鍗曞埆锛岃幏鍙栧搴旂殑id
+ var singleId = Db.Queryable<MesRohIn>()
+ .Where(x => x.BillNo == rohIn.FBillNo && x.DocumentType == rohIn.FBillTypeID)
+ .Select(x => x.EbelnK3id)
+ .First();
+
+ //濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+ if (singleId == null || string.IsNullOrWhiteSpace(singleId.ToString()))
+ {
+ rohIn.id = GenerateNewId().ToString();
+ //rohIn.id = GenerateNewId().ToString("0");
+ }
+ else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+ {
+ rohIn.id = singleId.ToString();
+ }
+
var eid = long.Parse(rohIn.id);
var mesRohIn = new MesRohIn();
@@ -121,10 +146,48 @@
mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate,
"yyyy-MM-dd HH:mm:ss", null);
- mesRohIn.Supplier = rohIn.FSupplierId;
+ //渚涘簲鍟嗙紪鐮佽浆ID
+ var mesRohInSupplier = Db.Queryable<MesSupplier>()
+ .Where(x => x.SuppNo == rohIn.FSupplierId)
+ .Select(x => x.Id.ToString())
+ .First();
+ if (!string.IsNullOrWhiteSpace(mesRohInSupplier))
+ {
+ mesRohIn.Supplier = mesRohInSupplier;
+ }
+ else if (!string.IsNullOrWhiteSpace(rohIn.FSupplierId))
+ {
+ mesRohIn.Supplier = rohIn.FSupplierId;
+ }
+ else
+ {
+ mesRohIn.Supplier = "0";
+ }
+ //mesRohIn.Supplier = rohIn.FSupplierId;
+
mesRohIn.CloseStatus = rohIn.FCloseStatus;
- mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
- mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
+ //mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId;
+ mesRohIn.PurchaseOrg = string.IsNullOrEmpty(rohIn.FPurchaseOrgId) ? "1" : rohIn.FPurchaseOrgId;//閲囪喘缁勭粐
+
+ //閲囪喘閮ㄩ棬缂栫爜杞琁D
+ var mesRohInPurchaseDept = Db.Queryable<SysDepartment>()
+ .Where(x => x.Departmentcode == rohIn.FPurchaseDeptId)
+ .Select(x => x.Departmentid.ToString())
+ .First();
+ if (!string.IsNullOrWhiteSpace(mesRohInPurchaseDept))
+ {
+ mesRohIn.PurchaseDept = mesRohInPurchaseDept;
+ }
+ else if (!string.IsNullOrWhiteSpace(rohIn.FPurchaseDeptId))
+ {
+ mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
+ }
+ else
+ {
+ mesRohIn.PurchaseDept = "0";
+ }
+ //mesRohIn.PurchaseDept = rohIn.FPurchaseDeptId;
+
mesRohIn.PurchaseGroup = rohIn.FPurchaserGroupId;
mesRohIn.Purchaser = rohIn.FPurchaserId;
mesRohIn.SettlementParty = rohIn.FSettleId;
@@ -185,15 +248,14 @@
}
// 灏� ErpRohinData 瀵硅薄杞崲涓� MesRohInData 瀵硅薄鐨勬柟娉�
- private List<MesRohInData> GetMesRohInDatas(
- List<ErpRohinData> erpRohinDatas)
+ private List<MesRohInData> GetMesRohInDatas(List<ErpRohinData> erpRohinDatas, MesRohIn mesRohIn)
{
return erpRohinDatas.Select(s =>
{
var entity = new MesRohInData
{
EbelnK3id = Convert.ToDecimal(s.id),
- ErpId = Convert.ToDecimal(s.Eid),
+ ErpId = Convert.ToDecimal(mesRohIn.EbelnK3id),//浣跨敤涓昏〃鐨凟belnK3id浣滀负瀛愯〃鐨凟rpId
BillNo = s.FBillNo,
ItemId = s.FMaterialId,
PurchaseUnit = s.FUnitId,
@@ -253,7 +315,7 @@
ChangeFlag = s.FChangeFlag,
DemandSource = s.FDEMANDTYPE,
DemandDocumentId = s.FDEMANDBILLNO,
- DemandDocumentLineId = s.FDEMANDBILLENTRYSEQ,
+ OrderLineId = s.FDEMANDBILLENTRYSEQ,
DemandOrg = s.FRequireOrgId,
ReceivingOrg = s.FReceiveOrgId,
SettlementOrg = s.FEntrySettleOrgId,
@@ -268,6 +330,60 @@
SalesOrderId = s.F_UNW_Text_xsddh
};
+ //閲囪喘鍗曚綅缂栫爜杞琁D
+ var entityPurchaseUnit = Db.Queryable<MesUnit>()
+ .Where(x => x.Fnumber == s.FUnitId)
+ .Select(x => x.Id.ToString())
+ .First();
+ if (!string.IsNullOrWhiteSpace(entityPurchaseUnit))
+ {
+ entity.PurchaseUnit = entityPurchaseUnit;
+ }
+ else if (!string.IsNullOrWhiteSpace(s.FUnitId))
+ {
+ entity.PurchaseUnit = s.FUnitId;
+ }
+ else
+ {
+ entity.PurchaseUnit = "0";
+ }
+
+ //璁′环鍗曚綅缂栫爜杞琁D
+ var entityPricingUnit = Db.Queryable<MesUnit>()
+ .Where(x => x.Fnumber == s.FPriceUnitId)
+ .Select(x => x.Id.ToString())
+ .First();
+ if (!string.IsNullOrWhiteSpace(entityPricingUnit))
+ {
+ entity.PricingUnit = entityPricingUnit;
+ }
+ else if (!string.IsNullOrWhiteSpace(s.FPriceUnitId))
+ {
+ entity.PricingUnit = s.FPriceUnitId;
+ }
+ else
+ {
+ entity.PricingUnit = "0";
+ }
+
+ //鐗╂枡缂栫爜杞琁D
+ var entityItemId = Db.Queryable<MesItems>()
+ .Where(x => x.ItemNo == s.FMaterialId)
+ .Select(x => x.Id.ToString())
+ .First();
+ if (!string.IsNullOrWhiteSpace(entityItemId))
+ {
+ entity.ItemId = entityItemId;
+ }
+ else if (!string.IsNullOrWhiteSpace(s.FMaterialId))
+ {
+ entity.ItemId = s.FMaterialId;
+ }
+ else
+ {
+ entity.ItemId = "0";
+ }
+
if (s.FFreezeDate != null)
if (!s.FFreezerId.IsNullOrEmpty())
entity.FreezeTime =
@@ -280,12 +396,75 @@
DateTime.ParseExact(s.FTerminateDate,
"yyyy-MM-dd HH:mm:ss", null);
- var single = rohInDataManager.GetSingle(it =>
- it.EbelnK3id == entity.EbelnK3id);
+ //鏍规嵁鍗曞彿+鍗曞埆+琛屽彿锛岃幏鍙栧搴旂殑id
+ var singleId = Db.Queryable<MesRohInData>()
+ .Where(x => x.BillNo == s.FBillNo && x.SourceDocumentType == s.FBillTypeID && x.OrderLineId == s.FDEMANDBILLENTRYSEQ)
+ .Select(x => x.EbelnK3id)
+ .First();
+
+ if (singleId == null)//濡傛灉娌℃湁鍒欑敓鎴愪竴涓柊鐨刬d
+ {
+ //entity.EbelnK3id = GenerateNewId2().ToString();
+ entity.EbelnK3id = GenerateNewId2();
+ }
+ else//濡傛灉鏈夊垯浣跨敤宸叉湁鐨刬d
+ {
+ //entity.EbelnK3id = singleId.EbelnK3id;
+ entity.EbelnK3id = singleId;
+ }
+
+ //鏌ヨEbelnK3id瀵瑰簲鐨凣uid锛岃祴鍊肩粰entity.Guid銆傚疄鐜颁富閿鐢�
+ var single = rohInDataManager.GetSingle(it =>it.EbelnK3id == entity.EbelnK3id);
if (single != null) entity.Guid = single.Guid;
return entity;
}).ToList();
+ }
+
+ /// <summary>
+ /// 鐢熸垚鏂扮殑涓昏〃ID锛岀‘淇濅笉閲嶅
+ /// </summary>
+ private decimal GenerateNewId()
+ {
+ // 澶勭悊绌鸿〃鐨勬儏鍐碉紝浠�1寮�濮�
+ var maxId = Db.Queryable<MesRohIn>().Max(x => (decimal?)x.EbelnK3id) ?? 0;
+ var newId = maxId + 1;
+
+ // 鍙岄噸妫�鏌ワ紝纭繚鐢熸垚鐨処D涓嶅瓨鍦�
+ while (Db.Queryable<MesRohIn>().Where(x => x.EbelnK3id == newId).Any())
+ {
+ newId++;
+ }
+
+ return newId;
+ }
+
+ /// <summary>
+ /// 鐢熸垚鏂扮殑瀛愯〃ID锛岄�氳繃鏁版嵁搴撳簭鍒楄幏鍙栧敮涓�ID
+ /// </summary>
+ private decimal GenerateNewId2()
+ {
+ try
+ {
+ // 鏇挎崲涓猴細
+ var sequenceValueObj = Db.Ado.GetScalar("SELECT NEXT VALUE FOR MES_ROH_IN_DATA_seq");
+ var sequenceValue = Convert.ToDecimal(sequenceValueObj);
+ // 楠岃瘉搴忓垪鍊兼槸鍚︽湁鏁�
+ if (sequenceValue <= 0)
+ {
+ throw new InvalidOperationException($"鏁版嵁搴撳簭鍒� MES_ROH_IN_DATA_seq 杩斿洖浜嗘棤鏁堢殑鍊�: {sequenceValue}");
+ }
+
+ return sequenceValue;
+ }
+ catch (Exception ex)
+ {
+ // 璁板綍寮傚父淇℃伅
+ Console.WriteLine($"璋冪敤鏁版嵁搴撳簭鍒� MES_ROH_IN_DATA_seq 澶辫触: {ex.Message}");
+
+ // 鍚戜笂灞傛姏鍑烘槑纭殑寮傚父淇℃伅
+ throw new InvalidOperationException($"鐢熸垚瀛愯〃ID澶辫触锛屾棤娉曡幏鍙栨暟鎹簱搴忓垪鍊�: {ex.Message}", ex);
+ }
}
/// <summary>
@@ -313,4 +492,28 @@
return (outSum, outMsg);
}
+
+
+ // 鏁村崟鍒犻櫎
+ //private bool Delete(SqlSugarScope db, MesRohIn mesRohIn,List<MesRohInData> mesRohInDatas)
+ //{
+ // if (mesRohIn.Guid != null)
+ // db.Deleteable<MesRohIn>().Where(s => s.Guid == mesRohIn.Guid)
+ // .ExecuteCommand();
+
+ // if (mesRohInDatas.Count > 0)
+ // db.Deleteable<MesRohInData>()
+ // .Where(s => s.ErpId == mesRohIn.EbelnK3id).ExecuteCommand();
+
+ // var orUpdate = db.Insertable(mesRohIn)
+ // .IgnoreColumns(true).ExecuteCommand() > 0;
+
+
+ // var baOrUpdate = db.Insertable(mesRohInDatas).PageSize(1)
+ // .IgnoreColumnsNull()
+ // .ExecuteCommand() > 0;
+
+ // if (orUpdate && baOrUpdate) return true;
+ // throw new NotImplementedException("鍒犻櫎");
+ //}
}
\ No newline at end of file
--
Gitblit v1.9.3