DFS_Shuo_Chen 1 ヶ月 前
コミット
c9e86703b1

+ 1 - 1
EasyTemplate.Blazor.Web/Common/TheRegister.cs

@@ -37,7 +37,7 @@ public static class TheRegister
         builder.Services.AddConfiguration();
         builder.Services.AddLocalLog();
         builder.Services.AddSqlSugar();
-        //builder.Services.AddRedis();
+        builder.Services.AddRedis();
 
         builder.Services.AddAntDesign();
         builder.Services.AddInteractiveStringLocalizer();

+ 1 - 1
EasyTemplate.Blazor.Web/Components/Layout/BasicLayout.razor.cs

@@ -25,7 +25,7 @@ public partial class BasicLayout : LayoutComponentBase, IDisposable
             var menuList = await Menu.AsQueryable().Where(x => x.Enabled).OrderBy(x => x.Sort).ToListAsync();
             Global.Menus = BuildMenuTree(menuList, 0);
 
-            if (Global.CurrentUser != null)
+           if (Global.CurrentUser != null)
             {
                 var key = $"menu_{Global.CurrentUser.RoleId}";
                 if (!await Cache.Exist(key))

+ 0 - 1
EasyTemplate.Blazor.Web/Components/Pages/Dashboard/Home.razor

@@ -72,7 +72,6 @@
 
 
 
-
     }
 
 

BIN
EasyTemplate.Blazor.Web/wwwroot/img/nozzle-.png


+ 84 - 0
EasyTemplate.Page/Pages/Record.razor

@@ -0,0 +1,84 @@
+@page "/app/record"
+@attribute [ReuseTabsPage(Title = "交易记录")]
+
+
+<Spin Spinning="Loading">
+    <Table @ref="Table" AutoHeight TItem="TRecord" @bind-PageSize="Ps"
+           @bind-PageIndex="Pi" Total="Total" DataSource="DataSource" @bind-SelectedRows="SelectedRows" OnChange="OnChange">
+        <TitleTemplate>
+            <Flex Justify="FlexJustify.Start" Gap="@("10")">
+                <Input Width="300" Placeholder="油枪号" @bind-Value="@Q_Nozzle" />
+                <Button OnClick="Search">搜索</Button>
+                <Button OnClick="ResetQuery">重置</Button>
+
+            </Flex>
+        </TitleTemplate>
+        <ColumnDefinitions Context="row">
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.Id" Width="100" Title="ID" />
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.fip" Title="油机号" />
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.board" Title="主板号" />
+			<PropertyColumn Align="ColumnAlign.Center" Property="c=>c.noz" Title="油枪号" />
+            <PropertyColumn Align="ColumnAlign.Center" Property="c => c.tmEnd" Title="交易时间">
+                @{
+                    DateTime specificTime = new DateTime(1900, 1, 1, 0, 0, 0);
+                    string tmEnd = row.tmEnd == specificTime?"":row.tmEnd.ToString("yyyy-MM-dd HH:mm:ss");//?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A";
+                }
+                @tmEnd
+            </PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c => c.tmBegin" Title="提枪时间">
+                @{
+                    DateTime specificTime = new DateTime(1900, 1, 1, 0, 0, 0);
+                    string tmBegin = row.tmBegin == specificTime ? "" : row.tmBegin.ToString("yyyy-MM-dd HH:mm:ss");//?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A";
+                }
+                @tmBegin
+            </PropertyColumn>
+			<PropertyColumn Align="ColumnAlign.Center" Property="c=>c.vlr" Title="气液比">
+				@{var vlr = (row.vlr / 1000.0).ToString("F2");
+                } @vlr
+            </PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.ttc" Title="TTC" />
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.noz" Title="气流量" >
+                @{var qll = (row.vaporVl/100.0).ToString("F2");
+                } @qll</PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.noz" Title="油流量" >
+                @{var yll = (row.liquidVl/100.0).ToString("F2");
+                } @yll</PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.noz" Title="气流速" >
+                @{var qls = (row.vaporFr/10.0).ToString("F2");
+                } @qls</PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c=>c.noz" Title="油流速" >
+                @{var yls = (row.liquidFr/10.0).ToString("F2");
+                } @yls</PropertyColumn>
+            <PropertyColumn Align="ColumnAlign.Center" Property="c => c.CreateTime" Title="创建时间">
+                @{
+                    var formattedTime = row.CreateTime?.ToString("yyyy-MM-dd HH:mm:ss") ?? "N/A";
+                }
+                @formattedTime
+            </PropertyColumn>
+        </ColumnDefinitions>
+        <PaginationTemplate>
+            <Pagination Class="@(context.PaginationClass + " my-custom-pagination")"
+                        Total="context.Total"
+                        PageSize="context.PageSize"
+                        Current="context.PageIndex"
+                        ShowSizeChanger
+                        ShowQuickJumper
+                        ShowTotal="ShowTotal"
+                        OnChange="context.HandlePageChange" />
+        </PaginationTemplate>
+    </Table>
+</Spin>
+
+@inject ModalService ModalService;
+@inject ConfirmService ComfirmService;
+@inject IMessageService MessageService;
+
+@code {
+
+   
+
+    private async Task<bool> Comfirm(string message)
+    {
+        return await ComfirmService.Show(message, "提示", ConfirmButtons.YesNo, ConfirmIcon.Warning) == ConfirmResult.Yes;
+    }
+}

