master
xiaochanghai 6 months ago
parent f43fec4772
commit 22fee85c40
  1. 3
      Tiobon.Core.Api/Controllers/Ghrh/Ghrh_ResumeController.cs
  2. 10
      Tiobon.Core.Api/Tiobon.Core.Model.xml
  3. BIN
      Tiobon.Core.Api/wwwroot/files/import/1871744379090243584/Ghre_Certificate.xlsx
  4. 9
      Tiobon.Core.Model/Models/Ghrz/Ghrz_Shihua_OA_Employment.cs
  5. 10
      Tiobon.Core.Model/View/Ghre/Ghre_Certificate.Dto.View.cs
  6. 164
      Tiobon.Core.Services/Ghre/Ghre_CertificateServices.cs
  7. 80
      Tiobon.Core.Services/Ghrh/Ghrh_ResumeServices.cs
  8. 10
      Tiobon.Core/Tiobon.Core.Model.xml

@ -519,5 +519,8 @@ public class Ghrh_ResumeController : BaseController<IGhrh_ResumeServices, Ghrh_R
[HttpPost, Route("SyncToStaff/{id}")]
public async Task<bool> SyncToStaff(long id) => await _service.SyncToStaff(id);
[HttpPost, Route("Shihua_OA")]
public async Task Shihua_OA_Sync(long id) => await _service.Shihua_OA_Sync();
#endregion
}

@ -25863,6 +25863,11 @@
Ghrz_Shihua_OA_Employment (Model)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrz_Shihua_OA_Employment.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrz_Shihua_OA_Employment.EmploymentID">
<summary>
EmploymentID
@ -27082,6 +27087,11 @@
来源
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateDto.CertificateName">
<summary>
证书名称
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto">
<summary>
培训证书规则(Dto.View)

@ -21,9 +21,16 @@ namespace Tiobon.Core.Model.Models;
/// Ghrz_Shihua_OA_Employment (Model)
/// </summary>
[SugarTable("Ghrz_Shihua_OA_Employment", "Ghrz_Shihua_OA_Employment"), Entity(TableCnName = "Ghrz_Shihua_OA_Employment", TableName = "Ghrz_Shihua_OA_Employment")]
public class Ghrz_Shihua_OA_Employment : BasePoco1
public class Ghrz_Shihua_OA_Employment
//: BasePoco1
{
/// <summary>
/// 创建时间
/// </summary>
[Display(Name = "创建时间"), SugarColumn(IsOnlyIgnoreUpdate = true)]
public DateTime? CreateTime { get; set; }
/// <summary>
/// EmploymentID
/// </summary>

@ -123,7 +123,13 @@ public class Ghre_CertificateDto : Ghre_Certificate
/// <summary>
/// 来源
/// </summary>
public string CertificateTypeLabel { get; set; }
public string IsExpiredLabel { get; set; }
public string CertificateTypeLabel { get; set; }
public string IsExpiredLabel { get; set; }
public string AwardDate1 { get; set; }
/// <summary>
/// 证书名称
/// </summary>
public string CertificateName { get; set; }
}

