嘉杰数采项目初始化

master
LI-CCONG\李聪聪 12 months ago
commit 0fee9995dc

4
.gitignore vendored

@ -0,0 +1,4 @@
.vs
*/bin/
*/obj/
*.xml

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,511 @@
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!--文件记录 begin######################################################################################################################################## -->
<!-- 将日志以回滚文件的形式写到文件中 -->
<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
<!--Error-->
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<!--不加utf-8编码格式中文字符将显示成乱码-->
<param name="Encoding" value="utf-8" />
<file value="Log/"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<datePattern value="&quot;GlobalExceptionLogs_&quot;yyyyMMdd&quot;.log&quot;" />
<!--日志文件名是否为静态-->
<StaticLogFileName value="false"/>
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--布局(向用户显示最后经过格式化的输出信息)-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--Error-->
<!--Info-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<!--不加utf-8编码格式中文字符将显示成乱码-->
<param name="Encoding" value="utf-8" />
<!--定义文件存放位置-->
<file value="Log/"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--日志文件名是否为静态-->
<StaticLogFileName value="false"/>
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<datePattern value="&quot;GlobalInfoLogs_&quot;yyyyMMdd&quot;.log&quot;" />
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--布局(向用户显示最后经过格式化的输出信息)-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
</appender>
<!--Info-->
<!--文件记录 end######################################################################################################################################## -->
<!--Mogodb记录 begin######################################################################################################################################## -->
<!--IP访问记录,请求资源记录-->
<appender name="MongoDBAppenderinfo" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="AOPSQLLOG" />
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<!--访问结果记录,Sql记录-->
<appender name="MongoDBAppenderdebug" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="IPACCESSLOG" />
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<!--访问结果错误记录-->
<appender name="MongoDBAppendererror" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="AOPERRORLOG" />
<!--<newCollectionMaxSize value='999999' />
<newCollectionMaxDocs value='999999' />-->
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--Mogodb记录 end######################################################################################################################################## -->
<!--MSSQL记录 begin######################################################################################################################################## -->
<!--访问结果错误记录-->
<appender name="AdoNetAppenderError" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogError ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--访问结果记录,Sql记录-->
<appender name="AdoNetAppenderDebug" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogDebug ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<!--IP访问记录,请求资源记录-->
<appender name="AdoNetAppenderInfo" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogInfo ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<!--MSSQL记录 end######################################################################################################################################## -->
<!--启用记录器-->
<root>
<!-- 控制级别由低到高ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<!-- 比如定义级别为INFO则INFO级别向下的级别比如DEBUG日志将不会被记录 -->
<!-- 如果没有定义LEVEL的值则缺省为DEBUG -->
<level value="ALL" />
<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
<!--文件日志、暂不使用-->
<!--<appender-ref ref="ErrorLog" />-->
<!--<appender-ref ref="InfoLog" />-->
<!--MongoDB日志、暂不使用-->
<!--<appender-ref ref="MongoDBAppenderinfo" />
<appender-ref ref="MongoDBAppenderdebug" />
<appender-ref ref="MongoDBAppendererror" />-->
<!--MSSQL日志-->
<appender-ref ref="AdoNetAppenderError" />
<appender-ref ref="AdoNetAppenderDebug" />
<appender-ref ref="AdoNetAppenderInfo" />
</root>
<!--启用记录器-->
</log4net>
<!--建表语句 Mongo不用建表文件不需要MSSQL建表语句如下-->
<!-- 建表语句 Mongo不用建表文件不需要MSSQL建表语句如下
/*
Navicat Premium Data Transfer
Source Server : Nine 何拾玖
Source Server Type : SQL Server
Source Server Version : 14001000
Source Host : fangding.picp
Source Catalog : WitCloud_pdman
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 14001000
File Encoding : 65001
Date: 15/10/2021 14:54:44
*/
CREATE TABLE GblLogError(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogError PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '错误日志记录表', N'user', N'dbo', N'table', N'GblLogError', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Exception';;
CREATE TABLE GblLogDebug(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogDebug PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '调试日志记录表', N'user', N'dbo', N'table', N'GblLogDebug', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Exception';;
CREATE TABLE GblLogInfo(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogInfo PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '信息日志记录表', N'user', N'dbo', N'table', N'GblLogInfo', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Exception';;
-->

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,8 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
}
}

@ -0,0 +1,70 @@
{
// /* MySql=0;SqlServer=1;Sqlite=2;Oracle=3;PostgreSQL=4;Dm=5;;;;;;;;*/
"DBType": 0,
"ConnectionStrings": {
"Sqlite": "Data Source=./Magic.db",
"SqlServer": "Server=BLACK; Database=jiajieTest01; User=sa; Password=123456zls!;MultipleActiveResultSets=True;",
//"MySql": "Data Source=150.158.169.212;Database=cjyx;User ID=base;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;",
"MySql": "Data Source=127.0.0.1;Database=cjyx;User ID=root;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
//"MySql": "Data Source=101.34.35.69;Database=cjyx_wm;User ID=base;Password=123456;pooling=true;port=3306;sslmode=none;CharSet=utf8;Convert Zero Datetime=True;Allow Zero Datetime=True;"
},
"SeedDBEnabled": false,
"SeedDBDataEnabled": false,
"LogToDb": false,
"Logging": {
"LogLevel": {
"Default": "Information",
"jiajie.AuthHelper.ApiResponseHandler": "Error"
},
"Debug": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
},
"Console": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning",
"Microsoft.Hosting.Lifetime": "Debug"
}
},
"Log4Net": {
"Name": "jiajie"
}
},
"AllowedHosts": "*",
//<EFBFBD>м<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"Middleware": {
//<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
"QuartzNetJob": true,
//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>Log
"RequestResponseLog": true,
//<EFBFBD><EFBFBD><EFBFBD>ܷ<EFBFBD><EFBFBD><EFBFBD>
"MiniProfiler": false,
"SignalR": false
},
"Aop": {
"LogAOP": true,
"TranAOP": true,
"SqlAOP": {
"OutToLogFile": true,
"OutToConsole": true
}
},
//
"Gjp": {
"BasicUrl": "http://api.cmgrasp.com/CMGraspApi/GateWay",
"AppKey": "80DDA4A9D5804DA4B0887104529523C2",
"SercretKey": "EE379CED41C748B49024FC8CD81B5909",
"userid": "10488149",
"dbname": "M7215API<50><49><EFBFBD><EFBFBD>"
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -0,0 +1,20 @@
{
"runtimeOptions": {
"tfm": "net6.0",
"frameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "6.0.0"
},
{
"name": "Microsoft.AspNetCore.App",
"version": "6.0.0"
}
],
"configProperties": {
"System.GC.Server": true,
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
}
}
}

@ -0,0 +1,12 @@
{
"version": 1,
"isRoot": true,
"tools": {
"dotnet-ef": {
"version": "6.0.6",
"commands": [
"dotnet-ef"
]
}
}
}

