瀏覽代碼

Merge branch 'develop' of http://132.232.92.186:3000/XinXiBu/OA2023 into develop

wangh 1 年之前
父節點
當前提交
6873708381

+ 2 - 7
OASystem/OASystem.Api/Controllers/AuthController.cs

@@ -227,18 +227,13 @@ namespace OASystem.API.Controllers
             #endregion
 
 
-            var userData = _loginRep.Register(_loginRep, dto);
+            var userData = _loginRep.Register(dto);
             if (userData.Result.Code != 0)
             {
-                if (userData.Result.Code != 0) { return Ok(JsonView(false, userData.Result.Msg)); }
-
                 return Ok(JsonView(false, "注册失败!"));
             }
 
-           
-
-
-            return Ok(new { Code = 0, Msg = userData.Result.Msg });
+            return Ok(JsonView(true, userData.Result.Msg));
         }
 
         /// <summary>

+ 5 - 4
OASystem/OASystem.Api/Controllers/GroupsController.cs

@@ -470,13 +470,14 @@ namespace OASystem.API.Controllers
         /// <returns></returns>
         [HttpPost]
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
-        public async Task<ActionResult> PostIOSVisaProgressContent(int diId)
+        public async Task<ActionResult> PostIOSVisaProgressContent(IOS_VisaCustomerListDto dto)
         {
-            if (diId < 1) {
-                return Ok(JsonView(false, "id错误:" + diId.ToString()));
+            if (dto == null)
+            {
+                return Ok(JsonView(false, "请求错误:"));
             }
 
-            List<DelegationVisaProgressView> list = _delegationVisaRep.GetDelegationProgressList(diId);
+            List<DelegationVisaProgressView> list = _delegationVisaRep.GetDelegationProgressList(dto.diId);
 
             return Ok(JsonView(list));
         }

+ 112 - 41
OASystem/OASystem.Api/Controllers/PersonnelModuleController.cs

@@ -1,4 +1,6 @@
-using Autofac.Diagnostics;
+using Aspose.Cells;
+using Autofac.Diagnostics;
+using MathNet.Numerics.Statistics.Mcmc;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.Mvc.RazorPages;
 using OASystem.API.OAMethodLib;
@@ -6,7 +8,10 @@ using OASystem.API.OAMethodLib.QiYeWeChatAPI;
 using OASystem.Domain;
 using OASystem.Domain.Dtos.PersonnelModule;
 using OASystem.Domain.Dtos.QiYeWeChat;
+using OASystem.Domain.Entities.Business;
+using OASystem.Domain.Entities.Groups;
 using OASystem.Domain.Entities.PersonnelModule;
+using OASystem.Domain.ViewModels.Business;
 using OASystem.Domain.ViewModels.JuHeExchangeRate;
 using OASystem.Domain.ViewModels.PersonnelModule;
 using OASystem.Domain.ViewModels.QiYeWeChat;
@@ -16,6 +21,8 @@ using StackExchange.Redis;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Globalization;
+using System.IO;
+using System.Web;
 
 namespace OASystem.API.Controllers
 {
@@ -59,15 +66,23 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> GetWageSheetBasicsDataSource()
         {
+            string companySql = string.Format("Select * From Sys_Company Where IsDel = 0");
+            var compnayData = await _wageSheetRep._sqlSugar.SqlQueryable<CompanyNameView>(companySql).ToListAsync();
+
+            string depSql = string.Format("Select * From Sys_Department Where IsDel = 0");
+            var depData = await _wageSheetRep._sqlSugar.SqlQueryable<Domain.ViewModels.System.DepartmentView>(depSql).ToListAsync();
 
             //获取OA系统内所有用户
             var nameData = await _usersRep.GetUserNameList(1);
+
             if (nameData.Code != 0)
             {
                 return Ok(JsonView(false, nameData.Msg));
             }
 
             var data = new {
+                compnayData = compnayData,
+                depData = depData,
                 userNames = nameData.Data
         };
 
@@ -96,14 +111,6 @@ namespace OASystem.API.Controllers
 
             //获取月工资数据
             string yearMonth = yearMonthDt.ToString("yyyy-MM");
-            string startDt = yearMonthDt.AddDays(-1).ToString("yyyy-MM") + "-28",
-                   endDt = yearMonth + "-27";
-
-            //应发合计 = 基本工资 +绩效工资 + 岗位津贴 + 员工的岗位津贴 + 服装洗理补贴 + 通讯补贴 + 交通补贴 + 保密费 + 操作奖金+ 其他补贴 + 部门集体团建费 + 代扣保险 + 代扣公积金 + 餐补 
-
-            //事假  病假 合计
-
-            //扣款合计 = 迟到 + 早退 + 矿工 + 未打卡 + 其他扣款 
 
             if (dto.PortType == 1)
             {
@@ -154,7 +161,6 @@ namespace OASystem.API.Controllers
             return Ok(JsonView(true, _result.Msg, _result.Data));
         }
 
-
         /// <summary>
         /// 人事模块 工资表单 删除
         /// </summary>
@@ -217,27 +223,31 @@ namespace OASystem.API.Controllers
         [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
         public async Task<IActionResult> SalaryCalculatorAsync(SalaryCalculatorDto dto)
         {
-            //var tepDetail = await PayrollComputation.GetVacationReissueCardTypes("C4RdAPs6gcGyLdSG1RTfKV6kKiRJzXSwF27LaJbyf");
 
             Result result = new Result();
             Stopwatch sw = new Stopwatch();
             sw.Start();
             //参数处理
             string ymFormat = "yyyy-MM";
-            DateTime yearMonthDt;
-            bool yearMonthDttIsValid = DateTime.TryParseExact(dto.yearMonth, ymFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out yearMonthDt);
+            string dtFormat = "yyyy-MM-dd";
+            DateTime yearMonthDt,startDt,endDt;
+            bool yearMonthDtIsValid = DateTime.TryParseExact(dto.yearMonth, ymFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out yearMonthDt);
+            bool startDtIsValid = DateTime.TryParseExact(dto.startDt, dtFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out startDt);
+            bool endDtIsValid = DateTime.TryParseExact(dto.endDt, dtFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out endDt);
 
-            if (!yearMonthDttIsValid)
-            {
-                return Ok(JsonView(false, "年月格式错误!正确时间格式:yyyy-MM  "));
-            }
+            if (!yearMonthDtIsValid) return Ok(JsonView(false, "年月格式错误!正确时间格式:yyyy-MM  "));
+            if (!startDtIsValid) return Ok(JsonView(false, "开始日期格式错误!正确时间格式:yyyy-MM-dd  "));
+            if (!endDtIsValid) return Ok(JsonView(false, "结束格式错误!正确时间格式:yyyy-MM-dd  "));
 
             string thisYearMonth = dto.yearMonth;
             string preYearMonth = yearMonthDt.AddMonths(-1).ToString("yyyy-MM");
 
-            //计算本月工资起止时间
-            DateTime thisStartDt = Convert.ToDateTime(preYearMonth  + "-28");
-            DateTime thisEndDt = Convert.ToDateTime(thisYearMonth + "-27");
+
+            Result hoildays = await PayrollComputation.GetWorkDays(startDt, endDt);
+
+            //计算本月工资起止时间 比如是2月的1号-28号,那就是2月1号的零点到3月1号的零点 
+            DateTime thisStartDt = startDt;
+            DateTime thisEndDt = endDt.AddDays(1); //
 
             //本月工资是否有数据 有数据则不计算
             result = await _wageSheetRep.Get_WageSheet_ListByYearMonthAsync(thisYearMonth);
@@ -252,14 +262,19 @@ namespace OASystem.API.Controllers
             {
                 return Ok(JsonView(false, thisYearMonth + " 上月工资数据不存在,请手动添加!"));
             }
-
-            //获取OA系统内所有用户
-            var nameData = await _usersRep.GetUserNameList(1);
+            //处理上个月同月同人 多条数据
+            List<Pm_WageSheet> preWageSheetItems1 = new List<Pm_WageSheet>();
+            preWageSheetItems1 = preWageSheetItems.GroupBy(it => new { it.YearMonth,it.UserId })
+                                                  .Select(it => it.FirstOrDefault(item => item.Basic !=0))
+                                                  .ToList();
+
+             //获取OA系统内所有用户
+             var nameData = await _usersRep.GetUserNameList(1);
             List<UserNameView>? userNames = nameData.Data;
 
             List<Pm_WageSheet> wageSheets = new List<Pm_WageSheet>();
 
-            _result = await PayrollComputation.SalaryCalculatorAsync(preWageSheetItems, userNames,dto.UserId, thisYearMonth, thisStartDt, thisEndDt);
+            _result = await PayrollComputation.SalaryCalculatorAsync(preWageSheetItems1, userNames,dto.UserId, thisYearMonth, thisStartDt,      );
 
             #region 批量添加
 
@@ -298,7 +313,7 @@ namespace OASystem.API.Controllers
             #endregion
 
             sw.Stop();
-            return Ok(JsonView(true, "操作成功! 耗时:" + sw.ElapsedMilliseconds + "ms"));
+            return Ok(JsonView(true, "操作成功! 耗时:" + (sw.ElapsedMilliseconds/1000) + "s"));
         }
 
 
@@ -322,22 +337,11 @@ namespace OASystem.API.Controllers
             bool startDtIsValid = DateTime.TryParseExact(dto.StartDate, ymdFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out startDt);
             bool endDtIsValid = DateTime.TryParseExact(dto.EndDate, ymdFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out endDt);
 
-            if (!yearMonthDtIsValid)
-                return Ok(JsonView(false, "年月格式错误!正确时间格式:yyyy-MM  "));
-
-            if (!startDtIsValid)
-                return Ok(JsonView(false, "开始时间格式错误!正确时间格式:yyyy-MM-dd  "));
+            if (!yearMonthDtIsValid) return Ok(JsonView(false, "年月格式错误!正确时间格式:yyyy-MM  "));
 
-            if (!yearMonthDtIsValid)
-                return Ok(JsonView(false, "结束时间格式错误!正确时间格式:yyyy-MM-dd  "));
-
-            //本月工资是否有数据 有数据则不计算
-            //result = await _wageSheetRep.Get_WageSheet_ListByYearMonthAsync(dto.YearMonth);
-            //if (result.Code == 0)
-            //{
-            //    return Ok(JsonView(false, dto.YearMonth + " 工资数据已存在,若无人员工资请手动添加!"));
-            //}
+            if (!startDtIsValid) return Ok(JsonView(false, "开始时间格式错误!正确时间格式:yyyy-MM-dd  "));
 
+            if (!yearMonthDtIsValid) return Ok(JsonView(false, "结束时间格式错误!正确时间格式:yyyy-MM-dd  "));
 
             List<Pm_WageSheet> wageSheets = new List<Pm_WageSheet>();
             Pm_WageSheet wageSheet = _mapper.Map<Pm_WageSheet>(dto);
@@ -346,7 +350,7 @@ namespace OASystem.API.Controllers
             var nameData = await _usersRep.GetUserNameList(1);
             List<UserNameView>? userNames = nameData.Data;
 
-            _result = await PayrollComputation.SalaryCalculatorAsync(wageSheets, userNames, dto.UserId, dto.YearMonth, startDt, endDt);
+            _result = await PayrollComputation.SalaryCalculatorAsync(wageSheets, userNames, dto.UserId, dto.YearMonth, startDt, endDt.AddDays(1));
 
             if (_result.Code != 0)
             {
@@ -376,10 +380,77 @@ namespace OASystem.API.Controllers
                 #endregion
 
             sw.Stop();
-                return Ok(JsonView(true, "操作成功!耗时:"+ sw.ElapsedMilliseconds +"ms", wageSheetItems[0]));
+            return Ok(JsonView(true, "操作成功!耗时:" + (sw.ElapsedMilliseconds / 1000) + "s", wageSheetItems[0]));
            
             
         }
+
+        /// <summary>
+        /// 导出工资单
+        /// </summary>
+        /// <returns></returns>
+        [HttpPost]
+        [ProducesResponseType(typeof(JsonView), StatusCodes.Status200OK)]
+        public async Task<IActionResult> ExportWageCard(string yearMonth)
+        {
+            Result result = new Result();
+            Stopwatch sw = new Stopwatch();
+            sw.Start();
+
+            //参数处理
+            string ymFormat = "yyyy-MM";
+            DateTime yearMonthDt;
+            bool yearMonthDtIsValid = DateTime.TryParseExact(yearMonth, ymFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out yearMonthDt);
+
+            if (!yearMonthDtIsValid) return Ok(JsonView(false, "年月格式错误!正确时间格式:yyyy-MM  "));
+            //公司部门
+            string sql = string.Format(@"Select row_number() over(order by pm_ws.Id) 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}'", yearMonth);
+            var wageSheetList = await _wageSheetRep._sqlSugar.SqlQueryable<ExportWageSheetItemView>(sql).ToListAsync();
+
+            if (wageSheetList.Count <= 0)
+            {
+                return Ok(JsonView(false, yearMonth + "暂无工资数据!"));
+            }
+
+            decimal SumPrice = 0.00M;
+            foreach (var item in wageSheetList)
+            {
+                SumPrice += item.AfterTax;
+            }
+
+            WorkbookDesigner designer = new WorkbookDesigner();
+
+            designer.Workbook = new Workbook(AppSettingsHelper.Get("ExcelBasePath") + "Template/工资详细清单.xlsx");
+            designer.Workbook.Worksheets[0].Name = yearMonth +" 工资单";
+            designer.SetDataSource("WageSheet", wageSheetList);
+            designer.SetDataSource("YearMonth", yearMonth);
+            designer.SetDataSource("StartEndDt", wageSheetList[0].StartDate +" - "+ wageSheetList[0].EndDate);
+            designer.SetDataSource("WorkDays", wageSheetList[0].WorkDays);
+            designer.SetDataSource("SumPrice", SumPrice);
+            designer.SetDataSource("WageSheetTitle", "工资单");//
+            designer.Process();
+
+            string fileName = "WageCard/" + yearMonth + "_工资单_" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";
+            string path = AppSettingsHelper.Get("ExcelBasePath");
+            designer.Workbook.Save(path + fileName);
+            designer = null;
+
+            string excelPath = AppSettingsHelper.Get("ExcelFtpPath") + fileName;
+            string url = AppSettingsHelper.Get("ExcelBaseUrl");
+            string fileUrl = url + excelPath;
+
+            sw.Stop();
+            return Ok(JsonView(true, "操作成功!耗时:" + (sw.ElapsedMilliseconds / 1000) + "s", new { FileUrl = fileUrl }));
+        }
+
         #endregion
 
     }

File diff suppressed because it is too large
+ 571 - 457
OASystem/OASystem.Api/OAMethodLib/PayrollComputation.cs


+ 67 - 1
OASystem/OASystem.Api/appsettings.json

@@ -119,6 +119,72 @@
   "WordFtpPath": "Office/Word/",
 
   "GrpFileBaseUrl": "http://132.232.92.186:24/",
-  "GrpFileBasePath": "C:/Server/File/OA2023/Office/GrpFile/"
+  "GrpFileBasePath": "C:/Server/File/OA2023/Office/GrpFile/",
+  //节假日
+  "HoliDayDataSource": [
+    {
+      "Year": "2023",
+      "Holidays": [
+        {
+          "HoliDate": "09-29",
+          "HoliName": "中秋"
+        },
+        {
+          "HoliDate": "09-30",
+          "HoliName": "中秋"
+        },
+        {
+          "HoliDate": "10-01",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-02",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-03",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-04",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-05",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-06",
+          "HoliName": "国庆"
+        },
+        {
+          "HoliDate": "10-07",
+          "HoliName": "工作日"
+        },
+        {
+          "HoliDate": "10-08",
+          "HoliName": "工作日"
+        },
+        {
+          "HoliDate": "12-30",
+          "HoliName": "元旦"
+        },
+        {
+          "HoliDate": "12-31",
+          "HoliName": "元旦"
+        }
+      ]
+    },
+    {
+      "Year": "2024",
+      "Holidays": [
+        {
+          "HoliDate": "01-01",
+          "HoliName": "元旦"
+        }
+      ]
+    }
+
+  ]
 
 }

+ 5 - 0
OASystem/OASystem.Domain/Dtos/Groups/VisaDto.cs

@@ -10,4 +10,9 @@ namespace OASystem.Domain.Dtos.Groups
     {
 
     }
+
+    public class IOS_VisaCustomerListDto:DtoBase
+    {
+        public int diId { get; set; }
+    }
 }

+ 31 - 91
OASystem/OASystem.Domain/Dtos/PersonnelModule/WageSheetDto.cs

@@ -74,34 +74,29 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         public string? EndDate { get; set; }
 
         /// <summary>
-        /// 基本工资
+        /// 应出勤天数
         /// </summary>
-        public decimal Basic { get; set; }
+        public int WorkDays { get; set; }
 
         /// <summary>
-        /// 绩效工资
+        /// 正常出勤天数
         /// </summary>
-        public decimal Floats { get; set; }
-
-        /// <summary>
-        /// 岗位津贴
-        /// </summary>
-        public decimal PostAllowance { get; set; }
+        public int RegularDays { get; set; }
 
         /// <summary>
-        /// 服装洗理补贴
+        /// 基本工资
         /// </summary>
-        public decimal GarmentWashSubsidies { get; set; }
+        public decimal Basic { get; set; }
 
         /// <summary>
-        /// 通讯补贴
+        /// 绩效工资
         /// </summary>
-        public decimal CommunicationSubsidies { get; set; }
+        public decimal Floats { get; set; }
 
         /// <summary>
-        /// 交通补
+        /// 岗位津
         /// </summary>
-        public decimal TrafficSubsidies { get; set; }
+        public decimal PostAllowance { get; set; }
 
         /// <summary>
         /// 保密费
@@ -109,40 +104,26 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         public decimal InformationSecurityFee { get; set; }
 
         /// <summary>
-        /// 操作奖金
-        /// </summary>
-        public decimal OperationBonus { get; set; }
-
-        /// <summary>
-        /// 特殊津贴
+        /// 月度补贴/其他补贴
         /// </summary>
-        public decimal SpecialAllowance { get; set; }
+        public decimal OtherSubsidies { get; set; }
 
         /// <summary>
-        /// 其他补贴
+        /// 餐补
         /// </summary>
-        public decimal OtherSubsidies { get; set; }
+        public decimal Mealsupplement { get; set; }
 
         /// <summary>
         /// 代扣保险
         /// </summary>
         public decimal WithholdingInsurance { get; set; }
 
-        /// <summary>
-        /// 餐补
-        /// </summary>
-        public decimal Mealsupplement { get; set; }
-
         /// <summary>
         /// 代扣公积金
         /// </summary>
         public decimal ReservedFunds { get; set; }
 
-
-        /// <summary>
-        /// 部门集体团建费
-        /// </summary>
-        public decimal GroupCost { get; set; }
+        /// <summary>
        /// 代扣公积金
        /// </summary>                                     
        public decimal WithholdingTax { get; set; }
 
         /// <summary>
         /// 病假
@@ -187,32 +168,6 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public string? Ex_ItemsRemark { get; set; }
 
-        /// <summary>
-        /// 应发合计
-        /// </summary>
-        public decimal Should { get; set; }
-
-        /// <summary>
-        /// 扣款合计
-        /// </summary>
-        public decimal TotalDeductions { get; set; }
-
-        /// <summary>
-        /// 实发合计
-        /// </summary>
-        public decimal TotalRealHair { get; set; }
-
-        /// <summary>
-        /// 代扣个税
-        /// </summary>
-        public decimal WithholdingTax { get; set; }
-
-        /// <summary>
-        /// 税后工资
-        /// </summary>
-        public decimal AfterTax { get; set; }
-
-
     }
 
     /// <summary>
