@@ -56,6 +56,7 @@ | |||
$page.find('.shenBtn').on('tap', function() { | |||
learun.layer.loading(true, "数据提交中..."); | |||
var jsonArr= []; | |||
var qmustFlag = false; | |||
var flag = false; | |||
@@ -84,10 +85,12 @@ | |||
}) | |||
// console.log(jsonArr) | |||
if(qmustFlag){ | |||
learun.layer.loading(false); | |||
learun.layer.toast('有必选项未选择'); | |||
return | |||
} | |||
if(flag){ | |||
learun.layer.loading(false); | |||
learun.layer.toast('有选择项少选或多选'); | |||
return | |||
} | |||
@@ -99,10 +102,20 @@ | |||
EmpNo: param.EmpNo, | |||
postarray: jsonArr | |||
}, (res) => { | |||
learun.layer.toast('操作成功'); | |||
learun.nav.closeCurrent(); | |||
var prepage = learun.nav.getpage('EvaluationTeach'); | |||
prepage.grid.reload(); | |||
learun.layer.loading(false); | |||
if(res) | |||
{ | |||
learun.layer.toast('操作成功'); | |||
learun.nav.closeCurrent(); | |||
var prepage = learun.nav.getpage('EvaluationTeach'); | |||
prepage.grid.reload(); | |||
} | |||
else | |||
{ | |||
learun.nav.closeCurrent(); | |||
var prepage = learun.nav.getpage('EvaluationTeach'); | |||
prepage.grid.reload(); | |||
} | |||
}); | |||
}) | |||
@@ -237,6 +237,14 @@ namespace Learun.Application.Web.Areas.EvaluationTeach.Controllers | |||
return Success("删除成功!"); | |||
} | |||
[HttpPost] | |||
[AjaxOnly] | |||
public ActionResult CleanForm(string VID) | |||
{ | |||
//ask_MainIBLL.Clean(VID); | |||
return Success("操作成功!"); | |||
} | |||
[HttpPost] | |||
[AjaxOnly] | |||
public ActionResult SubmitForm(string keyValue) | |||
@@ -279,6 +287,11 @@ namespace Learun.Application.Web.Areas.EvaluationTeach.Controllers | |||
public ActionResult StudentSubmitForm(string answerlist, string VID, string LessonNo, string EmpNo) | |||
{ | |||
var userinfo = LoginUserInfo.Get(); | |||
//判断当前课程、教师是否已评 | |||
if (ask_MainIBLL.GetQuestionResultCount(VID,userinfo.account,EmpNo,LessonNo).Count()>0) | |||
{ | |||
return Fail("检测到您已对当前教师课程进行过评教操作,请勿重复提交。"); | |||
} | |||
List<Eval_QuestionResultEntity> entity = answerlist.ToObject<List<Eval_QuestionResultEntity>>(); | |||
ask_MainIBLL.SaveEval_QuestionResultEntity(entity, VID, LessonNo, EmpNo, userinfo.account, userinfo.realName, userinfo.iPAddress); | |||
return Success("保存成功!"); | |||
@@ -40,8 +40,9 @@ | |||
</div> | |||
<div class=" btn-group btn-group-sm" learun-authorize=""> | |||
<a id="lr_view" class="btn btn-default"><i class="fa fa-building-o"></i> 查看答卷</a> | |||
</div> | |||
<a id="lr_clean" class="btn btn-default"><i class="fa fa-building-o"></i> 清理重复数据</a> | |||
</div> | |||
</div> | |||
<div class="lr-layout-body" id="gridtable_stu"></div> | |||
@@ -43,6 +43,11 @@ var bootstrap = function ($, learun) { | |||
$('#lr_refresh').on('click', function () { | |||
location.reload(); | |||
}); | |||
$('#lr_clean').on('click', function() { | |||
learun.postForm(top.$.rootUrl + '/EvaluationTeach/Eval_Main/CleanForm', { VID: VID }, function () { | |||
refreshGirdData(); | |||
}); | |||
}); | |||
// 答题情况 | |||
$('#lr_view').on('click', function () { | |||
var keyValue = $('#gridtable_stu').jfGridValue('VID'); | |||
@@ -4,6 +4,7 @@ using Learun.Application.TwoDevelopment.EvaluationTeach; | |||
using Learun.Util; | |||
using Nancy; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
namespace Learun.Application.WebApi.Modules | |||
{ | |||
@@ -52,6 +53,10 @@ namespace Learun.Application.WebApi.Modules | |||
var queryParam = queryJson.ToJObject(); | |||
if (!queryParam["VID"].IsEmpty()&&!queryParam["postarray"].IsEmpty()) | |||
{ | |||
if (ask_MainIBLL.GetQuestionResultCount(queryParam["VID"].ToString(), userInfo.account, queryParam["EmpNo"].ToString(), queryParam["LessonNo"].ToString()).Count() > 0) | |||
{ | |||
return Fail("检测到您已对当前教师课程进行过评教操作,请勿重复提交。"); | |||
} | |||
List<Eval_QuestionResultEntity> entity = queryParam["postarray"].ToObject<List<Eval_QuestionResultEntity>>(); | |||
ask_MainIBLL.SaveEval_QuestionResultEntity(entity, queryParam["VID"].ToString(), queryParam["LessonNo"].ToString(), queryParam["EmpNo"].ToString(), userInfo.account, userInfo.realName, userInfo.iPAddress); | |||
return Success("保存成功"); | |||
@@ -278,6 +278,106 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach | |||
} | |||
} | |||
/// <summary> | |||
/// 判断当前用户是否已填写对应表单 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <param name="stuno"></param> | |||
/// <param name="EmpNo"></param> | |||
/// <param name="LessonNo"></param> | |||
/// <returns></returns> | |||
public IEnumerable<Eval_QuestionResultEntity> GetQuestionResultCount(string keyValue, string stuno, string EmpNo, string LessonNo) | |||
{ | |||
try | |||
{ | |||
return ask_MainService.GetQuestionResultCount(keyValue, stuno, EmpNo, LessonNo); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
public List<Eval_QuestionResultEntity> GetAllNeedClean(string vid) | |||
{ | |||
try | |||
{ | |||
return ask_MainService.GetAllNeedClean(vid); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
public List<Eval_QuestionEntity> GetAllQuestion(string vid) | |||
{ | |||
try | |||
{ | |||
return ask_MainService.GetAllQuestion(vid); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
public List<Eval_QuestionResultEntity> GetMuiltyResults(string vid, string LessonNo, string EmpNo, string StuNo, string QID) | |||
{ | |||
try | |||
{ | |||
return ask_MainService.GetMuiltyResults(vid,LessonNo,EmpNo,StuNo,QID); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
public void DeleteQestionResult(string RID) | |||
{ | |||
try | |||
{ | |||
ask_MainService.DeleteQestionResult(RID); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowBusinessException(ex); | |||
} | |||
} | |||
} | |||
#endregion | |||
} | |||
@@ -30,7 +30,7 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach | |||
Eval_MainEntity GetEval_MainEntity(string keyValue); | |||
Eval_MainEntity GetEval_MainEntityAndQuestions(string keyValue); | |||
Eval_MainEntity GetEval_MainEntityAndQuestionsResult(string keyValue, string stuno,string EmpNo,string LessonNo); | |||
Eval_MainEntity GetEval_MainEntityAndQuestionsResult(string keyValue, string stuno, string EmpNo, string LessonNo); | |||
#endregion | |||
#region 提交数据 | |||
@@ -54,8 +54,8 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach | |||
void SaveEval_QuestionResultEntity(List<Eval_QuestionResultEntity> entity, string vid, string LessonNo, string EmpNo, string userinfoUserId, | |||
string userinfoRealName, string userinfoIPAddress); | |||
IEnumerable<Eval_QuestionResultEntity> GetAnswerPageList(Pagination paginationobj, string queryJson); | |||
IEnumerable<Eval_QuestionResultEntity> GetTeacherIndexPageList(Pagination paginationobj, string queryJson); | |||
IEnumerable<Eval_QuestionResultEntity> GetAnswerPageList(Pagination paginationobj, string queryJson); | |||
IEnumerable<Eval_QuestionResultEntity> GetTeacherIndexPageList(Pagination paginationobj, string queryJson); | |||
/// <summary> | |||
/// 评教:按教师、课程统计上课人数、评教人数、评教平均分 | |||
/// </summary> | |||
@@ -64,6 +64,21 @@ namespace Learun.Application.TwoDevelopment.EvaluationTeach | |||
/// <returns></returns> | |||
IEnumerable<Eval_QuestionResultEntity> GetTeacherIndexPageList2(Pagination paginationobj, string queryJson); | |||
/// <summary> | |||
/// 判断当前用户是否已填写对应表单 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <param name="stuno"></param> | |||
/// <param name="EmpNo"></param> | |||
/// <param name="LessonNo"></param> | |||
/// <returns></returns> | |||
IEnumerable<Eval_QuestionResultEntity> GetQuestionResultCount(string keyValue, string stuno, string EmpNo, | |||
string LessonNo); | |||
List<Eval_QuestionResultEntity> GetAllNeedClean(string vid); | |||
List<Eval_QuestionEntity> GetAllQuestion(string vid); | |||
List<Eval_QuestionResultEntity> GetMuiltyResults(string vid, string LessonNo, string EmpNo, string StuNo,string QID); | |||
void DeleteQestionResult(string RID); | |||
} | |||
} |
@@ -570,5 +570,116 @@ where 1=1 "); | |||
} | |||
} | |||
/// <summary> | |||
/// 判断当前用户是否已填写对应表单 | |||
/// </summary> | |||
/// <param name="keyValue"></param> | |||
/// <param name="stuno"></param> | |||
/// <param name="EmpNo"></param> | |||
/// <param name="LessonNo"></param> | |||
/// <returns></returns> | |||
public IEnumerable<Eval_QuestionResultEntity> GetQuestionResultCount(string keyValue, string stuno, string EmpNo, string LessonNo) | |||
{ | |||
try | |||
{ | |||
string sql = @"select c.* from [dbo].[Eval_Main] a left join [dbo].[Eval_Question] b on a.vid=b.vid | |||
left join[dbo].[Eval_QuestionResult] c on b.qid=c.qid | |||
where a.vid='"+keyValue+"' and c.empno='"+EmpNo+"' and c.lessonno= '"+LessonNo+"' and c.uid= '"+stuno+"'"; | |||
return BaseRepository().FindList<Eval_QuestionResultEntity>(sql); | |||
} | |||
catch (Exception ex) | |||
{ | |||
if (ex is ExceptionEx) | |||
{ | |||
throw; | |||
} | |||
else | |||
{ | |||
throw ExceptionEx.ThrowServiceException(ex); | |||
} | |||
} | |||
} | |||
public List<Eval_QuestionResultEntity> GetAllNeedClean(string vid) | |||
{ | |||
try | |||
{ | |||
var misdbname = BaseRepository("CollegeMIS").getDbConnection().Database; | |||
string sql = @" | |||
select aa.LessonNo,aa.EmpNo,aa.VID,aa.StuNo,bb.IScore,bb.UID,cc.EmpName,aa.LessonName,ee.StuName | |||
from | |||
( | |||
select a.LessonNo,a.LessonName,a.EmpNo,a.AcademicYearNo,a.Semester,b.VID,a.StuNo | |||
from " + misdbname + @".dbo.StuSelectLessonList a | |||
left join Eval_Main b on a.AcademicYearNo=b.AcademicYearNo and a.Semester=b.Semester | |||
where b.Status=1 and b.VID='" + vid + @"' | |||
and a.StuNo is not null and a.StuNo <> '' | |||
and a.StuNo not in (select StuNo from " + misdbname + @".dbo.StuInfoBasic where ChangeStatus=1) | |||
) aa | |||
left join | |||
( | |||
select sum(b.IScore) as IScore, a.EmpNo, a.LessonNo, a.UID | |||
from Eval_QuestionResult a | |||
left join Eval_QuestionItems b on a.IID = b.IID | |||
left join Eval_Question c on a.QID=c.QID | |||
where c.VID='" + vid + @"' | |||
and a.EmpNo is not null and a.EmpNo <> '' and a.LessonNo is not null and a.LessonNo <> '' and a.UID is not null and a.UID <> '' | |||
group by a.EmpNo, a.LessonNo, a.UID | |||
) bb | |||
on aa.EmpNo=bb.EmpNo and aa.LessonNo=bb.LessonNo and aa.StuNo=bb.UID | |||
left join " + misdbname + @".dbo.EmpInfo cc on aa.EmpNo=cc.EmpNo | |||
left join " + misdbname + @".dbo.StuInfoBasic ee on aa.StuNo = ee.StuNo | |||
where 1=1 and iscore>100 order by IScore desc"; | |||
return BaseRepository().FindList<Eval_QuestionResultEntity>(sql).ToList(); | |||
} | |||
catch (Exception e) | |||
{ | |||
Console.WriteLine(e); | |||
throw; | |||
} | |||
} | |||
public List<Eval_QuestionEntity> GetAllQuestion(string vid) | |||
{ | |||
try | |||
{ | |||
return BaseRepository().FindList<Eval_QuestionEntity>("select * from Eval_Question where vid='" + vid + "'").ToList(); | |||
} | |||
catch (Exception e) | |||
{ | |||
Console.WriteLine(e); | |||
throw; | |||
} | |||
} | |||
public List<Eval_QuestionResultEntity> GetMuiltyResults(string vid,string LessonNo,string EmpNo,string StuNo,string QID) | |||
{ | |||
try | |||
{ | |||
string sql = "select b.* from Eval_Question a left join Eval_QuestionResult b on a.QID=b.QID where a.vid = '" + vid + "' and b.LessonNo='"+ LessonNo + "' and b.EmpNo='"+EmpNo+"' and b.uid='"+ StuNo + "' and b.QID='"+QID+"'"; | |||
return BaseRepository().FindList<Eval_QuestionResultEntity>(sql).ToList(); | |||
} | |||
catch (Exception e) | |||
{ | |||
Console.WriteLine(e); | |||
throw; | |||
} | |||
} | |||
public void DeleteQestionResult(string RID) | |||
{ | |||
try | |||
{ | |||
BaseRepository().Delete<Eval_QuestionResultEntity>(t => t.RID == RID); | |||
} | |||
catch (Exception e) | |||
{ | |||
Console.WriteLine(e); | |||
throw; | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,65 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<configuration> | |||
<configSections> | |||
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" /> | |||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> | |||
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /> | |||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" /> | |||
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> | |||
</configSections> | |||
<unity> | |||
<typeAliases> | |||
<typeAlias alias="IDatabase" type="Learun.DataBase.IDatabase,Learun.DataBase" /> | |||
<typeAlias alias="SqlServer" type="Learun.DataBase.SqlServer.Database,Learun.DataBase.SqlServer" /> | |||
<typeAlias alias="MySql" type="Learun.DataBase.MySqlEx.Database,Learun.DataBase.MySqlEx" /> | |||
<typeAlias alias="Oracle" type="Learun.DataBase.Oracle.Database,Learun.DataBase.Oracle" /> | |||
</typeAliases> | |||
<containers> | |||
<container name="IOCcontainer"> | |||
<type type="IDatabase" mapTo="SqlServer" name="SqlServer"></type> | |||
<type type="IDatabase" mapTo="MySql" name="MySql"></type> | |||
<type type="IDatabase" mapTo="Oracle" name="Oracle"></type> | |||
</container> | |||
</containers> | |||
</unity> | |||
<connectionStrings> | |||
<add name="BaseDb" connectionString="Server=123.57.209.16;Initial Catalog=adms7ultimate2_塔里木;User ID=sa;Password=bjqjkj@2014~2015!" providerName="System.Data.SqlClient" /> | |||
<add name="CollegeMIS" connectionString="Server=123.57.209.16;Initial Catalog=CollegeMIS_塔里木;User ID=sa;Password=bjqjkj@2014~2015!" providerName="System.Data.SqlClient" /> | |||
<add name="hangfireString" connectionString="Server=123.57.209.16;Initial Catalog=Hangfire;User ID=sa;Password=bjqjkj@2014~2015!" providerName="System.Data.SqlClient" /> | |||
<add name="paikeDbString" connectionString="Data Source=10.30.0.11;Database=paike;User ID=root;Password=12345678;" providerName="MySql.Data.MySqlClient" /> | |||
</connectionStrings> | |||
<startup> | |||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /> | |||
</startup> | |||
<entityFramework> | |||
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework"> | |||
<parameters> | |||
<parameter value="mssqllocaldb" /> | |||
</parameters> | |||
</defaultConnectionFactory> | |||
<providers> | |||
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" /> | |||
</providers> | |||
</entityFramework> | |||
<runtime> | |||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> | |||
<dependentAssembly> | |||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" /> | |||
</dependentAssembly> | |||
<dependentAssembly> | |||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> | |||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" /> | |||
</dependentAssembly> | |||
</assemblyBinding> | |||
</runtime> | |||
</configuration> |
@@ -0,0 +1,61 @@ | |||
namespace Quanjiang.DigitalScholl.Tools | |||
{ | |||
partial class Form1 | |||
{ | |||
/// <summary> | |||
/// 必需的设计器变量。 | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// 清理所有正在使用的资源。 | |||
/// </summary> | |||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region Windows 窗体设计器生成的代码 | |||
/// <summary> | |||
/// 设计器支持所需的方法 - 不要修改 | |||
/// 使用代码编辑器修改此方法的内容。 | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.button1 = new System.Windows.Forms.Button(); | |||
this.SuspendLayout(); | |||
// | |||
// button1 | |||
// | |||
this.button1.Location = new System.Drawing.Point(12, 12); | |||
this.button1.Name = "button1"; | |||
this.button1.Size = new System.Drawing.Size(75, 23); | |||
this.button1.TabIndex = 0; | |||
this.button1.Text = "评教数据清理"; | |||
this.button1.UseVisualStyleBackColor = true; | |||
this.button1.Click += new System.EventHandler(this.button1_Click); | |||
// | |||
// Form1 | |||
// | |||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
this.ClientSize = new System.Drawing.Size(800, 450); | |||
this.Controls.Add(this.button1); | |||
this.Name = "Form1"; | |||
this.Text = "通用工具"; | |||
this.ResumeLayout(false); | |||
} | |||
#endregion | |||
private System.Windows.Forms.Button button1; | |||
} | |||
} | |||
@@ -0,0 +1,38 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Drawing; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading; | |||
using System.Threading.Tasks; | |||
using System.Windows.Forms; | |||
using Learun.Application.TwoDevelopment.EvaluationTeach; | |||
namespace Quanjiang.DigitalScholl.Tools | |||
{ | |||
public partial class Form1 : Form | |||
{ | |||
public Form1() | |||
{ | |||
InitializeComponent(); | |||
} | |||
Thread mainthread = null; | |||
private void button1_Click(object sender, EventArgs e) | |||
{ | |||
ThreadStart threadstart = new ThreadStart(TransferCoreData); | |||
mainthread = new Thread(threadstart); | |||
mainthread.Name = "main"; | |||
mainthread.Start(); | |||
//ask_MainIBLL.Clean("9d2191c4-a709-4a0f-b49b-7ad46667d4e9"); | |||
} | |||
public void TransferCoreData() | |||
{ | |||
FormProgress progress = new FormProgress(); | |||
progress.ShowDialog(); | |||
} | |||
} | |||
} |
@@ -0,0 +1,120 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
</root> |
@@ -0,0 +1,98 @@ | |||
namespace Quanjiang.DigitalScholl.Tools | |||
{ | |||
partial class FormProgress | |||
{ | |||
/// <summary> | |||
/// Required designer variable. | |||
/// </summary> | |||
private System.ComponentModel.IContainer components = null; | |||
/// <summary> | |||
/// Clean up any resources being used. | |||
/// </summary> | |||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> | |||
protected override void Dispose(bool disposing) | |||
{ | |||
if (disposing && (components != null)) | |||
{ | |||
components.Dispose(); | |||
} | |||
base.Dispose(disposing); | |||
} | |||
#region Windows Form Designer generated code | |||
/// <summary> | |||
/// Required method for Designer support - do not modify | |||
/// the contents of this method with the code editor. | |||
/// </summary> | |||
private void InitializeComponent() | |||
{ | |||
this.progressBar1 = new System.Windows.Forms.ProgressBar(); | |||
this.rtblog = new System.Windows.Forms.RichTextBox(); | |||
this.splitContainer1 = new System.Windows.Forms.SplitContainer(); | |||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); | |||
this.splitContainer1.Panel1.SuspendLayout(); | |||
this.splitContainer1.Panel2.SuspendLayout(); | |||
this.splitContainer1.SuspendLayout(); | |||
this.SuspendLayout(); | |||
// | |||
// progressBar1 | |||
// | |||
this.progressBar1.Dock = System.Windows.Forms.DockStyle.Fill; | |||
this.progressBar1.Location = new System.Drawing.Point(0, 0); | |||
this.progressBar1.Name = "progressBar1"; | |||
this.progressBar1.Size = new System.Drawing.Size(800, 109); | |||
this.progressBar1.TabIndex = 0; | |||
// | |||
// rtblog | |||
// | |||
this.rtblog.Dock = System.Windows.Forms.DockStyle.Fill; | |||
this.rtblog.Location = new System.Drawing.Point(0, 0); | |||
this.rtblog.Name = "rtblog"; | |||
this.rtblog.Size = new System.Drawing.Size(800, 337); | |||
this.rtblog.TabIndex = 1; | |||
this.rtblog.Text = ""; | |||
// | |||
// splitContainer1 | |||
// | |||
this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill; | |||
this.splitContainer1.Location = new System.Drawing.Point(0, 0); | |||
this.splitContainer1.Name = "splitContainer1"; | |||
this.splitContainer1.Orientation = System.Windows.Forms.Orientation.Horizontal; | |||
// | |||
// splitContainer1.Panel1 | |||
// | |||
this.splitContainer1.Panel1.Controls.Add(this.progressBar1); | |||
// | |||
// splitContainer1.Panel2 | |||
// | |||
this.splitContainer1.Panel2.Controls.Add(this.rtblog); | |||
this.splitContainer1.Size = new System.Drawing.Size(800, 450); | |||
this.splitContainer1.SplitterDistance = 109; | |||
this.splitContainer1.TabIndex = 2; | |||
// | |||
// FormProgress | |||
// | |||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); | |||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |||
this.ClientSize = new System.Drawing.Size(800, 450); | |||
this.Controls.Add(this.splitContainer1); | |||
this.Name = "FormProgress"; | |||
this.Text = "FormProgress"; | |||
this.Load += new System.EventHandler(this.FormProgress_Load); | |||
this.splitContainer1.Panel1.ResumeLayout(false); | |||
this.splitContainer1.Panel2.ResumeLayout(false); | |||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit(); | |||
this.splitContainer1.ResumeLayout(false); | |||
this.ResumeLayout(false); | |||
} | |||
#endregion | |||
private System.Windows.Forms.ProgressBar progressBar1; | |||
private System.Windows.Forms.RichTextBox rtblog; | |||
private System.Windows.Forms.SplitContainer splitContainer1; | |||
} | |||
} |
@@ -0,0 +1,165 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.ComponentModel; | |||
using System.Data; | |||
using System.Drawing; | |||
using System.Linq; | |||
using System.Text; | |||
using System.Threading; | |||
using System.Threading.Tasks; | |||
using System.Windows.Forms; | |||
using Learun.Application.TwoDevelopment.EvaluationTeach; | |||
namespace Quanjiang.DigitalScholl.Tools | |||
{ | |||
public partial class FormProgress : Form | |||
{ | |||
private Eval_MainIBLL ask_MainIBLL = new Eval_MainBLL(); | |||
Thread thread = null; | |||
int max = 0; | |||
public FormProgress() | |||
{ | |||
InitializeComponent(); | |||
} | |||
private void FormProgress_Load(object sender, EventArgs e) | |||
{ | |||
progressBar1.Minimum = 0; | |||
progressBar1.Maximum = max; | |||
progressBar1.Value = 0; | |||
ThreadStart start = new ThreadStart(SyncCoreDB); | |||
thread = new Thread(start); | |||
thread.Start(); | |||
} | |||
public void SyncCoreDB() | |||
{ | |||
try | |||
{ | |||
SetValueProgressBar(SetValue, 0); | |||
string vid = "9d2191c4-a709-4a0f-b49b-7ad46667d4e9"; | |||
//获取超过100分的数据 | |||
AppendTextValue("获取超过100分的数据,请耐心等待...\r\n"); | |||
var list = ask_MainIBLL.GetAllNeedClean(vid); | |||
AppendTextValue("获取超过100分的数据,共"+list.Count+"条,完毕.\r\n"); | |||
SetProgressMax(list.Count); | |||
//获取vid下问题 | |||
AppendTextValue("获取vid下问题,请耐心等待...\r\n"); | |||
var questionlist = ask_MainIBLL.GetAllQuestion(vid); | |||
AppendTextValue("获取vid下问题,完毕.\r\n"); | |||
//开始循环超100数据 | |||
foreach (var item in list) | |||
{ | |||
SetValueProgressBar(SetValue, GetProgressValue() + 1); | |||
foreach (var questionEntity in questionlist) | |||
{ | |||
//获取重复数据 | |||
AppendTextValue("获取LessonNo="+item.LessonNo + ",EmpNo=" + item.EmpNo + ",StuNo="+item.StuNo + ",QID="+questionEntity.QID+"的重复数据,请耐心等待...\r\n"); | |||
var muiltyresultlist = ask_MainIBLL.GetMuiltyResults(vid, item.LessonNo, item.EmpNo, item.StuNo,questionEntity.QID); | |||
AppendTextValue("总计:"+ muiltyresultlist .Count+ "条重复数据,done.\r\n"); | |||
for (int i = 0; i < muiltyresultlist.Count() - 1; i++) | |||
{ | |||
//循环删除 | |||
string rid = muiltyresultlist[i].RID; | |||
ask_MainIBLL.DeleteQestionResult(rid); | |||
AppendTextValue("删除第:" +i+ "条,done.\r\n"); | |||
} | |||
} | |||
} | |||
CloseWindow(); | |||
} | |||
catch (Exception e) | |||
{ | |||
AppendTextValue("error:" + e.Message + "\r\n"); | |||
} | |||
} | |||
#region 委托 | |||
public delegate void AppendTextValueDelegate(string text); | |||
public delegate void SetValueDelegate(int val); | |||
public delegate void CloseWindowDelegate(); | |||
public delegate void SetWindowTitleDelegate(string text); | |||
public delegate int GetProgressValueDelegate(); | |||
public delegate void SetProgressMaxDelegate(int max); | |||
public void AppendTextValue(string text) | |||
{ | |||
if (this.rtblog.InvokeRequired) | |||
{ | |||
AppendTextValueDelegate callback = new AppendTextValueDelegate(AppendTextValue); | |||
this.Invoke(callback, text); | |||
} | |||
else | |||
{ | |||
rtblog.AppendText(text); | |||
} | |||
} | |||
public void SetProgressMax(int max) | |||
{ | |||
if (this.progressBar1.InvokeRequired) | |||
{ | |||
SetProgressMaxDelegate callback = new SetProgressMaxDelegate(SetProgressMax); | |||
this.Invoke(callback, max); | |||
} | |||
else | |||
{ | |||
progressBar1.Maximum = max; | |||
} | |||
} | |||
public int GetProgressValue() | |||
{ | |||
if (this.progressBar1.InvokeRequired) | |||
{ | |||
GetProgressValueDelegate callback = new GetProgressValueDelegate(GetProgressValue); | |||
return Convert.ToInt32(this.Invoke(callback)); | |||
} | |||
else | |||
{ | |||
return progressBar1.Value; | |||
} | |||
} | |||
public void SetWindowTitle(string text) | |||
{ | |||
if (this.InvokeRequired) | |||
{ | |||
SetWindowTitleDelegate callback = new SetWindowTitleDelegate(SetWindowTitle); | |||
this.Invoke(callback, text); | |||
} | |||
else | |||
{ | |||
this.Text = text; | |||
} | |||
} | |||
public void CloseWindow() | |||
{ | |||
if (this.InvokeRequired) | |||
{ | |||
CloseWindowDelegate callback = new CloseWindowDelegate(CloseWindow); | |||
this.Invoke(callback); | |||
} | |||
else | |||
{ | |||
this.Close(); | |||
} | |||
} | |||
public void SetValue(int val) | |||
{ | |||
progressBar1.Value = val; | |||
} | |||
public void SetValueProgressBar(SetValueDelegate myDelegate, int val) | |||
{ | |||
if (this.progressBar1.InvokeRequired) | |||
{ | |||
this.Invoke(myDelegate, val); | |||
} | |||
else | |||
{ | |||
myDelegate(val); | |||
} | |||
} | |||
#endregion | |||
} | |||
} |
@@ -0,0 +1,120 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" use="required" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
<xsd:attribute ref="xml:space" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
</root> |
@@ -0,0 +1,22 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using System.Linq; | |||
using System.Threading.Tasks; | |||
using System.Windows.Forms; | |||
namespace Quanjiang.DigitalScholl.Tools | |||
{ | |||
static class Program | |||
{ | |||
/// <summary> | |||
/// 应用程序的主入口点。 | |||
/// </summary> | |||
[STAThread] | |||
static void Main() | |||
{ | |||
Application.EnableVisualStyles(); | |||
Application.SetCompatibleTextRenderingDefault(false); | |||
Application.Run(new Form1()); | |||
} | |||
} | |||
} |
@@ -0,0 +1,36 @@ | |||
using System.Reflection; | |||
using System.Runtime.CompilerServices; | |||
using System.Runtime.InteropServices; | |||
// 有关程序集的一般信息由以下 | |||
// 控制。更改这些特性值可修改 | |||
// 与程序集关联的信息。 | |||
[assembly: AssemblyTitle("Quanjiang.Application.Tools")] | |||
[assembly: AssemblyDescription("")] | |||
[assembly: AssemblyConfiguration("")] | |||
[assembly: AssemblyCompany("")] | |||
[assembly: AssemblyProduct("Quanjiang.Application.Tools")] | |||
[assembly: AssemblyCopyright("Copyright © 2022")] | |||
[assembly: AssemblyTrademark("")] | |||
[assembly: AssemblyCulture("")] | |||
// 将 ComVisible 设置为 false 会使此程序集中的类型 | |||
//对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型 | |||
//请将此类型的 ComVisible 特性设置为 true。 | |||
[assembly: ComVisible(false)] | |||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID | |||
[assembly: Guid("e17e5acc-af20-45eb-8a78-6dc07c9e01d0")] | |||
// 程序集的版本信息由下列四个值组成: | |||
// | |||
// 主版本 | |||
// 次版本 | |||
// 生成号 | |||
// 修订号 | |||
// | |||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号 | |||
// 方法是按如下所示使用“*”: : | |||
// [assembly: AssemblyVersion("1.0.*")] | |||
[assembly: AssemblyVersion("1.0.0.0")] | |||
[assembly: AssemblyFileVersion("1.0.0.0")] |
@@ -0,0 +1,63 @@ | |||
//------------------------------------------------------------------------------ | |||
// <auto-generated> | |||
// 此代码由工具生成。 | |||
// 运行时版本:4.0.30319.42000 | |||
// | |||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||
// 重新生成代码,这些更改将会丢失。 | |||
// </auto-generated> | |||
//------------------------------------------------------------------------------ | |||
namespace Quanjiang.DigitalScholl.Tools.Properties { | |||
using System; | |||
/// <summary> | |||
/// 一个强类型的资源类,用于查找本地化的字符串等。 | |||
/// </summary> | |||
// 此类是由 StronglyTypedResourceBuilder | |||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。 | |||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen | |||
// (以 /str 作为命令选项),或重新生成 VS 项目。 | |||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] | |||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | |||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||
internal class Resources { | |||
private static global::System.Resources.ResourceManager resourceMan; | |||
private static global::System.Globalization.CultureInfo resourceCulture; | |||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] | |||
internal Resources() { | |||
} | |||
/// <summary> | |||
/// 返回此类使用的缓存的 ResourceManager 实例。 | |||
/// </summary> | |||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
internal static global::System.Resources.ResourceManager ResourceManager { | |||
get { | |||
if (object.ReferenceEquals(resourceMan, null)) { | |||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Quanjiang.DigitalScholl.Tools.Properties.Resources", typeof(Resources).Assembly); | |||
resourceMan = temp; | |||
} | |||
return resourceMan; | |||
} | |||
} | |||
/// <summary> | |||
/// 重写当前线程的 CurrentUICulture 属性 | |||
/// 重写当前线程的 CurrentUICulture 属性。 | |||
/// </summary> | |||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] | |||
internal static global::System.Globalization.CultureInfo Culture { | |||
get { | |||
return resourceCulture; | |||
} | |||
set { | |||
resourceCulture = value; | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,117 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<root> | |||
<!-- | |||
Microsoft ResX Schema | |||
Version 2.0 | |||
The primary goals of this format is to allow a simple XML format | |||
that is mostly human readable. The generation and parsing of the | |||
various data types are done through the TypeConverter classes | |||
associated with the data types. | |||
Example: | |||
... ado.net/XML headers & schema ... | |||
<resheader name="resmimetype">text/microsoft-resx</resheader> | |||
<resheader name="version">2.0</resheader> | |||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> | |||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> | |||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> | |||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> | |||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> | |||
<value>[base64 mime encoded serialized .NET Framework object]</value> | |||
</data> | |||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> | |||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> | |||
<comment>This is a comment</comment> | |||
</data> | |||
There are any number of "resheader" rows that contain simple | |||
name/value pairs. | |||
Each data row contains a name, and value. The row also contains a | |||
type or mimetype. Type corresponds to a .NET class that support | |||
text/value conversion through the TypeConverter architecture. | |||
Classes that don't support this are serialized and stored with the | |||
mimetype set. | |||
The mimetype is used for serialized objects, and tells the | |||
ResXResourceReader how to depersist the object. This is currently not | |||
extensible. For a given mimetype the value must be set accordingly: | |||
Note - application/x-microsoft.net.object.binary.base64 is the format | |||
that the ResXResourceWriter will generate, however the reader can | |||
read any of the formats listed below. | |||
mimetype: application/x-microsoft.net.object.binary.base64 | |||
value : The object must be serialized with | |||
: System.Serialization.Formatters.Binary.BinaryFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.soap.base64 | |||
value : The object must be serialized with | |||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter | |||
: and then encoded with base64 encoding. | |||
mimetype: application/x-microsoft.net.object.bytearray.base64 | |||
value : The object must be serialized into a byte array | |||
: using a System.ComponentModel.TypeConverter | |||
: and then encoded with base64 encoding. | |||
--> | |||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> | |||
<xsd:element name="root" msdata:IsDataSet="true"> | |||
<xsd:complexType> | |||
<xsd:choice maxOccurs="unbounded"> | |||
<xsd:element name="metadata"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
<xsd:attribute name="type" type="xsd:string" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="assembly"> | |||
<xsd:complexType> | |||
<xsd:attribute name="alias" type="xsd:string" /> | |||
<xsd:attribute name="name" type="xsd:string" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="data"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" /> | |||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> | |||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
<xsd:element name="resheader"> | |||
<xsd:complexType> | |||
<xsd:sequence> | |||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> | |||
</xsd:sequence> | |||
<xsd:attribute name="name" type="xsd:string" use="required" /> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:choice> | |||
</xsd:complexType> | |||
</xsd:element> | |||
</xsd:schema> | |||
<resheader name="resmimetype"> | |||
<value>text/microsoft-resx</value> | |||
</resheader> | |||
<resheader name="version"> | |||
<value>2.0</value> | |||
</resheader> | |||
<resheader name="reader"> | |||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
<resheader name="writer"> | |||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> | |||
</resheader> | |||
</root> |
@@ -0,0 +1,26 @@ | |||
//------------------------------------------------------------------------------ | |||
// <auto-generated> | |||
// 此代码由工具生成。 | |||
// 运行时版本:4.0.30319.42000 | |||
// | |||
// 对此文件的更改可能会导致不正确的行为,并且如果 | |||
// 重新生成代码,这些更改将会丢失。 | |||
// </auto-generated> | |||
//------------------------------------------------------------------------------ | |||
namespace Quanjiang.DigitalScholl.Tools.Properties { | |||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] | |||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")] | |||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { | |||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); | |||
public static Settings Default { | |||
get { | |||
return defaultInstance; | |||
} | |||
} | |||
} | |||
} |
@@ -0,0 +1,7 @@ | |||
<?xml version='1.0' encoding='utf-8'?> | |||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)"> | |||
<Profiles> | |||
<Profile Name="(Default)" /> | |||
</Profiles> | |||
<Settings /> | |||
</SettingsFile> |
@@ -0,0 +1,123 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | |||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" /> | |||
<PropertyGroup> | |||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | |||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> | |||
<ProjectGuid>{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}</ProjectGuid> | |||
<OutputType>WinExe</OutputType> | |||
<RootNamespace>Quanjiang.DigitalScholl.Tools</RootNamespace> | |||
<AssemblyName>Quanjiang.DigitalScholl.Tools</AssemblyName> | |||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> | |||
<FileAlignment>512</FileAlignment> | |||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects> | |||
<Deterministic>true</Deterministic> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> | |||
<PlatformTarget>AnyCPU</PlatformTarget> | |||
<DebugSymbols>true</DebugSymbols> | |||
<DebugType>full</DebugType> | |||
<Optimize>false</Optimize> | |||
<OutputPath>bin\Debug\</OutputPath> | |||
<DefineConstants>DEBUG;TRACE</DefineConstants> | |||
<ErrorReport>prompt</ErrorReport> | |||
<WarningLevel>4</WarningLevel> | |||
</PropertyGroup> | |||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> | |||
<PlatformTarget>AnyCPU</PlatformTarget> | |||
<DebugType>pdbonly</DebugType> | |||
<Optimize>true</Optimize> | |||
<OutputPath>bin\Release\</OutputPath> | |||
<DefineConstants>TRACE</DefineConstants> | |||
<ErrorReport>prompt</ErrorReport> | |||
<WarningLevel>4</WarningLevel> | |||
</PropertyGroup> | |||
<ItemGroup> | |||
<Reference Include="EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> | |||
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.dll</HintPath> | |||
</Reference> | |||
<Reference Include="EntityFramework.SqlServer, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL"> | |||
<HintPath>..\packages\EntityFramework.6.1.3\lib\net45\EntityFramework.SqlServer.dll</HintPath> | |||
</Reference> | |||
<Reference Include="System" /> | |||
<Reference Include="System.ComponentModel.DataAnnotations" /> | |||
<Reference Include="System.Core" /> | |||
<Reference Include="System.Xml.Linq" /> | |||
<Reference Include="System.Data.DataSetExtensions" /> | |||
<Reference Include="Microsoft.CSharp" /> | |||
<Reference Include="System.Data" /> | |||
<Reference Include="System.Deployment" /> | |||
<Reference Include="System.Drawing" /> | |||
<Reference Include="System.Net.Http" /> | |||
<Reference Include="System.Windows.Forms" /> | |||
<Reference Include="System.Xml" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<Compile Include="Form1.cs"> | |||
<SubType>Form</SubType> | |||
</Compile> | |||
<Compile Include="Form1.Designer.cs"> | |||
<DependentUpon>Form1.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="FormProgress.cs"> | |||
<SubType>Form</SubType> | |||
</Compile> | |||
<Compile Include="FormProgress.Designer.cs"> | |||
<DependentUpon>FormProgress.cs</DependentUpon> | |||
</Compile> | |||
<Compile Include="Program.cs" /> | |||
<Compile Include="Properties\AssemblyInfo.cs" /> | |||
<EmbeddedResource Include="Form1.resx"> | |||
<DependentUpon>Form1.cs</DependentUpon> | |||
</EmbeddedResource> | |||
<EmbeddedResource Include="FormProgress.resx"> | |||
<DependentUpon>FormProgress.cs</DependentUpon> | |||
</EmbeddedResource> | |||
<EmbeddedResource Include="Properties\Resources.resx"> | |||
<Generator>ResXFileCodeGenerator</Generator> | |||
<LastGenOutput>Resources.Designer.cs</LastGenOutput> | |||
<SubType>Designer</SubType> | |||
</EmbeddedResource> | |||
<Compile Include="Properties\Resources.Designer.cs"> | |||
<AutoGen>True</AutoGen> | |||
<DependentUpon>Resources.resx</DependentUpon> | |||
<DesignTime>True</DesignTime> | |||
</Compile> | |||
<None Include="packages.config" /> | |||
<None Include="Properties\Settings.settings"> | |||
<Generator>SettingsSingleFileGenerator</Generator> | |||
<LastGenOutput>Settings.Designer.cs</LastGenOutput> | |||
</None> | |||
<Compile Include="Properties\Settings.Designer.cs"> | |||
<AutoGen>True</AutoGen> | |||
<DependentUpon>Settings.settings</DependentUpon> | |||
<DesignTimeSharedInput>True</DesignTimeSharedInput> | |||
</Compile> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<None Include="App.config" /> | |||
</ItemGroup> | |||
<ItemGroup> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Application.Module\Learun.Application.Mapping\Learun.Application.Mapping.csproj"> | |||
<Project>{79f8e2f1-08e7-4336-93e0-512b39f9dd54}</Project> | |||
<Name>Learun.Application.Mapping</Name> | |||
</ProjectReference> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Application.Module\Learun.Application.TwoDevelopment\Learun.Application.TwoDevelopment.csproj"> | |||
<Project>{56f9a112-fd96-4809-98f4-0d7c5de0711b}</Project> | |||
<Name>Learun.Application.TwoDevelopment</Name> | |||
</ProjectReference> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Db\Learun.DataBase.EF.Oracle\Learun.DataBase.Oracle.csproj"> | |||
<Project>{82069f3a-ab45-4f8b-b2bf-a36b14208f41}</Project> | |||
<Name>Learun.DataBase.Oracle</Name> | |||
</ProjectReference> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Db\Learun.DataBase.EF.Sqlserver\Learun.DataBase.SqlServer.csproj"> | |||
<Project>{890532f8-5205-4ee9-965c-84500cad24de}</Project> | |||
<Name>Learun.DataBase.SqlServer</Name> | |||
</ProjectReference> | |||
<ProjectReference Include="..\Learun.Framework.Module\Learun.Db\Learun.DataBase.MySql\Learun.DataBase.MySqlEx.csproj"> | |||
<Project>{fe4cb79e-7f98-4683-bc4a-5173a5bc5636}</Project> | |||
<Name>Learun.DataBase.MySqlEx</Name> | |||
</ProjectReference> | |||
</ItemGroup> | |||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> | |||
</Project> |
@@ -0,0 +1,4 @@ | |||
<?xml version="1.0" encoding="utf-8"?> | |||
<packages> | |||
<package id="EntityFramework" version="6.1.3" targetFramework="net461" /> | |||
</packages> |
@@ -124,6 +124,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Learun.Application.Website" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quanjiang.DigitalSchool.IMServerService", "IMServerService\Quanjiang.DigitalSchool.IMServerService.csproj", "{E05A2B9A-A939-450F-9A44-A8B3201D055A}" | |||
EndProject | |||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Quanjiang.DigitalScholl.Tools", "Quanjiang.Application.Tools\Quanjiang.DigitalScholl.Tools.csproj", "{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}" | |||
EndProject | |||
Global | |||
GlobalSection(SolutionConfigurationPlatforms) = preSolution | |||
Debug|Android = Debug|Android | |||
@@ -1586,6 +1588,42 @@ Global | |||
{E05A2B9A-A939-450F-9A44-A8B3201D055A}.Release|Windows-x64.Build.0 = Release|Any CPU | |||
{E05A2B9A-A939-450F-9A44-A8B3201D055A}.Release|Windows-x86.ActiveCfg = Release|Any CPU | |||
{E05A2B9A-A939-450F-9A44-A8B3201D055A}.Release|Windows-x86.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Android.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Android.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Any CPU.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|iOS.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|iOS.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-ARM.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-ARM.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-x64.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-x64.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-x86.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Debug|Windows-x86.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Android.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Android.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Any CPU.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Any CPU.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|iOS.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|iOS.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-ARM.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-ARM.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-x64.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-x64.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-x86.ActiveCfg = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Development|Windows-x86.Build.0 = Debug|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Android.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Android.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Any CPU.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Any CPU.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|iOS.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|iOS.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-ARM.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-ARM.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-x64.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-x64.Build.0 = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-x86.ActiveCfg = Release|Any CPU | |||
{E17E5ACC-AF20-45EB-8A78-6DC07C9E01D0}.Release|Windows-x86.Build.0 = Release|Any CPU | |||
EndGlobalSection | |||
GlobalSection(SolutionProperties) = preSolution | |||
HideSolutionNode = FALSE | |||
@@ -1637,7 +1675,7 @@ Global | |||
{E05A2B9A-A939-450F-9A44-A8B3201D055A} = {ED258CD0-0A0C-490B-9D8F-B4CEC4467251} | |||
EndGlobalSection | |||
GlobalSection(ExtensibilityGlobals) = postSolution | |||
SolutionGuid = {968C278F-4142-4DFF-96B0-B3D70A649451} | |||
EnterpriseLibraryConfigurationToolBinariesPath = packages\Unity.2.1.505.0\lib\NET35 | |||
SolutionGuid = {968C278F-4142-4DFF-96B0-B3D70A649451} | |||
EndGlobalSection | |||
EndGlobal |