username@email.com
2022-03-30 a93ed58ca6aa82a8fe0adeb15f3a38f873bf2754
zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
@@ -50,6 +50,7 @@
        private readonly IHttpClientFactory _clientFactory;
        private readonly IAskService _askService;
        private readonly IAdmEvaluateService _admEvaluateService;
        private readonly IExpertService _expertService;
        private readonly decimal jiabangongzibiaozhun = new decimal(21.5);
        public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory)
@@ -83,6 +84,7 @@
            _clientFactory = factory.CreateScope().ServiceProvider.GetRequiredService<IHttpClientFactory>();
            _askService= factory.CreateScope().ServiceProvider.GetRequiredService<IAskService>();
            _admEvaluateService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmEvaluateService>();
            _expertService = factory.CreateScope().ServiceProvider.GetRequiredService<IExpertService>();
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
@@ -236,14 +238,20 @@
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
            var Month = DateTime.Now.Month - 1;
            var Year = DateTime.Now.Year;
            if (Month == 0)
            {
                Month = 12;
                Year = Year - 1;
            }
            //查询所有的有效人员
            List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1), new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1).AddMonths(1));//.Where(x => x.UserSn == "yang").ToList();
            List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(Year, Month, 1), new DateTime(Year, Month, 1).AddMonths(1));//.Where(x => x.UserSn == "yang").ToList();
            for (int a = 0; a < userList.Count; a++)
            {
                _logger.LogInformation("开始计算" + userList[a].UserName + "考勤");
                //开始计算考勤
                DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1);
                DateTime dateminkaoqin = new DateTime(Year, Month, 1);
                DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1);
                List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[a].Id);
                List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[a].Id);
@@ -627,7 +635,7 @@
                        //计算当天请假
                        List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>();
                        var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3").ToList();
                        var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").ToList();
                        foreach (var admAskLeave in feichuqinjia)
                        {
                            
@@ -1020,7 +1028,7 @@
                            //计算当天请假
                            List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>();
                            var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3").ToList();
                            var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").ToList();
                            foreach (var admAskLeave in feichuqinjia)
                            {
@@ -1296,8 +1304,15 @@
        //计算工资
        public async Task jisuangongziAsync()
        {
            var Month = DateTime.Now.Month - 1;
            var Year = DateTime.Now.Year;
            if (Month == 0)
            {
                Month = 12;
                Year = Year - 1;
            }
            //查询所有的有效人员
            DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 1);
            DateTime dateminkaoqin = new DateTime(Year, Month, 1);
            DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1);
            List<PltUserDTO> userList = _userService.GetListjisuankaoqin(dateminkaoqin, datemaxkaoqin);//.Where(x => x.UserSn == "yang").ToList();
            List<HrJibengongziDTO> hrJibengongziDTOs = _JibengongziService.GetList().Where(x=>  x.Effecttime < datemaxkaoqin).ToList();
@@ -3452,6 +3467,53 @@
                    #endregion
                    #region 专家录入
                    var zhuanjialuruDTOsyue = _expertService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (zhuanjialuruDTOsyue != null && zhuanjialuruDTOsyue.Count > 0)
                    {
                        var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "专家录入").FirstOrDefault();
                        if (jijianidddd != null)
                        {
                            var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
                            if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
                            {
                                if (jixiaotichengfangan.Renwustandard == "01")
                                {
                                    decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                    if (jixiaotichengfangan.Tichengstandard == "01")
                                    {
                                        decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                                else if (jixiaotichengfangan.Renwustandard == "02")
                                {
                                    decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                    if (jixiaotichengfangan.Tichengstandard == "01")
                                    {
                                        decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                }