using AutoMapper;
using OASystem.Domain.Dtos.PersonnelModule;
using OASystem.Domain.Entities.PersonnelModule;
using OASystem.Domain.ViewModels.PersonnelModule;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using SqlSugar;
using Result = OASystem.Domain.Result;
using Newtonsoft.Json;
namespace OASystem.Infrastructure.Repositories.PersonnelModule
{
///
/// 人事模块 工资表 仓库
///
public class WageSheetRepository : BaseRepository
{
private readonly IMapper _mapper;
private Result _result;
public WageSheetRepository(SqlSugarClient sqlSugar, IMapper mapper)
: base(sqlSugar)
{
_mapper = mapper;
_result = new Result();
}
///
/// 查询工资 List
///
///
public async Task Get_WageSheet_ListByYearMonthAsync(string yearMonth )
{
if (string.IsNullOrEmpty(yearMonth))
{
_result.Msg = "参数为空";
return _result;
}
//不含公司部门
// string sql = string.Format(@"Select sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.LastUpdateDt, pm_ws.Id,pm_ws.YearMonth,pm_ws.StartDate,
//pm_ws.EndDate,pm_ws.WorkDays,pm_ws.RegularDays,pm_ws.UserId,pm_ws.Should,pm_ws.TotalDeductions,
//pm_ws.Ex_ItemsRemark,TotalRealHair,pm_ws.WithholdingTax,pm_ws.AfterTax
// From Pm_WageSheet pm_ws
// Left Join Sys_Users sys_u1 On pm_ws.UserId = sys_u1.Id
// Left Join Sys_Users sys_u2 On pm_ws.LastUpdateUserId = sys_u2.Id
// Where pm_ws.IsDel = 0 And pm_ws.YearMonth = '{0}'", yearMonth);
//公司部门
string sql = string.Format(@"Select row_number() over(order by pm_ws.UserId) as Row_Number,
sc.Id as CompanyId,sc.CompanyName,sd.Id as DepId,sd.DepName,
sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.*
From Pm_WageSheet pm_ws
Left Join Sys_Users sys_u1 On pm_ws.UserId = sys_u1.Id
Left Join Sys_Users sys_u2 On pm_ws.LastUpdateUserId = sys_u2.Id
Left Join Sys_Company sc On sys_u1.companyId = sc.Id
Left Join Sys_Department sd On sys_u1.DepId = sd.Id
Where pm_ws.IsDel = 0 And pm_ws.YearMonth = '{0}'
Order By UserId Asc ", yearMonth);
var wageSheetList = await _sqlSugar.SqlQueryable(sql).ToListAsync();
if (wageSheetList.Count <= 0 )
{
_result.Msg = "暂无数据!";
return _result;
}
wageSheetList = wageSheetList.OrderBy(it => it.Row_Number).ToList();
_result.Code = 0;
_result.Msg = "查询成功!";
_result.Data = wageSheetList;
return _result;
}
///
/// 查询工资 Info
///
///
public async Task Get_WageSheet_InfoByIdAsync(int id)
{
string sql = string.Format(@"Select sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.* From Pm_WageSheet pm_ws
Left Join Sys_Users sys_u1 On pm_ws.UserId = sys_u1.Id
Left Join Sys_Users sys_u2 On pm_ws.LastUpdateUserId = sys_u2.Id
Where pm_ws.IsDel = 0 And pm_ws.Id = {0}", id);
var wageSheetInfo = await _sqlSugar.SqlQueryable(sql).FirstAsync();
if (wageSheetInfo != null)
{
_result.Code = 0;
_result.Msg = "查询成功!";
_result.Data = wageSheetInfo;
}
return _result;
}
///
/// 修改
///
///
public async Task Post_WageSheet_AddOrEditAsync(WageAddOrEditDto dto,Pm_WageSheet pm_WageSheet)
{
if (dto.Status == 1) //添加
{
//var select = await _sqlSugar.Queryable().
// Where(it => it.IsDel == 0 && it.UserId == pm_WageSheet.UserId && it.YearMonth == pm_WageSheet.YearMonth).
// FirstAsync();
//if (select != null)
//{
// _result.Msg = "该用户 "+ pm_WageSheet.YearMonth + " 工资信息已存在,请前往修改!";
// return _result;
//}
int add = await _sqlSugar.Insertable(pm_WageSheet).ExecuteReturnIdentityAsync();
if (add <= 0)
{
_result.Msg = "操作失败!";
return _result;
}
}
else if(dto.Status == 2) //修改
{
int update = await _sqlSugar.Updateable(pm_WageSheet)
.IgnoreColumns(it => new { it.CreateUserId, it.CreateTime,it.DeleteUserId,it.DeleteTime })
.WhereColumns(it => new { it.Id })
.ExecuteCommandAsync();
if (update <= 0)
{
_result.Msg = "操作失败!";
return _result;
}
}
else{
_result.Msg = "请输入操作状态!1 添加 2 修改";
}
_result.Code = 0;
_result.Msg = "操作成功!";
return _result;
}
///
/// 删除
///
///
public async Task Post_WageSheet_DelAsync(WageDelDto dto)
{
Pm_WageSheet pm_WageSheet = new Pm_WageSheet()
{
Id = dto.Id,
DeleteUserId = dto.UserId,
DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
LastUpdateUserId = dto.UserId,
IsDel = 1
};
int update = await _sqlSugar.Updateable(pm_WageSheet)
.UpdateColumns(it => new { it.DeleteUserId, it.DeleteTime, it.IsDel, it.LastUpdateUserId, it.LastUpdateDt })
.WhereColumns(it => new { it.Id })
.ExecuteCommandAsync();
if (update <= 0)
{
_result.Msg = "操作失败!";
return _result;
}
_result.Code = 0;
_result.Msg = "操作成功!";
return _result;
}
}
}