@@ -243,8 +198,21 @@ namespace OASystem.Domain.Dtos.PersonnelModule
 
         /// <summary>
         /// 年月
+        /// eg 2023-10
         /// </summary>
         public string? yearMonth { get; set; }
+
+        /// <summary>
+        ///开始日期
+        /// eg 2023-10-01
+        /// </summary>
+        public string? startDt { get; set; }
+
+        /// <summary>
+        /// 结束日期
+        /// eg 2023-10-01
+        /// </summary>
+        public string? endDt { get; set; }
     }
 
     /// <summary>
@@ -287,38 +255,13 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public decimal PostAllowance { get; set; }
 
-        /// <summary>
-        /// 服装洗理补贴
-        /// </summary>
-        public decimal GarmentWashSubsidies { get; set; }
-
-        /// <summary>
-        /// 通讯补贴
-        /// </summary>
-        public decimal CommunicationSubsidies { get; set; }
-
-        /// <summary>
-        /// 交通补贴
-        /// </summary>
-        public decimal TrafficSubsidies { get; set; }
-
         /// <summary>
         /// 保密费
         /// </summary>
         public decimal InformationSecurityFee { get; set; }
 
         /// <summary>
-        /// 操作奖金
-        /// </summary>
-        public decimal OperationBonus { get; set; }
-
-        /// <summary>
-        /// 特殊津贴
-        /// </summary>
-        public decimal SpecialAllowance { get; set; }
-
-        /// <summary>
-        /// 其他补贴
+        /// 月度补贴/其他补贴
         /// </summary>
         public decimal OtherSubsidies { get; set; }
 