@ -79,4 +79,168 @@ public class Ghre_CertificateServices : BaseServices<Ghre_Certificate, Ghre_Cert
return new ServicePageResult<Ghre_CertificateDto>(filter.pageNum, total, filter.pageSize, entitys);
}
#region Excel导入
public override async Task<ServiceResult<string>> DownloadExcel(string menuName)
{
var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot";
var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}ExcelTemplate{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(physicsPath + path))
Directory.CreateDirectory(physicsPath + path);
Type entityType = typeof(Ghre_Certificate);
var fileName = entityType.GetEntityTableName() + ".xlsx";
var physicsPath1 = physicsPath + path + fileName;
//if (dataSourceLists.Any())
// physicsPath1 = physicsPath + path + newFileName;
var result = ServiceResult<string>.OprateSuccess("人证对照表_" + DateTimeHelper.ConvertToSecondString1(DateTime.Now) + ".xlsx", physicsPath1);
return result;
}
public override async Task<ServiceResult<ExcelData>> ImportExcel(IFormFile file)
{
var data = new ExcelData();
long id = SnowFlakeSingle.instance.getID();
var physicsPath = $"{Environment.CurrentDirectory}{Path.DirectorySeparatorChar}wwwroot";
var path = $"{$"{Path.DirectorySeparatorChar}files{Path.DirectorySeparatorChar}import{Path.DirectorySeparatorChar}{id}{Path.DirectorySeparatorChar}"}";
if (!Directory.Exists(physicsPath + path))
Directory.CreateDirectory(physicsPath + path);
var filepath = physicsPath + path + file.FileName;
using (var stream = File.Create(filepath))
{
await file.CopyToAsync(stream);
}
string extension = Path.GetExtension(filepath);
bool isExistError = false;
var id1 = SnowFlakeSingle.instance.getID();
string errorFileName = path + SnowFlakeSingle.instance.getID() + extension;
var dt = NPOIHelper.ImportExcel(filepath, "人证对照表");
if (dt.Columns["Comments"] == null)
dt.Columns.Add("Comments", typeof(string));
var fields = new List<string>
{
"工号",
"姓名",
"证书名称",
"课程",
"颁发日期",
"证书有效期",
"备注"
};
for (int i = 0; i < dt.Rows.Count; i++)
{
var comments = new List<string>();
bool isContinue = false;
fields.ForEach(x =>
{
if (!dt.Columns.Contains(x))
{
comments.Add("未查询到【" + x + "】列!");
data.ErrorCount++;
dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
isExistError = true;
isContinue = true;
}
});
if (isContinue)
continue;
var StaffNo = dt.Rows[i]["工号"].ToString();
var StaffName = dt.Rows[i]["姓名"].ToString();
var CertificateName = dt.Rows[i]["证书名称"].ToString();
var CourseName = dt.Rows[i]["课程"].ToString();
var AwardDate = dt.Rows[i]["颁发日期"].ToString();
var ValidityPeriod = dt.Rows[i]["证书有效期"].ToString();
if (StaffNo.IsNullOrEmpty() && StaffName.IsNullOrEmpty())
continue;
var remarkSz = dt.Rows[i]["备注"].ToString();
var staff = await Db.Queryable<Ghra_Staff>().Where(x => x.StaffNo == StaffNo && x.StaffName == StaffName).FirstAsync();
if (staff == null)
{
comments.Add($"未查询到搞员工,工号或姓名填写错误!");
data.ErrorCount++;
dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
isExistError = true;
continue;
}
var rule = await Db.Queryable<Ghre_CertificateRule>().Where(x => x.CertificateName == CertificateName).FirstAsync();
if (rule == null)
{
comments.Add($"无效的证书名称!");
data.ErrorCount++;
dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
isExistError = true;
continue;
}
var course = await Db.Queryable<Ghre_Course>().Where(x => x.CourseName == CourseName).FirstAsync();
if (course == null)
{
comments.Add($"无效的课程!");
data.ErrorCount++;
dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
isExistError = true;
continue;
}
//if (await base.AnyAsync(x => x.CertificateRuleId == rule.Id && x.StaffId == ClassNo))
//{
// comments.Add($"系统已存在相同编号名称人证对照表数据!");
// data.ErrorCount++;
// dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
// isExistError = true;
// continue;
//}
if (AwardDate.IsNullOrEmpty())
AwardDate = DateTime.Now.ToString();
var dict = new Dictionary<string, object>
{
{ "Id", SnowFlakeSingle.Instance.NextId() },
{ "CreateBy", App.User.ID },
{ "CreateTime", DateTime.Now },
{ "CertificateRuleId", rule.Id },
{ "StaffId", staff.StaffID },
{ "CourseId", course.Id },
{ "AwardDate", AwardDate },
{ "ValidityPeriod", ValidityPeriod },
{ "RemarkSz", remarkSz }
};
try
{
await Db.Insertable(dict).AS("Ghre_Certificate").ExecuteCommandAsync();
data.SuccessCount++;
//data.SuccessCount += list.Count;
}
catch (Exception E)
{
comments.Add(E.Message);
data.ErrorCount++;
dt.Rows[i]["Comments"] = string.Join(";", comments.Select(a => a));
isExistError = true;
continue;
}
}
if (isExistError)
{
NPOIHelper.ExportExcel(dt, null, "人证对照表", physicsPath + errorFileName);
data.filePath = errorFileName;
}
return ServiceResult<ExcelData>.OprateSuccess("导入成功!", data);
}
#endregion
}

