using MathNet.Numerics.Distributions;
using NPOI.POIFS.Crypt.Dsig;
using NPOI.SS.Formula.Functions;
using OASystem.Domain;
using OASystem.Domain.Entities.Groups;
using OASystem.Domain.Entities.System;
using OASystem.Domain.ViewModels.QiYeWeChat;
namespace OASystem.Infrastructure.Repositories.System
{
public class CompanyRepository : BaseRepository<Sys_Company, CompanyView>
{
public CompanyRepository(SqlSugarClient sqlSugar) : base(sqlSugar)
{
}
public async Task<Result> AddCompany(Sys_Company company)
{
Result result = new Result() { Code = -2, Msg = "未知错误" };
try
{
BeginTran();
Sys_Company Company = _sqlSugar.Queryable<Sys_Company>().First(a => a.CompanyName == company.CompanyName && a.IsDel == 0);
if (Company != null)
{
return result = new Result() { Code = -1, Msg = "该公司已存在,请勿重复添加!"};
}
else
{
int CompanyId = 0;
int DepartmentId = 0;
int JobPostId = 0;
int UsersId = 0;
CompanyId = await AddAsyncReturnId(company);
if (CompanyId > 0)
{
#region 添加默认部门
Sys_Department _Department = new Sys_Department();
_Department.CompanyId = CompanyId;
_Department.DepName = "默认部门";
_Department.DepCode = "00";
_Department.ParentDepId = 0;
_Department.CreateUserId = company.CreateUserId;
_Department.Remark = "添加公司时默认生成部门,可修改!";
_Department.IsDel = 0;
DepartmentId = await _sqlSugar.Insertable(_Department).ExecuteReturnIdentityAsync();
#endregion
if (DepartmentId>0)
{
#region 添加默认岗位
Sys_JobPost _JobPost = new Sys_JobPost();
_JobPost.CompanyId = CompanyId;
_JobPost.DepId = DepartmentId;
_JobPost.JobName = "默认岗位";
_JobPost.CreateUserId = company.CreateUserId;
_JobPost.Remark = "添加公司时默认生成岗位,可修改!";
_JobPost.IsDel = 0;
JobPostId = await _sqlSugar.Insertable(_JobPost).ExecuteReturnIdentityAsync();
#endregion
if (JobPostId>0)
{
#region 添加默认管理员
Sys_Users _Users = new Sys_Users();
_Users.CnName = "管理员";
_Users.EnName = "Guan LiYuan";
_Users.Number = CompanyId.ToString() + DepartmentId.ToString() + JobPostId.ToString()+"01";
_Users.CompanyId = CompanyId;
_Users.DepId = DepartmentId;
_Users.JobPostId = JobPostId;
_Users.Password = "123456";
_Users.Sex = 0;
_Users.HrAudit = 1;
_Users.CreateUserId = company.CreateUserId;
_Users.Remark = "添加公司时默认生成管理员,Number可修改!";
_Users.IsDel = 0;
UsersId = await _sqlSugar.Insertable(_Users).ExecuteReturnIdentityAsync();
if (UsersId>0)
{
List<int> fid = new List<int>();//功能权限
List<int> SmId=new List<int>();//页面权限
List<Sys_UserAuthority> adds = new List<Sys_UserAuthority>();
List<Sys_PageFunctionPermission> sys_PageFunctionPermissions = _sqlSugar.Queryable<Sys_PageFunctionPermission>().Where(a=>a.IsDel==0).ToList();
foreach (var item in sys_PageFunctionPermissions)
{
fid.Add(item.Id);
}
List<Sys_SystemMenuPermission> _SystemMenuPermissions = _sqlSugar.Queryable<Sys_SystemMenuPermission>().Where(a => a.IsDel == 0 && (a.Mid==12 || a.Mid==13 || a.Mid==17) &&
a.WebUrl!="Null" && a.WebUrl!="/" && a.IsEnable==1).ToList();
foreach(var item in _SystemMenuPermissions)
{
SmId.Add(item.Id);
}
for (int i = 0;i< SmId.Count; i++)
{
for (int j = 0; j < fid.Count; j++)
{
adds.Add(new Sys_UserAuthority
{
CreateTime = DateTime.Now,
CreateUserId = company.CreateUserId,
FId = fid[j],
UId = UsersId,
SmId = SmId[i],
IsTemp = 0
});
}
}
_sqlSugar.Insertable<Sys_UserAuthority>(adds).ExecuteCommand();
}
else
{
RollbackTran();
result = new Result() { Code = 0, Msg = "默认管理员添加失败!" };
}
#endregion
}
else
{
RollbackTran();
result = new Result() { Code = 0, Msg = "默认岗位添加失败!" };
}
}
else
{
RollbackTran();
result = new Result() { Code = 0, Msg = "默认部门添加失败!" };
}
CommitTran();
var data = new
{
Number = CompanyId.ToString() + DepartmentId.ToString() + JobPostId.ToString() + "01",
Password = "123456",
};
result = new Result() { Code = 0, Msg = "添加成功!可通过Number和密码登录进去管理!初始密码为:123456", };
}
else
{
result = new Result() { Code = -1, Msg = "添加失败!请稍后重试!" };
}
}
}
catch (Exception ex)
{
return result = new Result() { Code = -2, Msg = "未知错误" };
}
return result;
}
/// <summary>
/// 获取所有公司数据
/// </summary>
/// <param name="_CompanyRepository"></param>
/// <returns></returns>
public Result GetCompanyData()
{
Result result = new Result();
string sql = "select * from Sys_Company where isdel = 0";
var DBdata = GetListBySqlWithNolock(sql);
if (DBdata == null || DBdata.Count == 0)
{
result.Code = -1;
result.Msg = "暂无数据!";
return result;
}
result.Code = 0;
result.Msg = "成功!";
result.Data = DBdata;
return result;
}
/// <summary>
/// 获取公司名称数据
/// </summary>
/// <param name="_CompanyRepository"></param>
/// <returns></returns>
public async Task<Result> GetCompanyNameData()
{
Result result = new Result();
string sql = "Select Id,CompanyName From Sys_Company Where IsDel = 0";
var companyNameData = await _sqlSugar.SqlQueryable<CompanyNameView>(sql).ToListAsync();
if (companyNameData == null || companyNameData.Count == 0)
{
result.Code = -1;
result.Msg = "暂无数据!";
return result;
}
result.Code = 0;
result.Msg = "成功!";
result.Data = companyNameData;
return result;
}
}
}