zoule 4 月之前
父節點
當前提交
6e86ca3cbe

+ 17 - 12
DW5S.App/EditForms/EditorTar.cs

@@ -4,7 +4,6 @@ using System;
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Data;
-
 using System.Drawing;
 using System.Linq;
 using System.Text;
@@ -13,11 +12,18 @@ using System.Windows.Documents;
 using System.Windows.Forms;
 using DW5S.Entity;
 using DW5S.Repostory;
+using Microsoft.Extensions.Logging;
 
 namespace DW5S.App.EditForms
 {
     public partial class EditorTar : DevExpress.XtraEditors.XtraForm
     {
+        [Autowired]
+        private readonly ILogger logger;
+
+        [Autowired]
+        private readonly UnitOfWork unitOfWork;
+
         public TargetInfo info;
         List<TargetInfo> infos;
         public EditorTar(TargetInfo info)
@@ -31,12 +37,10 @@ namespace DW5S.App.EditForms
         private async void SatEditor_Load(object sender, EventArgs e)
         {
             infos = new List<TargetInfo>();
-            using (RHDWContext db = new RHDWContext())
-            {
-                var res = await db.TargetInfos.OrderBy(p => p.TargetName).ToListAsync();
-                infos.AddRange(res);
-            }
-            this.searchLookUpEdit1.UseDefault().SetData(infos,nameof(TargetInfo.TargetName)).UseDoubleClickToSelectAll();
+            var repsTar = unitOfWork.Of<TargetInfo>();
+            var res = await repsTar.GetAllAsync(p => p.TargetName);
+            infos.AddRange(res);
+            this.searchLookUpEdit1.UseDefault().SetData(infos, nameof(TargetInfo.TargetName)).UseDoubleClickToSelectAll();
             this.searchLookUpEdit1.Properties.View.RowCellStyle += View_RowCellStyle;
             if (info != null)
             {
@@ -67,13 +71,13 @@ namespace DW5S.App.EditForms
                 var tar = searchLookUpEdit1.EditValue as TargetInfo;
                 if (tar != null)
                 {
-                    info.ID = tar.ID;
+                    info.Id = tar.Id;
                     info.TargetName = tar.TargetName;
-                    info.TargeColor=tar.TargeColor;
+                    info.TargeColor = tar.TargeColor;
                 }
                 else
                 {
-                    info.ID = 0;
+                    info.Id = 0;
                     info.TargetName = "未知目标";
                     info.TargeColor = "";
                 }
@@ -81,8 +85,9 @@ namespace DW5S.App.EditForms
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error("编辑目标出错", ex);
-                DxHelper.MsgBoxHelper.ShowError("编辑目标出错");
+                string msg = "编辑目标出错";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
         }
     }

+ 21 - 20
DW5S.App/EditForms/RHDTOParamEditor.cs

@@ -44,19 +44,16 @@ namespace DW5S.App.EditForms
 
         private async void X2D1DTOParamEditor_Load(object sender, EventArgs e)
         {
-
             StationRes station = null;
             CxRes cx = null;
-            using (RHDWContext db = new RHDWContext())
-            {
-                listSat = await db.SatInfos.ToListAsync();
-            }
-            using (RHDWPartContext db = RHDWPartContext.GetContext(info.SigTime))
-            {
-                cg = await db?.CgRes.Where(m => m.ID == info.CgResID).FirstOrDefaultAsync();
-                cx = await db?.CxRes.Where(m => m.ID == info.CxResID).FirstOrDefaultAsync();
-                station = await db?.StationRes.Where(m => m.ID == info.StationResID).FirstOrDefaultAsync();
-            }
+            var repsSat = unitOfWork.Of<SatInfo>();
+            listSat.AddRange(await repsSat.GetAllAsync());
+            var repsCg = unitOfWork.Of<CgRes>();
+            cg = await repsCg.FirstOrDefaultAsync(m => m.Id == info.CgResID);
+            var repsCx = unitOfWork.Of<CxRes>();
+            cx = await repsCx.FirstOrDefaultAsync(m => m.Id == info.CxResID);
+            var repsStation = unitOfWork.Of<StationRes>();
+            station = await repsStation.FirstOrDefaultAsync(m => m.Id == info.StationResID);
             if (cg != null)
             {
                 this.txtDtoSx.Text = $"{cg.Dto1.Value}";
@@ -221,7 +218,7 @@ namespace DW5S.App.EditForms
                 List<MapPolyline> polylines = new List<MapPolyline>();
                 foreach (var dtoLine in xdDtoLine)
                 {
-                    var mapline = mapControl1.GetLine($"[{msat},超短{CDBAnt[0]}°]时差线", dtoLine.dtoLinePoints,true);
+                    var mapline = mapControl1.GetLine($"[{msat},超短{CDBAnt[0]}°]时差线", dtoLine.dtoLinePoints, true);
                     if (mapline == null)
                     {
                         continue;
@@ -237,8 +234,9 @@ namespace DW5S.App.EditForms
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error($"绘制{info.PosResType.GetEnumDisplayName()}时差线失败.PosID={info.ID},SigTime={info.SigTime}", ex);
-                DxHelper.MsgBoxHelper.ShowError($"绘制{info.PosResType.GetEnumDisplayName()}时差线失败,{ex.Message}");
+                string msg = $"绘制{info.PosResType.GetEnumDisplayName()}时差线失败.PosID={info.Id},SigTime={info.SigTime}";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
         }
 
@@ -251,10 +249,11 @@ namespace DW5S.App.EditForms
                 return;
             }
             var sigTime = this.txtSigTime.DateTime;
+            var repsXl = unitOfWork.Of<XlInfo>() as XlRepository;
             try
             {
 
-                var mainxlInfo = await XlRepository.GetLatestAsync(cg.MainCode.Value, sigTime);
+                var mainxlInfo = await repsXl.GetLatestAsync(cg.MainCode.Value, sigTime);
                 if (mainxlInfo == null)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"卫星:{cg.MainCode.Value}未找到对应的星历信息,请导入星历");
@@ -264,7 +263,7 @@ namespace DW5S.App.EditForms
                 var maineph = await HttpHelper.PostRequestAsync<SatEphResDto>(SysConfig.GetUrl("Xl/Calc"), XlCalcDto);
                 ucEphXYZMain.SetXYZ("主星", cg.MainCode.Value, (maineph.data.X, maineph.data.Y, maineph.data.Z), Color.Red);
 
-                var adjaxlInfo = await XlRepository.GetLatestAsync(cg.Adja1Code.Value, sigTime);
+                var adjaxlInfo = await repsXl.GetLatestAsync(cg.Adja1Code.Value, sigTime);
                 if (adjaxlInfo == null)
                 {
                     DxHelper.MsgBoxHelper.ShowWarning($"卫星:{cg.Adja1Code.Value}未找到对应的星历信息,请导入星历");
@@ -276,8 +275,9 @@ namespace DW5S.App.EditForms
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error($"手动推算{info.PosResType.GetEnumDisplayName()}星历失败,SigTime={sigTime}", ex);
-                DxHelper.MsgBoxHelper.ShowError($"手动推算{info.PosResType.GetEnumDisplayName()}星历失败,{ex.Message}");
+                string msg = $"手动推算{info.PosResType.GetEnumDisplayName()}星历失败,SigTime={sigTime}";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
 
 
@@ -346,8 +346,9 @@ namespace DW5S.App.EditForms
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error($"{info.PosResType.GetEnumDisplayName()}手动定位失败.PosID={info.ID},SigTime={info.SigTime}", ex);
-                DxHelper.MsgBoxHelper.ShowError($"{info.PosResType.GetEnumDisplayName()}手动定位失败,{ex.Message}");
+                string msg = $"{info.PosResType.GetEnumDisplayName()}手动定位失败.PosID={info.Id},SigTime={info.SigTime}";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
         }
     }

+ 9 - 9
DW5S.App/UserControl/CtrlHome.cs

@@ -152,7 +152,7 @@ namespace DW5S.App.UserControl
                 foreach (var item in runningList)
                 {
                     item.TaskState = EnumTaskState.Stopped;
-                    repsTask.Update(item);
+                    repsTask.AddOrUpdate(item);
                 }
                 var repsSat = unitOfWork.Of<SatInfo>();
                 var satres = await repsSat.GetAllAsync(p => p.SatName);
@@ -479,7 +479,7 @@ namespace DW5S.App.UserControl
                         addItem.Adja2Sat = null;
                     }
                     var repsTask = unitOfWork.Of<TaskInfo>();
-                    var taskInfo = await repsTask.AddAsync(addItem);
+                    var taskInfo = await repsTask.AddOrUpdateAsync(addItem);
 
                     List<TaskSig> sigList = new List<TaskSig>();
                     foreach (var item in addItemSignal)
@@ -494,7 +494,7 @@ namespace DW5S.App.UserControl
                         sigList.Add(taskSig);
                     }
                     var repsTaskSig = unitOfWork.Of<TaskSig>();
-                    await repsTaskSig.AddRangeAsync(sigList);
+                    await repsTaskSig.AddOrUpdateAsync(sigList);
                     await unitOfWork.SaveAsync();
                     list.Insert(0, addItem);
                     gridView1.RefreshData();
@@ -551,7 +551,7 @@ namespace DW5S.App.UserControl
                         find.Adja2Sat = editItem.Adja2Sat;
                     }
                     find.UpdateTime = DateTime.Now;
