From ad12ac859cd0c875b6ec220a48b28b747744186e Mon Sep 17 00:00:00 2001
From: ningshuxia <ningshuxia0927@outlook.com>
Date: 星期五, 12 八月 2022 14:37:42 +0800
Subject: [PATCH] 增加 泵曲线映射批量操作接口

---
 Service/IStation.Service4Bimface/bimface_file/BimfaceFile_Instance.cs                                 |    2 
 Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingInput.cs     |   32 ++++++++
 Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingItemInput.cs |   41 ++++++++++
 Application/IStation.Application4DataFile/Helpers/FileHelper.cs                                       |    7 -
 Application/IStation.Application4Product/pump_curve/mapping/PumpCurveMapping_Controller.cs            |   27 ++++++
 Model/IStation.Model4Curve/IStation.Model4Curve.csproj                                                |    1 
 DAL/IStation.DAL4Product/pump_curve/PumpCurveMapping.cs                                               |   56 ++++++++++++++
 Service/IStation.Service4Product/pump_curve/pump_curve_mapping/PumpCurveMapping.cs                    |   55 +++++++++++++
 Application/IStation.Application4Job/IStation.Application4Job.csproj                                  |    3 
 9 files changed, 215 insertions(+), 9 deletions(-)

diff --git a/Application/IStation.Application4DataFile/Helpers/FileHelper.cs b/Application/IStation.Application4DataFile/Helpers/FileHelper.cs
index 4efdc98..46cc9a1 100644
--- a/Application/IStation.Application4DataFile/Helpers/FileHelper.cs
+++ b/Application/IStation.Application4DataFile/Helpers/FileHelper.cs
@@ -6,7 +6,7 @@
 using System.Threading.Tasks;
 using IStation.Untity;
 
-namespace IStation.Application 
+namespace IStation.Application
 {
     /// <summary>
     /// 澶勭悊鏂囦欢杈呭姪绫�
@@ -420,7 +420,7 @@
         /// <summary>
         /// 鑾峰彇鏂囦欢璺緞2
         /// </summary>
-        public static string GetFilePath2(string sub, string fileName) 
+        public static string GetFilePath2(string sub, string fileName)
         {
             if (string.IsNullOrEmpty(fileName))
                 return default;
@@ -452,9 +452,6 @@
         }
 
         #endregion
-
-
-
 
 
 
diff --git a/Application/IStation.Application4Job/IStation.Application4Job.csproj b/Application/IStation.Application4Job/IStation.Application4Job.csproj
index ea6b1ed..dadcc0b 100644
--- a/Application/IStation.Application4Job/IStation.Application4Job.csproj
+++ b/Application/IStation.Application4Job/IStation.Application4Job.csproj
@@ -12,6 +12,5 @@
   <ItemGroup>
     <ProjectReference Include="..\..\Service\IStation.Service4Job\IStation.Service4Job.csproj" />
     <ProjectReference Include="..\IStation.Application4Core\IStation.Application4Core.csproj" />
-  </ItemGroup>
-
+  </ItemGroup>  
 </Project>
diff --git a/Application/IStation.Application4Product/pump_curve/mapping/PumpCurveMapping_Controller.cs b/Application/IStation.Application4Product/pump_curve/mapping/PumpCurveMapping_Controller.cs
index aa71539..d1a69aa 100644
--- a/Application/IStation.Application4Product/pump_curve/mapping/PumpCurveMapping_Controller.cs
+++ b/Application/IStation.Application4Product/pump_curve/mapping/PumpCurveMapping_Controller.cs
@@ -283,9 +283,34 @@
         {
             var bol = _service.DeleteWithCurveByID(input.CorpID, input.ID, out string Msg);
             return new DeleteReasonOutput() { Success = bol, Reason = Msg };
-        }
+        } 
 
         #endregion
 
+
+        #region Set
+
+        /// <summary>
+        /// 璁剧疆
+        /// </summary>
+        [Route("SetOfObject@V1.0")]
+        [HttpPost]
+        public bool SetOfObject([Required] SetObjectPumpCurveMappingInput input)
+        {
+            var list = input.Items.Select(x => new Model.PumpCurveMapping()
+            {
+                CorpID = input.CorpID,
+                CurveID = input.CorpID,
+                ID = x.ID,
+                PumpID = x.PumpID,
+                OtherName = x.OtherName,
+                IsWorking = x.IsWorking,
+                SortCode = x.SortCode,
+            }).ToList();
+            var bol = _service.SetOfObject(input.CorpID, input.CurveID, list);
+            return bol;
+        }
+
+        #endregion 
     }
 }
