WageSheetRepository.cs 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205
  1. using AutoMapper;
  2. using OASystem.Domain.Dtos.PersonnelModule;
  3. using OASystem.Domain.Entities.PersonnelModule;
  4. using OASystem.Domain.ViewModels.PersonnelModule;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using SqlSugar;
  11. using Result = OASystem.Domain.Result;
  12. using Newtonsoft.Json;
  13. namespace OASystem.Infrastructure.Repositories.PersonnelModule
  14. {
  15. /// <summary>
  16. /// 人事模块 工资表 仓库
  17. /// </summary>
  18. public class WageSheetRepository : BaseRepository<Pm_WageSheet, WageSheetView>
  19. {
  20. private readonly IMapper _mapper;
  21. private Result _result;
  22. public WageSheetRepository(SqlSugarClient sqlSugar, IMapper mapper)
  23. : base(sqlSugar)
  24. {
  25. _mapper = mapper;
  26. _result = new Result();
  27. }
  28. /// <summary>
  29. /// 查询工资 List
  30. /// </summary>
  31. /// <returns></returns>
  32. public async Task<Result> Get_WageSheet_ListByYearMonthAsync(string yearMonth )
  33. {
  34. if (string.IsNullOrEmpty(yearMonth))
  35. {
  36. _result.Msg = "参数为空";
  37. return _result;
  38. }
  39. string sql = string.Format(@"Select sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.LastUpdateDt, pm_ws.Id,
  40. pm_ws.YearMonth,pm_ws.StartDate,pm_ws.EndDate,pm_ws.UserId,pm_ws.Should,
  41. pm_ws.TotalDeductions,pm_ws.Ex_ItemsRemark,TotalRealHair,pm_ws.WithholdingTax,pm_ws.AfterTax
  42. From Pm_WageSheet pm_ws
  43. Left Join Sys_Users sys_u1 On pm_ws.UserId = sys_u1.Id
  44. Left Join Sys_Users sys_u2 On pm_ws.LastUpdateUserId = sys_u2.Id
  45. Where pm_ws.IsDel = 0 And pm_ws.YearMonth = '{0}'", yearMonth);
  46. var wageSheetList = await _sqlSugar.SqlQueryable<WageSheetItemInfoView>(sql).ToListAsync();
  47. if (wageSheetList.Count <= 0 )
  48. {
  49. _result.Msg = "暂无数据!";
  50. return _result;
  51. }
  52. //wageSheetList = wageSheetList.Select(it => {
  53. // if (!string.IsNullOrEmpty(it.Ex_ItemsRemark))
  54. // {
  55. // List<Ex_Items>? data = new List<Ex_Items>();
  56. // data = JsonConvert.DeserializeObject<List<Ex_Items>>(it.Ex_ItemsRemark);
  57. // it.Ex_Items = data;
  58. // }
  59. // return it;
  60. //}).ToList();
  61. _result.Code = 0;
  62. _result.Msg = "查询成功!";
  63. _result.Data = wageSheetList;
  64. return _result;
  65. }
  66. /// <summary>
  67. /// 查询工资 Info
  68. /// </summary>
  69. /// <returns></returns>
  70. public async Task<Result> Get_WageSheet_InfoByIdAsync(int id)
  71. {
  72. string sql = string.Format(@"Select sys_u1.CnName Name,sys_u2.CnName LastUpdateUserName,pm_ws.* From Pm_WageSheet pm_ws
  73. Left Join Sys_Users sys_u1 On pm_ws.UserId = sys_u1.Id
  74. Left Join Sys_Users sys_u2 On pm_ws.LastUpdateUserId = sys_u2.Id
  75. Where pm_ws.IsDel = 0 And pm_ws.Id = {0}", id);
  76. var wageSheetInfo = await _sqlSugar.SqlQueryable<WageSheetInfoView>(sql).FirstAsync();
  77. if (wageSheetInfo != null)
  78. {
  79. _result.Code = 0;
  80. _result.Msg = "查询成功!";
  81. _result.Data = wageSheetInfo;
  82. }
  83. return _result;
  84. }
  85. /// <summary>
  86. /// 修改
  87. /// </summary>
  88. /// <returns></returns>
  89. public async Task<Result> Post_WageSheet_AddOrEditAsync(WageAddOrEditDto dto)
  90. {
  91. Pm_WageSheet pm_WageSheet = new Pm_WageSheet();
  92. pm_WageSheet = _mapper.Map<Pm_WageSheet>(dto);
  93. pm_WageSheet.LastUpdateUserId = dto.CreateUserId;
  94. #region 计算工资
  95. //应发合计 //计算日工资
  96. decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.GarmentWashSubsidies + pm_WageSheet.CommunicationSubsidies + pm_WageSheet.GroupCost +
  97. pm_WageSheet.TrafficSubsidies + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OperationBonus + pm_WageSheet.OtherSubsidies;
  98. //扣款合计
  99. decimal totalDeduction = pm_WageSheet.SickLeave + pm_WageSheet.SomethingFalse + pm_WageSheet.LateTo + pm_WageSheet.LeaveEarly + pm_WageSheet.Absenteeism + pm_WageSheet.NotPunch +
  100. pm_WageSheet.ReservedFunds + pm_WageSheet.WithholdingInsurance + pm_WageSheet.OtherDeductions + pm_WageSheet.OtherDeductions;
  101. //实发合计 不含个税
  102. decimal actualTotal = salary - totalDeduction;
  103. pm_WageSheet.Should = salary + pm_WageSheet.SpecialAllowance + pm_WageSheet.Mealsupplement;
  104. pm_WageSheet.TotalDeductions = totalDeduction;
  105. pm_WageSheet.TotalRealHair = actualTotal;
  106. pm_WageSheet.AfterTax = actualTotal - pm_WageSheet.WithholdingTax;
  107. #endregion
  108. if (dto.Status == 1) //添加
  109. {
  110. var select = await _sqlSugar.Queryable<Pm_WageSheet>().
  111. Where(it => it.IsDel == 0 && it.UserId == pm_WageSheet.UserId && it.YearMonth == pm_WageSheet.YearMonth).
  112. FirstAsync();
  113. if (select != null)
  114. {
  115. _result.Msg = "该用户 "+ pm_WageSheet.YearMonth + " 工资信息已存在,请前往修改!";
  116. return _result;
  117. }
  118. int add = await _sqlSugar.Insertable(pm_WageSheet).ExecuteReturnIdentityAsync();
  119. if (add <= 0)
  120. {
  121. _result.Msg = "操作失败!";
  122. return _result;
  123. }
  124. }
  125. else if(dto.Status == 2) //修改
  126. {
  127. //修改时 更改其他 费用基数时 假勤 费用也将更改
  128. if (string.IsNullOrEmpty(dto.Ex_ItemsRemark))
  129. {
  130. List<Ex_Items> ex_Items = new List<Ex_Items>();
  131. }
  132. int update = await _sqlSugar.Updateable(pm_WageSheet)
  133. .IgnoreColumns(it => new { it.CreateUserId, it.CreateTime,it.DeleteUserId,it.DeleteTime })
  134. .WhereColumns(it => new { it.Id })
  135. .ExecuteCommandAsync();
  136. if (update <= 0)
  137. {
  138. _result.Msg = "操作失败!";
  139. return _result;
  140. }
  141. }
  142. else{
  143. _result.Msg = "请输入操作状态!1 添加 2 修改";
  144. }
  145. _result.Code = 0;
  146. _result.Msg = "操作成功!";
  147. return _result;
  148. }
  149. /// <summary>
  150. /// 删除
  151. /// </summary>
  152. /// <returns></returns>
  153. public async Task<Result> Post_WageSheet_DelAsync(WageDelDto dto)
  154. {
  155. Pm_WageSheet pm_WageSheet = new Pm_WageSheet()
  156. {
  157. Id = dto.Id,
  158. DeleteUserId = dto.UserId,
  159. DeleteTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  160. LastUpdateUserId = dto.UserId,
  161. IsDel = 1
  162. };
  163. int update = await _sqlSugar.Updateable(pm_WageSheet)
  164. .UpdateColumns(it => new { it.DeleteUserId, it.DeleteTime, it.IsDel, it.LastUpdateUserId, it.LastUpdateDt })
  165. .WhereColumns(it => new { it.Id })
  166. .ExecuteCommandAsync();
  167. if (update <= 0)
  168. {
  169. _result.Msg = "操作失败!";
  170. return _result;
  171. }
  172. _result.Code = 0;
  173. _result.Msg = "操作成功!";
  174. return _result;
  175. }
  176. }
  177. }