添加项目文件。

This commit is contained in:
liming 蔡
2026-07-14 13:55:17 +08:00
parent 63759495f2
commit 8bbdf78731
335 changed files with 81415 additions and 0 deletions
+213
View File
@@ -0,0 +1,213 @@
using JY.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL
{
public interface IDbHelper
{
/// <summary>
/// 保存报警数据
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
int AddAlarmData(AlarmData m);
/// <summary>
/// 缓存报警数据
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
///
int AddAlarmCacheData(string tablename, List<AlarmData> m);
/// <summary>
/// 查询缓存表报警信息
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
List<AlarmData> GetAlarmCacheData();
/// <summary>
/// 删除未更新数据
/// </summary>
/// <returns></returns>
int DeleteAlarmCacheData();
/// <summary>
/// 查询报警信息
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
List<AlarmData> GetAlarmData(string strDate1, string strDate2);
/// <summary>
/// 查询进站信息
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
List<FeedingData> GetFeedingData(string strCode);
/// <summary>
/// 新增产品型号
/// </summary>
/// <param name="entity">机型信息</param>
/// <returns></returns>
int AddProductModel(ProductModel entity);
/// <summary>
/// 删除本地型号
/// </summary>
/// <param name="modeltype">型号</param>
/// <returns></returns>
void DelProductModel(string modeltype);
/// <summary>
/// 获取产品型号列表
/// </summary>
/// <param name="strProdType">产品型号</param>
/// <returns></returns>
List<ProductModel> GetProductModelList(string strProdType = "");
/// <summary>
/// 保存产品类型配置参数
/// </summary>
/// <returns></returns>
bool AddProductParaList(List<ProductPara> list);
/// <summary>
/// 获取产品参数通过产品型号
/// </summary>
/// <param name="strModelType">产品型号</param>
/// <returns></returns>
List<ProductPara> GetProductParaByProdModel(string strModelType);
/// <summary>
/// 标准轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
bool InsertPLCConfigBase(List<PLCConfigBase> list);
/// <summary>
/// 获取换型操作的基本参数
/// </summary>
/// <returns></returns>
List<PLCConfigBase> GetPLCConfigBases();
/// <summary>
/// 获取PLC换型参数绑定值
/// </summary>
/// <param name="modelName">产品型号</param>
/// <returns></returns>
List<PLCConfigPara> GetPLCConfigPara(string modelName);
/// <summary>
/// 具体型号轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
bool InsertPLCConfigParam(List<PLCConfigPara> list);
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
DataTable GetTestData(int type,string strBarCode, string strDate1, string strDate2, string flag);
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="resultType"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
DataTable GetTestData2(int type,int resultType, string strBarCode, string strDate1, string strDate2, string flag);
/// <summary>
/// 查询CCD历史数据
/// </summary>
/// <param name="strWorkerNum"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
DataTable GetCCDData(string strWorkerNum, string strDate1, string strDate2);
/// <summary>
/// 查询CCD历史数据
/// </summary>
/// <param name="strWorkerNum"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
DataTable GetBarInTime(string strBar);
/// <summary>
/// 更新获取进站时间状态
/// </summary>
/// <param name="strBar"></param>
/// <returns></returns>
int UparInTime(string strBar);
/// <summary>
/// 按日期查询和时间查询投入产出信息
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
List<HourprodEntity> GetProdTotal(string strDate, int Hour);
/// <summary>
/// 更新指定时间的小时产出
/// </summary>
/// <param name="enity">小时产出数据</param>
/// <returns></returns>
int UpdateHourprodData(HourprodEntity enity);
/// <summary>
/// 保存进托盘数据
/// </summary>
/// <param name="m"></param>
/// <param name="strErr"></param>
/// <returns></returns>
int AddInPutTrayID(TrayTestEntry m, ref string strErr);
/// <summary>
/// 保存空托盘排出数据
/// </summary>
/// <param name="m"></param>
/// <param name="strErr"></param>
/// <returns></returns>
int AddOutTrayID(TrayTestEntry m, ref string strErr);
/// <summary>
/// 保存上料数据
/// </summary>
/// <param name="m"></param>
/// <param name="strErr"></param>
/// <returns></returns>
int AddFeedingData(FeedingData m, ref string strErr);
/// <summary>
/// 保存下料数据
/// </summary>
/// <param name="m"></param>
/// <param name="strErr"></param>
/// <returns></returns>
int AddBlankingData(BlankingData m, ref string strErr);
int AddCamInforData(CamInfor m, ref string strErr);
/// <summary>
/// 根据工位编码获取异常播报内容
/// </summary>
/// <param name="code"></param>
/// <param name="needInsert">如果没有找到记录,是否需要插入</param>
/// <returns></returns>
string GetAbnormalVoice(string code, bool needInsert = false);
}
}
+32
View File
@@ -0,0 +1,32 @@
using JY.DAL.Repository;
using JY.DAL.Service;
using JY.Model;
using Microsoft.Extensions.DependencyInjection;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL
{
public static class IocConfig
{
public static ServiceProvider Provider { get; private set; }
public static void Initialize()
{
var services = new ServiceCollection();
//services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
services.AddScoped<IRepository<BlankingData>, Repository<BlankingData>>();
services.AddScoped<IAlarmDataService, AlarmDataService>();
services.AddScoped<IBlankingDataService, BlankingDataService>();
services.AddScoped<IFeedingDataService, FeedingDataService>();
Provider = services.BuildServiceProvider();
}
}
}
+192
View File
@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\SixLabors.ImageSharp.3.1.11\build\SixLabors.ImageSharp.props" Condition="Exists('..\packages\SixLabors.ImageSharp.3.1.11\build\SixLabors.ImageSharp.props')" />
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{D5889580-58F9-467E-87D3-EFA37A300E67}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>JY.DAL</RootNamespace>
<AssemblyName>JY.DAL</AssemblyName>
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\..\..\..\JY.Inspection\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="BouncyCastle.Cryptography, Version=2.0.0.0, Culture=neutral, PublicKeyToken=072edcf4a5328938, processorArchitecture=MSIL">
<HintPath>..\packages\BouncyCastle.Cryptography.2.4.0\lib\net461\BouncyCastle.Cryptography.dll</HintPath>
</Reference>
<Reference Include="CsvHelper, Version=30.0.0.0, Culture=neutral, PublicKeyToken=8c4959082be5c823, processorArchitecture=MSIL">
<HintPath>..\packages\CsvHelper.30.0.1\lib\net45\CsvHelper.dll</HintPath>
</Reference>
<Reference Include="Dapper, Version=1.60.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Dapper.1.60.6\lib\net451\Dapper.dll</HintPath>
</Reference>
<Reference Include="Enums.NET, Version=5.0.0.0, Culture=neutral, PublicKeyToken=7ea1c1650d506225, processorArchitecture=MSIL">
<HintPath>..\packages\Enums.NET.5.0.0\lib\net461\Enums.NET.dll</HintPath>
</Reference>
<Reference Include="EPPlus, Version=8.0.8.0, Culture=neutral, PublicKeyToken=ea159fdaa78159a1, processorArchitecture=MSIL">
<HintPath>..\packages\EPPlus.8.0.8\lib\net462\EPPlus.dll</HintPath>
</Reference>
<Reference Include="EPPlus.Interfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=a694d7f3b0907a61, processorArchitecture=MSIL">
<HintPath>..\packages\EPPlus.Interfaces.8.0.0\lib\net462\EPPlus.Interfaces.dll</HintPath>
</Reference>
<Reference Include="ExtendedNumerics.BigDecimal, Version=2025.1001.2.129, Culture=neutral, PublicKeyToken=65f1315a45ad8949, processorArchitecture=MSIL">
<HintPath>..\packages\ExtendedNumerics.BigDecimal.2025.1001.2.129\lib\net48\ExtendedNumerics.BigDecimal.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.2.13, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.4.2\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
</Reference>
<Reference Include="MathNet.Numerics, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cd8b63ad3d691a37, processorArchitecture=MSIL">
<HintPath>..\packages\MathNet.Numerics.Signed.5.0.0\lib\net48\MathNet.Numerics.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=10.0.0.9, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.10.0.9\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=10.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.10.0.9\lib\net462\Microsoft.Extensions.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=10.0.0.9, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.10.0.9\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.IO.RecyclableMemoryStream, Version=3.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.IO.RecyclableMemoryStream.3.0.1\lib\netstandard2.0\Microsoft.IO.RecyclableMemoryStream.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin, Version=4.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.4.2.3\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
<Reference Include="MySql.Data, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
<HintPath>..\packages\MySql.Data.6.10.9\lib\net452\MySql.Data.dll</HintPath>
</Reference>
<Reference Include="NPOI.Core, Version=2.7.4.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.4\lib\net472\NPOI.Core.dll</HintPath>
</Reference>
<Reference Include="NPOI.OOXML, Version=2.7.4.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.4\lib\net472\NPOI.OOXML.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXml4Net, Version=2.7.4.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.4\lib\net472\NPOI.OpenXml4Net.dll</HintPath>
</Reference>
<Reference Include="NPOI.OpenXmlFormats, Version=2.7.4.0, Culture=neutral, PublicKeyToken=0df73ec7942b34e1, processorArchitecture=MSIL">
<HintPath>..\packages\NPOI.2.7.4\lib\net472\NPOI.OpenXmlFormats.dll</HintPath>
</Reference>
<Reference Include="Owin, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f0ebd12fd5e55cc5, processorArchitecture=MSIL">
<HintPath>..\packages\Owin.1.0\lib\net40\Owin.dll</HintPath>
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="SixLabors.Fonts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d998eea7b14cab13, processorArchitecture=MSIL">
<HintPath>..\packages\SixLabors.Fonts.1.0.1\lib\netstandard2.0\SixLabors.Fonts.dll</HintPath>
</Reference>
<Reference Include="SqlSugar, Version=5.1.4.207, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SqlSugar.5.1.4.207\lib\SqlSugar.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel" />
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.ComponentModel.Annotations.5.0.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Configuration.Install" />
<Reference Include="System.Core" />
<Reference Include="System.Drawing" />
<Reference Include="System.Drawing.Design" />
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.2\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Security" />
<Reference Include="System.Security.Cryptography.Xml, Version=8.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Xml.8.0.2\lib\net462\System.Security.Cryptography.Xml.dll</HintPath>
</Reference>
<Reference Include="System.Text.Encoding.CodePages, Version=9.0.0.7, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.9.0.7\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.6.3\lib\net462\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="ZString, Version=2.6.0.0, Culture=neutral, PublicKeyToken=df4c250b14d82627, processorArchitecture=MSIL">
<HintPath>..\packages\ZString.2.6.0\lib\netstandard2.0\ZString.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="IDbHelper.cs" />
<Compile Include="IocConfig.cs" />
<Compile Include="Service\BlankingDataService.cs" />
<Compile Include="SqlHelper.cs" />
<Compile Include="MySqlHelper.cs" />
<Compile Include="OpSqlDataBase.cs" />
<Compile Include="OpMysqlDataBase.cs" />
<Compile Include="ServiceLocator.cs" />
<Compile Include="Repository\DataContext.cs" />
<Compile Include="Repository\IRepository.cs" />
<Compile Include="Repository\Repository.cs" />
<Compile Include="Service\IService.cs" />
<Compile Include="Service\Service.cs" />
<Compile Include="Service\AlarmDataService.cs" />
<Compile Include="Service\FeedingDataService.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<None Include="app.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\JY.Model\JY.Model.csproj">
<Project>{f7db3a93-fca2-479b-8b2e-380116aae9fc}</Project>
<Name>JY.Model</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\SixLabors.ImageSharp.3.1.11\build\SixLabors.ImageSharp.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\SixLabors.ImageSharp.3.1.11\build\SixLabors.ImageSharp.props'))" />
</Target>
</Project>
+6
View File
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ProjectFiles</ProjectView>
</PropertyGroup>
</Project>
+22
View File
@@ -0,0 +1,22 @@
using DapperExtensions.Mapper;
using JY.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL.Mapper
{
/// <summary>
/// ProdModel表映射,实体名和表名不一样实现映射
/// </summary>
public class AlarmDataMapping : ClassMapper<AlarmData>
{
public AlarmDataMapping()
{
Table("tb_alarm");
AutoMap();
}
}
}
+22
View File
@@ -0,0 +1,22 @@
using DapperExtensions.Mapper;
using JY.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL.Mapper
{
/// <summary>
/// ProdModel表映射,实体名和表名不一样实现映射
/// </summary>
public class ProductModelMapping : ClassMapper<ProductModel>
{
public ProductModelMapping()
{
Table("tb_ProdModel");
AutoMap();
}
}
}
+271
View File
@@ -0,0 +1,271 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using MySql.Data.MySqlClient;
using System.Linq;
namespace JY.DAL
{
public class MySqlHelper<T> where T : class
{
/// <summary>
/// 数据库连接字符串
/// </summary>
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["MysqlConn"].ConnectionString;
/// <summary>
/// 查询列表
/// </summary>
/// <param name="sql">查询的sql</param>
/// <param name="param">替换参数</param>
/// <returns></returns>
public static List<T> Query(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList();
}
}
/// <summary>
/// 查询第一个数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QueryFirst(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.QueryFirst<T>(sql, param);
}
}
/// <summary>
/// 查询第一个数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QueryFirstOrDefault(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.QueryFirstOrDefault<T>(sql, param);
}
}
/// <summary>
/// 查询单条数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingle(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.QuerySingle<T>(sql, param);
}
}
/// <summary>
/// 查询单条数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingleOrDefault(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.QuerySingleOrDefault<T>(sql, param);
}
}
/// <summary>
/// 增删改
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns>Number of rows affected</returns>
public static int Execute(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.Execute(sql, param);
}
}
/// <summary>
/// Reader获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static IDataReader ExecuteReader(string sql, object param)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.ExecuteReader(sql, param);
}
}
/// <summary>
/// 获取数据返回DataTable
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static DataTable QueryTable(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
DataTable table = new DataTable();
var reader = con.ExecuteReader(sql, param);
table.Load(reader);
return table;
}
}
/// <summary>
/// Scalar获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.ExecuteScalar(sql, param);
}
}
/// <summary>
/// Scalar获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T ExecuteScalarForT(string sql, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
return con.ExecuteScalar<T>(sql, param);
}
}
/// <summary>
/// 带参数的存储过程
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static List<T> ExecutePro(string proc, object param = null)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
List<T> list = con.Query<T>(proc,
param,
null,
true,
null,
CommandType.StoredProcedure).ToList();
return list;
}
}
/// <summary>
/// 批量插入T数据,返回影响行数
/// </summary>
/// <param name="list">对象集合</param>
/// <returns>影响行数</returns>
public static int Insert(string strsql, List<T> list)
{
using (IDbConnection connection = new MySqlConnection(connectionString))
{
//return connection.Execute("insert into Person(Name,Remark) values(@Name,@Remark)", list);
return connection.Execute(strsql, list);
}
}
/// <summary>
/// 事务1 - 全SQL
/// </summary>
/// <param name="sqlarr">多条SQL</param>
/// <param name="param">param</param>
/// <returns></returns>
public static int ExecuteTransaction(string[] sqlarr)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
con.Open();
using (var transaction = con.BeginTransaction())
{
try
{
int result = 0;
foreach (var sql in sqlarr)
{
result += con.Execute(sql, null, transaction);
}
transaction.Commit();
return result;
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
finally
{
con.Close();
}
}
}
}
/// <summary>
/// 事务2 - 声明参数
///demo:
///dic.Add("Insert into Users values (@UserName, @Email, @Address)",
/// new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
/// </summary>
/// <param name="Key">多条SQL</param>
/// <param name="Value">param</param>
/// <returns></returns>
public static int ExecuteTransaction(Dictionary<string, object> dic)
{
using (MySqlConnection con = new MySqlConnection(connectionString))
{
con.Open();
using (var transaction = con.BeginTransaction())
{
try
{
int result = 0;
foreach (var sql in dic)
{
result += con.Execute(sql.Key, sql.Value, transaction);
}
transaction.Commit();
return result;
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
finally
{
con.Close();
}
}
}
}
}
}
+525
View File
@@ -0,0 +1,525 @@
using JY.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL
{
/// <summary>
///
/// </summary>
public class OpMysqlDataBase : IDbHelper
{
/// <summary>
/// 保存报警数据
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int AddAlarmData(AlarmData m)
{
string strSql = string.Format(@"INSERT INTO tb_alarm (AlarmGuid,PLCAdress,AlarmCode,AlarmContent
,AlarmType,AlarmDesc,AlarmState,StartTime,EndTime,Flag)
values('{0}','{1}','{2}','{3}','{4}',{5},'{6}','{7}','{8}',{9})"
, m.AlarmGuid, m.PLCAdress, m.AlarmCode, m.AlarmContent, m.AlarmType, m.AlarmDesc, m.AlarmState
, m.StartTime, m.EndTime, m.Flag);
int result = MySqlHelper<AlarmData>.Execute(strSql);
return result;
}
/// <summary>
/// 删除未更新数据
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
public int DeleteAlarmCacheData()
{
string strSql = $@"DELETE FROM tb_alarm WHERE Flag=0";
int result = MySqlHelper<object>.Execute(strSql);
return result;
}
/// <summary>
/// 查询报警信息
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
public List<AlarmData> GetAlarmData(string strDate1, string strDate2)
{
string strSql = $@" SELECT PLCAdress ,AlarmContent,AlarmCode,AlarmTime,StartUpTime ,BurningTime
FROM tb_alarm where AlarmTime >= '{ strDate1 }' and AlarmTime <= '{ strDate2 }' ";
var list = MySqlHelper<AlarmData>.Query(strSql);
return list;
}
/// <summary>
/// 查询进站信息
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
public List<FeedingData> GetFeedingData(string strCode)
{
string strSql = $@" SELECT * FROM FeedingData where BarCode = '{strCode}' ORDER BY CreateTime";
var list = SqlHelper<FeedingData>.Query(strSql);
return list;
}
/// <summary>
/// 新增产品型号
/// </summary>
/// <param name="entity">机型信息</param>
/// <returns></returns>
public int AddProductModel(ProductModel entity)
{
string strSql = $@"INSERT INTO `tb_productmodel`(`ModelName`, `Remark`)
VALUES ('{entity.ModelName}', '{entity.Remark}')";
int result = MySqlHelper<object>.Execute(strSql);
return result;
}
/// <summary>
/// 删除本地型号
/// </summary>
/// <param name="modeltype">型号</param>
/// <returns></returns>
public void DelProductModel(string modeltype)
{
string strSql = $"delete from tb_productmodel where ModelName='{modeltype}'";
MySqlHelper<object>.Execute(strSql);
}
/// <summary>
/// 获取产品型号列表
/// </summary>
/// <param name="strProdType">产品型号</param>
/// <returns></returns>
public List<ProductModel> GetProductModelList(string strProdType = "")
{
try
{
string strSql = @"SELECT * FROM `tb_productmodel` ";
if (strProdType != "")
{
strSql += string.Format(" where ModelName='{0}'", strProdType);
}
strSql += " order by ModelName";
var list = MySqlHelper<ProductModel>.Query(strSql);
return list;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 保存产品类型配置参数
/// </summary>
/// <returns></returns>
public bool AddProductParaList(List<ProductPara> list)
{
List<string> listSql = new List<string>();
listSql.Add($@"delete from tb_paralist where ModelName='{list[0].ModelName}'");
foreach (var item in list)
{
listSql.Add($@"INSERT INTO `tb_paralist`(`ModelName`, `ParaName`, `ParaValue`, `Remark`, `UpdateTime`)
VALUES ('{item.ModelName}', '{item.ParaName}', '{item.ParaValue}', '{item.Remark}', '{item.UpdateTime}')");
}
var result = MySqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 获取产品参数通过产品型号
/// </summary>
/// <param name="strModelType">产品型号</param>
/// <returns></returns>
public List<ProductPara> GetProductParaByProdModel(string strModelType)
{
string strSql = $@"SELECT pb.ParaName, '{strModelType}' ModelName,pl.ParaValue,pl.Remark,pl.UpdateTime
FROM tb_parabase pb
left join (select * from tb_paralist where ModelName = '{strModelType}' ) as pl
on pb.ParaName = pl.ParaName; ";
var list = MySqlHelper<ProductPara>.Query(strSql);
return list;
}
/// <summary>
/// 标准轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
public bool InsertPLCConfigBase(List<PLCConfigBase> list)
{
List<string> listSql = new List<string>();
listSql.Add("delete from tb_plcconfigbase;");
foreach (var item in list)
{
listSql.Add($@"Insert into tb_plcconfigbase (PLCAddress,PLCRemark,OrderNum)
Values ('{item.PLCAddress}','{item.PLCRemark}',{item.OrderNum});");
}
var result = MySqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 获取换型操作的基本参数
/// </summary>
/// <returns></returns>
public List<PLCConfigBase> GetPLCConfigBases()
{
string strSql = string.Format(@"SELECT * FROM `tb_plcconfigbase`
ORDER BY OrderNum");
var list = MySqlHelper<PLCConfigBase>.Query(strSql);
return list;
}
/// <summary>
/// 获取PLC换型参数绑定值
/// </summary>
/// <param name="modelName">产品型号</param>
/// <returns></returns>
public List<PLCConfigPara> GetPLCConfigPara(string modelName)
{
string strSql = $@"SELECT '{modelName}' ModelName,pb.PLCAddress,pc.PLCValue,pc.UpdateTime,pb.PLCRemark,pb.OrderNum
FROM tb_plcconfigbase pb
left join (select * from tb_plcconfig where ModelName='{modelName}') pc
on pb.PLCAddress = pc.PLCAddress
order by pb.OrderNum;";
var list = MySqlHelper<PLCConfigPara>.Query(strSql);
return list;
}
/// <summary>
/// 具体型号轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
public bool InsertPLCConfigParam(List<PLCConfigPara> list)
{
List<string> listSql = new List<string>();
listSql.Add($"delete from tb_plcconfig where ModelName='{list[0].ModelName}';");
foreach (var item in list)
{
listSql.Add($@"INSERT INTO `tb_plcconfig`(`ModelName`, `PLCAddress`, `PLCValue`, `UpdateDate`)
Values ('{item.ModelName}','{item.PLCAddress}',{item.PLCValue}),'{item.UpdateData}';");
}
var result = MySqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetTestData(int type, string strBarCode, string strDate1, string strDate2, string flag)
{
string strSql = @" SELECT
tb_testvr.TD 通道,
tb_testvr.BarCode 条码,
tb_testvr.Vol 电压,
tb_testvr.IMP 内阻,
tb_testvr.K K值,
tb_testvr.T 温度,
tb_testvr.Length 长度,
tb_testvr.Wide 宽度,
tb_testvr.LMDistance 极边距,
tb_testvr.Thickness 厚度,
tb_testvr.LCDistance 中心距,
DATE_FORMAT(tb_testvr.TestTime,'%Y-%m-%d %H:%i:%s') 测试时间,
tb_testvr.Result 结果,
tb_testvr.Remark 备注,
case when tb_testvr.Flag=1 then '已上传' else '未上传' end 上传状态,
tb_testvr.ProdType 测试型号,
tb_testvr.OCVType 测试类别,
tb_testvr.EquNo 设备编号,
tb_testvr.TaskCode 任务号
FROM
tb_testvr
where tb_testvr.TestTime >= '" + strDate1 + "' and tb_testvr.TestTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and tb_testvr.BarCode like '" + strBarCode + "%' ";
}
DataTable dt = MySqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetTestData2(int type,int resultType, string strBarCode, string strDate1, string strDate2, string flag)
{
string strSql = @" SELECT
tb_testvr.TD 通道,
tb_testvr.BarCode 条码,
tb_testvr.Vol 电压,
tb_testvr.IMP 内阻,
tb_testvr.K K值,
tb_testvr.T 温度,
tb_testvr.Length 长度,
tb_testvr.Wide 宽度,
tb_testvr.LMDistance 极边距,
tb_testvr.Thickness 厚度,
tb_testvr.LCDistance 中心距,
DATE_FORMAT(tb_testvr.TestTime,'%Y-%m-%d %H:%i:%s') 测试时间,
tb_testvr.Result 结果,
tb_testvr.Remark 备注,
case when tb_testvr.Flag=1 then '已上传' else '未上传' end 上传状态,
tb_testvr.ProdType 测试型号,
tb_testvr.OCVType 测试类别,
tb_testvr.EquNo 设备编号,
tb_testvr.TaskCode 任务号
FROM
tb_testvr
where tb_testvr.TestTime >= '" + strDate1 + "' and tb_testvr.TestTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and tb_testvr.BarCode like '" + strBarCode + "%' ";
}
DataTable dt = MySqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 查询CCD数据
/// </summary>
/// <param name="strWorkerNum"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetCCDData(string strWorkerNum, string strDate1, string strDate2)
{
string strSql = string.Format(@"SELECT
date_format(data_run.Date, '%m-%d' ) 日期
,data_run.Class 班次
,data_run.Classtype 班别
,data_run.OrderNum 工单号
,data_run.Customer 客户名称
,sum(IFNULL(data_run.TotalNum,0)) 投入总数
,sum(IFNULL(data_run.OK,0)) 良品总数
,sum(IFNULL(data_run.NG,0)) 不良总数
,CAST(IFNULL(CONVERT(((CONVERT((sum(IFNULL(data_run.NG,0))),FLOAT)/CONVERT((sum(IFNULL(data_run.TotalNum,0))),FLOAT))*100),DOUBLE),0) as CHAR(10))+'%' 不良率
,sum(IFNULL(data_run.CanRepaired,0)) 质量缺陷
,sum(IFNULL(data_run.NotRepaired,0)) 非质量缺陷
,sum(IFNULL(data_run.OtherNG,0)) 其他不良
,sum(IFNULL(data_run.SideNG,0)) 侧面不良
,sum(IFNULL(data_run.PositiveNG,0)) 正极不良
,sum(IFNULL(data_run.NegativeNG,0)) 负极不良
,sum(IFNULL(data_run.ChongheNG,0)) 重合不良
,sum(IFNULL(data_run.CodeNG,0)) 喷码不良
,sum(IFNULL(data_run.SideDrumpack,0)) 侧面凹坑鼓包、变形
,sum(IFNULL(data_run.SideDirty,0)) 侧面脏污漏液
,sum(IFNULL(data_run.SideScratches,0)) 侧面凸点、划痕、破皮、膜内异物
,sum(IFNULL(data_run.DPNG,0)) 正极面垫不良多放、漏放
,sum(IFNULL(data_run.PositiveDamage,0)) 正极套膜不良含热缩不良、破损、褶皱、面垫翘起
,sum(IFNULL(data_run.PositiveDirty,0)) 正极套膜脏污
,sum(IFNULL(data_run.PositiveScratches,0)) 盖帽不良含漏液、盖帽脏污氧化生锈,划痕,变形
,sum(IFNULL(data_run.SizeNG,0)) 负极套膜尺寸不良
,sum(IFNULL(data_run.NegativeDamage,0)) 负极套膜不良含套膜褶皱变形、破损、褶皱
,sum(IFNULL(data_run.NegativeDirty,0)) 负极套膜脏污
,sum(IFNULL(data_run.NegativeScratches,0)) 底部不良含漏液、脏污、氧化生锈、划痕、变形
,data_run.Operator 操作员
from data_run where data_run.OrderNum='{0}'", strWorkerNum);
//if (strWorkerNum != "")
//{
// strSql += string.Format(@" and data_run.OrderNum='{0}'", strWorkerNum);
//}
//strSql += " GROUP BY data_run.Class";
DataTable dt = SqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 按日期查询和时间查询投入产出信息
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public List<HourprodEntity> GetProdTotal(string strDate, int Hour)
{
string strSql = string.Format(@"SELECT
FDate
,FHour
,ProdIn
,ProdOut
,TestTime
FROM Tb_HourProd where FDate = '{0}'", strDate);
if (Hour > 0)
{
strSql += string.Format(" and FHour={0}", Hour);
}
var list = MySqlHelper<HourprodEntity>.Query(strSql);
return list;
}
/// <summary>
/// 更新指定时间的小时产出
/// </summary>
/// <param name="enity">小时产出数据</param>
/// <returns></returns>
public int UpdateHourprodData(HourprodEntity enity)
{
try
{
string strSql = $@"select 1 from tb_hourprod where FDate='{enity.FDate}' and FHour={enity.FHour}";
var obj = MySqlHelper<object>.ExecuteScalar(strSql, null);
if (obj != null && obj.ToString().Trim() != "")
{
strSql = $@"update tb_hourprod set ProdIn='{enity.ProdIn}',ProdOut='{enity.ProdOut}', TestTime='{DateTime.Now}'
where FDate='{enity.FDate}' and FHour={enity.FHour}";
}
else
{
strSql = $@"Insert into tb_hourprod(FDate, FHour, ProdIn, ProdOut, TestTime)
values ('{enity.FDate}', '{enity.FHour}', '{enity.ProdIn}', '{enity.ProdOut}', '{DateTime.Now}')";
}
int iresult = MySqlHelper<object>.Execute(strSql);
return iresult;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 保存进托盘数据
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
//public int AddInPutTrayID(TrayTestEntry m, ref string strErr)
//{
// string strSql = "INSERT INTO tb_InPutTrayID (TrayID,TestTime,Result,Remark)";
// strSql += string.Format(" values('{0}','{1}','{2}','{3}')", m.TrayID, m.TrayDate, m.TrayResult, m.TrayRemark);
// int list = MySqlHelper<AbnormalCellEntity>.Execute(strSql);
// return list;
//}
/// <summary>
/// 保存空托盘排出数据
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
//public int AddOutTrayID(TrayTestEntry m, ref string strErr)
//{
// string strSql = "INSERT INTO tb_OutTrayID (TrayID,TestTime,Result,Remark)";
// strSql += string.Format(" values('{0}','{1}','{2}','{3}')", m.TrayID, m.TrayDate, m.TrayResult, m.TrayRemark);
// int list = MySqlHelper<GroovingData>.Execute(strSql);
// return list;
//}
/// <summary>
/// 上料数据保存
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
//public int AddTestCode(AbnormalCellEntity m, ref string strErr)
//{
// string strSql = "INSERT INTO tb_savebarcode(TD,BarCode,TestTime,NGPosition, NGType,Remark, Flag)";
// strSql += string.Format(" values({0},'{1}','{2}','{3}','{4}','{5}',{6})", m.TD, m.BarCode, m.strDate,m.NGPosition,m.NGType, m.Remark, m.Flag);
// int list = MySqlHelper<AbnormalCellEntity>.Execute(strSql);
// return list;
//}
/// <summary>
/// 滚槽数据保存
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
//public int AddGroovingData(GroovingData m, ref string strErr)
//{
// string strSql = "INSERT INTO tb_grooving(TD,BarCode,Gear,IsRetest, TestTime, Result, Remark,Worker, Flag)";
// strSql += string.Format(" values({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}',{8})", m.GradingTD, m.GradingBarCode, m.Gear,
// m.IsRetest, m.GradingstrDate, m.GradingResult, m.GradingRemark, m.StrWorker, m.Flag);
// int list = MySqlHelper<GroovingData>.Execute(strSql);
// return list;
//}
public int AddFeedingData(FeedingData m, ref string strErr)
{
throw new NotImplementedException();
}
public int AddBlankingData(BlankingData m, ref string strErr)
{
throw new NotImplementedException();
}
public int AddInPutTrayID(TrayTestEntry m, ref string strErr)
{
throw new NotImplementedException();
}
public int AddOutTrayID(TrayTestEntry m, ref string strErr)
{
throw new NotImplementedException();
}
public int AddCamInforData(CamInfor m, ref string strErr)
{
throw new NotImplementedException();
}
public int AddAlarmCacheData(string tablename, List<AlarmData> m)
{
throw new NotImplementedException();
}
public List<AlarmData> GetAlarmCacheData()
{
throw new NotImplementedException();
}
public DataTable GetBarInTime(string strBar)
{
throw new NotImplementedException();
}
public int UparInTime(string strBar)
{
throw new NotImplementedException();
}
public string GetAbnormalVoice(string code, bool needInsert = false)
{
throw new NotImplementedException();
}
}
}
+712
View File
@@ -0,0 +1,712 @@
using JY.Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL
{
/// <summary>
///
/// </summary>
public class OpSqlDataBase : IDbHelper
{
#region SQLServer
/// <summary>
/// 保存报警数据
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int AddAlarmData(AlarmData m)
{
string strSql = string.Format(@"INSERT INTO [tb_alarm] ([AlarmGuid],[PLCAdress],[AlarmCode],[AlarmContent]
,[AlarmType],[AlarmDesc],[AlarmState],[StartTime],[EndTime],[Flag])
values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}',{9})"
, m.AlarmGuid, m.PLCAdress, m.AlarmCode, m.AlarmContent, m.AlarmType, m.AlarmDesc, m.AlarmState
, m.StartTime, m.EndTime, m.Flag);
int result = SqlHelper<AlarmData>.Execute(strSql);
return result;
}
/// <summary>
/// 保存报警数据至缓存表
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public int AddAlarmCacheData(string tablename, List<AlarmData> m)
{
try
{
int list = SqlHelper<AlarmData>.BulkToDB(tablename, m);
return list;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 查询缓存表报警信息
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
///
public List<AlarmData> GetAlarmCacheData()
{
string strSql = $@" SELECT [AlarmGuid]
,[PLCAdress]
,[AlarmCode]
,[AlarmContent]
,[AlarmType]
,[AlarmDesc]
,[AlarmState]
,[StartTime]
,[EndTime]
,[Flag]
FROM tb_alarm where Flag =0";
var list = SqlHelper<AlarmData>.Query(strSql);
return list;
}
/// <summary>
/// 删除未更新数据
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
public int DeleteAlarmCacheData()
{
string strSql = $@"DELETE FROM[dbo].[tb_alarm] WHERE [Flag]=0";
int result = SqlHelper<object>.Execute(strSql);
return result;
}
/// <summary>
/// 查询报警信息
/// </summary>
/// <param name="strDate1">开始时间</param>
/// <param name="strDate2">结束时间</param>
/// <returns></returns>
public List<AlarmData> GetAlarmData(string strDate1, string strDate2)
{
string strSql = $@" SELECT AlarmGuid,PLCAdress ,AlarmContent,AlarmCode,AlarmType,StartTime ,EndTime
FROM tb_alarm where StartTime >= '{ strDate1 }' and StartTime <= '{ strDate2 }' ";
var list = SqlHelper<AlarmData>.Query(strSql);
return list;
}
/// <summary>
/// 查询进站信息
/// </summary>
/// <param name="strCode"></param>
/// <returns></returns>
public List<FeedingData> GetFeedingData(string strCode)
{
string strSql = $@" SELECT * FROM FeedingData where BarCode = '{strCode}' ORDER BY CreateTime desc";
var list = SqlHelper<FeedingData>.Query(strSql);
return list;
}
/// <summary>
/// 新增产品型号
/// </summary>
/// <param name="entity">机型信息</param>
/// <returns></returns>
public int AddProductModel(ProductModel entity)
{
string strSql = $@"INSERT INTO tb_productmodel (ModelName, Remark)
VALUES ('{entity.ModelName}', '{entity.Remark}')";
int result = SqlHelper<object>.Execute(strSql);
return result;
}
/// <summary>
/// 删除本地型号
/// </summary>
/// <param name="modeltype">型号</param>
/// <returns></returns>
public void DelProductModel(string modeltype)
{
string strSql = $"delete from tb_productmodel where ModelName='{modeltype}'";
SqlHelper<object>.Execute(strSql);
}
/// <summary>
/// 获取产品型号列表
/// </summary>
/// <param name="strProdType">产品型号</param>
/// <returns></returns>
public List<ProductModel> GetProductModelList(string strProdType = "")
{
try
{
string strSql = @"SELECT * FROM tb_productmodel ";
if (strProdType != "")
{
strSql += string.Format(" where ModelName='{0}'", strProdType);
}
strSql += " order by ModelName";
var list = SqlHelper<ProductModel>.Query(strSql);
return list;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 保存产品类型配置参数
/// </summary>
/// <returns></returns>
public bool AddProductParaList(List<ProductPara> list)
{
List<string> listSql = new List<string>();
listSql.Add($@"delete from tb_paralist where ModelName='{list[0].ModelName}'");
foreach (var item in list)
{
listSql.Add($@"INSERT INTO tb_paralist (ModelName, ParaName, ParaValue, Remark, UpdateTime)
VALUES ('{item.ModelName}', '{item.ParaName}', '{item.ParaValue}', '{item.Remark}', '{item.UpdateTime}')");
}
var result = SqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 获取产品参数通过产品型号
/// </summary>
/// <param name="strModelType">产品型号</param>
/// <returns></returns>
public List<ProductPara> GetProductParaByProdModel(string strModelType)
{
string strSql = $@"SELECT pb.ParaName, '{strModelType}' ModelName,pl.ParaValue,pl.Remark,pl.UpdateTime
FROM tb_parabase pb
left join (select * from tb_paralist where ModelName = '{strModelType}' ) as pl
on pb.ParaName = pl.ParaName; ";
var list = SqlHelper<ProductPara>.Query(strSql);
return list;
}
/// <summary>
/// 标准轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
public bool InsertPLCConfigBase(List<PLCConfigBase> list)
{
List<string> listSql = new List<string>();
listSql.Add("delete from tb_plcconfigbase;");
foreach (var item in list)
{
listSql.Add($@"Insert into tb_plcconfigbase (PLCAddress,PLCRemark,OrderNum)
Values ('{item.PLCAddress}','{item.PLCRemark}',{item.OrderNum});");
}
var result = SqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 获取换型操作的基本参数
/// </summary>
/// <returns></returns>
public List<PLCConfigBase> GetPLCConfigBases()
{
string strSql = string.Format(@"SELECT * FROM tb_plcconfigbase
ORDER BY OrderNum");
var list = SqlHelper<PLCConfigBase>.Query(strSql);
return list;
}
/// <summary>
/// 获取PLC换型参数绑定值
/// </summary>
/// <param name="modelName">产品型号</param>
/// <returns></returns>
public List<PLCConfigPara> GetPLCConfigPara(string modelName)
{
string strSql = $@"SELECT '{modelName}' ModelName,pb.PLCAddress,pc.PLCValue,pc.UpdateDate,pb.PLCRemark,pb.OrderNum
FROM tb_plcconfigbase pb
left join (select * from tb_plcconfig where ModelName='{modelName}') pc
on pb.PLCAddress = pc.PLCAddress
order by pb.OrderNum;";
var list = SqlHelper<PLCConfigPara>.Query(strSql);
return list;
}
/// <summary>
/// 具体型号轴参数保存
/// </summary>
/// <param name="dt"></param>
/// <param name=""></param>
/// <param name="strErr"></param>
/// <returns></returns>
public bool InsertPLCConfigParam(List<PLCConfigPara> list)
{
List<string> listSql = new List<string>();
listSql.Add($"delete from tb_plcconfig where ModelName='{list[0].ModelName}';");
foreach (var item in list)
{
listSql.Add($@"INSERT INTO tb_plcconfig (ModelName, PLCAddress, PLCValue, UpdateDate)
Values ('{item.ModelName}','{item.PLCAddress}',{item.PLCValue},'{item.UpdateData}');");
}
var result = SqlHelper<object>.ExecuteTransaction(listSql.ToArray());
if (result > 0)
return true;
else
return false;
}
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetTestData(int type, string strBarCode, string strDate1, string strDate2, string flag)
{
string strSql = "";
switch (type)
{
case 0:
strSql = @"SELECT [ID] ID
,[TD] 通道
,[BarCode] 入站条码
,CONVERT(varchar, [CreateTime], 120) 进站时间
,[Result] 结果
,[Remark] 备注
,[Flag] 状态
FROM [dbo].[FeedingData]
where CreateTime >= '" + strDate1 + "' and CreateTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and BarCode like '%" + strBarCode + "%' ";
}
break;
case 1:
strSql = @" SELECT [ID] ID
,[TD] 序号
,[WorkShift] 班次
,[ArrivalBarCode] 入站条码
,[DepartureBarCode] 出站条码
,[TMDB] 条码对比
,CONVERT(varchar, [OutTime], 120) 出站时间
,[CCD1] '正面(2D/3D)'
,[CCD2] '反面(2D/3D)'
,[CCD3] '左侧面(2D/3D)'
,[CCD4] '右侧面(2D/3D)'
,[CCD5] '顶面(2D/3D)'
,[CCD6] '底面(2D/3D)'
,[CCD7] 底WE1
,[CCD8] 底WE2
,[CCD9] 底WE3
,[CCD10] 底WE4
,[CCD11] 中ME1
,[CCD12] 中ME2
,[CCD13] 中ME3
,[CCD14] 中ME4
,[CCD15] '极柱(POS/NEG)'
,[CCD16] '防爆阀(PRO)'
,[Result] 综合结果
,[Remark] 备注
,[Flag] 状态
FROM [dbo].[BlankingData] where OutTime >= '" + strDate1 + "' and OutTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and DepartureBarCode like '%" + strBarCode + "' ";
}
break;
}
DataTable dt = SqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 查询历史数据
/// </summary>
/// <param name="strBarCode"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetTestData2(int type,int resultType, string strBarCode, string strDate1, string strDate2, string flag)
{
string strSql = "";
switch (type)
{
case 0:
strSql = @"SELECT [ID] ID
,[TD] 通道
,[TDGroup] 主道
,[BarCode] 入站条码
,CONVERT(varchar, [CreateTime], 120) 进站时间
,[Result] 结果
,[Remark] 备注
,[Flag] 状态
FROM [dbo].[FeedingData]
where CreateTime >= '" + strDate1 + "' and CreateTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and BarCode like '%" + strBarCode + "%' ";
}
if (resultType == 1)
{
strSql += " and Result ='OK' ";
}
else if (resultType == 2)
{
strSql += " and Result = 'NG' ";
}
break;
case 1:
strSql = @" SELECT [ID] ID
,[TD] 序号
,[WorkShift] 班次
,[TDGroup] 主道
,[ArrivalBarCode] 入站条码
,[DepartureBarCode] 出站条码
,[TMDB] 条码对比
,CONVERT(varchar, [OutTime], 120) 出站时间
,[CCD1] '正面(2D/3D)'
,[CCD2] '反面(2D/3D)'
,[CCD3] '左侧面(2D/3D)'
,[CCD4] '右侧面(2D/3D)'
,[CCD5] '顶面(2D/3D)'
,[CCD6] '底面(2D/3D)'
,[CCD7] 底WE1
,[CCD8] 底WE2
,[CCD9] 底WE3
,[CCD10] 底WE4
,[CCD11] 中ME1
,[CCD12] 中ME2
,[CCD13] 中ME3
,[CCD14] 中ME4
,[CCD15] '极柱(POS/NEG)'
,[CCD16] '防爆阀(PRO)'
,[Result] 综合结果
,[Remark] 备注
,[Flag] 状态
FROM [dbo].[BlankingData] where OutTime >= '" + strDate1 + "' and OutTime <= '" + strDate2 + "' ";
if (strBarCode != "")
{
strSql += " and DepartureBarCode like '%" + strBarCode + "' ";
}
if(resultType == 1)
{
strSql += " and Result ='OK' ";
}
else if (resultType == 2)
{
strSql += " and Result like '%NG%' ";
}
break;
}
DataTable dt = SqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 查询CCD数据
/// </summary>
/// <param name="strWorkerNum"></param>
/// <param name="strDate1"></param>
/// <param name="strDate2"></param>
/// <returns></returns>
public DataTable GetCCDData(string strWorkerNum, string strDate1, string strDate2)
{
string strSql = string.Format(@"SELECT
data_run.OrderNum 工单号
,data_run.Customer 客户名称
,sum(IFNULL(data_run.TotalNum,0)) 投入总数
,sum(IFNULL(data_run.OK,0)) 良品总数
,sum(IFNULL(data_run.NG,0)) 不良总数
,CAST(IFNULL(CONVERT(((CONVERT((sum(IFNULL(data_run.NG,0))),FLOAT)/CONVERT((sum(IFNULL(data_run.TotalNum,0))),FLOAT))*100),DOUBLE),0) as CHAR(10))+'%' 不良率
,sum(IFNULL(data_run.CanRepaired,0)) 质量缺陷
,sum(IFNULL(data_run.NotRepaired,0)) 非质量缺陷
,sum(IFNULL(data_run.OtherNG,0)) 其他不良
,sum(IFNULL(data_run.SideNG,0)) 侧面不良
,sum(IFNULL(data_run.PositiveNG,0)) 正极不良
,sum(IFNULL(data_run.NegativeNG,0)) 负极不良
,sum(IFNULL(data_run.ChongheNG,0)) 重合不良
,sum(IFNULL(data_run.CodeNG,0)) 喷码不良
,sum(IFNULL(data_run.SideDrumpack,0)) 侧面凹坑鼓包、变形
,sum(IFNULL(data_run.SideDirty,0)) 侧面脏污漏液
,sum(IFNULL(data_run.SideScratches,0)) 侧面凸点、划痕、破皮、膜内异物
,sum(IFNULL(data_run.DPNG,0)) 正极面垫不良多放、漏放
,sum(IFNULL(data_run.PositiveDamage,0)) 正极套膜不良含热缩不良、破损、褶皱、面垫翘起
,sum(IFNULL(data_run.PositiveDirty,0)) 正极套膜脏污
,sum(IFNULL(data_run.PositiveScratches,0)) 盖帽不良含漏液、盖帽脏污氧化生锈,划痕,变形
,sum(IFNULL(data_run.SizeNG,0)) 负极套膜尺寸不良
,sum(IFNULL(data_run.NegativeDamage,0)) 负极套膜不良含套膜褶皱变形、破损、褶皱
,sum(IFNULL(data_run.NegativeDirty,0)) 负极套膜脏污
,sum(IFNULL(data_run.NegativeScratches,0)) 底部不良含漏液、脏污、氧化生锈、划痕、变形
,data_run.Operator 操作员
from data_run where data_run.OrderNum='{0}'", strWorkerNum);
//from data_run where data_run.Date>='{0}' and data_run.Date<='{1}'", strDate1, strDate2);
//if (strWorkerNum != "")
//{
// strSql += string.Format(@" and data_run.OrderNum='{0}'", strWorkerNum);
//}
//strSql += " GROUP BY data_run.Class";
//date_format(data_run.Date, '%m-%d') 日期
// ,data_run.Class 班次
// , data_run.Classtype 班别
DataTable dt = MySqlHelper<object>.QueryTable(strSql);
return dt;
}
/// <summary>
/// 按日期查询和时间查询投入产出信息
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public List<HourprodEntity> GetProdTotal(string strDate, int Hour)
{
string strSql = string.Format(@"SELECT
FDate
,FHour
,ProdIn
,ProdOut
,TestTime
FROM Tb_HourProd where FDate = '{0}'", strDate);
if (Hour > 0)
{
strSql += string.Format(" and FHour={0}", Hour);
}
var list = SqlHelper<HourprodEntity>.Query(strSql);
return list;
}
/// <summary>
/// 更新指定时间的小时产出
/// </summary>
/// <param name="enity">小时产出数据</param>
/// <returns></returns>
public int UpdateHourprodData(HourprodEntity enity)
{
try
{
string strSql = $@"select 1 from tb_hourprod where FDate='{enity.FDate}' and FHour={enity.FHour}";
var obj = SqlHelper<object>.ExecuteScalar(strSql, null);
if (obj != null && obj.ToString().Trim() != "")
{
strSql = $@"update tb_hourprod set ProdIn='{enity.ProdIn}',ProdOut='{enity.ProdOut}', TestTime='{DateTime.Now}'
where FDate='{enity.FDate}' and FHour={enity.FHour}";
}
else
{
strSql = $@"Insert into tb_hourprod(FDate, FHour, ProdIn, ProdOut, TestTime)
values ('{enity.FDate}', '{enity.FHour}', '{enity.ProdIn}', '{enity.ProdOut}', '{DateTime.Now}')";
}
int iresult = SqlHelper<object>.Execute(strSql);
return iresult;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 保存进托盘数据
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public int AddInPutTrayID(TrayTestEntry m, ref string strErr)
{
throw new NotImplementedException();
}
/// <summary>
/// 保存空托盘排出数据
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public int AddOutTrayID(TrayTestEntry m, ref string strErr)
{
throw new NotImplementedException();
}
/// <summary>
/// 获取电芯进站时间
/// </summary>
/// <param name="m"></param>
/// <returns></returns>
public DataTable GetBarInTime(string strBar)
{
DataTable dt = null;
try
{
string strsql = string.Format(@"SELECT Top(1) [BarCode] 条码
,CONVERT(varchar, [CreateTime], 120) 进站时间
FROM [dbo].[FeedingData]
where BarCode='{0}' order by ID DESC", strBar);
dt = SqlHelper<object>.QueryTable(strsql);
}
catch (Exception ex)
{
throw ex;
}
return dt;
}
/// <summary>
/// 更新获取时间
/// </summary>
/// <param name="strBar"></param>
/// <returns></returns>
public int UparInTime(string strBar)
{
try
{
string strsql = string.Format(@"UPDATE [dbo].[FeedingData] SET [Flag] = 1 WHERE [BarCode]='{0}' and Flag=0", strBar);
int iresult = SqlHelper<object>.Execute(strsql);
return iresult;
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 出站外观数据保存
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public int AddBlankingData(BlankingData m, ref string strErr)
{
string strSql = string.Format(@"INSERT INTO [dbo].[BlankingData]
([TD]
,[WorkShift]
,[ArrivalBarCode]
,[DepartureBarCode]
,[TMDB]
,[OutTime]
,[CCD1]
,[CCD2]
,[CCD3]
,[CCD4]
,[CCD5]
,[CCD6]
,[CCD7]
,[CCD8]
,[CCD9]
,[CCD10]
,[CCD11]
,[CCD12]
,[CCD13]
,[CCD14]
,[CCD15]
,[CCD16]
,[Result]
,[Remark]
,[Flag]
,[TDGroup])
VALUES");
strSql += string.Format("({0},'{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}',{24},{25})",
m.TD, m.WorkShift, m.ArrivalBarCode, m.DepartureBarCode, m.TMDB, m.OutTime, m.CCD1, m.CCD2, m.CCD3, m.CCD4, m.CCD5, m.CCD6, m.CCD7, m.CCD8, m.CCD9, m.CCD10, m.CCD11, m.CCD12, m.CCD13, m.CCD14, m.CCD15, m.CCD16
, m.Result, m.Remark, m.Flag,m.TDGroup);
int list = SqlHelper<BlankingData>.Execute(strSql);
return list;
}
/// <summary>
/// 电芯分档数据保存
/// </summary>
/// <param name="strDate"></param>
/// <param name="Hour"></param>
/// <returns></returns>
public int AddFeedingData(FeedingData m, ref string strErr)
{
string strSql = string.Format(@"INSERT INTO [dbo].[FeedingData] ([TD],[BarCode],[CreateTime],[Result],[Remark],[Flag],[TDGroup])");
strSql += string.Format(@" values({0},'{1}','{2}','{3}','{4}',{5},{6})", m.TD, m.BarCode, m.CreateTime, m.Result, m.Remark, m.Flag,m.TDGroup);
int list = SqlHelper<FeedingData>.Execute(strSql);
return list;
}
#endregion
public int AddCamInforData(CamInfor m, ref string strErr)
{
string strSql = string.Format(@"INSERT INTO [dbo].[CamInforData] ([TD],[BarCode],[CreateTime],
[CCD15],[CCD16],[CCD17],[CCD18],,[CCD19],[CCD20],[CCD21],[CCD22],[CCD23],[CCD24],[CCD25],[CCD26],[CCD27],[CCD28],[CCD29,[CCD30],[CCD31],[CCD32],[CCD33],[CCD34],[CCD35],[CCD36],[CCD37],[CCD38],[Result],[Remark],[Flag])");
strSql += string.Format(@" values({0},''{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}','{17}','{18}','{19}','{20}','{21}','{22}','{23}','{24}','{25}','{26}','{27}',{28})"
, m.TD, m.BarCode, m.CreateTime, m.CCD15, m.CCD16, m.CCD17, m.CCD18, m.CCD19, m.CCD20, m.CCD21, m.CCD22, m.CCD23, m.CCD24, m.CCD25, m.CCD26, m.CCD27, m.CCD28, m.CCD29, m.CCD30, m.CCD31, m.CCD32, m.CCD33, m.CCD34, m.CCD35, m.CCD36, m.CCD37, m.CCD38
, m.Result, m.Remark, m.Flag);
int list = SqlHelper<CamInfor>.Execute(strSql);
return list;
}
/// <summary>
/// 根据工位编码获取异常播报内容
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public string GetAbnormalVoice(string code, bool needInsert = false)
{
string remark = "";
try
{
string strSql = $"select Remark from tb_AbnormalVoice where code='{code}' order by ID desc";
DataTable dt = SqlHelper<object>.QueryTable(strSql);
if (dt != null && dt.Rows.Count > 0)
{
remark = Convert.ToString(dt.Rows[0][0]);
}
else if (needInsert)
{
strSql = $"insert tb_AbnormalVoice(Code,Remark) values('{code}','')";
SqlHelper<object>.Execute(strSql);
}
}
catch (Exception ex)
{
throw ex;
}
if (string.IsNullOrEmpty(remark))
{
remark = "没有播报内容,编码" + code;
}
return remark;
}
}
}
+36
View File
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// 有关程序集的一般信息由以下
// 控制。更改这些特性值可修改
// 与程序集关联的信息。
[assembly: AssemblyTitle("JY.DAL")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("JY.DAL")]
[assembly: AssemblyCopyright("Copyright © 2021")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// 将 ComVisible 设置为 false 会使此程序集中的类型
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型
//请将此类型的 ComVisible 特性设置为 true。
[assembly: ComVisible(false)]
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
[assembly: Guid("d5889580-58f9-467e-87d3-efa37a300e67")]
// 程序集的版本信息由下列四个值组成:
//
// 主版本
// 次版本
// 生成号
// 修订号
//
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值
//通过使用 "*",如下所示:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+31
View File
@@ -0,0 +1,31 @@
using SqlSugar;
using System;
using System.Configuration;
namespace JY.DAL.Repository
{
public static class DataContext
{
private static readonly Lazy<SqlSugarScope> _instance = new Lazy<SqlSugarScope>(() =>
{
string connectionString = ConfigurationManager.ConnectionStrings["CurDB"].ConnectionString;
return new SqlSugarScope(new ConnectionConfig
{
ConnectionString = connectionString,
DbType = DbType.SqlServer,
IsAutoCloseConnection = true,
InitKeyType = InitKeyType.Attribute
}, db =>
{
db.Aop.OnLogExecuting = (sql, pars) =>
{
#if DEBUG
Console.WriteLine($"SqlSugar SQL: {sql}");
#endif
};
});
});
public static SqlSugarScope Instance => _instance.Value;
}
}
+42
View File
@@ -0,0 +1,42 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace JY.DAL.Repository
{
public interface IRepository<T> where T : class, new()
{
ISqlSugarClient Db { get; }
T GetById(object id);
T GetSingle(Expression<Func<T, bool>> predicate);
List<T> GetList();
List<T> GetList(Expression<Func<T, bool>> predicate);
List<T> GetListPaged(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> predicate = null, string orderBy = null);
int Insert(T entity);
int Insert(List<T> entities);
int Update(T entity);
int Update(T entity, Expression<Func<T, bool>> whereExpression);
int Update(Expression<Func<T, T>> columns, Expression<Func<T, bool>> whereExpression);
int Delete(object id);
int Delete(Expression<Func<T, bool>> predicate);
int Delete(List<T> entities);
bool Any(Expression<Func<T, bool>> predicate);
int Count(Expression<Func<T, bool>> predicate = null);
}
}
+102
View File
@@ -0,0 +1,102 @@
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace JY.DAL.Repository
{
public class Repository<T> : IRepository<T> where T : class, new()
{
public ISqlSugarClient Db => DataContext.Instance;
public T GetById(object id)
{
return Db.Queryable<T>().InSingle(id);
}
public T GetSingle(Expression<Func<T, bool>> predicate)
{
return Db.Queryable<T>().Where(predicate).Single();
}
public List<T> GetList()
{
return Db.Queryable<T>().ToList();
}
public List<T> GetList(Expression<Func<T, bool>> predicate)
{
return Db.Queryable<T>().Where(predicate).ToList();
}
public List<T> GetListPaged(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> predicate = null, string orderBy = null)
{
totalCount = 0;
var query = Db.Queryable<T>();
if (predicate != null)
{
query = query.Where(predicate);
}
if (!string.IsNullOrEmpty(orderBy))
{
query = query.OrderBy(orderBy);
}
return query.ToPageList(pageIndex, pageSize, ref totalCount);
}
public int Insert(T entity)
{
return Db.Insertable(entity).ExecuteReturnIdentity();
}
public int Insert(List<T> entities)
{
return Db.Insertable(entities).ExecuteCommand();
}
public int Update(T entity)
{
return Db.Updateable(entity).ExecuteCommand();
}
public int Update(T entity, Expression<Func<T, bool>> whereExpression)
{
return Db.Updateable(entity).Where(whereExpression).ExecuteCommand();
}
public int Update(Expression<Func<T, T>> columns, Expression<Func<T, bool>> whereExpression)
{
return Db.Updateable<T>().SetColumns(columns).Where(whereExpression).ExecuteCommand();
}
public int Delete(object id)
{
return Db.Deleteable<T>().In(id).ExecuteCommand();
}
public int Delete(Expression<Func<T, bool>> predicate)
{
return Db.Deleteable<T>().Where(predicate).ExecuteCommand();
}
public int Delete(List<T> entities)
{
return Db.Deleteable(entities).ExecuteCommand();
}
public bool Any(Expression<Func<T, bool>> predicate)
{
return Db.Queryable<T>().Where(predicate).Any();
}
public int Count(Expression<Func<T, bool>> predicate = null)
{
var query = Db.Queryable<T>();
if (predicate != null)
{
query = query.Where(predicate);
}
return query.Count();
}
}
}
+39
View File
@@ -0,0 +1,39 @@
using JY.DAL.Repository;
using JY.Model;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace JY.DAL.Service
{
public interface IAlarmDataService : IService<AlarmData>
{
List<AlarmData> GetAlarmDataByTime(string startTime, string endTime);
List<AlarmData> GetAlarmCacheData();
int DeleteAlarmCacheData();
}
public class AlarmDataService : Service<AlarmData>, IAlarmDataService
{
public AlarmDataService(IRepository<AlarmData> repository) : base(repository)
{
}
public List<AlarmData> GetAlarmDataByTime(string startTime, string endTime)
{
return _repository.GetList(x => x.StartTime >= Convert.ToDateTime(startTime) && x.StartTime <= Convert.ToDateTime(endTime));
}
public List<AlarmData> GetAlarmCacheData()
{
return _repository.GetList(x => x.Flag == 0);
}
public int DeleteAlarmCacheData()
{
return _repository.Delete(x => x.Flag == 0);
}
}
}
+26
View File
@@ -0,0 +1,26 @@
using JY.DAL.Repository;
using JY.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace JY.DAL.Service
{
public interface IBlankingDataService : IService<BlankingData>
{
int AddBlankData(BlankingData data);
}
public class BlankingDataService : Service<BlankingData>, IBlankingDataService
{
public BlankingDataService(IRepository<BlankingData> repository) : base(repository)
{
}
public int AddBlankData(BlankingData data)
{
return _repository.Insert(data);
}
}
}
+30
View File
@@ -0,0 +1,30 @@
using JY.DAL.Repository;
using JY.Model;
using System.Collections.Generic;
namespace JY.DAL.Service
{
public interface IFeedingDataService : IService<FeedingData>
{
List<FeedingData> GetFeedingData(string barCode);
int AddFeedingData(FeedingData data);
}
public class FeedingDataService : Service<FeedingData>, IFeedingDataService
{
public FeedingDataService(IRepository<FeedingData> repository) : base(repository)
{
}
public List<FeedingData> GetFeedingData(string barCode)
{
return _repository.GetList(x => x.BarCode == barCode);
}
public int AddFeedingData(FeedingData data)
{
return _repository.Insert(data);
}
}
}
+39
View File
@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace JY.DAL.Service
{
public interface IService<T> where T : class, new()
{
T GetById(object id);
T GetSingle(Expression<Func<T, bool>> predicate);
List<T> GetList();
List<T> GetList(Expression<Func<T, bool>> predicate);
List<T> GetListPaged(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> predicate = null, string orderBy = null);
int Insert(T entity);
int Insert(List<T> entities);
int Update(T entity);
int Update(T entity, Expression<Func<T, bool>> whereExpression);
int Update(Expression<Func<T, T>> columns, Expression<Func<T, bool>> whereExpression);
int Delete(object id);
int Delete(Expression<Func<T, bool>> predicate);
int Delete(List<T> entities);
bool Any(Expression<Func<T, bool>> predicate);
int Count(Expression<Func<T, bool>> predicate = null);
}
}
+92
View File
@@ -0,0 +1,92 @@
using JY.DAL.Repository;
using System;
using System.Collections.Generic;
using System.Linq.Expressions;
namespace JY.DAL.Service
{
public class Service<T> : IService<T> where T : class, new()
{
protected readonly IRepository<T> _repository;
public Service(IRepository<T> repository)
{
_repository = repository;
}
public T GetById(object id)
{
return _repository.GetById(id);
}
public T GetSingle(Expression<Func<T, bool>> predicate)
{
return _repository.GetSingle(predicate);
}
public List<T> GetList()
{
return _repository.GetList();
}
public List<T> GetList(Expression<Func<T, bool>> predicate)
{
return _repository.GetList(predicate);
}
public List<T> GetListPaged(int pageIndex, int pageSize, out int totalCount, Expression<Func<T, bool>> predicate = null, string orderBy = null)
{
return _repository.GetListPaged(pageIndex, pageSize, out totalCount, predicate, orderBy);
}
public int Insert(T entity)
{
return _repository.Insert(entity);
}
public int Insert(List<T> entities)
{
return _repository.Insert(entities);
}
public int Update(T entity)
{
return _repository.Update(entity);
}
public int Update(T entity, Expression<Func<T, bool>> whereExpression)
{
return _repository.Update(entity, whereExpression);
}
public int Update(Expression<Func<T, T>> columns, Expression<Func<T, bool>> whereExpression)
{
return _repository.Update(columns, whereExpression);
}
public int Delete(object id)
{
return _repository.Delete(id);
}
public int Delete(Expression<Func<T, bool>> predicate)
{
return _repository.Delete(predicate);
}
public int Delete(List<T> entities)
{
return _repository.Delete(entities);
}
public bool Any(Expression<Func<T, bool>> predicate)
{
return _repository.Any(predicate);
}
public int Count(Expression<Func<T, bool>> predicate = null)
{
return _repository.Count(predicate);
}
}
}
+109
View File
@@ -0,0 +1,109 @@
using JY.DAL.Repository;
using JY.DAL.Service;
using System;
using System.Collections.Generic;
using System.Reflection;
namespace JY.DAL
{
public static class ServiceLocator
{
private static readonly Dictionary<Type, object> _services = new Dictionary<Type, object>();
private static readonly Dictionary<Type, Func<object>> _serviceFactories = new Dictionary<Type, Func<object>>();
private static bool _isInitialized = false;
public static void Initialize()
{
if (_isInitialized) return;
RegisterRepositoryAndService();
_isInitialized = true;
}
private static void RegisterRepositoryAndService()
{
var assembly = Assembly.GetExecutingAssembly();
foreach (var type in assembly.GetTypes())
{
if (type.IsClass && !type.IsAbstract)
{
foreach (var iface in type.GetInterfaces())
{
if (iface.IsGenericType)
{
var genericDef = iface.GetGenericTypeDefinition();
if (genericDef == typeof(IRepository<>))
{
_serviceFactories[iface] = () => Activator.CreateInstance(type);
}
else if (genericDef == typeof(IService<>))
{
_serviceFactories[iface] = () =>
{
var repoType = typeof(IRepository<>).MakeGenericType(type.GetGenericArguments()[0]);
var repo = Get(repoType);
return Activator.CreateInstance(type, repo);
};
}
}
else
{
if (!iface.FullName.StartsWith("System."))
{
_serviceFactories[iface] = () => CreateInstanceWithDependencies(type);
}
}
}
}
}
}
private static object CreateInstanceWithDependencies(Type type)
{
var constructor = type.GetConstructors()[0];
var parameters = constructor.GetParameters();
var paramValues = new object[parameters.Length];
for (int i = 0; i < parameters.Length; i++)
{
paramValues[i] = Get(parameters[i].ParameterType);
}
return Activator.CreateInstance(type, paramValues);
}
public static void Register<T>(T instance)
{
_services[typeof(T)] = instance;
}
public static void Register<T>(Func<T> factory)
{
_serviceFactories[typeof(T)] = () => factory();
}
public static T Get<T>()
{
return (T)Get(typeof(T));
}
public static object Get(Type serviceType)
{
if (_services.TryGetValue(serviceType, out object instance))
{
return instance;
}
if (_serviceFactories.TryGetValue(serviceType, out Func<object> factory))
{
instance = factory();
_services[serviceType] = instance;
return instance;
}
throw new InvalidOperationException($"服务 {serviceType.Name} 未注册");
}
}
}
+345
View File
@@ -0,0 +1,345 @@
using Dapper;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using MySql.Data.MySqlClient;
using System.Linq;
using System.Data.SqlClient;
using System.Collections;
using System.Reflection;
namespace JY.DAL
{
public class SqlHelper<T> where T : class
{
/// <summary>
/// 数据库连接字符串
/// </summary>
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["SqlConn"].ConnectionString;
/// <summary>
/// 查询列表
/// </summary>
/// <param name="sql">查询的sql</param>
/// <param name="param">替换参数</param>
/// <returns></returns>
public static List<T> Query(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Query<T>(sql, param).ToList();
}
}
/// <summary>
/// 查询第一个数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QueryFirst(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.QueryFirst<T>(sql, param);
}
}
/// <summary>
/// 查询第一个数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QueryFirstOrDefault(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.QueryFirstOrDefault<T>(sql, param);
}
}
/// <summary>
/// 查询单条数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingle(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.QuerySingle<T>(sql, param);
}
}
/// <summary>
/// 查询单条数据没有返回默认值
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T QuerySingleOrDefault(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.QuerySingleOrDefault<T>(sql, param);
}
}
/// <summary>
/// 增删改
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns>Number of rows affected</returns>
public static int Execute(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.Execute(sql, param);
}
}
/// <summary>
/// Reader获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static IDataReader ExecuteReader(string sql, object param)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.ExecuteReader(sql, param);
}
}
/// <summary>
/// 获取数据返回DataTable
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static DataTable QueryTable(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
DataTable table = new DataTable();
var reader = con.ExecuteReader(sql, param);
table.Load(reader);
return table;
}
}
/// <summary>
/// Scalar获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.ExecuteScalar(sql, param);
}
}
/// <summary>
/// Scalar获取数据
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static T ExecuteScalarForT(string sql, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
return con.ExecuteScalar<T>(sql, param);
}
}
/// <summary>
/// 带参数的存储过程
/// </summary>
/// <param name="sql"></param>
/// <param name="param"></param>
/// <returns></returns>
public static List<T> ExecutePro(string proc, object param = null)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
List<T> list = con.Query<T>(proc,
param,
null,
true,
null,
CommandType.StoredProcedure).ToList();
return list;
}
}
/// <summary>
/// 批量插入T数据,返回影响行数
/// </summary>
/// <param name="list">对象集合</param>
/// <returns>影响行数</returns>
public static int Insert(string strsql, List<T> list)
{
using (IDbConnection connection = new SqlConnection(connectionString))
{
//return connection.Execute("insert into Person(Name,Remark) values(@Name,@Remark)", list);
return connection.Execute(strsql, list);
}
}
/// <summary>
/// list to datatable
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="collection"></param>
/// <returns></returns>
public static DataTable ListToDt(IEnumerable<T> collection)
{
var props = typeof(T).GetProperties();
var dt = new DataTable();
dt.Columns.AddRange(props.Select(p => new
DataColumn(p.Name, p.PropertyType)).ToArray());
if (collection.Count() > 0)
{
for (int i = 0; i < collection.Count(); i++)
{
ArrayList tempList = new ArrayList();
foreach (PropertyInfo pi in props)
{
object obj = pi.GetValue(collection.ElementAt(i), null);
tempList.Add(obj);
}
object[] array = tempList.ToArray();
dt.LoadDataRow(array, true);
}
}
return dt;
}
/// <summary>
/// 批量插入SqlBulkCopy
/// </summary>
/// <param name="dt"></param>
/// <param name="tableName">表名</param>
public static void BatchInsertBySqlBulkCopy(DataTable dt, string tableName)
{
using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString))
{
sbc.BatchSize = dt.Rows.Count;
sbc.BulkCopyTimeout = 10;
sbc.DestinationTableName = tableName;
sbc.ColumnMappings.Clear();
//sbc.ColumnMappings.Add("CustomerID", "CustomerID");
//sbc.ColumnMappings.Add("FirstName", "FirstName");
//sbc.ColumnMappings.Add("LastName", "LastName");
//sbc.ColumnMappings.Add("Address1", "Address1");
//sbc.ColumnMappings.Add("Address2", "Address2");
for (int i = 0; i < dt.Columns.Count; i++)
{
sbc.ColumnMappings.Add(dt.Columns[i].ColumnName, dt.Columns[i].ColumnName);
}
//全部写入数据库
sbc.WriteToServer(dt);
}
}
/// <summary>
/// 批量插入数据
/// </summary>
/// <param name="dt"></param>
public static int BulkToDB(string tableName, List<T> list)
{
//int result = 0;
DataTable dt = ListToDt(list);
BatchInsertBySqlBulkCopy(dt, tableName);
return 1;
}
/// <summary>
/// 事务1 - 全SQL
/// </summary>
/// <param name="sqlarr">多条SQL</param>
/// <param name="param">param</param>
/// <returns></returns>
public static int ExecuteTransaction(string[] sqlarr)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
using (var transaction = con.BeginTransaction())
{
try
{
int result = 0;
foreach (var sql in sqlarr)
{
result += con.Execute(sql, null, transaction);
}
transaction.Commit();
return result;
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
finally
{
con.Close();
}
}
}
}
/// <summary>
/// 事务2 - 声明参数
///demo:
///dic.Add("Insert into Users values (@UserName, @Email, @Address)",
/// new { UserName = "jack", Email = "380234234@qq.com", Address = "上海" });
/// </summary>
/// <param name="Key">多条SQL</param>
/// <param name="Value">param</param>
/// <returns></returns>
public static int ExecuteTransaction(Dictionary<string, object> dic)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
using (var transaction = con.BeginTransaction())
{
try
{
int result = 0;
foreach (var sql in dic)
{
result += con.Execute(sql.Key, sql.Value, transaction);
}
transaction.Commit();
return result;
}
catch (Exception ex)
{
transaction.Rollback();
throw ex;
}
finally
{
con.Close();
}
}
}
}
}
}
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.3.0" newVersion="6.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.7" newVersion="9.0.0.7" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.10.9.0" newVersion="6.10.9.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.4.0" newVersion="4.2.4.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="BouncyCastle.Cryptography" version="2.4.0" targetFramework="net48" />
<package id="CsvHelper" version="30.0.1" targetFramework="net452" requireReinstallation="true" />
<package id="Dapper" version="1.60.6" targetFramework="net452" />
<package id="Enums.NET" version="5.0.0" targetFramework="net48" />
<package id="EPPlus" version="8.0.8" targetFramework="net48" />
<package id="EPPlus.Interfaces" version="8.0.0" targetFramework="net48" />
<package id="ExtendedNumerics.BigDecimal" version="2025.1001.2.129" targetFramework="net48" />
<package id="MathNet.Numerics.Signed" version="5.0.0" targetFramework="net48" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="10.0.9" targetFramework="net48" />
<package id="Microsoft.CSharp" version="4.3.0" targetFramework="net452" />
<package id="Microsoft.Extensions.DependencyInjection" version="10.0.9" targetFramework="net48" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="10.0.9" targetFramework="net48" />
<package id="Microsoft.IO.RecyclableMemoryStream" version="3.0.1" targetFramework="net48" />
<package id="Microsoft.Owin" version="4.2.3" targetFramework="net48" />
<package id="MySql.Data" version="6.10.9" targetFramework="net452" />
<package id="NPOI" version="2.7.4" targetFramework="net48" />
<package id="Owin" version="1.0" targetFramework="net452" />
<package id="SharpZipLib" version="1.4.2" targetFramework="net48" />
<package id="SixLabors.Fonts" version="1.0.1" targetFramework="net48" />
<package id="SixLabors.ImageSharp" version="3.1.11" targetFramework="net48" />
<package id="SqlSugar" version="5.1.4.207" targetFramework="net48" />
<package id="System.Buffers" version="4.5.1" targetFramework="net48" />
<package id="System.ComponentModel.Annotations" version="5.0.0" targetFramework="net48" />
<package id="System.Memory" version="4.5.5" targetFramework="net48" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
<package id="System.Runtime" version="4.3.1" targetFramework="net452" requireReinstallation="true" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.2" targetFramework="net48" />
<package id="System.Security.Cryptography.Xml" version="8.0.2" targetFramework="net48" />
<package id="System.Text.Encoding.CodePages" version="9.0.7" targetFramework="net48" />
<package id="System.Threading.Tasks.Extensions" version="4.6.3" targetFramework="net48" />
<package id="System.ValueTuple" version="4.3.0" targetFramework="net452" />
<package id="ZString" version="2.6.0" targetFramework="net48" />
</packages>