+ 112 - 0
EasyTemplate.Page/Pages/Record.razor.cs

@@ -0,0 +1,112 @@
+using AntDesign.TableModels;
+using EasyTemplate.Tool;
+using Masuit.Tools;
+using Microsoft.AspNetCore.Components;
+using Microsoft.JSInterop;
+using SqlSugar;
+
+namespace EasyTemplate.Page.Pages;
+
+public partial class Record
+{
+    protected override async Task OnAfterRenderAsync(bool firstRender)
+    {
+        if (firstRender)
+        {
+            await NavigationManager.RedirectLogin(IJSRuntime);
+            //await Query();
+        }
+    }
+
+    /// <summary>
+    /// 查
+    /// </summary>
+    /// <returns></returns>
+    private async Task Query()
+    {
+        Loading = true;
+        RefAsync<int> total = 0;
+        var res = await _repository.AsQueryable()
+            .WhereIF(!string.IsNullOrWhiteSpace(Q_Nozzle), x => x.noz == int.Parse(Q_Nozzle))
+            .OrderByDescending(x => x.Id)
+            .ToPageListAsync(Pi, Ps, total);
+        Total = total.Value;
+        DataSource = res;
+        Loading = false;
+        //_table.ReloadData();
+    }
+
+
+
+  
+
+    /// <summary>
+    /// 重置查询
+    /// </summary>
+    private async Task ResetQuery()
+    {
+        Q_Nozzle = string.Empty;
+        Pi = 1;
+        await Query();
+    }
+
+    private async Task OnChange(QueryModel<TRecord> query)
+        => await Query();
+
+    private async Task Search()
+    {
+        Pi = 1;
+        await Query();
+    }
+
+    /// <summary>
+    /// 注入实例
+    /// </summary>
+    [Inject] private SqlSugarRepository<TRecord> _repository { get; set; }
+    /// <summary>
+    /// 
+    /// </summary>
+    [Inject] NavigationManager NavigationManager { get; set; }
+    /// <summary>
+    /// 
+    /// </summary>
+    [Inject] IJSRuntime IJSRuntime { get; set; }
+
+
+    private string Q_Nozzle { get; set; }
+
+    /// <summary>
+    ///
+    /// </summary>
+    private ITable Table;
+    /// <summary>
+    ///
+    /// </summary>
+    private IEnumerable<TRecord> SelectedRows = [];
+    /// <summary>
+    ///
+    /// </summary>
+    private List<TRecord> DataSource;
+    /// <summary>
+    ///
+    /// </summary>
+    private int Pi = 1;
+    /// <summary>
+    ///
+    /// </summary>
+    private int Ps = 20;
+    /// <summary>
+    ///
+    /// </summary>
+    private int Total;
+    /// <summary>
+    ///
+    /// </summary>
+    private bool Loading = false;
+    /// <summary>
+    ///
+    /// </summary>
+    Func<PaginationTotalContext, string> ShowTotal => x => $"总共 {Total} 条";
+}
+
+

+ 1 - 0
EasyTemplate.Page/Pages/Record.razor.css

@@ -0,0 +1 @@
+

+ 26 - 0
EasyTemplate.Service/DB.cs

@@ -0,0 +1,26 @@
+using EasyTemplate.Tool.Entity;
+using EasyTemplate.Tool;
+using Microsoft.AspNetCore.Components;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace EasyTemplate.Service
+{
+    public class DB
+    {
+
+        [Inject] public static SqlSugarRepository<TRecord> _RepoRecord { get; set; }
+
+        [Inject] public static SqlSugarRepository<TProduct> _Repository { get; set; }
+
+        public static int insertRecord(TRecord record)
+        {
+            return _RepoRecord.InsertAsync(record).Result ? 1 : 0;
+        }
+
+
+    }
+}

+ 53 - 13
EasyTemplate.Service/UdpListenerService.cs

@@ -1,11 +1,19 @@
 using AntDesign;