@ -3,6 +3,7 @@ using DinkToPdf.Contracts;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Hosting;
using Microsoft.VisualBasic;
using System.IO.Compression;
using static Tiobon.Core.Model.Consts;
@ -352,7 +353,8 @@ public class Ghrh_ResumeServices : BaseServices<Ghrh_Resume, Ghrh_ResumeDto, Ins
if (x.Status != DIC_INTERVIEW_ORDER_STATUS.WaitRecommended)
{
x.HireDeptName = order.HireDeptName;
x.HireTitleName = order.HireTitleName;
if (order.HireTitleName.IsNotEmptyOrNull())
x.HireTitleName = order.HireTitleName;
x.Interviewer = order.Interviewer;
}
@ -3665,9 +3667,9 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
{
try
{
var startDate = DateTime.Now.AddDays(-30);
var list = await Db.Queryable<Ghrz_Shihua_OA_Employment>().Where(x => x.CreateTime.Value.Date == DateTime.Now).ToListAsync();
var list = await Db.Queryable<Ghrz_Shihua_OA_Employment>().Where(x => x.CreateTime >= startDate && x.IsRead == 0).ToListAsync();
for (int i = 0; i < list.Count; i++)
{
@ -3700,6 +3702,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
};
long id = await Db.Insertable(insert).ExecuteReturnSnowflakeIdAsync();
#region 写入数据,并判断是否有错误
var sql = $"SELECT ISNULL(MAX(id)+1,1) FROM Ghrh_OfferApplyOrder WHERE Id !='{id}'";
var id1 = await Db.Ado.GetLongAsync(sql);
sql = $"UPDATE Ghrh_OfferApplyOrder SET Id={id1} WHERE Id ='{id}'";
await Db.Ado.ExecuteCommandAsync(sql);
id = id1;
#endregion
#region 处理薪资项目
var currencyId = await Db.Ado.GetIntAsync("SELECT top 1 CurrencyID FROM Ghrc_Currency where CurrencyNo='RMB'");
@ -3708,10 +3717,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S02").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S02,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S02"
});
}
@ -3720,10 +3731,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S03").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S03,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S03"
});
}
if (data.S04.IsNotEmptyOrNull())
@ -3731,10 +3744,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S04").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S04,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S04"
});
}
if (data.S05.IsNotEmptyOrNull())
@ -3742,10 +3757,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S05").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S05,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S05"
});
}
if (data.S06.IsNotEmptyOrNull())
@ -3753,10 +3770,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S06").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S06,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S06"
});
}
if (data.S21.IsNotEmptyOrNull())
@ -3764,10 +3783,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S21").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S21,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S21"
});
}
if (data.S22.IsNotEmptyOrNull())
@ -3775,10 +3796,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S22").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S22,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S22"
});
}
if (data.S23.IsNotEmptyOrNull())
@ -3786,10 +3809,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S23").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S23,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S23"
});
}
if (data.S66.IsNotEmptyOrNull())
@ -3797,10 +3822,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S66").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S66,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S66"
});
}
if (data.S68.IsNotEmptyOrNull())
@ -3808,10 +3835,12 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S68").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S68,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S68"
});
}
if (data.S70.IsNotEmptyOrNull())
@ -3819,18 +3848,20 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
var salaryItemId = (await Db.Queryable<Ghrc_SalaryItem>().Where(x => x.SalaryItemNo == "S70").FirstAsync())?.SalaryItemID;
items.Add(new Ghrh_OfferApplyOrderSalary()
{
Id = SnowFlakeSingle.Instance.NextId(),
OrderId = id,
SalaryItemId = salaryItemId,
Amount = data.S70,
CurrencyId = currencyId
CurrencyId = currencyId,
Reverse1 = "S70"
});
}
#endregion
if (items.Any())
await Db.Insertable(items).ExecuteReturnSnowflakeIdAsync();
await Db.Insertable(items).ExecuteCommandAsync();
}
}
catch (Exception)
catch (Exception E)
{
}
@ -4035,9 +4066,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
dict.Add("IsEnable", 1);
#endregion
DateTime? inTime = null;
long? applyOrderId = null;
var applyOrder = await Db.Queryable<Ghrh_OfferApplyOrder>().Where(x => x.ResumeId == id).FirstAsync();
if (applyOrder != null)
{
inTime = applyOrder.InDate;
applyOrderId = applyOrder.Id;
dict.Add("DeptID", applyOrder.DeptId);
dict.Add("TitleID", applyOrder.TitleId);
dict.Add("JobID", applyOrder.JobId);
@ -4046,8 +4081,10 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
dict.Add("LegalCompanyID", applyOrder.CompanyId);
dict.Add("Reverse8", applyOrder.ProbationMonths);
dict.Add("ZoneID", applyOrder.ZoneId);
dict.Add("StaffType1", applyOrder.StaffType1);
dict.Add("StaffType2", applyOrder.StaffType);
var items = await GetParaList("StaffType1");
dict.Add("StaffType1", items.Where(x => x.ParaDetailNo == applyOrder.StaffType1).FirstOrDefault()?.ParaDetailId);
items = await GetParaList("StaffType2");
dict.Add("StaffType2", items.Where(x => x.ParaDetailNo == applyOrder.StaffType).FirstOrDefault()?.ParaDetailId);
//dict.Add("Reverse8", applyOrder.ProbationMonths);
}
else
@ -4324,6 +4361,13 @@ WHERE A.IsEnable = 1 AND C.IsEnable = 1
await Db.Insertable(attachments1).ExecuteReturnIdentityAsync();
}
#endregion
#region 薪资项目同步
if(applyOrderId != null)
{
}
#endregion
}
await Db.Ado.CommitTranAsync();

@ -25863,6 +25863,11 @@
Ghrz_Shihua_OA_Employment (Model)
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrz_Shihua_OA_Employment.CreateTime">
<summary>
创建时间
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghrz_Shihua_OA_Employment.EmploymentID">
<summary>
EmploymentID
@ -27082,6 +27087,11 @@
来源
</summary>
</member>
<member name="P:Tiobon.Core.Model.Models.Ghre_CertificateDto.CertificateName">
<summary>
证书名称
</summary>
</member>
<member name="T:Tiobon.Core.Model.Models.Ghre_CertificateRuleDto">
<summary>
培训证书规则(Dto.View)

Loading…
Cancel
Save