@ -0,0 +1,86 @@
using jiajie.Services.ReadPLC;
using Microsoft.AspNetCore.Mvc;
namespace jiajie.Api.Controllers
{
/// <summary>
/// 数据采集服务
/// </summary>
[ApiController]
[Route("api/[controller]/[action]")]
public class AcquisitionController : BaseApiController
{
private readonly IPReadPLCServiceService _pReadPLCServiceService;
/// <summary>
///
/// </summary>
/// <param name="pReadPLCServiceService"></param>
public AcquisitionController(IPReadPLCServiceService pReadPLCServiceService)
{
this._pReadPLCServiceService = pReadPLCServiceService;
}
/// <summary>
/// 1线
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<string> TestRead4800()
{
EquipInput input1 = new()
{
eqmt_id = 1,
ip = "60.191.50.134",
port = new() { 4800 }
};
await _pReadPLCServiceService.ReadDataLine1(input1);
return "OK";
}
/// <summary>
/// 3线
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<string> TestRead4864()
{
EquipInput input1 = new()
{
eqmt_id = 3,
ip = "60.191.50.134",
port = new() { 4864 }
};
//await _pReadPLCServiceService.ReadDataLine1(input1);
await _pReadPLCServiceService.ReadDataLine3(input1);
return "OK";
}
/// <summary>
/// 4线
/// </summary>
/// <returns></returns>
[HttpGet]
public async Task<string> TestRead5501()
{
EquipInput input1 = new()
{
eqmt_id = 4,
ip = "60.191.50.134",
port = new() { 5501 }
};
//await _pReadPLCServiceService.ReadDataLine1(input1);
await _pReadPLCServiceService.ReadDataLine4(input1);
return "OK";
}
}
}

@ -0,0 +1,73 @@
using Microsoft.AspNetCore.Mvc;
using StackExchange.Profiling;
using jiajie.Model;
using jiajie.Model.Entity;
using jiajie.Repository;
using jiajie.Tasks;
namespace jiajie.Api.Controllers
{
/// <summary>
/// 持续运行
/// </summary>
[ApiController]
[Route("api/[controller]/[action]")]
public class ApiActiveController : Controller
{
private readonly ILogger<ApiActiveController> _logger;
private readonly IBaseRepository<TasksQz> _tasksQzServices;
private readonly ISchedulerCenter _schedulerCenter;
/// <summary>
/// 持续运行
/// </summary>
/// <param name="tasksQzServices"></param>
/// <param name="schedulerCenter"></param>
/// <param name="logger"></param>
public ApiActiveController(
IBaseRepository<TasksQz> tasksQzServices,
ISchedulerCenter schedulerCenter,
ILogger<ApiActiveController> logger
)
{
_tasksQzServices = tasksQzServices;
_schedulerCenter = schedulerCenter;
_logger = logger;
}
/// <summary>
/// 激活
/// </summary>
[HttpGet]
public string KeepActive()
{
using (MiniProfiler.Current.Step("获取成功后,开始处理最终数据"))
{
_logger.LogInformation("用workservice定时调用该Api,保持不被IIS自动回收");
return "成功调用Api接口";
}
}
///// <summary>
///// 立即执行任务
///// </summary>
///// <param name="jobId"></param>
///// <returns></returns>
//[HttpGet]
//public async Task<MessageModel<string>> ExecuteJob(int jobId)
//{
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// return await _schedulerCenter.ExecuteJobAsync(model);
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
//}
}
}

