You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

119 lines
4.7 KiB

using Entity.Sugar;
using Euro.Transfer.Base;
using Newtonsoft.Json;
using SqlSugar.Base;
using System;
using System.Collections.Generic;
namespace Euro.Transfer.Jobs.BackRuns
{
public class Job : ServiceTask
{
/// <summary>
/// 任务开始
/// </summary>
protected override void Start()
{
try
{
var sCurrDate = DateTime.Now.ToString("MM-dd");
var sCurrTime = DateTime.Now.ToString("HH:mm");
var sIsBackRuns = Common.ConfigGetValue("", "IsBackRuns");//是否執行
if ((sCurrDate == "01-01") || sIsBackRuns == "true")
{
//运行中
this.mIsRunning = true;
//执行工作项
this.Run();
}
}
catch (Exception error)
{
//异常日志
ServiceTools.WriteLog(Errorlog_Path + @"BackRuns\" + DateTime.Now.ToString("yyyyMMdd"), error.ToString(), true);
}
finally
{
//空闲
this.mIsRunning = false;
}
}
/// <summary>
/// 任务停止
/// </summary>
protected override void Stop()
{
this.mIsRunning = false;
}
/// <summary>
/// 执行請假設定默認設定
/// </summary>
protected void Run()
{
try
{
do
{
var db = SugarBase.GetIntance();
var sCurrYear = DateTime.Now.ToString("yyyy");
var sRegisterOrgID = Common.ConfigGetValue("", "RegisterOrgs");
var saRegisterOrgs = sRegisterOrgID.Split(',');
var saLeaveSet = new List<OTB_EIP_LeaveSet>();
foreach (string org in saRegisterOrgs)
{
var saMembers = db.Queryable<OTB_SYS_Members>()
.Where(t => t.OrgID == org && t.Effective == "Y" && t.ServiceCode != "API").ToList();
var saArguments = db.Queryable<OTB_SYS_Arguments>()
.Where(t => t.OrgID == org && t.Effective == "Y" && t.ArgumentClassID == "LeaveType").ToList();
foreach (OTB_SYS_Members user in saMembers)
{
var iCount = db.Queryable<OTB_EIP_LeaveSet>().Count(t => t.OrgID == org && t.UserID == user.MemberID && t.TYear == sCurrYear);
if (iCount == 0)
{
var oLeaveSet = new OTB_EIP_LeaveSet
{
Guid = Guid.NewGuid().ToString(),
OrgID = org,
UserID = user.MemberID,
TYear = sCurrYear,
CreateUser = nameof(Transfer),
CreateDate = DateTime.Now
};
var dicSetInfo = new List<Dictionary<string, object>>();
foreach (OTB_SYS_Arguments arg in saArguments)
{
var dicInfo = new Dictionary<string, object>
{
{ "Id", arg.ArgumentID },
{ "Name", arg.ArgumentValue },
{ "PaymentHours", arg.Correlation ?? "" },
{ "UsedHours", "0" },
{ "RemainHours", arg.Correlation ?? "0" },
{ "Memo", arg.Memo }
};
dicSetInfo.Add(dicInfo);
}
oLeaveSet.SetInfo = JsonConvert.SerializeObject(dicSetInfo, Formatting.Indented);
saLeaveSet.Add(oLeaveSet);
}
}
}
if (saLeaveSet.Count > 0)
{
var iRel = db.Insertable<OTB_EIP_LeaveSet>(saLeaveSet).ExecuteCommand();
}
} while (false);
}
catch (Exception error)
{
//写错误日志
ServiceTools.WriteLog(Errorlog_Path + @"BackRuns\" + DateTime.Now.ToString("yyyyMMdd"), error.ToString(), true);
}
}
}
}