MES.Service/Dto/webApi/ErpRohinData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/webApi/ErpSltz.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/webApi/ErpSltzBList.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Dto/webApi/ErpSltza.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/MesInvItemArn.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/MesInvItemArnDetail.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/Modes/MesRohInData.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/service/BasicData/MesInvItemArnManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MES.Service/service/BasicData/MesRohInManager.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
MESApplication/Controllers/BasicData/MesInvItemArnController.cs | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
MES.Service/Dto/webApi/ErpRohinData.cs
@@ -53,5 +53,8 @@ public string? FDEMANDBILLENTRYSEQ { get; set; } public string? SalesOrderId { get; set; } public string? OrderLineId { get; set; } public string? FSUBREQENTRYID { get; set; } } MES.Service/Dto/webApi/ErpSltz.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,7 @@ namespace MES.Service.Dto.webApi; public class ErpSltz { public ErpSltza ErpSltza { get; set; } public List<ErpSltzBList> ErpSltzBList { get; set; } } MES.Service/Dto/webApi/ErpSltzBList.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,84 @@ namespace MES.Service.Dto.webApi; public class ErpSltzBList { /// <summary> /// æ¶æéç¥ååå½å ç /// </summary> public string? LineNo { get; set; } /// <summary> /// 订ååå· /// </summary> public string? FBillNo { get; set; } /// <summary> /// ç©æç¼ç /// </summary> public string? ProductCode { get; set; } /// <summary> /// è®¢åæ°é /// </summary> public string? PurchaseQty { get; set; } /// <summary> /// æ¬æ¬¡åºæ¶æ°é /// </summary> public string? DeliveryQty { get; set; } /// <summary> /// 交货æ°é /// </summary> public string? IncludeQty { get; set; } /// <summary> /// æ¶æåä½ /// </summary> public string? PurchaseUnit { get; set; } /// <summary> /// åºååä½ /// </summary> public string? InventoryUnit { get; set; } /// <summary> /// 夿³¨ /// </summary> public string? Remark { get; set; } /// <summary> /// æºååå· /// </summary> public string? FSrcBillNo { get; set; } /// <summary> /// æºååå½å ç /// </summary> public string? FSrcBillLine { get; set; } /// <summary> /// éå®è®¢åå· /// </summary> public string? SalesOrderId { get; set; } /// <summary> /// 计åè·è¸ªå· /// </summary> public string? FMtoNo { get; set; } /// <summary> /// æ¹å· /// </summary> public string? FLot { get; set; } /// <summary> /// æ¥ææ è¯ /// </summary> public string? urgentFlag { get; set; } /// <summary> /// ä»åº /// </summary> public string? DepotId { get; set; } } MES.Service/Dto/webApi/ErpSltza.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,55 @@ namespace MES.Service.Dto.webApi; public class ErpSltza { /// <summary> /// æä½ç±»å /// </summary> public string? TYPE { get; set; } /// <summary> /// åæ®ç¼å· /// </summary> public string? billNo { get; set; } /// <summary> /// ä¾åºå /// </summary> public string? SupplierId { get; set; } /// <summary> /// åæ®æ¥æ /// </summary> public string? FDate { get; set; } /// <summary> /// 夿³¨ /// </summary> public string? Remark { get; set; } /// <summary> /// æ¯å¦ä¾å /// </summary> public string? F_ZJXF_sfgx { get; set; } /// <summary> /// æ¶æéç¥å表头å ç /// </summary> public string? erpId { get; set; } /// <summary> /// å建人 /// </summary> public string? createBy { get; set; } /// <summary> /// æ¯å¦å§å¤ /// </summary> public string? fType { get; set; } /// <summary> /// æ¶æç»ç» /// </summary> public string? ReceiveOrgId { get; set; } } MES.Service/Modes/MesInvItemArn.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,69 @@ using SqlSugar; namespace MES.Service.Modes; /// <summary> /// æ¶æå表ï¼å¯¹åºMES_INV_ITEM_ARNè¡¨ï¼ /// </summary> [SugarTable("MES_INV_ITEM_ARN")] public class MesInvItemArn { /// <summary> /// è®°å½å¯ä¸æ è¯ï¼ä¸»é®ï¼ /// </summary> [SugarColumn(ColumnName = "GUID", IsPrimaryKey = true)] public Guid Id { get; set; } /// <summary> /// æ¶æåå· /// </summary> [SugarColumn(ColumnName = "bill_no")] public string? BillNo { get; set; } /// <summary> /// ä¾åºåç¼å· /// </summary> [SugarColumn(ColumnName = "supp_id")] public string? SuppId { get; set; } /// <summary> /// åæ®æ¥æ /// </summary> [SugarColumn(ColumnName = "create_date")] public DateTime? CreateDate { get; set; } /// <summary> /// 夿³¨ä¿¡æ¯ /// </summary> [SugarColumn(ColumnName = "remark")] public string? Remark { get; set; } /// <summary> /// æ¯å¦srmï¼0å¦ã1æ¯ï¼ /// </summary> [SugarColumn(ColumnName = "IS_SRM")] public int? IsSrm { get; set; } /// <summary> /// ERPID /// </summary> [SugarColumn(ColumnName = "ebeln_k3id")] public string? EbelnK3id { get; set; } /// <summary> /// å建人 /// </summary> [SugarColumn(ColumnName = "create_by")] public string? CreateBy { get; set; } /// <summary> /// æ¯å¦å§å¤ /// </summary> [SugarColumn(ColumnName = "f_type")] public bool? FType { get; set; } /// <summary> /// æ¶æç»ç» /// </summary> [SugarColumn(ColumnName = "ReceiveOrgId")] public string? ReceiveOrgId { get; set; } } MES.Service/Modes/MesInvItemArnDetail.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,117 @@ using SqlSugar; namespace MES.Service.Modes; /// <summary> /// æ¶æåæç»è¡¨ï¼å¯¹åºMES_INV_ITEM_ARN_DETAILè¡¨ï¼ /// </summary> [SugarTable("MES_INV_ITEM_ARN_DETAIL")] public class MesInvItemArnDetail { // /// <summary> // /// æ¶æéç¥ååå½å ç // /// </summary> // [SugarColumn(IsPrimaryKey = true)] // é»è®¤ä¸ºä¸»é®ï¼è¥å®é 主é®ä¸æ¯è¯¥å段ï¼å¯æ ¹æ®ä¸å¡è°æ´ä¸»é®é ç½®ï¼ // public int? LineNo { get; set; } /// <summary> /// éè´åå· /// </summary> [SugarColumn(ColumnName = "ebeln")] public string? Ebeln { get; set; } /// <summary> /// æç»è¡¨è®°å½å¯ä¸æ è¯ï¼ä¸»é®ï¼ /// </summary> [SugarColumn(ColumnName = "GUID", IsPrimaryKey = true)] public Guid Id { get; set; } /// <summary> /// å ³è主表ï¼MES_INV_ITEM_ARNï¼ç ID /// </summary> [SugarColumn(ColumnName = "parent_Guid")] public Guid? Mid { get; set; } /// <summary> /// ç©æç¼ç /// </summary> [SugarColumn(ColumnName = "item_id")] public int? ItemId { get; set; } /// <summary> /// éè´è®¢åæ°é /// </summary> [SugarColumn(ColumnName = "ebeln_qty")] public decimal? EbelnQty { get; set; } /// <summary> /// æ¬æ¬¡åºæ¶æ°é /// </summary> [SugarColumn(ColumnName = "sub_qty")] public decimal? SubQty { get; set; } /// <summary> /// æ¬æ¬¡å®æ¶æ°é /// </summary> [SugarColumn(ColumnName = "quantity")] public decimal? Quantity { get; set; } // /// <summary> // /// éè´åä½ // /// </summary> // [SugarColumn] // æªæä¾å ·ä½MESæ è¯ï¼é»è®¤æå±æ§åæ å°ï¼è¥å®é åæ®µåä¸åï¼éè¡¥å ColumnNameï¼ // public string? PurchaseUnit { get; set; } // // /// <summary> // /// åºååä½ // /// </summary> // [SugarColumn] // æªæä¾å ·ä½MESæ è¯ï¼é»è®¤æå±æ§åæ å°ï¼è¥å®é åæ®µåä¸åï¼éè¡¥å ColumnNameï¼ // public string? InventoryUnit { get; set; } /// <summary> /// 夿³¨ /// </summary> [SugarColumn(ColumnName = "memo")] public string? Memo { get; set; } /// <summary> /// éè´åID /// </summary> [SugarColumn(ColumnName = "ebeln_k3id")] public int? EbelnK3id { get; set; } /// <summary> /// éè´åè¡ID /// </summary> [SugarColumn(ColumnName = "line_k3id")] public int? LineK3id { get; set; } // /// <summary> // /// éå®è®¢åå· // /// </summary> // [SugarColumn] // æªæä¾å ·ä½MESæ è¯ï¼é»è®¤æå±æ§åæ å°ï¼è¥å®é åæ®µåä¸åï¼éè¡¥å ColumnNameï¼ // public string? SalesOrderId { get; set; } // // /// <summary> // /// 计åè·è¸ªå· // /// </summary> // [SugarColumn] // æªæä¾å ·ä½MESæ è¯ï¼é»è®¤æå±æ§åæ å°ï¼è¥å®é åæ®µåä¸åï¼éè¡¥å ColumnNameï¼ // public string? FMtoNo { get; set; } // // /// <summary> // /// æ¹å· // /// </summary> // [SugarColumn] // æªæä¾å ·ä½MESæ è¯ï¼é»è®¤æå±æ§åæ å°ï¼è¥å®é åæ®µåä¸åï¼éè¡¥å ColumnNameï¼ // public string? FLot { get; set; } /// <summary> /// æ¥ææ è¯ /// </summary> [SugarColumn(ColumnName = "urgent_flag")] public bool? UrgentFlag { get; set; } // /// <summary> // /// æ¶è´§ä»åºç¼å· // /// </summary> // [SugarColumn(ColumnName = "FSTOCKID")] // public string? FStockId { get; set; } } MES.Service/Modes/MesRohInData.cs
@@ -355,4 +355,11 @@ /// </summary> [SugarColumn(ColumnName = "FDEMANDBILLNO_LINE")] public string? FdemandbillnoLine { get; set; } /// <summary> /// å§å¤è®¢ååå½å ç /// </summary> [SugarColumn(ColumnName = "FSUBREQENTRYID")] public string? FSUBREQENTRYID { get; set; } } MES.Service/service/BasicData/MesInvItemArnManager.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,263 @@ using MES.Service.DB; using MES.Service.Dto.webApi; using MES.Service.Modes; using MES.Service.util; using SqlSugar; using System; using System.Collections.Generic; using System.Linq; namespace MES.Service.service; /// <summary> /// æ¶æåæ°æ®ç®¡çç±»ï¼å¤çERPæ¶æåæ°æ®åæ¥å°MESæ¶æåè¡¨ï¼ /// å ³è主表ï¼MesInvItemArnï¼æç»è¡¨ï¼MesInvItemArnDetail /// å ³èERP DTOï¼ErpSltzï¼èåç±»ï¼ãErpSltzaï¼ERP主表ï¼ãErpSltzBListï¼ERPæç»ï¼ /// </summary> public class MesInvItemArnManager : Repository<MesInvItemArn> { /// <summary> /// æ¹éä¿åæ¶æåï¼ä¸»è¡¨+æç»ï¼- äºå¡ä¿è¯æ¹éæä½ä¸è´æ§ /// </summary> /// <param name="erpSltzList">ERPæ¶æåå表ï¼å«ä¸»è¡¨+æç»ï¼</param> /// <returns>å ¨é¨æåè¿åtrueï¼å¦åfalse</returns> public bool SaveList(List<ErpSltz> erpSltzList) { if (erpSltzList == null || !erpSltzList.Any()) throw new ArgumentNullException(nameof(erpSltzList), "å¾ ä¿åçæ¶æåå表ä¸è½ä¸ºç©º"); // ä¿®å¤ï¼ç¨äºå¡å 裹æ¹éæä½ï¼ç¡®ä¿æ°æ®ä¸è´æ§ return UseTransaction(db => { foreach (var erpSltz in erpSltzList) { // ä¿®å¤ï¼è°ç¨äºå¡å çSaveæ¹æ³ï¼ä¼ å ¥dbå®ä¾ if (!Save(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æ°æ®å°MESå®ä½ï¼ä¿®å¤å段注éï¼è¡¥å å ³é®å±æ§ï¼ 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-å é¤ï¼"); } } /// <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 => { return Save(db, erpSltz) ? 1 : 0; }) > 0; } /// <summary> /// æåè·åæçæMES主表IDï¼ä¿®å¤ï¼ç¨äºå¡å dbæ¥è¯¢ï¼ /// </summary> private Guid GetOrCreateMainId(SqlSugarScope db, ErpSltza erpMain) { if (string.IsNullOrEmpty(erpMain.billNo)) throw new ArgumentException("ERPæ¶æååæ®å·ä¸è½ä¸ºç©ºï¼æ æ³ç¡®å®ä¸»è¡¨å¯ä¸æ§", nameof(erpMain.billNo)); // ä¿®å¤ï¼ç¨äºå¡å ç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) { 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 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主表æ å°å°MES主表ï¼ä¿®å¤ï¼åæ¶å ³é®å段注éï¼ä¿®æ£FTypeé»è¾ï¼ /// </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); // ä¾åºåID转æ¢ï¼åç¬¦ä¸²ç´æ¥èµå¼ï¼å¹é MESåæ®µç±»åï¼ string suppId = string.IsNullOrEmpty(erpMain.SupplierId) ? null : erpMain.SupplierId.Trim(); // ä¿®å¤ï¼âæ¯å¦å§å¤âé»è¾ï¼å设ERPçfTypeæ¯â1â=æ¯ï¼â0â=å¦ï¼æboolåç¬¦ä¸²ï¼ bool isOutsourcing = false; if (!string.IsNullOrEmpty(erpMain.fType)) { 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ï¼å¯¹åºebeln_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æç»æ å°å°MESæç»ï¼ä¿®å¤ï¼åæ¶å ³é®å段注éï¼ä¿®æ£EbelnK3id转æ¢ï¼ /// </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); // æ¬æ¬¡å®æ¶æ°é // ä¿®å¤ï¼ç¨éè´åIDåæ®µï¼ebeln_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 { // ä¿®å¤ï¼åæ¶å ³é®å段注éï¼è¡¥å èµå¼ // LineNo = lineNo, // æç»ä¸»é®ï¼å¿ é¡»èµå¼ï¼ Mid = mainId, // å¤é®ï¼å ³è主表IDï¼å¿ é¡»èµå¼ï¼ 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, // ä¿®å¤ï¼æ£ç¡®çéè´åIDè½¬æ¢ LineK3id = lineK3id, // SalesOrderId = erpDetail.SalesOrderId?.Trim(), // éå®è®¢åå·ï¼è¡¥å èµå¼ï¼ // FMtoNo = erpDetail.FMtoNo?.Trim(), // 计åè·è¸ªå·ï¼è¡¥å èµå¼ï¼ // FLot = erpDetail.FLot?.Trim(), // æ¹å·ï¼è¡¥å èµå¼ï¼ UrgentFlag = urgentFlag //FStockId = erpDetail.DepotId?.Trim() // æ¶è´§ä»åºç¼å· }; }).ToList(); } /// <summary> /// æåæ®å·æ¥è¯¢MESæ¶æåï¼ä¸»è¡¨+æç»ï¼ /// </summary> public (MesInvItemArn main, List<MesInvItemArnDetail> details) GetByBillNo(string billNo) { if (string.IsNullOrEmpty(billNo)) throw new ArgumentNullException(nameof(billNo), "æ¥è¯¢æ¡ä»¶åæ®å·ä¸è½ä¸ºç©º"); var main = Context.Queryable<MesInvItemArn>() .Where(m => m.BillNo == billNo) .First(); var details = main != null ? Context.Queryable<MesInvItemArnDetail>() .Where(d => d.Mid == main.Id) .ToList() : new List<MesInvItemArnDetail>(); return (main, details); } } MES.Service/service/BasicData/MesRohInManager.cs
@@ -90,21 +90,16 @@ { var eid = long.Parse(rohIn.id); var mesRohIn = new MesRohIn(); var single = base.GetSingle(it => it.EbelnK3id == eid); if (single != null) mesRohIn.Guid = single.Guid; mesRohIn.EbelnK3id = eid; mesRohIn.BillNo = rohIn.FBillNo; 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); mesRohIn.Supplier = rohIn.FSupplierId; mesRohIn.CloseStatus = rohIn.FCloseStatus; mesRohIn.PurchaseOrg = rohIn.FPurchaseOrgId; @@ -117,25 +112,19 @@ mesRohIn.Remarks = rohIn.Remarks; mesRohIn.CancellationStatus = rohIn.FCancelStatus; mesRohIn.CancellationPerson = rohIn.FCancellerId; if (rohIn.FCancelDate != null) if (!mesRohIn.CancellationPerson.IsNullOrEmpty()) mesRohIn.CancellationDate = DateTime.ParseExact(rohIn.FCancelDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.CreateBy = rohIn.FCreatorId; if (rohIn.FCreateDate != null) mesRohIn.CreateDate = DateTime.ParseExact(rohIn.FCreateDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.LastupdateBy = rohIn.FModifierId; if (rohIn.FModifyDate != null) mesRohIn.LastupdateDate = DateTime.ParseExact(rohIn.FModifyDate, "yyyy-MM-dd HH:mm:ss", null); mesRohIn.ErpCheckBy = rohIn.FApproverId; mesRohIn.ErpCheckDate = rohIn.FApproveDate; mesRohIn.Changereason = rohIn.FChangeReason; @@ -143,10 +132,8 @@ ? DateTime.ParseExact(rohIn.Prearrivaldate, "yyyy-MM-dd HH:mm:ss", null) : null; mesRohIn.ReceiveOrgId = rohIn.FReceiveOrgId; mesRohIn.ProviderId = rohIn.FProviderId; mesRohIn.Anred = rohIn.FTContact; mesRohIn.Telf1 = rohIn.Fmobilephone; mesRohIn.FixedTelephone = rohIn.FixedTelephone; @@ -195,21 +182,8 @@ BusinessClose = s.FMRPCloseStatus, BusinessFreeze = s.FMRPFreezeStatus, Freezer = s.FFreezerId, //FreezeTime = !string.IsNullOrEmpty(s.FFreezeDate) // && DateTime.TryParseExact(s.FFreezeDate, // new[] { "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd" }, // æ¯æå¤ç§æ ¼å¼ // CultureInfo.InvariantCulture, // DateTimeStyles.None, // out var parsedDate) // && parsedDate > new DateTime(1900, 1, 1) // ? parsedDate // : (DateTime?)null, BusinessTerminate = s.FMRPTerminateStatus, Terminator = s.FTerminaterId, //TerminateTime = s.FTerminateDate != null // ? DateTime.ParseExact(s.FTerminateDate, // "yyyy-MM-dd HH:mm:ss", null) // : null, TotalReceivedQty = Convert.ToDecimal(s.FReceiveQty), //ç´¯è®¡æ¶ææ° RemainingReceivedQty = Convert.ToDecimal(s.FRemainReceiveQty), @@ -237,7 +211,9 @@ DemandDepartment = s.FRequireDeptId, ReceivingDepartment = s.FReceiveDeptId, SalesOrderId = s.SalesOrderId, OrderLineId = s.OrderLineId OrderLineId = s.OrderLineId, FSUBREQENTRYID = s.FSUBREQENTRYID }; if (s.FFreezeDate != null) @@ -255,7 +231,7 @@ var single = rohInDataManager.GetSingle(it => it.EbelnK3id == entity.EbelnK3id); if (single != null) entity.Guid = single.Guid; return entity; }).ToList(); } MESApplication/Controllers/BasicData/MesInvItemArnController.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,339 @@ using System.Dynamic; using MES.Service.Dto.webApi; using MES.Service.Modes; using MES.Service.service; using MES.Service.service.BasicData; using MES.Service.util; using Microsoft.AspNetCore.Mvc; using Newtonsoft.Json; namespace MESApplication.Controllers.BasicData; /// <summary> /// æ¶æåæ§å¶å¨ï¼å¤çæ¶æåç¸å ³API请æ±ï¼å ³èMES_INV_ITEM_ARN主表ä¸MES_INV_ITEM_ARN_DETAILæç»è¡¨ï¼ /// </summary> [ApiController] [Route("api/[controller]")] public class MesInvItemArnController : ControllerBase { // æ¶æ¯ä¸å¿ç®¡çå¨ï¼ç¨äºæ¥å£æ¥å¿è®°å½ï¼ private readonly MessageCenterManager _messageCenterManager = new(); // æ¶æåä¸å¡é»è¾ç®¡çå¨ï¼æ ¸å¿ä¸å¡å¤çï¼ private readonly MesInvItemArnManager _mesInvItemArnManager = new(); // æ¥å£åºç¡é ç½®ï¼è¯·æ±æ¹æ³ã表åãåºç¡URLï¼ private readonly string _method = "POST"; private readonly string _tableName = "MES_INV_ITEM_ARN"; private readonly string _baseUrl = "http://localhost:10054/api/MesInvItemArn/"; /// <summary> /// ä¿åæ¶æåï¼åæ¡ï¼å«ä¸»è¡¨+æç»ï¼ /// </summary> /// <param name="erpSltz">ERPæ¶æåæ°æ®ï¼å«ä¸»è¡¨ErpSltza+æç»ErpSltzBListï¼</param> /// <returns>ä¿åç»æï¼æå/å¤±è´¥ç¶æ+详æ ï¼</returns> [HttpPost("Save")] public ResponseResult Save(ErpSltz erpSltz) { // 1. åå§åæ¶æ¯ä¸å¿å®ä½ï¼è®°å½æ¥å£è°ç¨æ¥å¿ï¼ç¨äºè¿½æº¯ï¼ var messageEntity = new MessageCenter { TableName = _tableName, Url = _baseUrl + "Save", Method = _method, Data = JsonConvert.SerializeObject(erpSltz), Status = 1, // ç¶æï¼1-å¾ å¤ç CreateBy = "SYSTEM", // å建人ï¼ç³»ç»æ è¯ Route = erpSltz?.ErpSltza?.billNo ?? "æªç¥åæ®å·" // è·¯ç±æ è¯ï¼ç¨æ¶æååæ®å· }; try { dynamic resultData = new ExpandoObject(); // 2. è°ç¨ä¸å¡å±ä¿åæ¹æ³ï¼å¤ç主表+æç»åæ¥ï¼ var saveSuccess = _mesInvItemArnManager.Save(erpSltz); resultData.saveResult = saveSuccess; // 3. æ´æ°æ¶æ¯ä¸å¿ç¶æï¼ä¿åæåï¼ messageEntity.Result = 1; // ç»æï¼1-æå messageEntity.DealWith = 1; // å¤çç¶æï¼1-å·²å¤ç _messageCenterManager.save(messageEntity); // 4. è¿åæåååº return new ResponseResult { status = 0, message = "æ¶æåä¿åæå", data = resultData }; } catch (Exception ex) { // 5. å¼å¸¸å¤çï¼è®°å½é误æ¥å¿ messageEntity.Result = 0; // ç»æï¼0-失败 messageEntity.DealWith = 0; // å¤çç¶æï¼0-æªå¤ç messageEntity.ResultData = ex.Message + (ex.InnerException != null ? $"ï¼å é¨å¼å¸¸ï¼{ex.InnerException.Message}ï¼" : ""); // é误详æ _messageCenterManager.save(messageEntity); // 6. è¿åé误ååº return ResponseResult.ResponseError(ex); } } /// <summary> /// æ¹éä¿åæ¶æåï¼å¤æ¡ï¼å«ä¸»è¡¨+æç»ï¼äºå¡ä¿è¯ä¸è´æ§ï¼ /// </summary> /// <param name="erpSltzList">ERPæ¶æååè¡¨ï¼æ¯æ¡å«ä¸»è¡¨+æç»ï¼</param> /// <returns>æ¹éä¿åç»æï¼æ»æ¡æ°ãæåæ¡æ°ï¼</returns> [HttpPost("SaveList")] public ResponseResult SaveList(List<ErpSltz> erpSltzList) { // 1. åå§åæ¶æ¯ä¸å¿å®ä½ var messageEntity = new MessageCenter { TableName = _tableName, Url = _baseUrl + "SaveList", Method = _method, Data = JsonConvert.SerializeObject(erpSltzList), Status = 1, CreateBy = "SYSTEM", Route = $"æ¹éæ°æ®ï¼å ±{erpSltzList?.Count ?? 0}æ¡ï¼" }; try { dynamic resultData = new ExpandoObject(); int totalCount = erpSltzList?.Count ?? 0; // 2. è°ç¨ä¸å¡å±æ¹éä¿åæ¹æ³ï¼äºå¡å å¤çï¼è¦ä¹å ¨æåè¦ä¹å ¨å¤±è´¥ï¼ var batchSaveSuccess = _mesInvItemArnManager.SaveList(erpSltzList); // 3. ç»è£ è¿åæ°æ®ï¼æ»æ¡æ°ãæåæ¡æ°ï¼ resultData.totalCount = totalCount; resultData.successCount = batchSaveSuccess ? totalCount : 0; // 4. æ´æ°æ¶æ¯ä¸å¿ç¶æ messageEntity.Result = batchSaveSuccess ? 1 : 0; messageEntity.DealWith = 1; _messageCenterManager.save(messageEntity); // 5. è¿åæåååº return new ResponseResult { status = 0, message = $"æ¶æåæ¹éä¿å宿ï¼å ±{totalCount}æ¡æ°æ®", data = resultData }; } catch (Exception ex) { // 6. å¼å¸¸å¤çï¼è®°å½é误æ¥å¿ messageEntity.Result = 0; messageEntity.DealWith = 0; messageEntity.ResultData = ex.Message + (ex.InnerException != null ? $"ï¼å é¨å¼å¸¸ï¼{ex.InnerException.Message}ï¼" : ""); _messageCenterManager.save(messageEntity); // 7. è¿åé误ååº return ResponseResult.ResponseError(ex); } } /// <summary> /// è·åæ¶æåå表ï¼ä¸»è¡¨æ°æ®ï¼æ¯æåç»æ©å±å页/çéï¼ /// </summary> /// <returns>æ¶æååè¡¨ï¼æ»æ¡æ°+åè¡¨æ°æ®ï¼</returns> [HttpGet("GetList")] public ResponseResult GetList() { try { // 1. è°ç¨ä¸å¡å±æ¥è¯¢åè¡¨æ¹æ³ var invArnList = _mesInvItemArnManager.GetList(); // 2. è¿åæ¥è¯¢ç»æ return new ResponseResult { status = 0, message = "æ¶æåå表æ¥è¯¢æå", data = new { total = invArnList.Count, list = invArnList } }; } catch (Exception ex) { // 3. å¼å¸¸å¤ç return ResponseResult.ResponseError(ex); } } /// <summary> /// æ ¹æ®IDè·åæ¶æå详æ ï¼å«ä¸»è¡¨+å ³èæç»ï¼ /// </summary> /// <param name="id">æ¶æå主表IDï¼Guidå符串ï¼</param> /// <returns>æ¶æå主表+æç»è¯¦æ </returns> // [HttpGet("GetById")] // public ResponseResult GetById(string id) // { // try // { // // 1. æ ¡éªIDæ ¼å¼ï¼Guid转æ¢ï¼ // if (!Guid.TryParse(id, out Guid mainId)) // { // return new ResponseResult // { // status = 1, // message = "IDæ ¼å¼é误ï¼è¯·ä¼ å ¥ææçGuidå符串", // data = null // }; // } // // // 2. è°ç¨ä¸å¡å±æ¥è¯¢è¯¦æ æ¹æ³ï¼ä¸»è¡¨+æç»ï¼ // var (mainEntity, detailList) = _mesInvItemArnManager.GetByIdWithDetails(mainId); // // // 3. ç»è£ è¿åæ°æ®ï¼ä¸»è¡¨+æç»ï¼ // var resultData = new // { // main = mainEntity, // details = detailList // }; // // // 4. è¿å详æ ç»æ // return new ResponseResult // { // status = 0, // message = "æ¶æåè¯¦æ æ¥è¯¢æå", // data = resultData // }; // } // catch (Exception ex) // { // // 5. å¼å¸¸å¤ç // return ResponseResult.ResponseError(ex); // } // } /// <summary> /// æ ¹æ®åæ®å·è·åæ¶æå详æ ï¼å«ä¸»è¡¨+å ³èæç»ï¼ /// </summary> /// <param name="billNo">æ¶æååæ®å·</param> /// <returns>æ¶æå主表+æç»è¯¦æ </returns> [HttpGet("GetByBillNo")] public ResponseResult GetByBillNo(string billNo) { try { // 1. æ ¡éªåæ®å·åæ° if (string.IsNullOrEmpty(billNo)) { return new ResponseResult { status = 1, message = "åæ®å·ä¸è½ä¸ºç©º", data = null }; } // 2. è°ç¨ä¸å¡å±æåæ®å·æ¥è¯¢æ¹æ³ï¼ä¸»è¡¨+æç»ï¼ var (mainEntity, detailList) = _mesInvItemArnManager.GetByBillNo(billNo); // 3. ç»è£ è¿åæ°æ® var resultData = new { main = mainEntity, details = detailList }; // 4. è¿å详æ ç»æ return new ResponseResult { status = 0, message = $"åæ®å·ã{billNo}ãæ¶æåè¯¦æ æ¥è¯¢æå", data = resultData }; } catch (Exception ex) { // 5. å¼å¸¸å¤ç return ResponseResult.ResponseError(ex); } } /// <summary> /// æ°å¢æ¶æåï¼ç´æ¥ä¼ å ¥MESå®ä½ï¼éç¨äºå é¨ç³»ç»åå»ºï¼ /// </summary> /// <param name="entity">æ¶æå主表å®ä½</param> /// <returns>æ°å¢ç»æï¼ID+æåç¶æï¼</returns> [HttpPost("Insert")] public ResponseResult Insert([FromBody] MesInvItemArn entity) { try { // 1. è¡¥å ¨å®ä½é»è®¤å¼ï¼ä¸»é®ãå建æ¶é´ï¼ entity.Id = Guid.NewGuid(); entity.CreateDate = DateTime.Now; entity.CreateBy = "SYSTEM"; // é»è®¤ä¸ºç³»ç»å建ï¼å¯æ ¹æ®å®é éæ±æ¹ä¸ºå½åç»å½ç¨æ· // entity.LastUpdateTime = DateTime.Now; // entity.LastUpdateUser = "SYSTEM"; // entity.Status = false; // åå§ç¶æï¼æªå®¡æ ¸ // entity.IsOut = false; // åå§ç¶æï¼æªåºåº entity.IsSrm = 0; // åå§ç¶æï¼éSRM // 2. è°ç¨ä¸å¡å±æ°å¢æ¹æ³ var insertSuccess = _mesInvItemArnManager.Insert(entity); // 3. è¿åæ°å¢ç»æ return new ResponseResult { status = 0, message = insertSuccess ? "æ¶æåæ°å¢æå" : "æ¶æåæ°å¢å¤±è´¥", data = new { id = entity.Id, success = insertSuccess } }; } catch (Exception ex) { // 4. å¼å¸¸å¤ç return ResponseResult.ResponseError(ex); } } /// <summary> /// æ´æ°æ¶æåï¼ç´æ¥ä¼ å ¥MESå®ä½ï¼éç¨äºå é¨ç³»ç»æ´æ°ï¼ /// </summary> /// <param name="entity">æ¶æå主表å®ä½ï¼éå«IDï¼</param> /// <returns>æ´æ°ç»æï¼æåç¶æï¼</returns> // [HttpPost("Update")] // public ResponseResult Update([FromBody] MesInvItemArn entity) // { // try // { // // 1. æ ¡éªIDï¼å¿ é¡»ä¼ å ¥å·²åå¨çIDï¼ // if (entity.Id == Guid.Empty) // { // return new ResponseResult // { // status = 1, // message = "æ´æ°å¤±è´¥ï¼æ¶æåIDä¸è½ä¸ºç©º", // data = false // }; // } // // // 2. è¡¥å ¨æ´æ°åæ®µï¼æåæ´æ°æ¶é´ãæåæ´æ°äººï¼ // entity.LastUpdateTime = DateTime.Now; // entity.LastUpdateUser = "SYSTEM"; // 坿¹ä¸ºå½åç»å½ç¨æ· // // // 3. è°ç¨ä¸å¡å±æ´æ°æ¹æ³ï¼å¿½ç¥å建æ¶é´ï¼é¿å è¦çï¼ // var updateSuccess = _mesInvItemArnManager.Update(entity, ignoreColumns: m => new { m.CreateDate }); // // // 4. è¿åæ´æ°ç»æ // return new ResponseResult // { // status = 0, // message = updateSuccess ? "æ¶æåæ´æ°æå" : "æ¶æåæ´æ°å¤±è´¥ï¼æªæ¾å°å¯¹åºæ°æ®ææ´æ°å¼å¸¸ï¼", // data = updateSuccess // }; // } // catch (Exception ex) // { // // 5. å¼å¸¸å¤ç // return ResponseResult.ResponseError(ex); // } // } }