From dd3461812f84ac4f930d3c51e5b8eba92fea4dab Mon Sep 17 00:00:00 2001 From: kyy <3283105747@qq.com> Date: 星期五, 12 九月 2025 15:47:29 +0800 Subject: [PATCH] 1、采购订单日期转换 2、收料通知修改 --- MESApplication/Controllers/BasicData/MesInvItemArnController.cs | 6 MES.Service/Dto/webApi/ErpSltzBList.cs | 5 MES.Service/service/BasicData/MesRohInManager.cs | 180 +++++++++++- MES.Service/Dto/webApi/ErpSltza.cs | 2 MES.Service/service/BasicData/MesInvItemArnManager.cs | 547 ++++++++++++++++++++++---------------- MES.Service/Modes/MesInvItemArnDetail.cs | 80 +++-- 6 files changed, 537 insertions(+), 283 deletions(-) diff --git a/MES.Service/Dto/webApi/ErpSltzBList.cs b/MES.Service/Dto/webApi/ErpSltzBList.cs index befa74f..a381743 100644 --- a/MES.Service/Dto/webApi/ErpSltzBList.cs +++ b/MES.Service/Dto/webApi/ErpSltzBList.cs @@ -6,7 +6,10 @@ /// 鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� /// </summary> public string? LineNo { get; set; } - + /// <summary> + /// 鏀舵枡閫氱煡鍗曞垎褰曞唴鐮� + /// </summary> + public string? ErpId { get; set; } /// <summary> /// 璁㈠崟鍗曞彿 /// </summary> diff --git a/MES.Service/Dto/webApi/ErpSltza.cs b/MES.Service/Dto/webApi/ErpSltza.cs index b82b28f..cc7d5a7 100644 --- a/MES.Service/Dto/webApi/ErpSltza.cs +++ b/MES.Service/Dto/webApi/ErpSltza.cs @@ -11,7 +11,7 @@ /// <summary> /// 鍗曟嵁缂栧彿 /// </summary> - public string? billNo { get; set; } + public string? DeliveryNo { get; set; } /// <summary> /// 渚涘簲鍟� diff --git a/MES.Service/Modes/MesInvItemArnDetail.cs b/MES.Service/Modes/MesInvItemArnDetail.cs index 0ee4404..5dfcbf7 100644 --- a/MES.Service/Modes/MesInvItemArnDetail.cs +++ b/MES.Service/Modes/MesInvItemArnDetail.cs @@ -55,17 +55,17 @@ [SugarColumn(ColumnName = "quantity")] public decimal? Quantity { get; set; } - // /// <summary> - // /// 閲囪喘鍗曚綅 - // /// </summary> - // [SugarColumn] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� - // public string? PurchaseUnit { get; set; } - // - // /// <summary> - // /// 搴撳瓨鍗曚綅 - // /// </summary> - // [SugarColumn] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� - // public string? InventoryUnit { get; set; } + /// <summary> + /// 閲囪喘鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "PurchaseUnit")] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� + public string? PurchaseUnit { get; set; } + + /// <summary> + /// 搴撳瓨鍗曚綅 + /// </summary> + [SugarColumn(ColumnName = "InventoryUnit")] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� + public string? InventoryUnit { get; set; } /// <summary> /// 澶囨敞 @@ -85,23 +85,24 @@ [SugarColumn(ColumnName = "line_k3id")] public int? LineK3id { get; set; } - // /// <summary> - // /// 閿�鍞鍗曞彿 - // /// </summary> - // [SugarColumn] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� - // public string? SalesOrderId { get; set; } - // - // /// <summary> - // /// 璁″垝璺熻釜鍙� - // /// </summary> - // [SugarColumn] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� - // public string? FMtoNo { get; set; } - // - // /// <summary> - // /// 鎵瑰彿 - // /// </summary> - // [SugarColumn] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� - // public string? FLot { get; set; } + /// <summary> + /// 閿�鍞鍗曞彿 + /// </summary> + [SugarColumn (ColumnName = "SalesOrderId")] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� + + public string? SalesOrderId { get; set; } + + /// <summary> + /// 璁″垝璺熻釜鍙� + /// </summary> + [SugarColumn(ColumnName = "MtoNo")] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� + public string? MtoNo { get; set; } + + /// <summary> + /// 鎵瑰彿 + /// </summary> + [SugarColumn(ColumnName = "Lot")] // 鏈彁渚涘叿浣揗ES鏍囪瘑锛岄粯璁ゆ寜灞炴�у悕鏄犲皠锛堣嫢瀹為檯瀛楁鍚嶄笉鍚岋紝闇�琛ュ厖ColumnName锛� + public string? Lot { get; set; } /// <summary> /// 鎬ユ枡鏍囪瘑 @@ -109,9 +110,22 @@ [SugarColumn(ColumnName = "urgent_flag")] public bool? UrgentFlag { get; set; } - // /// <summary> - // /// 鏀惰揣浠撳簱缂栧彿 - // /// </summary> - // [SugarColumn(ColumnName = "FSTOCKID")] - // public string? FStockId { get; set; } + /// <summary> + /// 鏀惰揣浠撳簱缂栧彿 + /// </summary> + [SugarColumn(ColumnName = "Depot_Id")] + public int? DepotId { get; set; } + + /// <summary> + /// 鍙戣揣鍗曡ID + /// </summary> + [SugarColumn(ColumnName = "DeliveryLineID")] + public int? DeliveryLineID { get; set; } + /// <summary> + /// 鍙戣揣鍗曡ID + /// </summary> + [SugarColumn(ColumnName = "Eid")] + public int? Eid { get; set; } + + } \ No newline at end of file diff --git a/MES.Service/service/BasicData/MesInvItemArnManager.cs b/MES.Service/service/BasicData/MesInvItemArnManager.cs index 53e92ad..e958c16 100644 --- a/MES.Service/service/BasicData/MesInvItemArnManager.cs +++ b/MES.Service/service/BasicData/MesInvItemArnManager.cs @@ -7,257 +7,352 @@ using System.Collections.Generic; using System.Linq; -namespace MES.Service.service; - -/// <summary> -/// 鏀舵枡鍗曟暟鎹鐞嗙被锛堝鐞咵RP鏀舵枡鍗曟暟鎹悓姝ュ埌MES鏀舵枡鍗曡〃锛� -/// 鍏宠仈涓昏〃锛歁esInvItemArn锛屾槑缁嗚〃锛歁esInvItemArnDetail -/// 鍏宠仈ERP DTO锛欵rpSltz锛堣仛鍚堢被锛夈�丒rpSltza锛圗RP涓昏〃锛夈�丒rpSltzBList锛圗RP鏄庣粏锛� -/// </summary> -public class MesInvItemArnManager : Repository<MesInvItemArn> +namespace MES.Service.service { /// <summary> - /// 鎵归噺淇濆瓨鏀舵枡鍗曪紙涓昏〃+鏄庣粏锛�- 浜嬪姟淇濊瘉鎵归噺鎿嶄綔涓�鑷存�� + /// 鏀舵枡鍗曟暟鎹鐞嗙被锛堝鐞咵RP鏀舵枡鍗曟暟鎹悓姝ュ埌MES鏀舵枡鍗曡〃锛� + /// 鍏宠仈涓昏〃锛歁esInvItemArn锛圡ES鏀舵枡鍗曚富琛級 + /// 鍏宠仈鏄庣粏琛細MesInvItemArnDetail锛圡ES鏀舵枡鍗曟槑缁嗚〃锛� + /// 鍏宠仈ERP DTO锛欵rpSltz锛堣仛鍚堢被锛屽惈涓昏〃+鏄庣粏锛夈�丒rpSltza锛圗RP鏀舵枡鍗曚富琛級銆丒rpSltzBList锛圗RP鏀舵枡鍗曟槑缁嗭級 /// </summary> - /// <param name="erpSltzList">ERP鏀舵枡鍗曞垪琛紙鍚富琛�+鏄庣粏锛�</param> - /// <returns>鍏ㄩ儴鎴愬姛杩斿洖true锛屽惁鍒檉alse</returns> - public bool SaveList(List<ErpSltz> erpSltzList) + public class MesInvItemArnManager : Repository<MesInvItemArn> { - if (erpSltzList == null || !erpSltzList.Any()) - throw new ArgumentNullException(nameof(erpSltzList), "寰呬繚瀛樼殑鏀舵枡鍗曞垪琛ㄤ笉鑳戒负绌�"); - - // 淇锛氱敤浜嬪姟鍖呰9鎵归噺鎿嶄綔锛岀‘淇濇暟鎹竴鑷存�� - return UseTransaction(db => + /// <summary> + /// 鎵归噺淇濆瓨鏀舵枡鍗曪紙涓昏〃+鏄庣粏锛�- 浜嬪姟淇濊瘉鎵归噺鎿嶄綔涓�鑷存�� + /// 鍗曟潯澶辫触鍒欐暣浣撳洖婊� + /// </summary> + public bool SaveList(List<ErpSltz> erpSltzList) { - foreach (var erpSltz in erpSltzList) + if (erpSltzList == null || !erpSltzList.Any()) + throw new ArgumentNullException(nameof(erpSltzList), "寰呬繚瀛樼殑鏀舵枡鍗曞垪琛ㄤ笉鑳戒负绌�"); + + return UseTransaction(db => { - // 淇锛氳皟鐢ㄤ簨鍔″唴鐨凷ave鏂规硶锛屼紶鍏b瀹炰緥 - if (!Save(db, erpSltz)) + foreach (var erpSltz in erpSltzList) { - return 0; // 鍗曟潯澶辫触锛屼簨鍔″洖婊� + if (!SaveInTransaction(db, erpSltz)) + return 0; // 瑙﹀彂鍥炴粴 } - } - return 1; // 鍏ㄩ儴鎴愬姛 - }) > 0; - } - /// <summary> - /// 鍗曟潯淇濆瓨鏀舵枡鍗曪紙涓昏〃+鏄庣粏锛�- 浜嬪姟鍐呰皟鐢紙淇璁块棶淇グ绗︼紝纭繚浜嬪姟鍐呭彲鐢級 - /// </summary> - /// <param name="db">浜嬪姟鍐呯殑SqlSugar瀹炰緥</param> - /// <param name="erpSltz">ERP鏀舵枡鍗曪紙鍚富琛�+鏄庣粏锛�</param> - /// <returns>鍗曟潯澶勭悊鎴愬姛杩斿洖true</returns> - private bool Save(SqlSugarScope db, ErpSltz erpSltz) - { - // 1. 鍙傛暟鏍¢獙 - if (erpSltz == null) - throw new ArgumentNullException(nameof(erpSltz), "鏀舵枡鍗曟暟鎹笉鑳戒负绌�"); - if (erpSltz.ErpSltza == null) - throw new ArgumentNullException(nameof(erpSltz.ErpSltza), "鏀舵枡鍗曚富琛ㄦ暟鎹笉鑳戒负绌�"); - - // 2. 鎻愬彇ERP涓昏〃鍜屾槑缁嗘暟鎹� - var erpMain = erpSltz.ErpSltza; - var erpDetails = erpSltz.ErpSltzBList ?? new List<ErpSltzBList>(); - - // 3. 淇锛氱敤浜嬪姟鍐呯殑db鏌ヨ锛岀‘淇濇暟鎹竴鑷存�� - Guid mainId = GetOrCreateMainId(db, erpMain); - - // 4. 鏄犲皠ERP鏁版嵁鍒癕ES瀹炰綋锛堜慨澶嶅瓧娈垫敞閲婏紝琛ュ厖鍏抽敭灞炴�э級 - var mesMain = MapErpSltzaToMesInvItemArn(erpMain, mainId); - var mesDetails = MapErpSltzBListToMesInvItemArnDetail(erpDetails, mainId); - - // 5. 鏍规嵁鎿嶄綔绫诲瀷澶勭悊鏁版嵁 - switch (erpMain.TYPE?.Trim()) - { - case "1": // 鏂板 - case "2": // 鏇存柊 - return HandleSaveOrUpdate(db, mesMain, mesDetails, mainId); - case "3": // 鍒犻櫎 - return HandleDelete(db, mesMain, mesDetails, mainId); - default: - throw new NotImplementedException($"鏈疄鐜扮殑鏀舵枡鍗曟搷浣滅被鍨嬶細{erpMain.TYPE}锛堟敮鎸佺被鍨嬶細1-鏂板锛�2-鏇存柊锛�3-鍒犻櫎锛�"); + return 1; // 鎻愪氦 + }) > 0; } - } - /// <summary> - /// 鍗曟潯淇濆瓨鏀舵枡鍗曪紙涓昏〃+鏄庣粏锛�- 瀵瑰鍏紑鎺ュ彛锛堜緵鎺у埗鍣ㄨ皟鐢級 - /// </summary> - /// <param name="erpSltz">ERP鏀舵枡鍗曟暟鎹紙鍚富琛�+鏄庣粏锛�</param> - /// <returns>淇濆瓨鎴愬姛杩斿洖true</returns> - public bool Save(ErpSltz erpSltz) - { - if (erpSltz == null) - throw new ArgumentNullException(nameof(erpSltz), "鏀舵枡鍗曟暟鎹笉鑳戒负绌�"); - if (erpSltz.ErpSltza == null) - throw new ArgumentNullException(nameof(erpSltz.ErpSltza), "鏀舵枡鍗曚富琛ㄦ暟鎹笉鑳戒负绌�"); - - // 浜嬪姟鍐呭鐞嗕富浠庤〃淇濆瓨 - return UseTransaction(db => + /// <summary> + /// 瀵瑰鍗曟潯淇濆瓨锛堝唴閮ㄨ嚜鍔ㄤ簨鍔★級 + /// </summary> + public bool Save(ErpSltz erpSltz) { - return Save(db, erpSltz) ? 1 : 0; - }) > 0; - } + if (erpSltz == null) throw new ArgumentNullException(nameof(erpSltz), "鏀舵枡鍗曟暟鎹笉鑳戒负绌�"); + if (erpSltz.ErpSltza == null) throw new ArgumentNullException(nameof(erpSltz.ErpSltza), "鏀舵枡鍗曚富琛ㄦ暟鎹笉鑳戒负绌�"); - /// <summary> - /// 鎻愬墠鑾峰彇鎴栫敓鎴怣ES涓昏〃ID锛堜慨澶嶏細鐢ㄤ簨鍔″唴db鏌ヨ锛� - /// </summary> - private Guid GetOrCreateMainId(SqlSugarScope db, ErpSltza erpMain) - { - if (string.IsNullOrEmpty(erpMain.billNo)) - throw new ArgumentException("ERP鏀舵枡鍗曞崟鎹彿涓嶈兘涓虹┖锛屾棤娉曠‘瀹氫富琛ㄥ敮涓�鎬�", nameof(erpMain.billNo)); + return UseTransaction(db => SaveInTransaction(db, erpSltz) ? 1 : 0) > 0; + } - // 淇锛氱敤浜嬪姟鍐呯殑db鏌ヨ锛岃�岄潪Context - var existingMain = db.Queryable<MesInvItemArn>() - .Where(m => m.BillNo == erpMain.billNo) - .First(); - - return existingMain != null - ? existingMain.Id - : Guid.NewGuid(); - } - - /// <summary> - /// 澶勭悊鏀舵枡鍗曟柊澧�/鏇存柊锛堜富琛�+鏄庣粏锛� - /// </summary> - private bool HandleSaveOrUpdate(SqlSugarScope db, MesInvItemArn mesMain, List<MesInvItemArnDetail> mesDetails, Guid mainId) - { - mesMain.Id = mainId; - bool isMainExist = db.Queryable<MesInvItemArn>().Where(m => m.Id == mainId).Any(); - int mainOperateResult; - - if (isMainExist) + /// <summary> + /// 浜嬪姟鍐呭崟鏉′繚瀛� + /// </summary> + private bool SaveInTransaction(SqlSugarScope db, ErpSltz erpSltz) { - mainOperateResult = db.Updateable(mesMain) - .IgnoreColumns(m => new { m.CreateDate }) + if (erpSltz == null) throw new ArgumentNullException(nameof(erpSltz), "鏀舵枡鍗曟暟鎹笉鑳戒负绌�"); + if (erpSltz.ErpSltza == null) throw new ArgumentNullException(nameof(erpSltz.ErpSltza), "鏀舵枡鍗曚富琛ㄦ暟鎹笉鑳戒负绌�"); + + var erpMain = erpSltz.ErpSltza; + var erpDetails = erpSltz.ErpSltzBList ?? new List<ErpSltzBList>(); + + // 閫氳繃 ERP 鍗曞彿纭畾/鐢熸垚涓昏〃ID + Guid mainId = GetOrCreateMainId(db, erpMain); + + // 鏄犲皠 + var mesMain = MapErpMainToMesMain(erpMain, mainId,db); + var mesDetails = MapErpDetailsToMesDetails(db, erpDetails, mainId); + + // 绫诲瀷锛�1 鏂板锛�2 鏇存柊锛�3 鍒犻櫎 + var type = TrimOrNull(erpMain.TYPE); + return type switch + { + "1" or "2" => HandleSaveOrUpdate(db, mesMain, mesDetails, mainId), + "3" => HandleDelete(db, mainId), + _ => throw new NotImplementedException($"鏈疄鐜扮殑鏀舵枡鍗曟搷浣滅被鍨嬶細{erpMain.TYPE}锛堟敮鎸侊細1-鏂板锛�2-鏇存柊锛�3-鍒犻櫎锛�") + }; + } + + /// <summary> + /// 鑾峰彇鎴栫敓鎴愪富琛↖D锛堟寜 ERP DeliveryNo 鍞竴锛� + /// </summary> + private Guid GetOrCreateMainId(SqlSugarScope db, ErpSltza erpMain) + { + var billNo = TrimOrNull(erpMain.DeliveryNo) + ?? throw new ArgumentException("ERP鏀舵枡鍗曞崟鎹彿锛圖eliveryNo锛変笉鑳戒负绌猴紝鏃犳硶纭畾涓昏〃鍞竴鎬�", + nameof(erpMain.DeliveryNo)); + + // SqlSugar: 鐢� First()锛屾棤鏁版嵁杩斿洖 null + var existingMain = db.Queryable<MesInvItemArn>() + .Where(m => m.BillNo == billNo) + .First(); + + return existingMain?.Id ?? Guid.NewGuid(); + } + + /// <summary> + /// 鏂板/鏇存柊锛堜富琛�+鏄庣粏锛氬厛鍒犳棫鏄庣粏鍐嶆彃鏂帮級 + /// </summary> + private bool HandleSaveOrUpdate(SqlSugarScope db, MesInvItemArn mesMain, List<MesInvItemArnDetail> mesDetails, + Guid mainId) + { + mesMain.Id = mainId; + + bool isMainExist = db.Queryable<MesInvItemArn>() + .Where(m => m.Id == mainId) + .Any(); + + int mainOperateResult; + if (isMainExist) + { + mainOperateResult = db.Updateable(mesMain) + .IgnoreColumns(m => new { m.CreateDate }) + .Where(m => m.Id == mainId) + .ExecuteCommand(); + } + else + { + mesMain.CreateDate = DateTime.Now; + mainOperateResult = db.Insertable(mesMain).ExecuteCommand(); + } + + // 鏄庣粏鍚屾锛氬垹鏃� + 鎻掓柊 + int deleteOldDetailsResult = db.Deleteable<MesInvItemArnDetail>() + .Where(d => d.Mid == mainId) + .ExecuteCommand(); + + int insertNewDetailsResult = mesDetails.Count > 0 + ? db.Insertable(mesDetails).ExecuteCommand() + : 1; + + return mainOperateResult > 0 && deleteOldDetailsResult >= 0 && insertNewDetailsResult > 0; + } + + /// <summary> + /// 鍒犻櫎锛堝厛鍒犳槑缁嗗啀鍒犱富琛級 + /// </summary> + private bool HandleDelete(SqlSugarScope db, Guid mainId) + { + db.Deleteable<MesInvItemArnDetail>() + .Where(d => d.Mid == mainId) + .ExecuteCommand(); + + int deleteMainResult = db.Deleteable<MesInvItemArn>() .Where(m => m.Id == mainId) .ExecuteCommand(); - } - else - { - mesMain.CreateDate = DateTime.Now; - mainOperateResult = db.Insertable(mesMain).ExecuteCommand(); + + return deleteMainResult >= 0; } - // 澶勭悊鏄庣粏 - int deleteOldDetailResult = db.Deleteable<MesInvItemArnDetail>() - .Where(d => d.Mid == mainId) - .ExecuteCommand(); - - int insertNewDetailResult = mesDetails.Count > 0 - ? db.Insertable(mesDetails).ExecuteCommand() - : 1; - - return mainOperateResult > 0 && (deleteOldDetailResult >= 0 && insertNewDetailResult > 0); - } - - /// <summary> - /// 澶勭悊鏀舵枡鍗曞垹闄わ紙涓昏〃+鏄庣粏锛� - /// </summary> - private bool HandleDelete(SqlSugarScope db, MesInvItemArn mesMain, List<MesInvItemArnDetail> mesDetails, Guid mainId) - { - db.Deleteable<MesInvItemArnDetail>().Where(d => d.Mid == mainId).ExecuteCommand(); - int mainDeleteResult = db.Deleteable<MesInvItemArn>().Where(m => m.Id == mainId).ExecuteCommand(); - return mainDeleteResult >= 0; - } - - /// <summary> - /// ERP涓昏〃鏄犲皠鍒癕ES涓昏〃锛堜慨澶嶏細鍙栨秷鍏抽敭瀛楁娉ㄩ噴锛屼慨姝Type閫昏緫锛� - /// </summary> - private MesInvItemArn MapErpSltzaToMesInvItemArn(ErpSltza erpMain, Guid mainId) - { - // 鍗曟嵁鏃ユ湡杞崲 - DateTime.TryParse(erpMain.FDate, out DateTime parsedDate); - // 鏄惁SRM杞崲锛�0-鍚︼紝1-鏄級 - int.TryParse(erpMain.F_ZJXF_sfgx, out int isSrm); - // 渚涘簲鍟咺D杞崲锛堝瓧绗︿覆鐩存帴璧嬪�硷紝鍖归厤MES瀛楁绫诲瀷锛� - string suppId = string.IsNullOrEmpty(erpMain.SupplierId) ? null : erpMain.SupplierId.Trim(); - // 淇锛氣�滄槸鍚﹀澶栤�濋�昏緫锛堝亣璁綞RP鐨刦Type鏄��1鈥�=鏄紝鈥�0鈥�=鍚︼紝鎴朾ool瀛楃涓诧級 - bool isOutsourcing = false; - if (!string.IsNullOrEmpty(erpMain.fType)) + /// <summary> + /// ERP 涓昏〃 -> MES 涓昏〃 + /// </summary> + private MesInvItemArn MapErpMainToMesMain(ErpSltza erpMain, Guid mainId, SqlSugarScope db) { - isOutsourcing = erpMain.fType.Trim() == "1" || erpMain.fType.Trim().Equals("true", StringComparison.OrdinalIgnoreCase); - } - - return new MesInvItemArn - { - // 淇锛氬彇娑堝叧閿瓧娈垫敞閲婏紝琛ュ厖璧嬪�� - Id = mainId, - BillNo = erpMain.billNo?.Trim() ?? throw new ArgumentException("鏀舵枡鍗曞崟鎹彿涓嶈兘涓虹┖"), - SuppId = suppId, - CreateDate = parsedDate == DateTime.MinValue ? null : (DateTime?)parsedDate, - Remark = erpMain.Remark?.Trim(), - IsSrm = isSrm, - EbelnK3id = erpMain.erpId?.Trim(), // ERP涓昏〃ID锛堝搴攅beln_k3id锛� - CreateBy = erpMain.createBy?.Trim() ?? "SYSTEM", // 榛樿涓虹郴缁� - FType = isOutsourcing, // 淇锛氭纭殑鏄惁濮斿閫昏緫 - ReceiveOrgId = erpMain.ReceiveOrgId?.Trim(), - // LastUpdateUser = erpMain.FCreatorId?.Trim() ?? "SYSTEM", - // LastUpdateTime = DateTime.Now, - // IsOut = false, // 鍒濆鏈嚭搴� - // Status = false // 鍒濆鏈鏍� - }; - } - - /// <summary> - /// ERP鏄庣粏鏄犲皠鍒癕ES鏄庣粏锛堜慨澶嶏細鍙栨秷鍏抽敭瀛楁娉ㄩ噴锛屼慨姝belnK3id杞崲锛� - /// </summary> - private List<MesInvItemArnDetail> MapErpSltzBListToMesInvItemArnDetail(List<ErpSltzBList> erpDetails, Guid mainId) - { - return erpDetails.Select(erpDetail => - { - // 鏁板�肩被鍨嬪畨鍏ㄨ浆鎹� - int.TryParse(erpDetail.LineNo, out int lineNo); // 鏄庣粏涓婚敭 - int.TryParse(erpDetail.ProductCode, out int itemId); // 鐗╂枡缂栫爜 - decimal.TryParse(erpDetail.PurchaseQty, out decimal purchaseQty); // 閲囪喘璁㈠崟鏁伴噺 - decimal.TryParse(erpDetail.DeliveryQty, out decimal deliveryQty); // 鏈搴旀敹鏁伴噺 - decimal.TryParse(erpDetail.IncludeQty, out decimal includeQty); // 鏈瀹炴敹鏁伴噺 - // 淇锛氱敤閲囪喘鍗旾D瀛楁锛坋beln_k3id锛夎浆int锛岃�岄潪婧愬崟鍗曞彿 - int.TryParse(erpDetail.FSrcBillNo, out int ebelnK3id); - int.TryParse(erpDetail.FSrcBillLine, out int lineK3id); // 閲囪喘鍗曡ID - bool.TryParse(erpDetail.urgentFlag, out bool urgentFlag); // 鎬ユ枡鏍囪瘑 - - return new MesInvItemArnDetail + var billNo = TrimOrNull(erpMain.DeliveryNo) + ?? throw new ArgumentException("鏀舵枡鍗曞崟鎹彿涓嶈兘涓虹┖"); + // 鑾峰彇渚涘簲鍟嗙紪鍙峰苟鏌ヨ瀵瑰簲鐨処D + string suppNo = TrimOrNull(erpMain.SupplierId); + decimal ? suppId = null; + if (!string.IsNullOrEmpty(suppNo)) { - // 淇锛氬彇娑堝叧閿瓧娈垫敞閲婏紝琛ュ厖璧嬪�� - // LineNo = lineNo, // 鏄庣粏涓婚敭锛堝繀椤昏祴鍊硷級 - Mid = mainId, // 澶栭敭锛堝叧鑱斾富琛↖D锛屽繀椤昏祴鍊硷級 - Ebeln = erpDetail.FBillNo?.Trim(), // 閲囪喘鍗曞彿 - ItemId = itemId, - EbelnQty = purchaseQty, - SubQty = deliveryQty, - Quantity = includeQty, - // PurchaseUnit = erpDetail.PurchaseUnit?.Trim(), // 閲囪喘鍗曚綅锛堣ˉ鍏呰祴鍊硷級 - // InventoryUnit = erpDetail.InventoryUnit?.Trim(), // 搴撳瓨鍗曚綅锛堣ˉ鍏呰祴鍊硷級 - Memo = erpDetail.Remark?.Trim(), - EbelnK3id = ebelnK3id, // 淇锛氭纭殑閲囪喘鍗旾D杞崲 - LineK3id = lineK3id, - // SalesOrderId = erpDetail.SalesOrderId?.Trim(), // 閿�鍞鍗曞彿锛堣ˉ鍏呰祴鍊硷級 - // FMtoNo = erpDetail.FMtoNo?.Trim(), // 璁″垝璺熻釜鍙凤紙琛ュ厖璧嬪�硷級 - // FLot = erpDetail.FLot?.Trim(), // 鎵瑰彿锛堣ˉ鍏呰祴鍊硷級 - UrgentFlag = urgentFlag - //FStockId = erpDetail.DepotId?.Trim() // 鏀惰揣浠撳簱缂栧彿 + // 浠庢暟鎹簱鏌ヨ渚涘簲鍟咺D锛圫uppNo鍞竴锛� + suppId = db.Queryable<MesSupplier>() + .Where(s => s.SuppNo == suppNo) + .Select(s => s.Id) + .First(); + + // 鍙�夛細濡傛灉闇�瑕佷弗鏍奸獙璇佷緵搴斿晢瀛樺湪鎬э紝鍙栨秷涓嬮潰娉ㄩ噴 + if (suppId == null) + { + throw new KeyNotFoundException($"鏈壘鍒扮紪鍙蜂负銆恵suppNo}銆戠殑渚涘簲鍟嗕俊鎭�"); + } + } + // 鏄惁 SRM + var isSrm = ToInt(erpMain.F_ZJXF_sfgx, 0); + + // 鏄惁濮斿锛欵RP鐨� fType 涓� "1"/"true" 瑙嗕负濮斿 + var fTypeStr = TrimOrNull(erpMain.fType); + bool isOutsourcing = fTypeStr is not null && + (fTypeStr == "1" || fTypeStr.Equals("true", StringComparison.OrdinalIgnoreCase)); + + return new MesInvItemArn + { + Id = mainId, + BillNo = billNo, + SuppId = suppId.ToString(), + CreateDate = ToDate(erpMain.FDate), // null 琛ㄧず鏈煡 + Remark = TrimOrNull(erpMain.Remark), + IsSrm = isSrm, + EbelnK3id = TrimOrNull(erpMain.erpId), + CreateBy = TrimOrNull(erpMain.createBy) ?? "SYSTEM", + FType = isOutsourcing, + ReceiveOrgId = TrimOrNull(erpMain.ReceiveOrgId) }; - }).ToList(); - } + } - /// <summary> - /// 鎸夊崟鎹彿鏌ヨMES鏀舵枡鍗曪紙涓昏〃+鏄庣粏锛� - /// </summary> - public (MesInvItemArn main, List<MesInvItemArnDetail> details) GetByBillNo(string billNo) - { - if (string.IsNullOrEmpty(billNo)) - throw new ArgumentNullException(nameof(billNo), "鏌ヨ鏉′欢鍗曟嵁鍙蜂笉鑳戒负绌�"); + /// <summary> + /// ERP 鏄庣粏 -> MES 鏄庣粏 + /// 鏍稿績锛氶�氳繃 ERP ProductCode 鍖归厤 mes_items.item_no 鑾峰彇 item_id + /// </summary> + private List<MesInvItemArnDetail> MapErpDetailsToMesDetails(SqlSugarScope db, List<ErpSltzBList> erpDetails, + Guid mainId) + { + var productCodes = erpDetails + .Where(d => !string.IsNullOrWhiteSpace(d.ProductCode)) + .Select(d => d.ProductCode.Trim()) + .Distinct() + .ToList(); - var main = Context.Queryable<MesInvItemArn>() - .Where(m => m.BillNo == billNo) - .First(); + // 鍏� ToList 鍐� ToDictionary锛岄伩鍏嶇洿鎺ュ ISugarQueryable 璋冪敤鎷撳睍鏂规硶澶辫触 + var itemPairs = db.Queryable<MesItems>() + .Where(item => productCodes.Contains(item.ItemNo)) + .Select(item => new { item.ItemNo, item.Id }) + .ToList(); - var details = main != null - ? Context.Queryable<MesInvItemArnDetail>() - .Where(d => d.Mid == main.Id) - .ToList() - : new List<MesInvItemArnDetail>(); + var itemMap = itemPairs.ToDictionary(k => k.ItemNo, v => v.Id); - return (main, details); + var list = new List<MesInvItemArnDetail>(erpDetails.Count); + + foreach (var erpDetail in erpDetails) + { + var lineNo = ToInt(erpDetail.LineNo); + var productCode = TrimOrNull(erpDetail.ProductCode); + + if (productCode == null) + throw new ArgumentNullException(nameof(erpDetail.ProductCode), + $"ERP鏀舵枡鍗曟槑缁嗐�愯锛歿lineNo}銆戠殑鐗╂枡缂栫爜锛圥roductCode锛変笉鑳戒负绌猴紝鏃犳硶鐢熸垚鏄庣粏"); + + if (!itemMap.TryGetValue(productCode, out var itemId)) + throw new KeyNotFoundException( + $"ERP鏀舵枡鍗曟槑缁嗐�愯锛歿lineNo}銆戠殑鐗╂枡缂栫爜銆恵productCode}銆戝湪 MES.mes_items 涓湭鎵惧埌鍖归厤鐨� item_no"); + + var detail = new MesInvItemArnDetail + { + DeliveryLineID = lineNo, + Eid = ToInt(erpDetail.ErpId), + Mid = mainId, + Ebeln = TrimOrNull(erpDetail.FBillNo), + ItemId = ToInt(itemId), + EbelnQty = ToDecimal(erpDetail.PurchaseQty), + SubQty = ToDecimal(erpDetail.DeliveryQty), + Quantity = ToDecimal(erpDetail.IncludeQty), + PurchaseUnit = TrimOrNull(erpDetail.PurchaseUnit), + InventoryUnit = TrimOrNull(erpDetail.InventoryUnit), + Memo = TrimOrNull(erpDetail.Remark), + EbelnK3id = ToInt(erpDetail.FSrcBillNo), + LineK3id = ToInt(erpDetail.FSrcBillLine), + SalesOrderId = TrimOrNull(erpDetail.SalesOrderId), + MtoNo = TrimOrNull(erpDetail.FMtoNo), + Lot = TrimOrNull(erpDetail.FLot), + UrgentFlag = ToBool(erpDetail.urgentFlag), + DepotId = ToInt(erpDetail.DepotId) + }; + + list.Add(detail); + } + + return list; + } + + /// <summary> + /// 鎸夊崟鎹彿鏌ヨ锛堜富+鏄庣粏锛� + /// </summary> + public (MesInvItemArn main, List<MesInvItemArnDetail> details) GetByBillNo(string billNo) + { + if (string.IsNullOrWhiteSpace(billNo)) + throw new ArgumentNullException(nameof(billNo), "鏌ヨ鏉′欢鍗曟嵁鍙蜂笉鑳戒负绌�"); + + var no = billNo.Trim(); + + // SqlSugar: First() + var main = Context.Queryable<MesInvItemArn>() + .Where(m => m.BillNo == no) + .First(); + + var details = main != null + ? Context.Queryable<MesInvItemArnDetail>().Where(d => d.Mid == main.Id).ToList() + : new List<MesInvItemArnDetail>(); + + return (main, details); + } + + #region 瀹夊叏杞崲/宸ュ叿鏂规硶 + + private static string TrimOrNull(string s) => + string.IsNullOrWhiteSpace(s) ? null : s.Trim(); + + private static int ToInt(object value, int @default = 0) + { + switch (value) + { + case null: return @default; + case int i: return i; + case long l: return unchecked((int)l); + case short sh: return sh; + case byte b: return b; + case decimal dm: return (int)dm; + case double db: return (int)db; + case float f: return (int)f; + case string s when int.TryParse(s, out var n): return n; + default: return @default; + } + } + + private static decimal ToDecimal(object value, decimal @default = 0m) + { + switch (value) + { + case null: return @default; + case decimal dm: return dm; + case double db: return (decimal)db; + case float f: return (decimal)f; + case int i: return i; + case long l: return l; + case string s when decimal.TryParse(s, out var n): return n; + default: return @default; + } + } + + private static bool ToBool(object value, bool @default = false) + { + switch (value) + { + case null: return @default; + case bool b: return b; + case int i: return i != 0; + case long l: return l != 0; + case string s: + var t = s.Trim().ToLowerInvariant(); + return t switch + { + "1" => true, + "0" => false, + "y" => true, + "n" => false, + "true" => true, + "false" => false, + _ => @default + }; + default: return @default; + } + } + + private static DateTime? ToDate(object value) + { + switch (value) + { + case null: return null; + case DateTime dt: return dt; + case string s when DateTime.TryParse(s, out var d): return d; + default: return null; + } + } + + #endregion } } \ No newline at end of file diff --git a/MES.Service/service/BasicData/MesRohInManager.cs b/MES.Service/service/BasicData/MesRohInManager.cs index b6a6442..c1be11a 100644 --- a/MES.Service/service/BasicData/MesRohInManager.cs +++ b/MES.Service/service/BasicData/MesRohInManager.cs @@ -97,9 +97,27 @@ mesRohIn.DocumentStatus = rohIn.FDocumentStatus; mesRohIn.DocumentType = rohIn.FBillTypeID; mesRohIn.BusinessType = rohIn.FBusinessType; - if (rohIn.FDate != null) - mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate, - "yyyy-MM-dd HH:mm:ss", null); + /*if (rohIn.FDate != null) + mesRohIn.PurchaseDate = DateTime.ParseExact(rohIn.FDate, + "yyyy-MM-d H:m:s", null);*/ + + // 1. 澶勭悊 fDate锛堥噰璐棩鏈燂級 + if (!rohIn.FDate.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(rohIn.FDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime purchaseDate)) + { + throw new FormatException($"閲囪喘鏃ユ湡锛團Date锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + mesRohIn.PurchaseDate = purchaseDate; + } + else + { + mesRohIn.PurchaseDate = null; + } + + mesRohIn.Supplier = rohIn.FSupplierId; mesRohIn.CloseStatus = rohIn.FCloseStatus; mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId; @@ -112,26 +130,92 @@ mesRohIn.Remarks = rohIn.Remarks; mesRohIn.CancellationStatus = rohIn.FCancelStatus; mesRohIn.CancellationPerson = rohIn.FCancellerId; - if (rohIn.FCancelDate != null) + /*if (rohIn.FCancelDate != null) if (!mesRohIn.CancellationPerson.IsNullOrEmpty()) mesRohIn.CancellationDate = DateTime.ParseExact(rohIn.FCancelDate, - "yyyy-MM-dd HH:mm:ss", null); + "yyyy-MM-d H:m:s", null); mesRohIn.CreateBy = rohIn.FCreatorId; if (rohIn.FCreateDate != null) mesRohIn.CreateDate = DateTime.ParseExact(rohIn.FCreateDate, - "yyyy-MM-dd HH:mm:ss", null); + "yyyy-MM-d H:m:s", null); mesRohIn.LastupdateBy = rohIn.FModifierId; if (rohIn.FModifyDate != null) mesRohIn.LastupdateDate = DateTime.ParseExact(rohIn.FModifyDate, - "yyyy-MM-dd HH:mm:ss", null); + "yyyy-MM-d H:m:s", null); + mesRohIn.Prearrivaldate = rohIn.Prearrivaldate != null + ? DateTime.ParseExact(rohIn.Prearrivaldate, + "yyyy-MM-d H:m:s", null) + : null;*/ + if (!rohIn.FCancelDate.IsNullOrEmpty() && !mesRohIn.CancellationPerson.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(rohIn.FCancelDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime cancelDate)) + { + throw new FormatException($"鍙栨秷鏃ユ湡锛團CancelDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FCancelDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + mesRohIn.CancellationDate = cancelDate; + } + else + { + mesRohIn.CancellationDate = null; + } + + // 3. 澶勭悊 fCreateDate锛堝垱寤烘棩鏈燂級 + if (!rohIn.FCreateDate.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(rohIn.FCreateDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime createDate)) + { + throw new FormatException($"鍒涘缓鏃ユ湡锛團CreateDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FCreateDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + mesRohIn.CreateDate = createDate; + } + else + { + mesRohIn.CreateDate = null; + } + + // 4. 澶勭悊 fModifyDate锛堜慨鏀规棩鏈燂級 + if (!rohIn.FModifyDate.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(rohIn.FModifyDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime modifyDate)) + { + throw new FormatException($"淇敼鏃ユ湡锛團ModifyDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.FModifyDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + mesRohIn.LastupdateDate = modifyDate; + } + else + { + mesRohIn.LastupdateDate = null; + } + + + // 6. 澶勭悊 prearrivaldate锛堥璁″埌璐ф棩鏈燂級 + if (!rohIn.Prearrivaldate.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(rohIn.Prearrivaldate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime preArrivalDate)) + { + throw new FormatException( + $"棰勮鍒拌揣鏃ユ湡锛圥rearrivaldate锛夎В鏋愬け璐ワ紒鍊硷細銆恵rohIn.Prearrivaldate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + mesRohIn.Prearrivaldate = preArrivalDate; + } + else + { + mesRohIn.Prearrivaldate = null; + } + mesRohIn.ErpCheckBy = rohIn.FApproverId; mesRohIn.ErpCheckDate = rohIn.FApproveDate; mesRohIn.Changereason = rohIn.FChangeReason; - mesRohIn.Prearrivaldate = rohIn.Prearrivaldate != null - ? DateTime.ParseExact(rohIn.Prearrivaldate, - "yyyy-MM-dd HH:mm:ss", null) - : null; + mesRohIn.ReceiveOrgId = rohIn.FReceiveOrgId; mesRohIn.ProviderId = rohIn.FProviderId; mesRohIn.Anred = rohIn.FTContact; @@ -161,17 +245,45 @@ InventoryUnit = s.FStockUnitID, PricingUnit = s.FPriceUnitId, PricingQty = Convert.ToDecimal(s.FPriceUnitQty), + /* DeliveryDate = s.FDeliveryDate != null ? DateTime.ParseExact(s.FDeliveryDate, - "yyyy-MM-dd HH:mm:ss", null) + "yyyy-MM-d H:m:s", null) : null, EarliestDeliveryDate = s.FDeliveryEarlyDate != null ? DateTime.ParseExact(s.FDeliveryEarlyDate, - "yyyy-MM-dd HH:mm:ss", null) + "yyyy-MM-d H:m:s", null) : null, LatestDeliveryDate = s.FDeliveryLastDate != null ? DateTime.ParseExact(s.FDeliveryLastDate, - "yyyy-MM-dd HH:mm:ss", null) + "yyyy-MM-d H:m:s", null) + : null, + */ + // 1. 澶勭悊 fDeliveryDate锛堜氦璐ф棩鏈燂級 + DeliveryDate = !s.FDeliveryDate.IsNullOrEmpty() + ? (DateTime.TryParseExact(s.FDeliveryDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime deliveryDate) + ? deliveryDate + : throw new FormatException( + $"浜よ揣鏃ユ湡锛團DeliveryDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s")) + : null, + + // 2. 澶勭悊 fDeliveryEarlyDate锛堟渶鏃╀氦璐ф棩鏈燂級 + EarliestDeliveryDate = !s.FDeliveryEarlyDate.IsNullOrEmpty() + ? (DateTime.TryParseExact(s.FDeliveryEarlyDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime earlyDate) + ? earlyDate + : throw new FormatException( + $"鏈�鏃╀氦璐ф棩鏈燂紙FDeliveryEarlyDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryEarlyDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s")) + : null, + + // 3. 澶勭悊 fDeliveryLastDate锛堟渶鏅氫氦璐ф棩鏈燂級 + LatestDeliveryDate = !s.FDeliveryLastDate.IsNullOrEmpty() + ? (DateTime.TryParseExact(s.FDeliveryLastDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime lastDate) + ? lastDate + : throw new FormatException( + $"鏈�鏅氫氦璐ф棩鏈燂紙FDeliveryLastDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FDeliveryLastDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s")) : null, IsGift = s.FGiveAway, Remarks = s.FEntryNote, @@ -213,25 +325,55 @@ SalesOrderId = s.SalesOrderId, OrderLineId = s.OrderLineId, FSUBREQENTRYID = s.FSUBREQENTRYID - }; - if (s.FFreezeDate != null) + /*if (s.FFreezeDate != null) if (!s.FFreezerId.IsNullOrEmpty()) entity.FreezeTime = DateTime.ParseExact(s.FFreezeDate, - "yyyy-MM-dd HH:mm:ss", null); + "yyyy-MM-d H:m:s", null); if (s.FTerminateDate != null) if (!s.FTerminaterId.IsNullOrEmpty()) entity.TerminateTime = DateTime.ParseExact(s.FTerminateDate, - "yyyy-MM-dd HH:mm:ss", null); + "yyyy-MM-d H:m:s", null);*/ +// 4. 澶勭悊 fFreezeDate锛堝喕缁撴棩鏈燂級 + if (!s.FFreezeDate.IsNullOrEmpty() && !s.FFreezerId.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(s.FFreezeDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime freezeTime)) + { + throw new FormatException($"鍐荤粨鏃ユ湡锛團FreezeDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FFreezeDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + entity.FreezeTime = freezeTime; + } + else + { + entity.FreezeTime = null; + } + + // 5. 澶勭悊 fTerminateDate锛堢粓姝㈡棩鏈燂級 + if (!s.FTerminateDate.IsNullOrEmpty() && !s.FTerminaterId.IsNullOrEmpty()) + { + if (!DateTime.TryParseExact(s.FTerminateDate, "yyyy-MM-d H:m:s", CultureInfo.InvariantCulture, + DateTimeStyles.None, out DateTime terminateTime)) + { + throw new FormatException($"缁堟鏃ユ湡锛團TerminateDate锛夎В鏋愬け璐ワ紒鍊硷細銆恵s.FTerminateDate}銆戯紝鏀寔鏍煎紡锛歽yyy-MM-d H:m:s"); + } + + entity.TerminateTime = terminateTime; + } + else + { + entity.TerminateTime = null; + } var single = rohInDataManager.GetSingle(it => it.EbelnK3id == entity.EbelnK3id); if (single != null) entity.Guid = single.Guid; - + return entity; }).ToList(); } diff --git a/MESApplication/Controllers/BasicData/MesInvItemArnController.cs b/MESApplication/Controllers/BasicData/MesInvItemArnController.cs index 5ede88f..9eb31c7 100644 --- a/MESApplication/Controllers/BasicData/MesInvItemArnController.cs +++ b/MESApplication/Controllers/BasicData/MesInvItemArnController.cs @@ -43,7 +43,7 @@ Data = JsonConvert.SerializeObject(erpSltz), Status = 1, // 鐘舵�侊細1-寰呭鐞� CreateBy = "SYSTEM", // 鍒涘缓浜猴細绯荤粺鏍囪瘑 - Route = erpSltz?.ErpSltza?.billNo ?? "鏈煡鍗曟嵁鍙�" // 璺敱鏍囪瘑锛氱敤鏀舵枡鍗曞崟鎹彿 + Route = erpSltz?.ErpSltza?.DeliveryNo ?? "鏈煡鍗曟嵁鍙�" // 璺敱鏍囪瘑锛氱敤鏀舵枡鍗曞崟鎹彿 }; try @@ -137,7 +137,7 @@ } } - /// <summary> + /*/// <summary> /// 鑾峰彇鏀舵枡鍗曞垪琛紙涓昏〃鏁版嵁锛屾敮鎸佸悗缁墿灞曞垎椤�/绛涢�夛級 /// </summary> /// <returns>鏀舵枡鍗曞垪琛紙鎬绘潯鏁�+鍒楄〃鏁版嵁锛�</returns> @@ -292,7 +292,7 @@ // 4. 寮傚父澶勭悊 return ResponseResult.ResponseError(ex); } - } + }*/ /// <summary> /// 鏇存柊鏀舵枡鍗曪紙鐩存帴浼犲叆MES瀹炰綋锛岄�傜敤浜庡唴閮ㄧ郴缁熸洿鏂帮級 -- Gitblit v1.9.3