@@ -327,11 +270,6 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// </summary>
         public decimal Mealsupplement { get; set; }
 
-        /// <summary>
-        /// 部门集体团建费
-        /// </summary>
-        public decimal GroupCost { get; set; }
-
         /// <summary>
         /// 个税
         /// </summary>
@@ -344,4 +282,6 @@ namespace OASystem.Domain.Dtos.PersonnelModule
         /// <summary>
        /// 其他扣款
        /// </summary>                                 
        public decimal OtherDeductions { get; set; }
 
     }
+
+   
 }

+ 5 - 4
OASystem/OASystem.Domain/Dtos/UserDto/RegisterDto.cs

@@ -15,7 +15,7 @@ namespace OASystem.Domain.Dtos.UserDto
         /// <summary>
         /// 申请注册UserId
         /// </summary>
-        public int CreateUserId { get; set; }
+        public int CreateUserId { get; set; } = 0;
 
         /// <summary>
         /// 中文名
@@ -51,12 +51,12 @@ namespace OASystem.Domain.Dtos.UserDto
         /// <summary>
         /// 密码
         /// </summary>
-        public int Password { get; set; }
+        public string? Password { get; set; }
 
         /// <summary>
         /// 现在居住住址
         /// </summary>
-        public string Address { get; set; }
+        public string? Address { get; set; }
 
         /// <summary>
         /// 身份证号