\ No newline at end of file
diff --git a/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingInput.cs b/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingInput.cs
new file mode 100644
index 0000000..8c23385
--- /dev/null
+++ b/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingInput.cs
@@ -0,0 +1,32 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SetObjectPumpCurveMappingInput
+    {
+        /// <summary>
+        /// 瀹㈡埛鏍囪瘑
+        /// </summary>
+        [Required, Range(1, long.MaxValue, ErrorMessage = "CorpID 蹇呴』澶т簬0")]
+        public long CorpID { get; set; }
+        
+        /// <summary>
+        /// 鏇茬嚎鏍囪瘑
+        /// </summary>
+        [Required, Range(1, long.MaxValue, ErrorMessage = "CurveID 蹇呴』澶т簬0")]
+        public long CurveID { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public List<SetObjectPumpCurveMappingItemInput> Items { get; set; } 
+    }
+}
diff --git a/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingItemInput.cs b/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingItemInput.cs
new file mode 100644
index 0000000..d05e143
--- /dev/null
+++ b/Application/IStation.Application4Product/pump_curve/mapping/dto/SetObjectPumpCurveMappingItemInput.cs
@@ -0,0 +1,41 @@
+锘縰sing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace IStation.Application
+{
+    /// <summary>
+    /// 
+    /// </summary>
+    public class SetObjectPumpCurveMappingItemInput
+    {
+        /// <summary>
+        /// 鏍囪瘑
+        /// </summary>	
+        public long ID { get; set; }
+
+        /// <summary>
+        /// 娉垫爣璇�
+        /// </summary>
+        public long PumpID { get; set; }
+
+        /// <summary>
+        /// 鍒悕
+        /// </summary>	
+        public string OtherName { get; set; }
+         
+        /// <summary>
+        /// 宸ヤ綔鏇茬嚎
+        /// </summary>	
+        public bool IsWorking { get; set; }
+
+        /// <summary>
+        /// 鎺掑簭鐮�
+        /// </summary>	
+        public int SortCode { get; set; }
+
+
+    }
+}
diff --git a/DAL/IStation.DAL4Product/pump_curve/PumpCurveMapping.cs b/DAL/IStation.DAL4Product/pump_curve/PumpCurveMapping.cs
index 56261ac..6408ce4 100644
--- a/DAL/IStation.DAL4Product/pump_curve/PumpCurveMapping.cs
+++ b/DAL/IStation.DAL4Product/pump_curve/PumpCurveMapping.cs
@@ -279,6 +279,62 @@
         }
 
 
+        /// <summary>
+        /// 閫氳繃  CurveID 璁剧疆
+        /// </summary>
+        public bool SetOfObject(long CorpID,  long CurveID,  List<Entity.PumpCurveMapping> list)
+        {
+            if (list == null || list.Count() < 1)
+            {
+                using (var db = new SqlSugarClient(ConnectionConfig))
+                {
+                    return db.Deleteable<Entity.PumpCurveMapping>()
+                        .Where(x => x.CorpID == CorpID && x.CurveID == CurveID)
+                        .ExecuteCommand() > 0;
+                }
+            }
+
+            using (var db = new SqlSugarClient(ConnectionConfig))
+            {
+                try
+                {
+                    db.BeginTran();
+                    var add_list = list.Where(x => x.ID < 1).ToList();
+                    var update_list = list.Where(x => x.ID > 0).ToList();
+                    var ids_exist = update_list.Select(x => x.ID).Distinct().ToList();
+                    db.Deleteable<Entity.PumpCurveMapping>().Where(x => x.CorpID == CorpID && x.CurveID == CurveID && !ids_exist.Contains(x.ID)).ExecuteCommand(); 
+                    if (add_list.Count > 0)
+                    {
+                        var result = db.Insertable(add_list).ExecuteReturnSnowflakeIdList().Count > 0;
+                        if (!result)
+                        {
+                            db.RollbackTran();
+                            return default;
+                        }
+                    }
+                    if (update_list.Count > 0)
+                    {
+                        var result = db.Updateable(update_list).ExecuteCommand() > 0;
+                        if (!result)
+                        {
+                            db.RollbackTran();
+                            return default;
+                        }
+                    } 
+
+                    db.CommitTran();
+                    return true;
+                }
+                catch
+                {
+                    db.RollbackTran();
+                    throw;
+                }
+
+            }
+        }
+
+
 
 
 