-                    repsTask.Update(find);
+                    repsTask.AddOrUpdate(find);
 
                     await repsTaskSig.DeleteAsync(p => p.TaskInfoID == editItem.Id);
                     List<TaskSig> sigList = new List<TaskSig>();
@@ -564,7 +564,7 @@ namespace DW5S.App.UserControl
                         taskSigEdit.FreqDown = item.FreqDown;
                         sigList.Add(taskSigEdit);
                     }
-                    await repsTaskSig.AddRangeAsync(sigList);
+                    await repsTaskSig.AddOrUpdateAsync(sigList);
                     await unitOfWork.SaveAsync();
                     gridView1.RefreshData();
                 }
@@ -722,7 +722,7 @@ namespace DW5S.App.UserControl
                     }
                     var item = await repsTask.FirstOrDefaultAsync(p => p.Id == tsk.Id);
                     item.TaskState = EnumTaskState.Running;
-                    repsTask.Update(item);
+                    repsTask.AddOrUpdate(item);
                     tsk.TaskState = EnumTaskState.Running;
                     await unitOfWork.SaveAsync();
                     logger.LogInformation($"用户启动了任务,ID={tsk.Id}");
@@ -741,7 +741,7 @@ namespace DW5S.App.UserControl
                 {
                     var item = await repsTask.FirstOrDefaultAsync(p => p.Id == tsk.Id);
                     item.TaskState = EnumTaskState.Stopped;
-                    repsTask.Update(item);
+                    repsTask.AddOrUpdate(item);
                     await unitOfWork.SaveAsync();
                     tsk.TaskState = EnumTaskState.Stopped;
                     string url = "";
@@ -1313,7 +1313,7 @@ namespace DW5S.App.UserControl
                     posItem.PosLat = item.PosLat;
                     posItem.MirrLon = item.MirrLon;
                     posItem.MirrLat = item.MirrLat;
-                    repsPos.Update(posItem);
+                    repsPos.AddOrUpdate(posItem);
                 }
                 await unitOfWork.SaveAsync();
                 string msg = $"重新定位完成,共{items.Count()}条记录";
@@ -1411,7 +1411,7 @@ namespace DW5S.App.UserControl
                     var posItem = await repsPos.FirstOrDefaultAsync(p => p.Id == item.Id);
                     posItem.TargetInfoID = tar.Id;
                     posItem.ColorKey = tar.TargeColor;
-                    repsPos.Update(posItem);
+                    repsPos.AddOrUpdate(posItem);
                     mapControl1.UpdatePosItem(posItem);
                 }
                 var ds = this.gridHomePosRes.DataSource as List<ModelPosRes>;