+using EasyTemplate.Tool;
+using EasyTemplate.Tool.Entity;
+using Masuit.Tools;
+using Microsoft.AspNetCore.Components;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Logging;
 using OneOf.Types;
+using SqlSugar;
+using System.Globalization;
 using System.Net.Sockets;
+using System.Reflection.Emit;
 using System.Runtime.InteropServices;
 using System.Security.Cryptography;
 using System.Text;
+using System.Xml.Linq;
 using static System.Runtime.InteropServices.JavaScript.JSType;
 
 namespace EasyTemplate.Service
@@ -18,6 +26,14 @@ namespace EasyTemplate.Service
 
         public Dictionary<int, NozzleState> g_mNozzleState = new Dictionary<int, NozzleState>();
 
+        /// <summary>
+        /// 注入实例
+        /// </summary>
+        [Inject] private SqlSugarRepository<TRecord> _RepoRecord { get; set; }
+
+        [Inject] private SqlSugarRepository<TProduct> _Repository { get; set; }
+
+
         public UdpListenerService(ILogger<UdpListenerService> logger)
         {
             _logger = logger;
@@ -127,9 +143,20 @@ namespace EasyTemplate.Service
                                 g_mNozzleState[down.noz].nozzlestate = Tool.NozzleState_Idle;
                                 break;
                             case 4:
-                                filling_record record = extractFillingRecord(result.Buffer, startindex);
+                                TRecord record = extractFillingRecord(result.Buffer, startindex);
                                 g_mNozzleState[record.noz].nozzlestate = Tool.NozzleState_Idle;
-                                g_mNozzleState[record.noz].VLR = ((double)record.VLR / 1000).ToString("F2");
+                                g_mNozzleState[record.noz].VLR = ((double)record.vlr / 1000).ToString("F2");
+
+
+                                var con = Sql.Connect();
+                                var res = con.Insertable<TRecord>(record).ExecuteCommand();
+
+                                // RefAsync<int> total = 0;
+                                //var s = _Repository.AsQueryable().Where(x => x.Id == record.fip).FirstAsync();
+
+                                // var res = await _RepoRecord.InsertAsync(record);
+
+
                                 break;
 
 
@@ -212,29 +239,42 @@ namespace EasyTemplate.Service
             data.current = handler.getData(2);
             return data;
         }