@@ -83,6 +83,7 @@ namespace OASystem.Domain.Dtos.UserDto
         /// <summary>
         /// 教育类型
         /// 统招/成教
+        /// 0 统招  1 成教
         /// </summary>
         public int EducationType { get; set; }
 
@@ -120,6 +121,6 @@ namespace OASystem.Domain.Dtos.UserDto
         /// <summary>
         /// 入职时间
         /// </summary>
-        public DateTime Edate  { get; set; }
+        public string? Edate  { get; set; }
     }
 }

+ 33 - 20
OASystem/OASystem.Domain/Entities/PersonnelModule/Pm_WageSheet.cs

@@ -37,12 +37,30 @@ namespace OASystem.Domain.Entities.PersonnelModule
         [SugarColumn(IsNullable = true, ColumnDataType = "varchar(50)")]
         public string? EndDate { get; set; }
 
+        /// <summary>
+        /// 当月应出勤天数
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int WorkDays { get; set; }
+
+        /// <summary>
+        /// 正常出勤天数
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "int")]
+        public int RegularDays { get; set; }
+
         /// <summary>
         /// 基本工资
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal Basic { get; set; }
 
+        /// <summary>
+        /// 岗位津贴
+        /// </summary>
+        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
+        public decimal PostAllowance { get; set; }
+
         /// <summary>
         /// 绩效工资
         /// </summary>