+ 85 - 82
DW5S.App/UserControl/CtrlSysSettings.cs

@@ -14,7 +14,6 @@ using System.Windows.Documents;
 using System.Windows.Forms;
 using DW5S.Repostory;
 using System.IO;
-using System.Data.Entity.Migrations;
 using ExtensionsDev;
 using DevExpress.Utils;
 using DevExpress.XtraMap;
@@ -26,19 +25,25 @@ using System.Security.Policy;
 using DevExpress.Utils.About;
 using DW5S.DTO;
 using System.Configuration;
-
+using Microsoft.Extensions.Logging;
 
 namespace DW5S.App.UserControl
 {
     public partial class CtrlSysSettings : DevExpress.XtraEditors.XtraUserControl
     {
+        [Autowired]
+        private readonly ILogger logger;
+
+        [Autowired]
+        private readonly UnitOfWork unitOfWork;
+
         public CtrlSysSettings()
         {
             InitializeComponent();
             this.layoutControl1.UseDefault();
         }
 
-        private void CtrlSysSettings_Load(object sender, EventArgs e)
+        private async void CtrlSysSettings_Load(object sender, EventArgs e)
         {
             try
             {
@@ -47,34 +52,32 @@ namespace DW5S.App.UserControl
                 txtLayer.Items.RemoveAt(0);
                 txtWmtsSource.SelectedIndex = 0;
                 txtLayer.SelectedIndex = 0;
-
-                if (SysConfig.Config != null)
+                var settings = await unitOfWork.Of<SysSetings>().FirstOrDefaultAsync();
+                if (settings != null)
                 {
-                    this.txtHttpPort.Text = SysConfig.Config.HttpPort.ToString();
-                    this.txtTimeZone.TimeZoneId = SysConfig.Config.TimeZoneID;
-                    if (!string.IsNullOrEmpty(SysConfig.Config.XLDirectory))
-                        this.txtXLDirectory.Text = SysConfig.Config.XLDirectory.ToString();
-                    if (SysConfig.Config.YDPZThreshold > 0)
-                        this.txtYDPZThreshold.Text = SysConfig.Config.YDPZThreshold.ToString();
-                    if (this.txtMapType.SelectedIndex == SysConfig.Config.MapType)
+                    this.txtHttpPort.Text = settings.HttpPort.ToString();
+                    this.txtTimeZone.TimeZoneId = settings.TimeZoneID;
+                    if (!string.IsNullOrEmpty(settings.XLDirectory))
+                        this.txtXLDirectory.Text = settings.XLDirectory.ToString();
+                    if (this.txtMapType.SelectedIndex == settings.MapType)
                         txtMapType_SelectedIndexChanged(null, null);
                     else
-                        this.txtMapType.SelectedIndex = SysConfig.Config.MapType;
+                        this.txtMapType.SelectedIndex = settings.MapType;
                     if (txtMapType.SelectedIndex != 0)
                     {
-                        this.txtWmtsSource.EditValue = SysConfig.Config.WmtsSource;
+                        this.txtWmtsSource.EditValue = settings.WmtsSource;
 
                         for (int i = 0; i < txtLayer.Items.Count; i++)
                         {
-                            if (SysConfig.Config.MapLayerType.HasFlag(EnumMapLayerType.SatMap))
+                            if (settings.MapLayerType.HasFlag(EnumMapLayerType.SatMap))
                             {
                                 this.txtLayer.Items[EnumMapLayerType.SatMap].CheckState = CheckState.Checked;
                             }
-                            if (SysConfig.Config.MapLayerType.HasFlag(EnumMapLayerType.RoadMap))
+                            if (settings.MapLayerType.HasFlag(EnumMapLayerType.RoadMap))
                             {
                                 this.txtLayer.Items[EnumMapLayerType.RoadMap].CheckState = CheckState.Checked;
                             }
-                            if (SysConfig.Config.MapLayerType.HasFlag(EnumMapLayerType.XZQH_Map))
+                            if (settings.MapLayerType.HasFlag(EnumMapLayerType.XZQH_Map))
                             {
                                 this.txtLayer.Items[EnumMapLayerType.XZQH_Map].CheckState = CheckState.Checked;
                             }
@@ -86,8 +89,9 @@ namespace DW5S.App.UserControl
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error("加载配置信息异常", ex);
-                DxHelper.MsgBoxHelper.ShowError("加载配置信息异常");
+                string msg = "加载配置信息异常";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
             layoutControl1.BestFit();
         }
@@ -105,78 +109,77 @@ namespace DW5S.App.UserControl
                     DxHelper.MsgBoxHelper.ShowError("系统时区错误!");
                     return;
                 }
-                using (RHDWContext db = new RHDWContext())
+                var repsSys = unitOfWork.Of<SysSetings>();
+                var res = await repsSys.FirstOrDefaultAsync();
+                if (res == null) res = new SysSetings();
+                bool needStartHttpSvr = res.HttpPort != port;
+                if (!needStartHttpSvr)
                 {
-                    var res = await db.SysSetings.FirstOrDefaultAsync();
-                    if (res == null) res = new SysSetings();
-                    bool needStartHttpSvr = res.HttpPort != port;
-                    if (!needStartHttpSvr)
-                    {
-                        needStartHttpSvr = res.TimeZoneID != txtTimeZone.TimeZoneId;
-                    }
-                    res.TimeZoneID = txtTimeZone.TimeZoneId;
-                    TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById(txtTimeZone.TimeZoneId);
-                    if (tz.DisplayName == "UTC")
-                    {
-                        res.TimeZoneUTC = tz.DisplayName;
-                        res.TimeZoneName = "";
-                    }
-                    else
+                    needStartHttpSvr = res.TimeZoneID != txtTimeZone.TimeZoneId;
+                }
+                res.TimeZoneID = txtTimeZone.TimeZoneId;
+                TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById(txtTimeZone.TimeZoneId);
+                if (tz.DisplayName == "UTC")
+                {
+                    res.TimeZoneUTC = tz.DisplayName;
+                    res.TimeZoneName = "";
+                }
+                else
+                {
+                    res.TimeZoneUTC = tz.DisplayName.Substring(1, tz.DisplayName.IndexOf(")") - 1).Trim();
+                    res.TimeZoneName = tz.DisplayName.Substring(tz.DisplayName.IndexOf(")") + 1).Trim();
+                }
+                res.ZoneHours = tz.BaseUtcOffset.TotalHours;
+                res.HttpPort = port;
+                res.XLDirectory = txtXLDirectory.Text;
+                bool mapChanged = res.MapType != txtMapType.SelectedIndex;
+                res.MapType = txtMapType.SelectedIndex;
+                if (txtMapType.SelectedIndex != 0)
+                {
+                    var wmtsSource = (EnumWmtsSource)txtWmtsSource.EditValue;
+                    if (!mapChanged)
                     {
-                        res.TimeZoneUTC = tz.DisplayName.Substring(1, tz.DisplayName.IndexOf(")") - 1).Trim();
-                        res.TimeZoneName = tz.DisplayName.Substring(tz.DisplayName.IndexOf(")") + 1).Trim();
+                        mapChanged = res.WmtsSource != wmtsSource;
                     }
-                    res.ZoneHours = tz.BaseUtcOffset.TotalHours;
-                    res.HttpPort = port;
-                    res.XLDirectory = txtXLDirectory.Text;
-                    res.YDPZThreshold = string.IsNullOrWhiteSpace(txtYDPZThreshold.Text) ? 0 : Convert.ToInt32(txtYDPZThreshold.Text);
-                    bool mapChanged = res.MapType != txtMapType.SelectedIndex;
-                    res.MapType = txtMapType.SelectedIndex;
-                    if (txtMapType.SelectedIndex != 0)
-                    {
-                        var wmtsSource= (EnumWmtsSource)txtWmtsSource.EditValue;
-                        if (!mapChanged)
-                        {
-                            mapChanged = res.WmtsSource != wmtsSource;
-                        }
-                        res.WmtsSource = wmtsSource;
+                    res.WmtsSource = wmtsSource;
 
-                        EnumMapLayerType layerType = EnumMapLayerType.None;
-                        for (int i = 0; i < txtLayer.Items.Count; i++)
+                    EnumMapLayerType layerType = EnumMapLayerType.None;
+                    for (int i = 0; i < txtLayer.Items.Count; i++)
+                    {
+                        if (txtLayer.GetItemChecked(i))
                         {
-                            if (txtLayer.GetItemChecked(i))
-                            {
-                                layerType |= (EnumMapLayerType)txtLayer.Items[i].Value;
-                            }
+                            layerType |= (EnumMapLayerType)txtLayer.Items[i].Value;
                         }
-                        layerType = layerType & ~EnumMapLayerType.None;//移除
-                        if (!mapChanged)
-                            mapChanged = res.MapLayerType != layerType;
-                        res.MapLayerType = layerType;
-
-                    }
-                    db.SysSetings.AddOrUpdate(res);
-                    await db.SaveChangesAsync();
-                    SysConfig.Config = res;
-                    if (mapChanged)
-                        Messenger.Defalut.Pub("地图类型改变", res);
-                    Messenger.Defalut.Pub("时区改变", res);
-                    DxHelper.MsgBoxHelper.ShowInfo("配置信息保存成功!");
-                    if (needStartHttpSvr)
-                    {
-                        //var files=Directory.GetFiles("Service", "*.exe.config");
-                        //foreach (var f in files) 
-                        //{
-                        //    File.ReadAllText(f);
-                        //}
-                        Application.Restart();
                     }
+                    layerType = layerType & ~EnumMapLayerType.None;//移除
+                    if (!mapChanged)
+                        mapChanged = res.MapLayerType != layerType;
+                    res.MapLayerType = layerType;
+
+                }
+                repsSys.AddOrUpdate(res);
+                db.SysSetings.AddOrUpdate(res);
+                await db.SaveChangesAsync();
+                SysConfig.Config = res;
+                if (mapChanged)
+                    Messenger.Defalut.Pub("地图类型改变", res);
+                Messenger.Defalut.Pub("时区改变", res);
+                DxHelper.MsgBoxHelper.ShowInfo("配置信息保存成功!");
+                if (needStartHttpSvr)
+                {
+                    //var files=Directory.GetFiles("Service", "*.exe.config");
+                    //foreach (var f in files) 
+                    //{
+                    //    File.ReadAllText(f);
+                    //}
+                    Application.Restart();
                 }
             }
             catch (Exception ex)
             {
-                DW5S.Framework.LogHelper.Error("配置信息保存异常", ex);
-                DxHelper.MsgBoxHelper.ShowError("配置信息保存异常");
+                string msg = "配置信息保存异常";
+                logger.LogError(ex, msg);
+                DxHelper.MsgBoxHelper.ShowError(msg);
             }
             if (this.Parent is Form frm)
                 frm.Close();
@@ -210,12 +213,12 @@ namespace DW5S.App.UserControl
                     var val = (EnumWmtsSource)rg.Properties.Items[i].Value;
                     if (val == EnumWmtsSource.ZCJ)
                     {
-                        var str =AppConfigHelper.Get("ZCJ_URL","");
+                        var str = AppConfigHelper.Get("ZCJ_URL", "");
                         e.Info = new ToolTipControlInfo(i, $"{rg.Properties.Items[i].Description}:{str}");
                     }
                     else
                     {
-                        var str = AppConfigHelper.Get("SJZX_URL","");
+                        var str = AppConfigHelper.Get("SJZX_URL", "");
                         e.Info = new ToolTipControlInfo(i, $"{rg.Properties.Items[i].Description}:{str}");
                     }
                     break;

+ 1 - 1
DW5S.Controller/LogController.cs

@@ -40,7 +40,7 @@ namespace DW5S.App.Controllers
             try
             {
                 var repsLog = unitOfWork.Of<LogRes>();
-                await repsLog.AddAsync(new LogRes()
+                await repsLog.AddOrUpdateAsync(new LogRes()
                 {
                     LogTime = dto.LogTime,
                     Module = dto.Module,

+ 25 - 25
DW5S.Controller/PosController.cs

@@ -78,7 +78,7 @@ namespace DW5S.App.Controllers
                 return Error(msg);
             }
             var repsStationRes = unitOfWork.Of<StationRes>();
-            var stationRes = await repsStationRes.AddAsync(new StationRes
+            var stationRes = await repsStationRes.AddOrUpdateAsync(new StationRes
             {
                 SatTxLon = dto.SatTxLon,
                 SatTxLat = dto.SatTxLat,
@@ -91,7 +91,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCheckRes = unitOfWork.Of<CheckRes>();
-            var ckRes = await repsCheckRes.AddAsync(new CheckRes
+            var ckRes = await repsCheckRes.AddOrUpdateAsync(new CheckRes
             {
                 FileName = dto.CheckRes?.FileName,
                 SmpStart = dto.CheckRes?.SmpStart,
@@ -105,7 +105,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCgRes = unitOfWork.Of<CgRes>();
-            var cgRes = await repsCgRes.AddAsync(new CgRes
+            var cgRes = await repsCgRes.AddOrUpdateAsync(new CgRes
             {
                 SigTime = dto.SigTime,
                 DtoCdb = Math.Round(dto.XdDto, 10),
@@ -127,7 +127,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCxRes = unitOfWork.Of<CxRes>();
-            var cxRes = await repsCxRes.AddAsync(new CxRes()
+            var cxRes = await repsCxRes.AddOrUpdateAsync(new CxRes()
             {
                 SigTime = dto.SigTime,
                 Fx = dto.CxRes,
@@ -136,7 +136,7 @@ namespace DW5S.App.Controllers
             var res = PosApi.X1D1_Pos(cgRes, stationRes, cxRes, dto.CalcConfidence);
 
             var repsPosRes = unitOfWork.Of<PosRes>();
-            var posRes = await repsPosRes.AddAsync(new PosRes
+            var posRes = await repsPosRes.AddOrUpdateAsync(new PosRes
             {
                 FreqUpHz = (long)cgRes.TarFreqUp.Value,
                 SigTime = cgRes.SigTime,
@@ -198,7 +198,7 @@ namespace DW5S.App.Controllers
                 target = await repsTarget.FirstOrDefaultAsync(p => p.TargetName == dto.Target.Trim());
                 if (target == null)
                 {
-                    target = await repsTarget.AddAsync(new TargetInfo()
+                    target = await repsTarget.AddOrUpdateAsync(new TargetInfo()
                     {
                         TargetName = dto.Target.Trim(),
                         TargeColor = ColorHelper.GetHtmlColor(dto.Target.Trim())
@@ -261,7 +261,7 @@ namespace DW5S.App.Controllers
             //dto.AdjaYbDto = Math.Round(refdt2 * 1e6, 3);
 
             var repsStationRes = unitOfWork.Of<StationRes>();
-            var stationRes = await repsStationRes.AddAsync(new StationRes
+            var stationRes = await repsStationRes.AddOrUpdateAsync(new StationRes
             {
                 SatTxLon = dto.SatTxLon,
                 SatTxLat = dto.SatTxLat,
@@ -272,7 +272,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCheckRes = unitOfWork.Of<CheckRes>();
-            var ckRes = await repsCheckRes.AddAsync(new CheckRes
+            var ckRes = await repsCheckRes.AddOrUpdateAsync(new CheckRes
             {
                 FileName = dto.CheckRes?.FileName,
                 SmpStart = dto.CheckRes?.SmpStart,
@@ -286,7 +286,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCgRes = unitOfWork.Of<CgRes>();
-            var cgRes = await repsCgRes.AddAsync(new CgRes
+            var cgRes = await repsCgRes.AddOrUpdateAsync(new CgRes
             {
                 SigTime = dto.SigTime,
                 Dto1 = Math.Round(dto.SxDto, 10),
@@ -322,7 +322,7 @@ namespace DW5S.App.Controllers
             var res = PosApi.X2D1_Pos(cgRes, stationRes, dto.CalcConfidence);
 
             var repsPosRes = unitOfWork.Of<PosRes>();
-            var posRes = await repsPosRes.AddAsync(new PosRes
+            var posRes = await repsPosRes.AddOrUpdateAsync(new PosRes
             {
                 FreqUpHz = (long)cgRes.TarFreqUp.Value,
                 SigTime = dto.SigTime,
@@ -381,7 +381,7 @@ namespace DW5S.App.Controllers
                 target = await repsTarget.FirstOrDefaultAsync(p => p.TargetName == dto.Target.Trim());
                 if (target == null)
                 {
-                    target = await repsTarget.AddAsync(new TargetInfo()
+                    target = await repsTarget.AddOrUpdateAsync(new TargetInfo()
                     {
                         TargetName = dto.Target.Trim(),
                         TargeColor = ColorHelper.GetHtmlColor(dto.Target.Trim())
@@ -436,7 +436,7 @@ namespace DW5S.App.Controllers
             //dto.SxDto = dto1 * 1e6 + r.Next(-10, 10) + Math.Round(r.NextDouble(), 3);
             //dto.XdDto = dto2 * 1e6 + r.Next(-10, 10) + Math.Round(r.NextDouble(), 3);
             var repsStationRes = unitOfWork.Of<StationRes>();
-            var stationRes = await repsStationRes.AddAsync(new StationRes
+            var stationRes = await repsStationRes.AddOrUpdateAsync(new StationRes
             {
                 SatTxLon = dto.SatTxLon,
                 SatTxLat = dto.SatTxLat,
@@ -445,7 +445,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCheckRes = unitOfWork.Of<CheckRes>();
-            var ckRes = await repsCheckRes.AddAsync(new CheckRes
+            var ckRes = await repsCheckRes.AddOrUpdateAsync(new CheckRes
             {
                 FileName = dto.CheckRes?.FileName,
                 SmpStart = dto.CheckRes?.SmpStart,
@@ -459,7 +459,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCgRes = unitOfWork.Of<CgRes>();
-            var cgRes = await repsCgRes.AddAsync(new CgRes
+            var cgRes = await repsCgRes.AddOrUpdateAsync(new CgRes
             {
                 SigTime = dto.SigTime,
                 Dto1 = Math.Round(dto.SxDto, 10),
@@ -494,7 +494,7 @@ namespace DW5S.App.Controllers
 
 
             var repsPosRes = unitOfWork.Of<PosRes>();
-            var posRes = await repsPosRes.AddAsync(new PosRes
+            var posRes = await repsPosRes.AddOrUpdateAsync(new PosRes
             {
                 FreqUpHz = (long)cgRes.TarFreqUp.Value,
                 SigTime = dto.SigTime,
@@ -557,7 +557,7 @@ namespace DW5S.App.Controllers
                 target = await repsTarget.FirstOrDefaultAsync(p => p.TargetName == dto.Target.Trim());
                 if (target == null)
                 {
-                    target = await repsTarget.AddAsync(new TargetInfo()
+                    target = await repsTarget.AddOrUpdateAsync(new TargetInfo()
                     {
                         TargetName = dto.Target.Trim(),
                         TargeColor = ColorHelper.GetHtmlColor(dto.Target.Trim())
@@ -618,7 +618,7 @@ namespace DW5S.App.Controllers
             }
 
             var repsStationRes = unitOfWork.Of<StationRes>();
-            var stationRes = await repsStationRes.AddAsync(new StationRes
+            var stationRes = await repsStationRes.AddOrUpdateAsync(new StationRes
             {
                 SatTxLon = dto.SatTxLon,
                 SatTxLat = dto.SatTxLat,
@@ -627,7 +627,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCheckRes = unitOfWork.Of<CheckRes>();
-            var ckRes = await repsCheckRes.AddAsync(new CheckRes
+            var ckRes = await repsCheckRes.AddOrUpdateAsync(new CheckRes
             {
                 FileName = dto.CheckRes?.FileName,
                 SmpStart = dto.CheckRes?.SmpStart,
@@ -641,7 +641,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCgRes = unitOfWork.Of<CgRes>();
-            var cgRes = await repsCgRes.AddAsync(new CgRes
+            var cgRes = await repsCgRes.AddOrUpdateAsync(new CgRes
             {
                 SigTime = dto.SigTime,
                 Dto1 = Math.Round(dto.Dto1, 10),
@@ -685,7 +685,7 @@ namespace DW5S.App.Controllers
             var res = PosApi.X3_Pos(cgRes, stationRes, dto.CalcConfidence);
 
             var repsPosRes = unitOfWork.Of<PosRes>();
-            var posRes = await repsPosRes.AddAsync(new PosRes
+            var posRes = await repsPosRes.AddOrUpdateAsync(new PosRes
             {
                 FreqUpHz = (long)cgRes.TarFreqUp.Value,
                 SigTime = dto.SigTime,
@@ -745,7 +745,7 @@ namespace DW5S.App.Controllers
                 target = await repsTarget.FirstOrDefaultAsync(p => p.TargetName == dto.Target.Trim());
                 if (target == null)
                 {
-                    target = await repsTarget.AddAsync(new TargetInfo()
+                    target = await repsTarget.AddOrUpdateAsync(new TargetInfo()
                     {
                         TargetName = dto.Target.Trim(),
                         TargeColor = ColorHelper.GetHtmlColor(dto.Target.Trim())
@@ -806,14 +806,14 @@ namespace DW5S.App.Controllers
             }
 
             var repsStationRes = unitOfWork.Of<StationRes>();
-            var stationRes = await repsStationRes.AddAsync(new StationRes
+            var stationRes = await repsStationRes.AddOrUpdateAsync(new StationRes
             {
                 SatTxLon = dto.SatTxLon,
                 SatTxLat = dto.SatTxLat,
             });
 
             var repsCheckRes = unitOfWork.Of<CheckRes>();
-            var ckRes = await repsCheckRes.AddAsync(new CheckRes
+            var ckRes = await repsCheckRes.AddOrUpdateAsync(new CheckRes
             {
                 FileName = dto.CheckRes?.FileName,
                 SmpStart = dto.CheckRes?.SmpStart,
@@ -827,7 +827,7 @@ namespace DW5S.App.Controllers
             });
 
             var repsCgRes = unitOfWork.Of<CgRes>();
-            var cgRes = await repsCgRes.AddAsync(new CgRes
+            var cgRes = await repsCgRes.AddOrUpdateAsync(new CgRes
             {
                 SigTime = dto.SigTime,
                 Dto1 = Math.Round(dto.Dto1, 10),
@@ -868,7 +868,7 @@ namespace DW5S.App.Controllers
             var res = PosApi.X3_PosNoRef(cgRes, stationRes, dto.CalcConfidence);
 
             var repsPosRes = unitOfWork.Of<PosRes>();
-            var posRes = await repsPosRes.AddAsync(new PosRes
+            var posRes = await repsPosRes.AddOrUpdateAsync(new PosRes
             {
                 FreqUpHz = (long)cgRes.TarFreqUp.Value,
                 SigTime = dto.SigTime,

+ 1 - 1
DW5S.Controller/TaskController.cs

@@ -68,7 +68,7 @@ namespace DW5S.App.Controllers
                 if (item.TaskState == EnumTaskState.Stopped)
                     Thread.Sleep(2000);
                 item.TaskState = EnumTaskState.Stopped;
-                repsTask.Update(item);
+                repsTask.AddOrUpdate(item);
                 await unitOfWork.SaveAsync();
                 Messenger.Defalut.Pub("任务状态改变", dto.ID);
                 if (dto.StopType == EnumTaskStopType.Properly)

+ 1 - 1
DW5S.Controller/XlController.cs

@@ -75,7 +75,7 @@ namespace DW5S.App.Controllers
                          tmp.Add(xl);
                      }
                      var repsXl = unitOfWork.Of<XlInfo>();
-                    await repsXl.AddRangeAsync(tmp);
+                    await repsXl.AddOrUpdateAsync(tmp);
                     
                      return tmp.Count;
                  });

+ 15 - 2
DW5S.Entity/BaseEntity.cs

@@ -5,7 +5,7 @@ using System.Xml.Linq;
 namespace DW5S.Entity
 {
     [Index(nameof(UpdateTime))]
-    public abstract class BaseEntity<TID>
+    public abstract class BaseEntity
     {
         public BaseEntity()
         {
@@ -15,7 +15,7 @@ namespace DW5S.Entity
 
         [Key]
         [Display(Name = "编号")]
-        public TID Id { get; set; }
+        public int Id { get; set; }
 
         [Display(Name = "创建时间")]
         [DisplayFormat(DataFormatString = "yyyy-MM-dd HH:mm:ss")]
@@ -25,4 +25,17 @@ namespace DW5S.Entity
         [DisplayFormat(DataFormatString = "yyyy-MM-dd HH:mm:ss")]
         public DateTime UpdateTime { get; set; }
     }
+
+    public abstract class BaseEntityLong : BaseEntity
+    {
+        public BaseEntityLong()
+        {
+            this.CreateTime = DateTime.Now;
+            this.UpdateTime = DateTime.Now;
+        }
+
+        [Key]
+        [Display(Name = "编号")]
+        public new long Id { get; set; }
+    }
 }

+ 1 - 1
DW5S.Entity/CgRes.cs

@@ -12,7 +12,7 @@ namespace DW5S.Entity
     /// 参数估计结果表
     /// </summary>
     [Table("CgRes")]
-    public class CgRes : BaseEntity<long>
+    public class CgRes : BaseEntityLong
     {
         /// <summary>
         /// 信号时刻

+ 1 - 1
DW5S.Entity/CgXgfRes.cs

@@ -12,7 +12,7 @@ namespace DW5S.Entity
     /// 参数估计相关峰结果表
     /// </summary>
     [Table("CgXgfRes")]
-    public class CgXgfRes : BaseEntity<long>
+    public class CgXgfRes : BaseEntityLong
     {
         [Display(AutoGenerateField = false)]
         public long CgResID { get; set; }

+ 1 - 1
DW5S.Entity/CheckRes.cs

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
 namespace DW5S.Entity
 {
     [Table("CheckRes")]
-    public class CheckRes : BaseEntity<long>
+    public class CheckRes : BaseEntityLong
     {
         /// <summary>
         /// 检测文件名称

+ 1 - 1
DW5S.Entity/CxRes.cs

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
 namespace DW5S.Entity
 {
     [Table("CxRes")]
-    public class CxRes: BaseEntity<long>
+    public class CxRes: BaseEntityLong
     {
         [Display(Name = "信号时刻")]
         public DateTime SigTime { get; set; }

+ 1 - 1
DW5S.Entity/FixedStation.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 固定站信息表
     /// </summary>
-    public class FixedStation : BaseEntity<int>
+    public class FixedStation : BaseEntityLong
     {
         /// <summary>
         /// 名称

+ 1 - 1
DW5S.Entity/LogRes.cs

@@ -14,7 +14,7 @@ namespace DW5S.Entity
     /// 日志表
     /// </summary>
     [Index(nameof(Module),nameof(LogTime),nameof(LogType))]
-    public class LogRes : BaseEntity<long>
+    public class LogRes : BaseEntityLong
     {
         /// <summary>
         /// 所属模块

+ 1 - 1
DW5S.Entity/PosData.cs

@@ -77,7 +77,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 定位点绑定到地图的对象
     /// </summary>
-    public class PosData : BaseEntity<long>
+    public class PosData : BaseEntityLong
     {
         /// <summary>
         /// 信号时刻

+ 1 - 1
DW5S.Entity/SatInfo.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 卫星信息
     /// </summary>
-    public class SatInfo : BaseEntity<int>
+    public class SatInfo : BaseEntity
     {
         /// <summary>
         /// 卫星编号

+ 1 - 1
DW5S.Entity/SigDelay.cs

@@ -12,7 +12,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 信号转发延迟信息
     /// </summary>
-    public class SigDelay : BaseEntity<int>
+    public class SigDelay : BaseEntity
     {
 
         /// <summary>

+ 1 - 1
DW5S.Entity/SigInfo.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 信号频点表
     /// </summary>
-    public class SigInfo : BaseEntity<int>
+    public class SigInfo : BaseEntity
     {
         /// <summary>
         /// 上行频点(Hz)

+ 1 - 1
DW5S.Entity/StationRes.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// 站点信息结果表
     /// </summary>
     [Table("StationRes")]
-    public class StationRes:BaseEntity<long>
+    public class StationRes: BaseEntityLong
     {
         /// <summary>
         /// 任务编号

+ 1 - 1
DW5S.Entity/SysSetings.cs

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
 namespace DW5S.Entity
 {
     [Table("SysSetings")]
-    public class SysSetings : BaseEntity<int>
+    public class SysSetings : BaseEntity
     {
         /// <summary>
         /// 系统时区ID

+ 1 - 1
DW5S.Entity/TargetInfo.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 目标信息
     /// </summary>
-    public class TargetInfo : BaseEntity<int>
+    public class TargetInfo : BaseEntity
     {
         /// <summary>
         /// 目标名称

+ 1 - 1
DW5S.Entity/TaskInfo.cs

@@ -3,7 +3,7 @@
     /// <summary>
     /// 任务信息表
     /// </summary>
-    public class TaskInfo : BaseEntity<int>
+    public class TaskInfo : BaseEntity
     {
         /// <summary>
         /// 任务状态

+ 1 - 1
DW5S.Entity/TaskRunnningInfo.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 执行中的任务信息
     /// </summary>
-    public class TaskRunnningInfo : BaseEntity<int>
+    public class TaskRunnningInfo : BaseEntity
     {
         /// <summary>
         /// 任务编号

+ 1 - 1
DW5S.Entity/TaskSig.cs

@@ -13,7 +13,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 任务信号
     /// </summary>
-    public class TaskSig : BaseEntity<int>
+    public class TaskSig : BaseEntity
     {
         /// <summary>
         /// 任务编号

+ 1 - 1
DW5S.Entity/TxInfo.cs

@@ -11,7 +11,7 @@ namespace DW5S.Entity
     /// <summary>
     /// 天线信息
     /// </summary>
-    public class TxInfo:BaseEntity<int>
+    public class TxInfo:BaseEntity
     {
         /// <summary>
         /// 天线名称

+ 1 - 1
DW5S.Entity/XlInfo.cs

@@ -13,7 +13,7 @@ namespace DW5S.Entity
     /// 星历信息表
     /// </summary>
     [Index(nameof(SatName), nameof(TimeUTC), nameof(Lon))]
-    public class XlInfo : BaseEntity<int>
+    public class XlInfo : BaseEntity
     {
         /// <summary>
         /// 卫星编号

+ 30 - 46
DW5S.Repostory/Repository/IRepository.cs

@@ -9,7 +9,7 @@ using System.Threading.Tasks;
 
 namespace DW5S.Repostory
 {
-    public interface IRepository<T>
+    public interface IRepository<T> where T : BaseEntity
     {
         IQueryable<T> AsQueryable();
         Task<T> GetByIdAsync(object id);
@@ -21,17 +21,13 @@ namespace DW5S.Repostory
 
         Task<T> FirstOrDefaultAsync(Expression<Func<T, bool>> predicate = null);
         Task<bool> AnyAsync(Expression<Func<T, bool>> predicate = null);
-        Task<T> AddAsync(T entity);
-        Task AddRangeAsync(IEnumerable<T> entitis);
-
-
-        void Update(T entity);
-        void Delete(T entity);
-
+        Task<T> AddOrUpdateAsync(T entity);
+        Task AddOrUpdateAsync(IEnumerable<T> entitis);
+        Task<int> DeleteAsync(T entity);
         Task<int> DeleteAsync(Expression<Func<T, bool>> predicate = null);
     }
 
-    public class Repository<T> : IRepository<T> where T : class
+    public class Repository<T> : IRepository<T> where T : BaseEntity
     {
         protected readonly OracleContext ctx;
         protected readonly DbSet<T> dbSet;
@@ -74,7 +70,7 @@ namespace DW5S.Repostory
         {
             return await dbSet.Where(predicate).ToListAsync();
         }
-        public async Task<IEnumerable<T>> FindAsync<TKey>(Expression<Func<T, bool>> predicate,Expression<Func<T, TKey>> keySelector = null, bool asc = true)
+        public async Task<IEnumerable<T>> FindAsync<TKey>(Expression<Func<T, bool>> predicate, Expression<Func<T, TKey>> keySelector = null, bool asc = true)
         {
             if (keySelector == null)
             {
@@ -101,49 +97,37 @@ namespace DW5S.Repostory
             var res = await dbSet.Select(selector).Distinct().ToListAsync();
             return res;
         }
-        public async Task<T> AddAsync(T entity)
-        {
-            var res = await dbSet.AddAsync(entity);
-            return res.Entity;
-        }
-        public async Task AddRangeAsync(IEnumerable<T> entitis)
+
+        public async Task AddOrUpdateAsync(IEnumerable<T> entity)
         {
-            await dbSet.AddRangeAsync(entitis);
+            if (entity.First().Id == 0)
+            {
+                await dbSet.AddRangeAsync(entity);
+            }
+            else
+            {
+                dbSet.UpdateRange(entity);
+            }
         }
-        public void Update(T entity)
+
+        public async Task<T> AddOrUpdateAsync(T entity)
         {
-            dbSet.Update(entity);
+            if (entity.Id==0)
+            {
+                var res = await dbSet.AddAsync(entity);
+                return res.Entity;
+            }
+            else
+            {
+                var res = dbSet.Update(entity);
+                return res.Entity;
+            }
         }
 
-        public void Delete(T entity)
+        public async Task<int> DeleteAsync(T entity)
         {
-            dbSet.Remove(entity);
+            return await dbSet.Where(p => p.Id == entity.Id).ExecuteDeleteAsync();
         }
-        ///// <summary>
-        ///// 高性能的删除
-        ///// </summary>
-        ///// <param name="id">ids可以是int、long、IEnumerable<int>、IEnumerable<long>等类型</param>
-        //public async void DeleteById(object id)
-        //{
-        //    if (id == null) return;
-        //    string table = typeof(T).Name;
-        //    if (id is IEnumerable<long> ids1)
-        //    {
-        //        //如果ID是连续的,这里可以使用大于小于等条件进一步优化
-        //        string sql = $"delete from {table} where id in ({string.Join(",", ids1)})";
-        //        await ctx.ExecuteSqlAsync(sql);
-        //    }
-        //    else if (id is IEnumerable<int> ids2)
-        //    {
-        //        string sql = $"delete from {table} where id in ({string.Join(",", ids2)})";
-        //        await ctx.ExecuteSqlAsync(sql);
-        //    }
-        //    else
-        //    {
-        //        string sql = $"delete from {table} where id={id}";
-        //        await ctx.ExecuteSqlAsync(sql);
-        //    }
-        //}
 
         public async Task<int> DeleteAsync(Expression<Func<T, bool>> predicate = null)
         {

+ 2 - 2
DW5S.Repostory/UnitOfWork.cs

@@ -9,14 +9,14 @@ namespace DW5S.Repostory
 {
     public interface IUnitOfWork : IAsyncDisposable
     {
-        IRepository<TEntity> Of<TEntity>();
+        IRepository<TEntity> Of<TEntity>() where TEntity : BaseEntity;
         Task<int> SaveAsync();
     }
     public class UnitOfWork : IUnitOfWork
     {
         private readonly OracleContext ctx;
 
-        public IRepository<TEntity> Of<TEntity>() 
+        public IRepository<TEntity> Of<TEntity>() where TEntity : BaseEntity
         {
             throw new NotImplementedException();
         }