-        public filling_record extractFillingRecord(byte[] Buffer, int startIndex)
+        public TRecord extractFillingRecord(byte[] Buffer, int startIndex)
         {
             int bufferlen = Buffer.Length;
 
-            filling_record data = new filling_record();
+            TRecord data = new TRecord();
             BufferHandler handler = new BufferHandler(Buffer, startIndex);
             data.board = handler.getData(1);
             data.noz = handler.getData(1);
             data.fip = data.board;
-            if (bufferlen != 22)//兼容旧协议,解析顺序改变
+            if (bufferlen == 22)//兼容旧协议,解析顺序不同
+            {
+                data.tmEnd = DateTime.Now;
+            }
+            else
             {
                 data.ttc = handler.getData(4);
             }
-            data.liquidVL = handler.getData(3);
-            data.liquidFR = handler.getData(2);
-            data.vaporVL = handler.getData(3);
-            data.vaporFR = handler.getData(2);
-            data.VLR = handler.getData(2);
-            data.tmBegin = handler.getDataString_BCD(7);
-            data.tmEnd = handler.getDataString_BCD(7);
+            data.liquidVl = handler.getData(3);
+            data.liquidFr = handler.getData(2);
+            data.vaporVl = handler.getData(3);
+            data.vaporFr = handler.getData(2);
+            data.vlr = handler.getData(2);
+            string s1 = handler.getDataString_BCD(7);
+            if (s1 != "")
+            {
+                data.tmBegin = DateTime.ParseExact(s1, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
+            }
+            string s2 = handler.getDataString_BCD(7);
+            if (s2 != "")
+            {
+                data.tmEnd = DateTime.ParseExact(s2, "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
+            }
             data.errornum = handler.getData(2);
-            data.vaporPA = handler.getData(2);
+            data.vaporPa = handler.getData(2);
             data.pwm = handler.getData(2);
+            data.vccerrorinfo = "";
             return data;
         }
 

+ 1 - 1
EasyTemplate.Tool/EasyTemplate.Tool.csproj

@@ -11,7 +11,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <None Include="Entity\App\TPRecord.cs" />
+    <None Include="Entity\App\TRecord.cs" />
   </ItemGroup>
 
   <ItemGroup>

+ 0 - 27
EasyTemplate.Tool/Entity/App/TPRecord.cs

@@ -1,27 +0,0 @@
-using SqlSugar;
-
-namespace EasyTemplate.Tool.Entity;
-
-/// <summary>
-/// 商品
-/// </summary>
-[SugarTable(null, "商品")]
-[SugarIndex("CreateTime", nameof(CreateTime), OrderByType.Desc)]
-public partial class TPRecord: EntityBase
-{
-    /// <summary>
-    /// 商品名称
-    /// </summary>
-    [SugarColumn(ColumnDescription = "商品名称", IsNullable = true)]
-    public string Name { get; set; }
-    /// <summary>
-    /// 总库存
-    /// </summary>
-    [SugarColumn(ColumnDescription = "商品编码", IsNullable = true)]
-    public string Code { get; set; }
-
-
- 
-  
-}
-

+ 39 - 0
EasyTemplate.Tool/Entity/App/TRecord.cs

@@ -0,0 +1,39 @@
+using SqlSugar;
+
+namespace EasyTemplate.Tool.Entity;
+
+/// <summary>
+/// 商品
+/// </summary>
+[SugarTable("t_record", "交易记录")]
+public partial class TRecord: EntityBase
+{
+    public int fip { get; set; }
+    public int board { get; set; }
+    public int noz { get; set; }
+    public int liquidVl { get; set; }
+    public int vaporVl { get; set; }
+    public int liquidFr { get; set; }
+    public int vaporFr { get; set; }
+    public int vlr { get; set; }
+    public int vaporPa { get; set; }
+    public int ttc { get; set; }
+    public int vlrBefore { get; set; }
+    public int vlrOffset { get; set; }
+    public int pwm { get; set; }
+    public DateTime tmBegin { get; set; }
+    public DateTime tmEnd { get; set; }
+    public int overproof { get; set; }
+    public int uploadflag { get; set; }
+    public int uploadflag2 { get; set; }
+    public int uploadflag3 { get; set; }
+    public int downloadflag1 { get; set; }
+    public int yz { get; set; }
+    public int tankpressure { get; set; }
+    public int refuelingseconds { get; set; }
+    public int errorcontrolvalue { get; set; }
+    public int errornum { get; set; }
+    public int callbackflag { get; set; }
+    public string vccerrorinfo { get; set; }
+}
+

+ 1 - 0
EasyTemplate.Tool/Entity/System/SystemMenu.cs

@@ -94,6 +94,7 @@ public class SystemMenuSeedData : ISeedData<SystemMenu>
             new SystemMenu() { Id = 15, ParentId = 0, Path="/app", Name="应用管理", Key="app", Icon="appstore", Sort=1, Enabled=true, CreateTime = DateTime.Now },
             new SystemMenu() { Id = 16, ParentId = 15, Path="/app/product", Name="产品管理", Key="app.product", Icon="shopping", Sort=0, Enabled=true, CreateTime = DateTime.Now },
             new SystemMenu() { Id = 17, ParentId = 15, Path="/app/order", Name="订单管理", Key="app.order", Icon="snippets", Sort=1, Enabled=true, CreateTime = DateTime.Now },
+            new SystemMenu() { Id = 18, ParentId = 0, Path="/app/record", Name="交易记录", Key="app.record", Icon="snippets", Sort=2, Enabled=true, CreateTime = DateTime.Now },
 
         ];
 }

+ 4 - 2
EasyTemplate.Tool/Entity/System/SystemRoleMenu.cs

@@ -13,13 +13,14 @@ public class SystemRoleMenu
     /// <summary>
     /// 角色Id
     /// </summary>
-    [SugarColumn(ColumnDescription = "角色Id", DefaultValue ="0", IsNullable = true)]
+    
+    [SugarColumn(IsPrimaryKey = true, ColumnDescription = "角色Id", DefaultValue ="0", IsNullable = true)]
     public long RoleId { get; set; }
 
     /// <summary>
     /// 菜单Id
     /// </summary>
-    [SugarColumn(ColumnDescription = "菜单Id", DefaultValue = "0", IsNullable = true)]
+    [SugarColumn(IsPrimaryKey = true, ColumnDescription = "菜单Id", DefaultValue = "0", IsNullable = true)]
     public long MenuId { get; set; }
 
 }
@@ -46,6 +47,7 @@ public class SystemRoleMenuSeedData : ISeedData<SystemRoleMenu>
             new SystemRoleMenu() { RoleId= 1, MenuId=15},
             new SystemRoleMenu() { RoleId= 1, MenuId=16},
             new SystemRoleMenu() { RoleId= 1, MenuId=17},
+            new SystemRoleMenu() { RoleId= 1, MenuId=18},
             new SystemRoleMenu() { RoleId= 2, MenuId=1},
         ];
 }