@@ -50,66 +68,61 @@ namespace OASystem.Domain.Entities.PersonnelModule
         public decimal Floats { get; set; }
 
         /// <summary>
-        /// 岗位津贴
+        /// 保密费
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
-        public decimal PostAllowance { get; set; }
+        public decimal InformationSecurityFee { get; set; }
 
         /// <summary>
-        /// 服装洗理补贴
+        /// 服装洗理补贴 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal GarmentWashSubsidies { get; set; }
 
         /// <summary>
-        /// 通讯补贴
+        /// 通讯补贴 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal CommunicationSubsidies { get; set; }
 
         /// <summary>
-        /// 交通补贴
+        /// 交通补贴 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal TrafficSubsidies { get; set; }
 
-        /// <summary>
-        /// 保密费
-        /// </summary>
-        [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
-        public decimal InformationSecurityFee { get; set; }
+
 
         /// <summary>
-        /// 操作奖金
+        /// 操作奖金 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal OperationBonus { get; set; }
 
         /// <summary>
-        /// 过节费
-        /// 不纳入计算日工资
+        /// 过节费 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal SpecialAllowance { get; set; } = 0.00M;
 
         /// <summary>
-        /// 其他补贴
+        /// 月度补贴/其他补贴
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal OtherSubsidies { get; set; }
 
         /// <summary>
-        /// 代扣保险
+        /// 餐补
+        /// 不纳入日工资计算
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
-        public decimal WithholdingInsurance { get; set; }
+        public decimal Mealsupplement { get; set; }
 
         /// <summary>
-        /// 餐补
-        /// 不纳入日工资计算
+        /// 代扣保险
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
-        public decimal Mealsupplement { get; set; }
+        public decimal WithholdingInsurance { get; set; }
 
         /// <summary>
         /// 代扣公积金
@@ -118,7 +131,7 @@ namespace OASystem.Domain.Entities.PersonnelModule
         public decimal ReservedFunds { get; set; }
 
         /// <summary>
-        /// 部门集体团建费
+        /// 部门集体团建费 弃用
         /// </summary>
         [SugarColumn(IsNullable = true, ColumnDataType = "decimal(8,2)")]
         public decimal GroupCost { get; set; }

+ 0 - 1
OASystem/OASystem.Domain/Entities/System/Sys_Users.cs

@@ -157,7 +157,6 @@ namespace OASystem.Domain.Entities.System
         [SugarColumn(IsNullable = true,ColumnDataType ="int")]
         public int HrAudit { get; set; }
 
-
     }
 
     #region 附加字段

+ 170 - 65
OASystem/OASystem.Domain/ViewModels/PersonnelModule/WageSheetView.cs

@@ -49,76 +49,57 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         public string? EndDate { get; set; }
 
         /// <summary>
-        /// 基本工资
+        /// 应出勤天数
         /// </summary>
-        public decimal Basic { get; set; }
+        public int WorkDays { get; set; }
 
         /// <summary>
-        /// 绩效工资
+        /// 正常出勤天数
         /// </summary>
-        public decimal Floats { get; set; }
+        public int RegularDays { get; set; }
 
-        /// <summary>
-        /// 岗位津贴
-        /// </summary>
-        public decimal PostAllowance { get; set; }
 
         /// <summary>
-        /// 服装洗理补贴
+        /// 基本工资
         /// </summary>
-        public decimal GarmentWashSubsidies { get; set; }
+        public decimal Basic { get; set; }
 
         /// <summary>
-        /// 通讯补贴
+        /// 绩效工资
         /// </summary>
-        public decimal CommunicationSubsidies { get; set; }
+        public decimal Floats { get; set; }
 
         /// <summary>
-        /// 交通补
+        /// 岗位津
         /// </summary>
-        public decimal TrafficSubsidies { get; set; }
+        public decimal PostAllowance { get; set; }
 
         /// <summary>
         /// 保密费
         /// </summary>
         public decimal InformationSecurityFee { get; set; }
 
-        /// <summary>
-        /// 操作奖金
-        /// </summary>
-        public decimal OperationBonus { get; set; }
 
         /// <summary>