@ -0,0 +1,126 @@
using jiajie.Model;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
namespace jiajie.Api.Controllers
{
/// <summary>
///
/// </summary>
public class BaseApiController : Controller
{
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="data"></param>
/// <param name="message"></param>
/// <returns></returns>
[NonAction]
public MessageModel<T> Success<T>(T data, string message = "成功")
{
return new MessageModel<T>()
{
success = true,
message = message,
data = data,
};
}
/// <summary>
///
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
[NonAction]
public MessageModel Success(string message = "成功")
{
return new MessageModel()
{
success = true,
message = message,
data = null,
};
}
/// <summary>
///
/// </summary>
/// <param name="message"></param>
/// <param name="status"></param>
/// <returns></returns>
[NonAction]
public MessageModel<string> Failed(string message = "失败", int status = 500)
{
return new MessageModel<string>()
{
success = false,
code = status,
message = message,
data = null,
};
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="message"></param>
/// <param name="status"></param>
/// <returns></returns>
[NonAction]
public MessageModel<T> Failed<T>(string message = "失败", int status = 500)
{
return new MessageModel<T>()
{
success = false,
code = status,
message = message,
data = default,
};
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="page"></param>
/// <param name="dataCount"></param>
/// <param name="pageSize"></param>
/// <param name="data"></param>
/// <param name="pageCount"></param>
/// <param name="message"></param>
/// <returns></returns>
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(int page, int dataCount, int pageSize, List<T> data, int pageCount, string message = "获取成功")
{
return new MessageModel<PageModel<T>>()
{
success = true,
message = message,
data = new PageModel<T>(page, dataCount, pageSize, data)
};
}
/// <summary>
///
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="pageModel"></param>
/// <param name="message"></param>
/// <returns></returns>
[NonAction]
public MessageModel<PageModel<T>> SuccessPage<T>(PageModel<T> pageModel, string message = "获取成功")
{
return new MessageModel<PageModel<T>>()
{
success = true,
message = message,
data = pageModel
};
}
}
}

@ -0,0 +1,229 @@
//using Microsoft.AspNetCore.Mvc;
//using StackExchange.Profiling;
//using jiajie.Common.Helper;
//using jiajie.Model;
//using jiajie.Model.Entity;
//using jiajie.Repository;
//using jiajie.Services.ERP.Dtos;
//using jiajie.Tasks;
//namespace jiajie.Api.Controllers
//{
// /// <summary>
// /// 嘉杰大屏数据
// /// </summary>
// [ApiController]
// [Route("api/[controller]/[action]")]
// public class BigScreenController : BaseApiController
// {
// private readonly ILogger<ApiActiveController> _logger;
// private readonly IBaseRepository<plan_order> _planOrderRep;
// private readonly IBaseRepository<salesout_delivery_order> _salesout_delivery_orderRep;
// private readonly IBaseRepository<EqmtCollectAddData> _eqmtAddRep;
// private readonly IBaseRepository<EqmtBase> _eqmtBaseRep;
// private readonly IBaseRepository<EqmtPubData> _eqmtPubRep;
// /// <summary>
// /// 嘉杰大屏数据
// /// </summary>
// /// <param name="planOrderRep"></param>
// /// <param name="salesout_delivery_orderRep"></param>
// /// <param name="logger"></param>
// public BigScreenController(
// IBaseRepository<plan_order> planOrderRep,
// IBaseRepository<salesout_delivery_order> salesout_delivery_orderRep,
// IBaseRepository<EqmtCollectAddData> eqmtAddRep,
// IBaseRepository<EqmtBase> eqmtBaseRep,
// IBaseRepository<EqmtPubData> eqmtPubRep,
// ILogger<ApiActiveController> logger
// )
// {
// _planOrderRep = planOrderRep;
// _salesout_delivery_orderRep = salesout_delivery_orderRep;
// _eqmtAddRep = eqmtAddRep;
// _eqmtBaseRep = eqmtBaseRep;
// _eqmtPubRep = eqmtPubRep;
// _logger = logger;
// }
// /// <summary>
// /// 工单列表数据
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task< MessageModel<List<plan_order_output>>> getPlanOrderList()
// {
// var orderList = await _planOrderRep.QueryAsync(x => x.FSTATUS != "结案" && x.FSTART_DATE.Length > 0);
// var ret = orderList.OrderByDescending(x=>x.FBILL_NO).Take(50).AsEnumerable().MapToList<plan_order, plan_order_output>();
// foreach (var item in ret)
// {
// item.FBILL_NO = " " + item.FBILL_NO;
// }
// return Success(ret.ToList());
// }
// /// <summary>
// /// 工单详情
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<plan_order_output>> getPlanOrderDetail(long fentryId)
// {
// var orderInfo = await _planOrderRep.FirstOrDefaultAsync(x=>x.FENTRY_ID == fentryId);
// var ret = orderInfo.MapTo<plan_order, plan_order_output>();
// return Success(ret);
// }
// /// <summary>
// /// 动态月订单信息数据
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<MonthDataOutput>> getMonthData()
// {
// var ret = new MonthDataOutput() {
// ProductQty = new ProductQtyDto(),
// EqmtRate = new LineRateDto(),
// ProductOKRate = new List<ProductOkRateDto>(),
// };
// var exceptDate = new DateTime(1900, 01, 01);
// var monthFirstDat = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
// //设备列表
// var eqmtList = await _eqmtBaseRep.QueryAsync();
// //生产工单
// var MoList = await _planOrderRep.QueryAsync(
// x => x.FPLAN_FINISH_DATE.StartsWith(DateTime.Now.ToString("yyyy-MM"))
// ); //本月数据
// //生产计划达成率
// var moTotalCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count();
// if (moTotalCnt > 0)
// {
// var completeList = new List<string>() { "结案", "完工" };
// var completeCnt = MoList.Where(x => x.FPLAN_FINISH_DATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && completeList.Contains(x.FSTATUS)).Count();
// ret.MoCompleteRate = Math.Round(completeCnt.ObjToDecimal() / moTotalCnt.ObjToDecimal(), 4) * 100;
// }
// //订单交付率
// var SoList = await _salesout_delivery_orderRep.QueryAsync(
// x => x.FDATE.StartsWith(DateTime.Now.ToString("yyyy-MM"))
// ); //本月数据
// var soCount = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date).Count();
// if (soCount>0)
// {
// var soCompleteCnt = SoList.Where(x => x.FDATE.ObjToDate(exceptDate).Date <= DateTime.Now.Date && x.FREAL_QTY > 0).Count();
// ret.PoCompleteRate = Math.Round(soCompleteCnt.ObjToDecimal() / soCount.ObjToDecimal(), 4) * 100;
// }
// //月产量 _eqmtAddRep
// var productType = (await _eqmtBaseRep.QueryAsync()).Select(x => x.product).Distinct();
// ret.ProductQty.xAxis.type = "category";
// ret.ProductQty.xAxis.data = new List<string>();
// for (int i = 6; i >= 0 ; i--)
// {
// ret.ProductQty.xAxis.data.Add(DateTime.Now.Date.AddDays(-i).ToString("MM-dd"));
// }
// var addList = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= DateTime.Now.Date.AddDays(-6).Date);
// //var addList = await _eqmtAddRep.QueryAsync();
// foreach (var t in productType)
// {
// seriesDto s = new seriesDto();
// s.name = t;
// s.type = "bar";
// s.data = new List<decimal>();
// for (int i = 6; i >= 0; i--)
// {
// var day = DateTime.Now.Date.AddDays(-i).Date;
// var sumQty = addList.Where(x => x.add_datetime.Value.Date == day && x.product == t).Sum(x => x.add_qty_ok);
// s.data.Add(sumQty);
// }
// ret.ProductQty.series.Add(s);
// }
// //设备利用率
// ret.EqmtRate.xAxis.data = (await _eqmtBaseRep.QueryAsync()).Select(x => x.line_name).ToList();
// var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= monthFirstDat);
// seriesDto01 newSeries = new seriesDto01();
// foreach (var item in eqmtList)
// {
// var totalTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_run_time);
// var workTime = pubList.Where(x => x.eqmt_id == item.eqmt_id).Sum(x => x.intraday_eqmt_work_time);
// if (totalTime > 0)
// {
// newSeries.data.Add(Math.Round((decimal)workTime / totalTime, 4)*100);
// }
// else
// {
// newSeries.data.Add(0);
// }
// }
// ret.EqmtRate.series.Add(newSeries);
// //合格率
// var addListMonth = await _eqmtAddRep.QueryAsync(x => x.add_datetime >= monthFirstDat);
// foreach (var item in productType)
// {
// ProductOkRateDto newOK = new ProductOkRateDto();
// newOK.ProductName = item;
// var okQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ok);
// var ngQty = addListMonth.Where(x => x.product == item).Sum(x => x.add_qty_ng);
// if (okQty > 0 || ngQty>0)
// {
// newOK.OKRate = Math.Round((decimal)okQty / (okQty + ngQty), 4) * 100;
// }
// ret.ProductOKRate.Add(newOK);
// }
// return Success(ret);
// }
// /// <summary>
// /// 设备信息
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<List<EqmtInfoOutput>>> getEqmtDetailList()
// {
// List<EqmtInfoOutput> ret = new List<EqmtInfoOutput>();
// //设备列表
// var eqmtList = await _eqmtBaseRep.QueryAsync();
// var pubList = await _eqmtPubRep.QueryAsync(x => x.gmt_create >= DateTime.Now.Date);
// foreach (var item in eqmtList)
// {
// EqmtInfoOutput newOne = new EqmtInfoOutput();
// var lastInfo = pubList.Where(x => x.eqmt_id == item.eqmt_id).OrderByDescending(x => x.gmt_create).FirstOrDefault();
// if (lastInfo != null)
// {
// newOne = lastInfo.MapTo<EqmtPubData, EqmtInfoOutput>();
// }
// else
// {
// }
// newOne.eqmt_name = eqmtList.Where(x => x.eqmt_id == item.eqmt_id).FirstOrDefault()?.line_name;
// ret.Add(newOne);
// }
// return Success(ret);
// }
// }
//}

@ -0,0 +1,41 @@
//using Microsoft.AspNetCore.Mvc;
//using jiajie.Services;
//namespace jiajie.Web.Api.Controllers
//{
//#if !DEBUG
// [NonController]
//#endif
// /// <summary>
// /// 数据库操作
// /// </summary>
// [ApiController]
// [Route("[controller]/[action]")]
// public class DBOperationController : Controller
// {
// private readonly IDBSeed _dbSeed;
// /// <summary>
// /// 构造
// /// </summary>
// /// <param name="dbSeed"></param>
// public DBOperationController
// (
// IDBSeed dbSeed
// )
// {
// _dbSeed = dbSeed;
// }
// /// <summary>
// /// 同步表结果 Entity-->数据库
// /// </summary>
// /// <param name="tableClassName"></param>
// /// <returns></returns>
// [HttpPost]
// public async Task CreateTable(string tableClassName)
// {
// await _dbSeed.CreateTable(tableClassName);
// }
// }
//}

@ -0,0 +1,541 @@
//using jiajie.Model;
//using jiajie.Model.Entity;
//using jiajie.Repository;
//using jiajie.Repository.UnitOfWork;
//using jiajie.Services.Sys.TasksQzs;
//using jiajie.Services.Sys.TasksQzs.Dtos;
//using jiajie.Tasks;
//using Microsoft.AspNetCore.Mvc;
//using Quartz;
//using System.Linq.Expressions;
//using System.Reflection;
//namespace jiajie.Api.Controllers
//{
//#if !DEBUG
// [NonController]
//#endif
// /// <summary>
// /// 定时任务
// /// </summary>
// [ApiController]
// [Route("api/[controller]/[action]")]
// public class TasksQzController : BaseApiController
// {
// //private readonly ITasksQzServices _tasksQzServices;
// private readonly IBaseRepository<TasksQz> _tasksQzServices;
// private readonly ISchedulerCenter _schedulerCenter;
// private readonly IUnitOfWork _unitOfWork;
// /// <summary>
// /// 构造
// /// </summary>
// /// <param name="tasksQzServices"></param>
// /// <param name="schedulerCenter"></param>
// /// <param name="unitOfWork"></param>
// public TasksQzController(
// //ITasksQzServices tasksQzServices,
// IBaseRepository<TasksQz> tasksQzServices,
// ISchedulerCenter schedulerCenter,
// IUnitOfWork unitOfWork
// )
// {
// _unitOfWork = unitOfWork;
// _tasksQzServices = tasksQzServices;
// _schedulerCenter = schedulerCenter;
// }
// /// <summary>
// /// 分页获取
// /// </summary>
// /// <param name="page"></param>
// /// <param name="key"></param>
// /// <returns></returns>
// // GET: api/Buttons/5
// [HttpGet]
// public async Task<MessageModel<PageModel<TasksQz>>> Get(int page = 1, string key = "")
// {
// if (string.IsNullOrEmpty(key) || string.IsNullOrWhiteSpace(key))
// {
// key = "";
// }
// int intPageSize = 50;
// Expression<Func<TasksQz, bool>> whereExpression = a => a.IsDeleted != true && (a.Name != null && a.Name.Contains(key));
// var data = await _tasksQzServices.QueryPageAsync(whereExpression, page, intPageSize, " Id desc ");
// if (data.totalCount > 0)
// {
// foreach (var item in data.rows)
// {
// item.Triggers = await _schedulerCenter.GetTaskStaus(item);
// }
// }
// return Success(data);
// }
// /// <summary>
// /// 添加计划任务
// /// </summary>
// /// <param name="tasksQz"></param>
// /// <returns></returns>
// [HttpPost]
// public async Task<MessageModel<string>> Post([FromBody] TasksQz tasksQz)
// {
// var data = new MessageModel<string>();
// _unitOfWork.BeginTran();
// var id = (await _tasksQzServices.InsertAsync(tasksQz));
// data.success = id > 0;
// try
// {
// if (data.success)
// {
// tasksQz.Id = id;
// data.data = id.ObjToString();
// data.message = "添加成功";
// if (tasksQz.IsStart)
// {
// //如果是启动自动
// var ResuleModel = await _schedulerCenter.AddScheduleJobAsync(tasksQz);
// data.success = ResuleModel.success;
// if (ResuleModel.success)
// {
// data.message = $"{data.message}=>启动成功=>{ResuleModel.message}";
// }
// else
// {
// data.message = $"{data.message}=>启动失败=>{ResuleModel.message}";
// }
// }
// }
// else
// {
// data.message = "添加失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// { if(data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// return data;
// }
// /// <summary>
// /// 修改计划任务
// /// </summary>
// /// <param name="tasksQz"></param>
// /// <returns></returns>
// [HttpPost]
// public async Task<MessageModel<string>> Put([FromBody] TasksQz tasksQz)
// {
// var data = new MessageModel<string>();
// if (tasksQz != null && tasksQz.Id > 0)
// {
// _unitOfWork.BeginTran();
// data.success = await _tasksQzServices.UpdateAsync(tasksQz);
// try
// {
// if (data.success)
// {
// data.message = "修改成功";
// data.data = tasksQz?.Id.ObjToString();
// if (tasksQz.IsStart)
// {
// var ResuleModelStop = await _schedulerCenter.StopScheduleJobAsync(tasksQz);
// data.message = $"{data.message}=>停止:{ResuleModelStop.message}";
// var ResuleModelStar = await _schedulerCenter.AddScheduleJobAsync(tasksQz);
// data.success = ResuleModelStar.success;
// data.message = $"{data.message}=>启动:{ResuleModelStar.message}";
// }
// else
// {
// var ResuleModelStop = await _schedulerCenter.StopScheduleJobAsync(tasksQz);
// data.message = $"{data.message}=>停止:{ResuleModelStop.message}";
// }
// }
// else
// {
// data.message = "修改失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// return data;
// }
// /// <summary>
// /// 删除一个任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpDelete]
// public async Task<MessageModel<string>> Delete(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// _unitOfWork.BeginTran();
// data.success = await _tasksQzServices.DeleteAsync(model);
// try
// {
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "删除成功";
// var ResuleModel = await _schedulerCenter.StopScheduleJobAsync(model);
// data.message = $"{data.message}=>任务状态=>{ResuleModel.message}";
// }
// else
// {
// data.message = "删除失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 启动计划任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> StartJob(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// _unitOfWork.BeginTran();
// try
// {
// model.IsStart = true;
// data.success = await _tasksQzServices.UpdateAsync(model);
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "更新成功";
// var ResuleModel = await _schedulerCenter.AddScheduleJobAsync(model);
// data.success = ResuleModel.success;
// if (ResuleModel.success)
// {
// data.message = $"{data.message}=>启动成功=>{ResuleModel.message}";
// }
// else
// {
// data.message = $"{data.message}=>启动失败=>{ResuleModel.message}";
// }
// }
// else
// {
// data.message = "更新失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 停止一个计划任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> StopJob(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// model.IsStart = false;
// data.success = await _tasksQzServices.UpdateAsync(model);
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "更新成功";
// var ResuleModel = await _schedulerCenter.StopScheduleJobAsync(model);
// if (ResuleModel.success)
// {
// data.message = $"{data.message}=>停止成功=>{ResuleModel.message}";
// }
// else
// {
// data.message = $"{data.message}=>停止失败=>{ResuleModel.message}";
// }
// }
// else
// {
// data.message = "更新失败";
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 暂停一个计划任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> PauseJob(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// _unitOfWork.BeginTran();
// try
// {
// data.success = await _tasksQzServices.UpdateAsync(model);
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "更新成功";
// var ResuleModel = await _schedulerCenter.PauseJob(model);
// if (ResuleModel.success)
// {
// data.message = $"{data.message}=>暂停成功=>{ResuleModel.message}";
// }
// else
// {
// data.message = $"{data.message}=>暂停失败=>{ResuleModel.message}";
// }
// data.success = ResuleModel.success;
// }
// else
// {
// data.message = "更新失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 恢复一个计划任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> ResumeJob(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// _unitOfWork.BeginTran();
// try
// {
// model.IsStart = true;
// data.success = await _tasksQzServices.UpdateAsync(model);
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "更新成功";
// var ResuleModel = await _schedulerCenter.ResumeJob(model);
// if (ResuleModel.success)
// {
// data.message = $"{data.message}=>恢复成功=>{ResuleModel.message}";
// }
// else
// {
// data.message = $"{data.message}=>恢复失败=>{ResuleModel.message}";
// }
// data.success = ResuleModel.success;
// }
// else
// {
// data.message = "更新失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 重启一个计划任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> ReCovery(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// _unitOfWork.BeginTran();
// try
// {
// model.IsStart = true;
// data.success = await _tasksQzServices.UpdateAsync(model);
// data.data = jobId.ObjToString();
// if (data.success)
// {
// data.message = "更新成功";
// var ResuleModelStop = await _schedulerCenter.StopScheduleJobAsync(model);
// var ResuleModelStar = await _schedulerCenter.AddScheduleJobAsync(model);
// if (ResuleModelStar.success)
// {
// data.message = $"{data.message}=>停止:{ResuleModelStop.message}=>启动:{ResuleModelStar.message}";
// data.data = jobId.ObjToString();
// }
// else
// {
// data.message = $"{data.message}=>停止:{ResuleModelStop.message}=>启动:{ResuleModelStar.message}";
// data.data = jobId.ObjToString();
// }
// data.success = ResuleModelStar.success;
// }
// else
// {
// data.message = "更新失败";
// }
// }
// catch (Exception)
// {
// throw;
// }
// finally
// {
// if (data.success)
// _unitOfWork.CommitTran();
// else
// _unitOfWork.RollbackTran();
// }
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// /// <summary>
// /// 获取任务命名空间
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public MessageModel<List<QuartzReflectionViewModel>> GetTaskNameSpace()
// {
// var baseType = typeof(IJob);
// var path = AppDomain.CurrentDomain.RelativeSearchPath ?? AppDomain.CurrentDomain.BaseDirectory;
// var referencedAssemblies = System.IO.Directory.GetFiles(path, "jiajie.Tasks.dll").Select(Assembly.LoadFrom).ToArray();
// var types = referencedAssemblies
// .SelectMany(a => a.DefinedTypes)
// .Select(type => type.AsType())
// .Where(x => x != baseType && baseType.IsAssignableFrom(x)).ToArray();
// var implementTypes = types.Where(x => x.IsClass).Select(item => new QuartzReflectionViewModel { nameSpace = item.Namespace, nameClass = item.Name, remark = "" }).ToList();
// return MessageModel<List<QuartzReflectionViewModel>>.Success("获取成功", implementTypes);
// }
// /// <summary>
// /// 立即执行任务
// /// </summary>
// /// <param name="jobId"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<MessageModel<string>> ExecuteJob(int jobId)
// {
// var data = new MessageModel<string>();
// var model = await _tasksQzServices.FirstOrDefaultByIdAsync(jobId);
// if (model != null)
// {
// return await _schedulerCenter.ExecuteJobAsync(model);
// }
// else
// {
// data.message = "任务不存在";
// }
// return data;
// }
// }
//}

@ -0,0 +1,353 @@
//using AutoMapper;
//using jiajie.Common.Helper;
//using jiajie.Model;
//using jiajie.Model.Entity;
//using jiajie.Repository;
//using jiajie.Services;
//using jiajie.Services.Sys.TasksQzs;
//using jiajie.Services.Sys.TasksQzs.Dtos;
//using jiajie.Services.Sys.Tests;
//using jiajie.Services.Sys.Tests.Dtos;
//using Microsoft.AspNetCore.Mvc;
//using Newtonsoft.Json;
//using System.Linq.Expressions;
//using Yitter.IdGenerator;
//using jiajie.Common;
//using jiajie.Services.ReadPLC;
//namespace jiajie.Api.Controllers
//{
// /// <summary>
// ///
// /// </summary>
// [ApiController]
// [Route("api/[controller]/[action]")]
// public class TestController : BaseApiController
// {
// private readonly IMapper _mapper;
// private readonly ITestServices _testServices;
// private readonly ITasksQzServices _tasksQzServices;
// private readonly IReadPLCDataService _readPLCDataService;
// /// <summary>
// ///
// /// </summary>
// /// <param name="mapper"></param>
// /// <param name="testServices"></param>
// /// <param name="tasksQzServices"></param>
// /// <param name="readPLCDataService"></param>
// public TestController(
// IMapper mapper,
// ITestServices testServices,
// ITasksQzServices tasksQzServices,
// IReadPLCDataService readPLCDataService
// )
// {
// _mapper = mapper;
// _testServices = testServices;
// _tasksQzServices = tasksQzServices;
// _readPLCDataService = readPLCDataService;
// }
// /// <summary>
// /// 测试 增加数据 BaseService
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestAdd(AddOrUpdTestInput input)
// {
// input.Entity.Id = ConvertUtil2.ConvertType<long>(YitIdHelper.NextId());
// var ret = await _testServices.AddOne<DtoEditTest, long>(input.Entity);
// return Success(ret);
// }
// /// <summary>
// /// 测试 增加数据 接口
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestAddIF(AddOrUpdTestInput input)
// {
// input.Entity.Id = ConvertUtil2.ConvertType<long>(YitIdHelper.NextId());
// var ret = await _testServices.AddTest(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试 修改数据 BaseService
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestUpd(AddOrUpdTestInput input)
// {
// var ret = await _testServices.UpdOne<DtoEditTest, long>(input.Entity);
// return Success(ret);
// }
// /// <summary>
// /// 测试 修改部分数据 BaseService
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestUpd2(DtoEditTest2 input)
// {
// var ret = await _testServices.UpdOne<DtoEditTest2, long>(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试 修改数据 接口
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestUpdIF(AddOrUpdTestInput input)
// {
// var ret = await _testServices.UpdTest(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试 修改部分数据 接口
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestUpd2IF(DtoEditTest2 input)
// {
// var ret = await _testServices.UpdTest2(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试 软删除数据 BaseService
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestDelSoft(KeyInputUpd<long> input)
// {
// var ret = await _testServices.DelOneSoft<Test, long>(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试 软删除数据 接口
// /// </summary>
// /// <returns></returns>
// [HttpPost]
// public async Task<dynamic> TestDelSoftIF(KeyInputUpd<long> input)
// {
// var ret = await _testServices.DelTest(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试取单条数据 BaseService
// /// </summary>
// /// <param name="input"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<dynamic> TestGet([FromQuery] KeyInput<long> input)
// {
// var ret = await _testServices.GetOneById<DtoEditTest, long>(input.Id);
// return Success(ret);
// }
// /// <summary>
// /// 测试取单条数据 IF
// /// </summary>
// /// <param name="input"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<dynamic> TestGetIf([FromQuery] KeyInput<long> input)
// {
// var ret = await _testServices.GetTest(input);
// return Success(ret);
// }
// /// <summary>
// /// 测试分页数据 Baseservice
// /// </summary>
// /// <param name="input"></param>
// /// <returns></returns>
// [HttpGet]
// public async Task<dynamic> TestPage([FromQuery] GetPageListTestInput input)
// {
// var ret = await _testServices.GetPageList<DtoViewTest>(null, input.PageIndex, input.PageSize, input.SortSql);
// return Success(ret);
// }
// /// <summary>
// /// 测试分页数据 IF
// /// </summary>
// /// <param name="input"></param>
// /// <returns></returns>
// [UseTran]
// [HttpGet]
// public async Task<dynamic> TestPageIF([FromQuery] GetPageListTestInput input)
// {
// var ret = await _testServices.GetPageListTest(input);
// return Success(ret);
// }
// /// <summary>
// ///
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// [UseTran]
// public string TestUseTran()
// {
// return "看看是否拦截到";
// }
// ///// <summary>
// ///// 测试 change
// ///// </summary>
// ///// <returns></returns>
// //[HttpGet]
// //public async Task<dynamic> T2()
// //{
// // var a = await _testServices.QueryById(1);
// // //_tasksQzServices.ChangeRepository<TasksQz>();
// // var b = await _tasksQzServices.QueryById(1);
// // var ret = JsonConvert.SerializeObject(a) + "|||" + JsonConvert.SerializeObject(b);
// // return ret;
// //}
// ///// <summary>
// /////
// ///// </summary>
// ///// <returns></returns>
// //[HttpGet]
// //public async Task<dynamic> T3()
// //{
// // var testList = await _testServices.Query();
// // var maxId = 1;
// // if (testList.Any())
// // {
// // maxId = maxId + 1;
// // }
// // await _testServices.Add(new Test()
// // {
// // Id = maxId,
// // Txt1 = DateTime.Now.ToString(),
// // Flo1 = maxId * 2.36F
// // }); ;
// // var ret = JsonConvert.SerializeObject(await _testServices.Query());
// // return ret;
// //}
// ///// <summary>
// /////
// ///// </summary>
// ///// <returns></returns>
// //[HttpGet]
// //public async Task<dynamic> TestMapper()
// //{
// // Expression<Func<TasksQz, bool>> where = a => a.IsDeleted != true ;
// // var data = await _tasksQzServices.QueryPage(where, 1, 20, " Id desc ");
// // var sssef = JsonConvert.SerializeObject(data);
// // var ss = data.ConvertTo<DtoViewTaskQz>();
// // return MessageModel<PageModel<DtoViewTaskQz>>.Success("",ss);
// //}
// /// <summary>
// /// 读取13线数据
// /// </summary>
// /// <param name="input"></param>
// [HttpPost]
// public async void TestRead13(EquipInput input)
// {
// //IP 183.129.248.194
// await _readPLCDataService.ReadDataLine13(input);
// }
// /// <summary>
// ///
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<string> TestRead4800()
// {
// EquipInput input1 = new()
// {
// eqmt_id = 1,
// ip = "60.191.50.134",
// port = new() { 4800 }
// };
// await _readPLCDataService.ReadDataLine13(input1);
// return "OK";
// }
// /// <summary>
// ///
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<string> TestRead4864()
// {
// EquipInput input1 = new()
// {
// eqmt_id = 3,
// ip = "60.191.50.134",
// port = new() { 4864 }
// };
// await _readPLCDataService.ReadDataLine13(input1);
// return "OK";
// }
// /// <summary>
// ///
// /// </summary>
// /// <returns></returns>
// [HttpGet]
// public async Task<string> TestRead5501()
// {
// EquipInput input1 = new()
// {
// eqmt_id = 4,
// ip = "60.191.50.134",
// port = new() { 5501 }
// };
// await _readPLCDataService.ReadDataLine13(input1);
// return "OK";
// }
// }
//}

@ -0,0 +1,33 @@
//using Microsoft.AspNetCore.Mvc;
//namespace jiajie.Api.Controllers
//{
// [ApiController]
// [Route("[controller]")]
// public class WeatherForecastController : ControllerBase
// {
// private static readonly string[] Summaries = new[]
// {
// "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
// };
// private readonly ILogger<WeatherForecastController> _logger;
// public WeatherForecastController(ILogger<WeatherForecastController> logger)
// {
// _logger = logger;
// }
// [HttpGet(Name = "GetWeatherForecast")]
// public IEnumerable<WeatherForecast> Get()
// {
// return Enumerable.Range(1, 5).Select(index => new WeatherForecast
// {
// Date = DateTime.Now.AddDays(index),
// TemperatureC = Random.Shared.Next(-20, 55),
// Summary = Summaries[Random.Shared.Next(Summaries.Length)]
// })
// .ToArray();
// }
// }
//}

@ -0,0 +1,116 @@
using jiajie.Common.Helper;
using jiajie.Common.LogHelper;
using jiajie.Hubs;
using jiajie.Model;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Logging;
using StackExchange.Profiling;
using System;
namespace jiajie.Filter
{
/// <summary>
/// 全局异常错误日志
/// </summary>
public class GlobalExceptionsFilter : IExceptionFilter
{
private readonly IWebHostEnvironment _env;
private readonly IHubContext<ChatHub> _hubContext;
private readonly ILogger<GlobalExceptionsFilter> _loggerHelper;
/// <summary>
/// 异常拦截构造函数
/// </summary>
/// <param name="env"></param>
/// <param name="loggerHelper"></param>
/// <param name="hubContext"></param>
public GlobalExceptionsFilter(IWebHostEnvironment env, ILogger<GlobalExceptionsFilter> loggerHelper, IHubContext<ChatHub> hubContext)
{
_env = env;
_loggerHelper = loggerHelper;
_hubContext = hubContext;
}
/// <summary>
/// 异常发生
/// </summary>
/// <param name="context"></param>
public void OnException(ExceptionContext context)
{
var json = new MessageModel<string>();
json.message = context.Exception.Message;//错误信息
json.code = 500;//500异常
var errorAudit = "Unable to resolve service for";
if (!string.IsNullOrEmpty(json.message) && json.message.Contains(errorAudit))
{
json.message = json.message.Replace(errorAudit, $"(若新添加服务,需要重新编译项目){errorAudit}");
}
if (_env.EnvironmentName.ObjToString().Equals("Development"))
{
json.message = json.message + ">>>>>堆栈信息:" + context.Exception.StackTrace;//堆栈信息
}
var res = new ContentResult();
res.Content = JsonHelper.GetJSON<MessageModel<string>>(json);
context.Result = res;
MiniProfiler.Current.CustomTiming("Errors", json.message);
//采用log4net 进行错误日志记录
_loggerHelper.LogError(json.message + WriteLog(json.message, context.Exception));
_hubContext.Clients.All.SendAsync("ReceiveUpdate", LogLock.GetLogData()).Wait();
}
/// <summary>
/// 自定义返回格式
/// </summary>
/// <param name="throwMsg"></param>
/// <param name="ex"></param>
/// <returns></returns>
public string WriteLog(string throwMsg, Exception ex)
{
return string.Format("\r\n【自定义错误】{0} \r\n【异常类型】{1} \r\n【异常信息】{2} \r\n【堆栈调用】{3}", new object[] { throwMsg,
ex.GetType().Name, ex.Message, ex.StackTrace });
}
}
/// <summary>
///
/// </summary>
public class InternalServerErrorObjectResult : ObjectResult
{
/// <summary>
///
/// </summary>
/// <param name="value"></param>
public InternalServerErrorObjectResult(object value) : base(value)
{
StatusCode = StatusCodes.Status500InternalServerError;
}
}
/// <summary>
/// 返回错误信息
/// </summary>
public class JsonErrorResponse
{
/// <summary>
/// 生产环境的消息
/// </summary>
public string Message { get; set; }
/// <summary>
/// 开发环境的消息
/// </summary>
public string DevelopmentMessage { get; set; }
}
}

@ -0,0 +1,51 @@
--------------------------------
2023-08-07 11:39:08|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-16 16:17:45|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:44:41|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:51:51|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:52:09|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:53:13|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:53:23|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:54:10|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:55:15|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:56:35|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 8:59:39|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:00:49|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:01:25|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:03:34|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:29:30|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:33:55|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]
--------------------------------
2023-08-17 9:34:04|
[{"VoucherDate":"string","Code":"string","Partner":"string","PartnerName":"string","BusinessType":"string","BusinessTypeName":"string","InvoiceType":"string","PurchaseInvoiceNo":"string","Department":"string","DepartmentName":"string","Clerk":"string","PayType":"string","pubuserdefnvc1":"string","DeliveryMode":"string","pubuserdefnvc2":"string","priuserdefnvc1":"string","Memo":"string","Details_Warehouse":"string","Details_WarehouseName":"string","Details_Project":"string","Details_ProjectName":"string","Details_Inventory":"string","Details_InventoryName":"string","Details_Quantity":"string","Details_Unit":"string","Details_OrigPrice":"string","Details_DiscountRate":"string","Details_TaxRate":"string","Details_OrigTaxPrice":"string","Details_OrigTaxAmount":"string","Details_AcceptDate":"string","Details_IsPresent":"string","Details_priuserdefdecm1":"string","Details_priuserdefdecm2":"string","Details_priuserdefdecm3":"string","Details_priuserdefdecm4":"string"}]

File diff suppressed because one or more lines are too long

@ -0,0 +1,6 @@
--------------------------------
2023-08-17 9:33:07|
[{"VoucherDate":"string","Code":"string","Customer":"string","CustomerName":"string","BusinessType":"string","InvoiceType":"string","SaleInvoiceMedia":"string","Clerk":"string","ClerkName":"string","pubuserdefnvc1":"string","pubuserdefnvc4":"string","pubuserdefnvc2":"string","DeliveryMode":"string","priuserdefnvc1":"string","pubuserdefnvc3":"string","priuserdefdecm2":"string","priuserdefdecm3":"string","priuserdefdecm1":"string","priuserdefdecm4":"string","priuserdefdecm5":"string","Memo":"string","SaleDeliveryDetails_Waerhouse":"string","SaleDeliveryDetails_Inventory":"string","SaleDeliveryDetails_InventoryName":"string","SaleDeliveryDetails_Quantity":"string","SaleDeliveryDetails_TaxRate":"string","SaleDeliveryDetails_OrigTaxPrice":"string","SaleDeliveryDetails_OrigTaxAmount":"string","SaleDeliveryDetails_DetailMemo":"string"}]
--------------------------------
2023-08-17 9:33:38|
[{"VoucherDate":"string","Code":"string","Customer":"string","CustomerName":"string","BusinessType":"string","InvoiceType":"string","SaleInvoiceMedia":"string","Clerk":"string","ClerkName":"string","pubuserdefnvc1":"string","pubuserdefnvc4":"string","pubuserdefnvc2":"string","DeliveryMode":"string","priuserdefnvc1":"string","pubuserdefnvc3":"string","priuserdefdecm2":"string","priuserdefdecm3":"string","priuserdefdecm1":"string","priuserdefdecm4":"string","priuserdefdecm5":"string","Memo":"string","SaleDeliveryDetails_Waerhouse":"string","SaleDeliveryDetails_Inventory":"string","SaleDeliveryDetails_InventoryName":"string","SaleDeliveryDetails_Quantity":"string","SaleDeliveryDetails_TaxRate":"string","SaleDeliveryDetails_OrigTaxPrice":"string","SaleDeliveryDetails_OrigTaxAmount":"string","SaleDeliveryDetails_DetailMemo":"string"}]

File diff suppressed because one or more lines are too long

@ -0,0 +1,511 @@
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<!--文件记录 begin######################################################################################################################################## -->
<!-- 将日志以回滚文件的形式写到文件中 -->
<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
<!--Error-->
<appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
<!--不加utf-8编码格式中文字符将显示成乱码-->
<param name="Encoding" value="utf-8" />
<file value="Log/"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<datePattern value="&quot;GlobalExceptionLogs_&quot;yyyyMMdd&quot;.log&quot;" />
<!--日志文件名是否为静态-->
<StaticLogFileName value="false"/>
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--布局(向用户显示最后经过格式化的输出信息)-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date| %-5level %newline%message%newline--------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--Error-->
<!--Info-->
<appender name="InfoLog" type="log4net.Appender.RollingFileAppender">
<!--不加utf-8编码格式中文字符将显示成乱码-->
<param name="Encoding" value="utf-8" />
<!--定义文件存放位置-->
<file value="Log/"/>
<appendToFile value="true" />
<rollingStyle value="Date" />
<!--日志文件名是否为静态-->
<StaticLogFileName value="false"/>
<!--日期的格式,每天换一个文件记录,如不设置则永远只记录一天的日志,需设置-->
<datePattern value="&quot;GlobalInfoLogs_&quot;yyyyMMdd&quot;.log&quot;" />
<!--多线程时采用最小锁定-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--布局(向用户显示最后经过格式化的输出信息)-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date| %-5level%c %newline%message%newline--------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="WARN" />
</filter>
</appender>
<!--Info-->
<!--文件记录 end######################################################################################################################################## -->
<!--Mogodb记录 begin######################################################################################################################################## -->
<!--IP访问记录,请求资源记录-->
<appender name="MongoDBAppenderinfo" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="AOPSQLLOG" />
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<!--访问结果记录,Sql记录-->
<appender name="MongoDBAppenderdebug" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="IPACCESSLOG" />
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<!--访问结果错误记录-->
<appender name="MongoDBAppendererror" type="Log4Mongo.MongoDBAppender, Log4Mongo">
<!--填写连接方式 格式 数据库:密码@地址-->
<connectionString value="mongodb://xxxx:xxxx@xxxxx.pic/?socketTimeout=1s" />
<connectionStringName value="mongo-log4net" />
<certificateFriendlyName value="Certificate Friendly Name"/>
<expireAfterSeconds value="2592000" />
<collectionName value="AOPERRORLOG" />
<!--<newCollectionMaxSize value='999999' />
<newCollectionMaxDocs value='999999' />-->
<field>
<name value="timestamp" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</field>
<field>
<name value="level" />
<layout type="log4net.Layout.PatternLayout" value="%level" />
</field>
<field>
<name value="thread" />
<layout type="log4net.Layout.PatternLayout" value="%thread" />
</field>
<field>
<name value="logger" />
<layout type="log4net.Layout.PatternLayout" value="%logger" />
</field>
<field>
<name value="message" />
<layout type="log4net.Layout.PatternLayout" value="%message" />
</field>
<field>
<name value="mycustomproperty" />
<layout type="log4net.Layout.RawPropertyLayout">
<key value="mycustomproperty" />
</layout>
</field>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value=" &#13;&#10; &#13;&#10;【日志时间】: %d 【线程ID】 %thread &#13;&#10;【日志级别】: %-5p &#13;&#10;【日志对象】:%logger &#13;&#10;【日志内容】:%m &#13;&#10; " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--Mogodb记录 end######################################################################################################################################## -->
<!--MSSQL记录 begin######################################################################################################################################## -->
<!--访问结果错误记录-->
<appender name="AdoNetAppenderError" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogError ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--访问结果记录,Sql记录-->
<appender name="AdoNetAppenderDebug" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogDebug ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<!--IP访问记录,请求资源记录-->
<appender name="AdoNetAppenderInfo" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<connectionType value="Microsoft.Data.SqlClient.SqlConnection, Microsoft.Data.SqlClient, Version=1.0.0.0,Culture=neutral,PublicKeyToken=23ec7fc2d6eaa4a5"/>
<connectionStringName value="sqlserver" />
<connectionStringFile value="connectionstrings.json" />
<!--两者二选一(connectionStringName/connectionStringFile)使用上面的方式需要添加一个connectionstrings.json文件-->
<!--<connectionString value="Server=xxxxxx;Database=xxxxxx;User Id=;Password=;" />-->
<commandText value="INSERT INTO GblLogInfo ([Date],[Thread],[Level],[Logger],[Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@number" />
<dbType value="String" />
<size value="20" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%property{number}" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<!--MSSQL记录 end######################################################################################################################################## -->
<!--启用记录器-->
<root>
<!-- 控制级别由低到高ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
<!-- 比如定义级别为INFO则INFO级别向下的级别比如DEBUG日志将不会被记录 -->
<!-- 如果没有定义LEVEL的值则缺省为DEBUG -->
<level value="ALL" />
<!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
<!--文件日志、暂不使用-->
<!--<appender-ref ref="ErrorLog" />-->
<!--<appender-ref ref="InfoLog" />-->
<!--MongoDB日志、暂不使用-->
<!--<appender-ref ref="MongoDBAppenderinfo" />
<appender-ref ref="MongoDBAppenderdebug" />
<appender-ref ref="MongoDBAppendererror" />-->
<!--MSSQL日志-->
<appender-ref ref="AdoNetAppenderError" />
<appender-ref ref="AdoNetAppenderDebug" />
<appender-ref ref="AdoNetAppenderInfo" />
</root>
<!--启用记录器-->
</log4net>
<!--建表语句 Mongo不用建表文件不需要MSSQL建表语句如下-->
<!-- 建表语句 Mongo不用建表文件不需要MSSQL建表语句如下
/*
Navicat Premium Data Transfer
Source Server : Nine 何拾玖
Source Server Type : SQL Server
Source Server Version : 14001000
Source Host : fangding.picp
Source Catalog : WitCloud_pdman
Source Schema : dbo
Target Server Type : SQL Server
Target Server Version : 14001000
File Encoding : 65001
Date: 15/10/2021 14:54:44
*/
CREATE TABLE GblLogError(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogError PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '错误日志记录表', N'user', N'dbo', N'table', N'GblLogError', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogError', N'column', N'Exception';;
CREATE TABLE GblLogDebug(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogDebug PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '调试日志记录表', N'user', N'dbo', N'table', N'GblLogDebug', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogDebug', N'column', N'Exception';;
CREATE TABLE GblLogInfo(
Id INT NOT NULL IDENTITY(1,1) ,
Date DATETIME NOT NULL ,
Thread VARCHAR(255) NOT NULL ,
Level VARCHAR(50) NOT NULL ,
Logger VARCHAR(255) NOT NULL ,
Message VARCHAR(4000) NOT NULL ,
Exception VARCHAR(2000) ,
CONSTRAINT PK_GblLogInfo PRIMARY KEY CLUSTERED (Id ASC ) ON [PRIMARY]
) ;;
EXECUTE sp_addextendedproperty N'MS_Description', '信息日志记录表', N'user', N'dbo', N'table', N'GblLogInfo', NULL, NULL;;
EXECUTE sp_addextendedproperty N'MS_Description', 'ID', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Id';;
EXECUTE sp_addextendedproperty N'MS_Description', '时间', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Date';;
EXECUTE sp_addextendedproperty N'MS_Description', '线程', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Thread';;
EXECUTE sp_addextendedproperty N'MS_Description', '等级', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Level';;
EXECUTE sp_addextendedproperty N'MS_Description', '记录器', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Logger';;
EXECUTE sp_addextendedproperty N'MS_Description', '错误信息', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Message';;
EXECUTE sp_addextendedproperty N'MS_Description', '异常', N'user', N'dbo', N'table', N'GblLogInfo', N'column', N'Exception';;
-->

@ -0,0 +1,145 @@
using Autofac;
using Autofac.Extensions.DependencyInjection;
using jiajie;
using jiajie.Common;
using jiajie.Common.LogHelper;
using jiajie.Extensions;
using jiajie.Extensions.Middlewares;
using jiajie.Middlewares;
using jiajie.Model.Entity;
using jiajie.Repository;
using jiajie.Services.Sys.TasksQzs;
using jiajie.Tasks;
using SqlSugar;
using System.Reflection;
using Yitter.IdGenerator;
using jiajie.Filter;
using Newtonsoft.Json;
using Newtonsoft.Json.Serialization;
using Newtonsoft.Json.Converters;
using jiajie.Hubs;
var builder = WebApplication.CreateBuilder(args);
// 1、配置host与容器
builder.Host
.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer<ContainerBuilder>(builder =>
{
builder.RegisterModule(new AutofacModuleRegister());
//builder.RegisterModule<AutofacPropertityModuleReg>();
})
.ConfigureLogging((hostingContext, builder) =>
{
builder.AddFilter("System", LogLevel.Error);
builder.AddFilter("Microsoft", LogLevel.Error);
builder.SetMinimumLevel(LogLevel.Error);
builder.AddLog4Net(Path.Combine(Directory.GetCurrentDirectory(), "Log4net.config"));
})
.ConfigureAppConfiguration((hostingContext, config) =>
{
config.Sources.Clear();
config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: false);
})
;
// Add services to the container.
builder.Services.AddSingleton(new Appsettings(builder.Configuration));
builder.Services.AddSingleton(new LogLock(builder.Environment.ContentRootPath));
SqlsugarSetup.AddSqlsugarSetup(builder.Services);
//添加引用 Microsoft.AspNetCore.SignalR.Protocols.NewtonsoftJson
builder.Services.AddSignalR().AddNewtonsoftJsonProtocol();
//builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
//builder.Services.AddEndpointsApiExplorer();
//builder.Services.AddSwaggerGen(c =>
//{
// c.SwaggerDoc("v1", new Microsoft.OpenApi.Models.OpenApiInfo()
// {
// Title="后台Api文档", Version="1.0.0", Description="描述~~"
// });
// var bathPath = AppContext.BaseDirectory;
// var xmlPath = Path.Combine(bathPath, "jiajie.Api.xml");
// c.IncludeXmlComments(xmlPath,true);
//});
builder.Services.AddSwaggerSetup();
builder.Services.AddSqlsugarSetup();
builder.Services.AddJobSetup();
builder.Services.AddAutoMapperSetup();
//builder.Services.AddMiniProfilerSetup();
// 设置雪花id的workerId确保每个实例workerId都应不同
var workerId = (ushort)Appsettings.GetValue("SnowId: WorkerId").ObjToInt(1);
YitIdHelper.SetIdGenerator(new IdGeneratorOptions { WorkerId = workerId });
builder.Services.AddCors(options =>
{
options.AddPolicy("any", builder =>
{
//builder.AllowAnyOrigin() //允许任何来源的主机访问
builder
.WithOrigins("http://*.*.*.*")//.SetIsOriginAllowedToAllowWildcardSubdomains()//设置允许访问的域
.AllowAnyMethod()
.AllowAnyHeader()
.AllowCredentials();//
});
});
builder.Services.AddControllers(o =>
{
o.Filters.Add(typeof(GlobalExceptionsFilter));
//o.Conventions.Insert(0, new GlobalRouteAuthorizeConvention());
//路由前面加前缀
//o.Conventions.Insert(0, new GlobalRoutePrefixFilter(new RouteAttribute(RoutePrefix.Name)));
})
.AddNewtonsoftJson(options =>
{
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
options.SerializerSettings.DateTimeZoneHandling = DateTimeZoneHandling.Local;
options.SerializerSettings.Converters.Add(new StringEnumConverter());
});
builder.Services.AddEndpointsApiExplorer();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.UseSwaggerMiddle();
//if (app.Environment.IsDevelopment())
//{
// app.UseSwaggerMiddle();
//}
app.UseMiddleware<RequRespLogMiddleware>();
//app.UseMiddleware<SignalRSendMiddleware>();
app.UseRouting();
app.UseAuthorization();
//app.UseMiniProfilerMiddleware();
app.UseMiddleware<CorsMiddleware>();
//app.MapControllers();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
//endpoints.MapHub<ChatHub>("/api2/chatHub");
});
var scope = app.Services.GetRequiredService<IServiceScopeFactory>().CreateScope();
var sqlSugarRep = scope.ServiceProvider.GetRequiredService<ISqlSugarClient>();
//var tasksQzServices = scope.ServiceProvider.GetRequiredService<ITasksQzServices>();
//var tasksRep = scope.ServiceProvider.GetRequiredService<IBaseRepository<TasksQz>>();
//var schedulerCenter = scope.ServiceProvider.GetRequiredService<ISchedulerCenter>();
app.UseSeedDataMiddle(sqlSugarRep, builder.Environment.WebRootPath);
//app.UseQuartzJobMiddleware(tasksRep, schedulerCenter);
app.Run();

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DeleteExistingFiles>false</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>F:\huiyou\two\jiajie_plc\publish</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net6.0</TargetFramework>
<ProjectGuid>139f3979-038e-4186-b065-1b835cd9aaa7</ProjectGuid>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save