diff --git a/Model/IStation.Model4Curve/IStation.Model4Curve.csproj b/Model/IStation.Model4Curve/IStation.Model4Curve.csproj
index 36e9169..166455a 100644
--- a/Model/IStation.Model4Curve/IStation.Model4Curve.csproj
+++ b/Model/IStation.Model4Curve/IStation.Model4Curve.csproj
@@ -21,5 +21,4 @@
     <ProjectReference Include="..\..\Component\IStation.Numerics\IStation.Numerics.csproj" />
     <ProjectReference Include="..\IStation.Model\IStation.Model.csproj" />
   </ItemGroup>
-
 </Project>
diff --git a/Service/IStation.Service4Bimface/bimface_file/BimfaceFile_Instance.cs b/Service/IStation.Service4Bimface/bimface_file/BimfaceFile_Instance.cs
index 827276c..8f82f96 100644
--- a/Service/IStation.Service4Bimface/bimface_file/BimfaceFile_Instance.cs
+++ b/Service/IStation.Service4Bimface/bimface_file/BimfaceFile_Instance.cs
@@ -19,6 +19,7 @@
             var model = mapper.Map<Entity.BimfaceFile, Model.BimfaceFile>(entity);
             return model;
         }
+
         //Entities to Models
         private List<Model.BimfaceFile> Entity2Models(List<Entity.BimfaceFile> entities)
         {
@@ -61,5 +62,6 @@
             ).CreateMapper();
             mapper.Map(model, entity);
         }
+
     }
 }
\ No newline at end of file
diff --git a/Service/IStation.Service4Product/pump_curve/pump_curve_mapping/PumpCurveMapping.cs b/Service/IStation.Service4Product/pump_curve/pump_curve_mapping/PumpCurveMapping.cs
index 422e9c6..7ac1d77 100644
--- a/Service/IStation.Service4Product/pump_curve/pump_curve_mapping/PumpCurveMapping.cs
+++ b/Service/IStation.Service4Product/pump_curve/pump_curve_mapping/PumpCurveMapping.cs
@@ -114,6 +114,20 @@
             }
         }
 
+        //閫氳繃 CurveID 鏇存柊缂撳瓨
+        internal void UpdateCorpCacheByCurveID(long CorpID, long CurveID)
+        {
+            var dal = new DAL.PumpCurveMapping();
+            var entity_list = dal.GetByCurveID(CorpID, CurveID);
+            var model_list = Entity2Models(entity_list);
+            var all = GetCorpCache(CorpID);
+            all.RemoveAll(x => x.CurveID == CurveID);
+            if (model_list != null && model_list.Count > 0)
+            {
+                all.AddRange(model_list);
+            }
+        }
+
         //閫氳繃 CurveID 绉婚櫎缂撳瓨
         internal void RemoveCorpCacheByCurveID(long CorpID, long CurveID)
         {
@@ -453,5 +467,46 @@
 
         #endregion
 
+
+        #region Set
+
+        /// <summary>
+        /// 璁剧疆 CurveID 娴嬬偣鏄犲皠
+        /// </summary>
+        public bool SetOfObject(long CorpID, long CurveID, List<Model.PumpCurveMapping> list)
+        {
+            var dal = new DAL.PumpCurveMapping();
+            if (list != null && list.Count > 0)
+            {
+                var update_working_list = list.FindAll(x => x.IsWorking).ToList();
+                if (update_working_list != null && update_working_list.Count > 0)
+                {
+                    foreach (var working_curve in update_working_list)
+                    {
+                        var relevant_pump_curve_list = GetByPumpID(CorpID, working_curve.PumpID);
+                        if (relevant_pump_curve_list == null || relevant_pump_curve_list.Count < 1)
+                            continue;
+                        var exist_working_curve_list = relevant_pump_curve_list.FindAll(x => x.IsWorking);
+                        if (exist_working_curve_list == null || exist_working_curve_list.Count < 1)
+                            continue;
+                        exist_working_curve_list.ForEach(x => x.IsWorking = false);
+                        list.AddRange(exist_working_curve_list);
+                    }
+                }
+            }
+            var entity_list = Model2Entities(list.ToList());
+            var bol = dal.SetOfObject(CorpID, CurveID, entity_list);
+            if (bol)
+            {
+                UpdateCorpCacheByCurveID(CorpID, CurveID);
+                var other_pump_curve_list = entity_list.Where(x => x.CurveID != CurveID).ToList();
+                if (other_pump_curve_list != null && other_pump_curve_list.Count > 0)
+                {
+                    UpdateCorpCache(CorpID, other_pump_curve_list.Select(x => x.ID).ToList());
+                }
+            }
+            return bol;
+        }
+        #endregion
     }
 }

--
Gitblit v1.9.3