-        /// 特殊津
+        /// 月度补贴/其他补贴
         /// </summary>
-        public decimal SpecialAllowance { get; set; }
+        public decimal OtherSubsidies { get; set; }
 
         /// <summary>
-        /// 其他补贴
+        /// 餐补
         /// </summary>
-        public decimal OtherSubsidies { get; set; }
+        public decimal Mealsupplement { get; set; }
 
         /// <summary>
         /// 代扣保险
         /// </summary>
         public decimal WithholdingInsurance { get; set; }
 
-        /// <summary>
-        /// 餐补
-        /// </summary>
-        public decimal Mealsupplement { get; set; }
-
         /// <summary>
         /// 代扣公积金
         /// </summary>
         public decimal ReservedFunds { get; set; }
 
-
-        /// <summary>
-        /// 部门集体团建费
-        /// </summary>
-        public decimal GroupCost { get; set; }
-
         /// <summary>
         /// 病假
         /// </summary>
@@ -185,11 +166,6 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public decimal AfterTax { get; set; }
 
-        ///// <summary>
-        ///// 锁定标识
-        ///// </summary>
-        //public decimal IsLock { get; set; }
-
         /// <summary>
         /// 最后操作人
         /// </summary>
@@ -214,6 +190,30 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
 
     public class WageSheetItemInfoView
     {
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int Row_Number { get; set; }
+
+        /// <summary>
+        /// 公司Id
+        /// </summary>
+        public int CompanyId { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string? CompanyName { get; set; }
+
+        /// <summary>
+        /// 部门Id
+        /// </summary>
+        public int DepId { get; set; }
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string? DepName { get; set; }
+
         /// <summary>
         /// 
         /// </summary>
@@ -234,6 +234,16 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public string? EndDate { get; set; }
 
+        /// <summary>
+        /// 应出勤天数
+        /// </summary>
+        public int WorkDays { get; set; }
+
+        /// <summary>
+        /// 正常出勤天数
+        /// </summary>
+        public int RegularDays { get; set; }
+
         /// <summary>
         /// 员工Id
         /// </summary>
@@ -259,32 +269,6 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public string? Ex_ItemsRemark { get; set; }
 
-        ///// <summary>
-        ///// 假勤  / 打卡补卡 明细 对象
-        ///// </summary>
-        //public List<Ex_Items>? Ex_Items
-        //{
-        //    get;set;
-        //}
-
-        ///// <summary>
-        ///// 假勤  / 打卡补卡 明细 对象
-        ///// </summary>
-        //public List<Ex_Items>? Ex_Items
-        //{
-        //    get
-        //    {
-        //        List<Ex_Items>? data = new List<Ex_Items>();
-
-        //        if (!string.IsNullOrEmpty(Ex_ItemsRemark))
-        //        {
-        //            data = JsonConvert.DeserializeObject<List<Ex_Items>>(Ex_ItemsRemark);
-        //        }
-
-        //        return data;
-        //    }
-        //}
-
         /// <summary>
         /// 实发合计
         /// </summary>
@@ -295,6 +279,17 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// </summary>
         public decimal WithholdingTax { get; set; }
 
+        /// <summary>
+        /// 税前合计
+        /// </summary>
+        public decimal BeforeTax
+        {
+            get
+            {
+                return WithholdingTax + AfterTax;
+            }
+        }
+
         /// <summary>
         /// 税后工资
         /// </summary>
@@ -317,6 +312,91 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
     }
 
 
+    public class ExportWageSheetItemView:Pm_WageSheet
+    {
+        
+        /// <summary>
+        /// 公司Id
+        /// </summary>
+        public int CompanyId { get; set; }
+
+        /// <summary>
+        /// 公司名称
+        /// </summary>
+        public string? CompanyName { get; set; }
+
+        /// <summary>
+        /// 部门Id
+        /// </summary>
+        public int DepId { get; set; }
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string? DepName { get; set; }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 年月
+        /// </summary>
+        public string? YearMonth { get; set; }
+
+        /// <summary>
+        /// 工资日期 起
+        /// </summary>
+        public string? StartDate { get; set; }
+
+        /// <summary>
+        /// 工资日期 止
+        /// </summary>
+        public string? EndDate { get; set; }
+
+        /// <summary>
+        /// 应出勤天数
+        /// </summary>
+        public int WorkDays { get; set; }
+
+        /// <summary>
+        /// 员工Id
+        /// </summary>
+        public int UserId { get; set; }
+
+        /// <summary>
+        /// 员工Name
+        /// </summary>
+        public string? Name { get; set; }
+
+
+        /// <summary>
+        /// 税前合计
+        /// </summary>
+        public decimal BeforeTax
+        {
+            get
+            {
+                return WithholdingTax + AfterTax;
+            }
+        }
+
+        /// <summary>
+        /// 最后操作人
+        /// </summary>
+        public int LastUpdateUserId { get; set; }
+
+        /// <summary>
+        /// 员工Name
+        /// </summary>
+        public string? LastUpdateUserName { get; set; }
+
+        /// <summary>
+        /// 最后操作时间
+        /// </summary>
+        public DateTime? LastUpdateDt { get; set; }
+    }
+
     /// <summary>
     /// 工资列表信息
     /// </summary>
@@ -374,7 +454,7 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
         /// <summary>
         /// 请假时长,单位小时
         /// </summary>
-        public string unit { get; set; } = "小时";
+        public string Unit { get; set; } = "小时";
 
         /// <summary>
         /// 请假事由
@@ -393,4 +473,29 @@ namespace OASystem.Domain.ViewModels.PersonnelModule
     }
 
     #endregion
+
+    #region 法定节假日
+
+    public class HoliDaysDataSourceView
+    {
+        /// <summary>
+        /// 年
+        /// </summary>
+        public string Year { get; set; }
+
+        public List<HolidaysInfo> Holidays { get; set; }
+    }
+    public class HolidaysInfo
+    {
+        /// <summary>
+        /// 节假日期
+        /// </summary>
+        public string HoliDate { get; set; }
+
+        /// <summary>
+        /// 节假日 
+        /// </summary>
+        public string HoliName { get; set; }
+    }
+    #endregion
 }

+ 3 - 0
OASystem/OASystem.Domain/ViewModels/QiYeWeChat/ApprovalDataView.cs

@@ -316,6 +316,8 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
     /// </summary>
     public class Value
     {
+        public string? text { get; set; }
+
         /// <summary>
         /// 此控件不显示在审批详情中,故value为空
         /// </summary>
@@ -358,6 +360,7 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
         /// 关联审批单的模板
         /// </summary>
         public List<Related_Approval> related_approval { get; set; }
+
         ///// <summary>
         ///// 
         ///// </summary>

+ 1 - 1
OASystem/OASystem.Domain/ViewModels/QiYeWeChat/CheckInDayDataView.cs

@@ -206,7 +206,7 @@ namespace OASystem.Domain.ViewModels.QiYeWeChat
         /// <summary>
         /// 
         /// </summary>
-        public List<string> exception_duration { get; set; }
+        public List<long>? exception_duration { get; set; }
     }
 
     public class Sp_itemsItem

+ 18 - 0
OASystem/OASystem.Domain/ViewModels/System/DepartmentView.cs

@@ -47,4 +47,22 @@ namespace OASystem.Domain.ViewModels.System
         /// </summary>
         public string Remark { get; set; }
     }
+    public class DepartmentView
+    {
+        /// <summary>
+        /// id
+        /// </summary>
+        public int Id { get; set; }
+
+        /// <summary>
+        /// 公司Id
+        /// </summary>
+        public int CompanyId { get; set; }
+
+        /// <summary>
+        /// 部门名称
+        /// </summary>
+        public string? DepName { get; set; }
+
+    }
 }

+ 48 - 6
OASystem/OASystem.Infrastructure/Repositories/Login/LoginRepository.cs

@@ -13,7 +13,8 @@ namespace OASystem.Infrastructure.Repositories.Login
 {
     public class LoginRepository : BaseRepository<Sys_Users, LoginView>
     {
-        public LoginRepository(SqlSugarClient sqlSugar) : 
+
+        public LoginRepository(SqlSugarClient sqlSugar, UsersRepository usersRep) : 
             base(sqlSugar){}
 
         /// <summary>
@@ -94,19 +95,22 @@ namespace OASystem.Infrastructure.Repositories.Login
         /// <param name="_loginRep"></param>
         /// <param name="registerDto"></param>
         /// <returns></returns>
-        public async Task<Result> Register(LoginRepository _loginRep, RegisterDto registerDto)
+        public async Task<Result> Register( RegisterDto registerDto)
         {
             Result result = new Result();
 
             string IdCrad = registerDto.IdCrad;
             string birthDay = IdCrad.Substring(6, 4) + "-" + IdCrad.Substring(10, 2) + "-" + IdCrad.Substring(12, 2);
 
+            string number = await CreateNumber(registerDto.DepId);
+
             Sys_Users _userInfo = new Sys_Users()
             {
                 CnName = registerDto.CnName,
                 EnName = registerDto.EnName,
                 Sex = registerDto.Sex,
-                Number = "",    //员工编号 人事审核通过了 由信息部经理分配
+                Number = number,    //员工编号 人事审核通过了 由信息部经理分配
+                Password = registerDto.Password, //密码由用户自己设置
                 CompanyId = registerDto.CompanyId,
                 DepId = registerDto.DepId,
                 JobPostId = registerDto.JobPostId,
@@ -115,7 +119,7 @@ namespace OASystem.Infrastructure.Repositories.Login
                 UrgentPhone = registerDto.UrgencyPhone,
                 Email = registerDto.Email,
                 Address = registerDto.Address,
-                Edate = DateTime.Now,  //入职时间默认当前数据提交时间
+                Edate = Convert.ToDateTime(registerDto.Edate),  //入职时间默认当前数据提交时间
                 Rdate = new DateTime(1990, 1, 1),  //离职时间默认最原始时间
                 Seniority = 0, //工龄默认 0
                 Birthday = Convert.ToDateTime(birthDay),
@@ -126,6 +130,7 @@ namespace OASystem.Infrastructure.Repositories.Login
                 Education = registerDto.Education, //学历类型
                 TheOrAdultEducation = registerDto.EducationType, //教育类型
                 MaritalStatus = registerDto.MaritalStatus, // 未婚/已婚
+                WorkExperience = registerDto.WorkExperience, // 工作经历
                 HomeAddress = registerDto.HomeAddress,  //身份证上 家庭住址
                 UsePeriod = "", //试用期 由该人员入职部门主管手动操作
                 Certificate = "", //证件上传地址  多个证件由 | 隔开
@@ -136,7 +141,8 @@ namespace OASystem.Infrastructure.Repositories.Login
                 Remark = "",         //备注
                 IsDel = 0
             };
-            var _AddId = await _loginRep.AddAsyncReturnId(_userInfo);
+
+            var _AddId = await _sqlSugar.Insertable(_userInfo).ExecuteReturnIdentityAsync();
             if (_AddId < 0)
             {
                 result.Code = -2;
@@ -145,10 +151,46 @@ namespace OASystem.Infrastructure.Repositories.Login
                 return result;
             }
 
+            _userInfo.CreateUserId = _AddId;
+
+            var updateStatus = await _sqlSugar.Updateable(_userInfo).UpdateColumns(it => new { it.CreateUserId }).Where(it => it.Id == _AddId).ExecuteCommandAsync();
+
+
             result.Code = 0;
-            result.Msg = "申请成功!人事主管审核后且信息部经理分配了登录账号,可登录OA!";
+            //result.Msg = string.Format("账号:{0}\r\n密码:{1}\r\n申请成功!\r\n人事主管审核后,即可登录OA!", number, registerDto.Password);
+            result.Msg = string.Format("账号:{0}\r\n申请成功!\r\n人事主管审核后,即可登录OA!", number);
             return result;
         }
+        
+        /// <summary>
+        /// 生成 Number
+        /// </summary>
+        /// <param name="depId"></param>
+        /// <returns></returns>
+        public async Task<string> CreateNumber(int depId) {
+            string number = string.Empty;
+
+            string userSql = string.Format("Select * From  Sys_Users Where DepId = {0} And Number != '' Order By Id Desc", depId);
+            var userData = await _sqlSugar.SqlQueryable<Sys_Users>(userSql).ToListAsync();
+            if (userData.Count <= 0) return number;
+
+            string depSql = string.Format("Select * From  Sys_Department Where IsDel= 0 And Id = {0} ", depId);
+            var depData = await _sqlSugar.SqlQueryable<Sys_Department>(depSql).FirstAsync();
+            if (depData == null) return number;
+
+            string numPrefix = depData.Remark; 
+            if (string.IsNullOrEmpty(numPrefix)) return number;
 
+            int numSuffix = 1;
+            while (true) 
+            {
+                number = numPrefix + numSuffix.ToString();
+                var userData1 = userData.Where(it => it.Number == number).FirstOrDefault();
+                if (userData1 == null) break;
+                numSuffix++;
+            }
+
+            return number;
+        }
     }
 }

+ 28 - 27
OASystem/OASystem.Infrastructure/Repositories/PersonnelModule/WageSheetRepository.cs

@@ -40,12 +40,24 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 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.UserId,pm_ws.Should,
-                                         pm_ws.TotalDeductions,pm_ws.Ex_ItemsRemark,TotalRealHair,pm_ws.WithholdingTax,pm_ws.AfterTax
+            //不含公司部门
+            // 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.Id) 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}'", yearMonth);
             var wageSheetList = await _sqlSugar.SqlQueryable<WageSheetItemInfoView>(sql).ToListAsync();
 
@@ -54,18 +66,7 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
                 _result.Msg = "暂无数据!";
                 return _result;
             }
-            //wageSheetList = wageSheetList.Select(it => {
-
-            //    if (!string.IsNullOrEmpty(it.Ex_ItemsRemark))
-            //    {
-            //        List<Ex_Items>? data = new List<Ex_Items>();
-            //        data = JsonConvert.DeserializeObject<List<Ex_Items>>(it.Ex_ItemsRemark);
-            //        it.Ex_Items = data;
-            //    }
-
-            //    return it;
-                
-            //}).ToList();   
+
             _result.Code = 0;
             _result.Msg = "查询成功!";
             _result.Data = wageSheetList;
@@ -107,16 +108,16 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
             #region 计算工资
 
-            //应发合计 //计算日工资
-            decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.GarmentWashSubsidies + pm_WageSheet.CommunicationSubsidies + pm_WageSheet.GroupCost +
-                             pm_WageSheet.TrafficSubsidies + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OperationBonus + pm_WageSheet.OtherSubsidies;
+            //应发合计 
+            decimal salary = pm_WageSheet.Basic + pm_WageSheet.Floats + pm_WageSheet.PostAllowance + pm_WageSheet.InformationSecurityFee + pm_WageSheet.OtherSubsidies;
             //扣款合计
             decimal totalDeduction = pm_WageSheet.SickLeave + pm_WageSheet.SomethingFalse + pm_WageSheet.LateTo + pm_WageSheet.LeaveEarly + pm_WageSheet.Absenteeism + pm_WageSheet.NotPunch +
                                      pm_WageSheet.ReservedFunds + pm_WageSheet.WithholdingInsurance + pm_WageSheet.OtherDeductions + pm_WageSheet.OtherDeductions;
 
             //实发合计 不含个税
+            salary = salary + pm_WageSheet.Mealsupplement;
             decimal actualTotal = salary - totalDeduction;
-            pm_WageSheet.Should = salary + pm_WageSheet.SpecialAllowance + pm_WageSheet.Mealsupplement;
+            pm_WageSheet.Should = salary ;
             pm_WageSheet.TotalDeductions = totalDeduction;
             pm_WageSheet.TotalRealHair = actualTotal;
             pm_WageSheet.AfterTax = actualTotal - pm_WageSheet.WithholdingTax;
@@ -126,14 +127,14 @@ namespace OASystem.Infrastructure.Repositories.PersonnelModule
 
             if (dto.Status == 1) //添加
             {
-                var select = await _sqlSugar.Queryable<Pm_WageSheet>().
-                    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;
-                }
+                //var select = await _sqlSugar.Queryable<Pm_WageSheet>().
+                //    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)

+ 1 - 1
OASystem/OASystem.Infrastructure/Repositories/System/UsersRepository.cs

@@ -115,7 +115,7 @@ namespace OASystem.Infrastructure.Repositories.System
 
             if (portType == 1 || portType == 2) //web
             {
-                string sql = string.Format(@"Select Id,CnName From Sys_Users Where Isdel=0");
+                string sql = string.Format(@"Select Id,CnName From Sys_Users Where Isdel=0 And HrAudit = 1");
                 var _userList = await _sqlSugar.SqlQueryable<UserNameView>(sql).ToListAsync();
 
                 if (_userList.Count != 0)