username@email.com
2021-06-25 77f8f99697748749edd553b127de34b02ccb18c5
zhengcaioa/zhengcaioa/Timer/TimedBackgroundService.cs
@@ -1,20 +1,62 @@
using Microsoft.Extensions.Hosting;
using DTO;
using IServices;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Transactions;
using zhengcaioa.IService;
using zhengcaioa.Models;
namespace zhengcaioa.Timer
{
    public class TimedBackgroundService : BackgroundService
    {
        private readonly ILogger _logger;
        private readonly IAdmAttendanceRuleService _attendanceRuleService;
        private readonly IUserService _userService;
        private readonly IAdmSigninService _signinService;
        private readonly IAdmAttendanceService _admAttendanceService;
        private readonly IAdmAttendanceDtlService _admAttendanceDtlService;
        private readonly IHrSalaryService _hrSalaryService;
        private readonly IHrJibengongziService _JibengongziService;
        private readonly ISimService _simService;
        private readonly IDailyManagementService _DailyManageService;
        private readonly IAdmBreakPrecedentService _admBreakPrecedentService;
        private readonly IHrJixiaotichengService _hrJixiaotichengService;
        private readonly IFiPiecerateService _fiPiecerateService;
        private readonly IAdmPieceCheckService _admPieceCheckService;
        private readonly ICooperOrderService _cooperOrderService;
        private readonly ICooperatecustomCustomerService _cooperatecustomCustomerService;
        private readonly IGroupTopicService _groupTopicService;
        private readonly ICooperVisitService _cooperVisitService;
        public TimedBackgroundService(ILogger<TimedBackgroundService> logger)
        private readonly decimal jiabangongzibiaozhun = new decimal(21.5);
        public TimedBackgroundService(ILogger<TimedBackgroundService> logger, IServiceScopeFactory factory)
        {
            _logger = logger;
            _attendanceRuleService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceRuleService>();
            _userService = factory.CreateScope().ServiceProvider.GetRequiredService<IUserService>();
            _signinService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmSigninService>();
            _admAttendanceService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceService>();
            _admAttendanceDtlService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmAttendanceDtlService>();
            _hrSalaryService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrSalaryService>();
            _JibengongziService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJibengongziService>();
            _simService = factory.CreateScope().ServiceProvider.GetRequiredService<ISimService>();
            _DailyManageService = factory.CreateScope().ServiceProvider.GetRequiredService<IDailyManagementService>();
            _admBreakPrecedentService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmBreakPrecedentService>();
            _hrJixiaotichengService = factory.CreateScope().ServiceProvider.GetRequiredService<IHrJixiaotichengService>();
            _fiPiecerateService = factory.CreateScope().ServiceProvider.GetRequiredService<IFiPiecerateService>();
            _admPieceCheckService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmPieceCheckService>();
            _cooperOrderService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperOrderService>();
            _cooperatecustomCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperatecustomCustomerService>();
            _groupTopicService = factory.CreateScope().ServiceProvider.GetRequiredService<IGroupTopicService>();
            _cooperVisitService = factory.CreateScope().ServiceProvider.GetRequiredService<ICooperVisitService>();
        }
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
@@ -25,8 +67,43 @@
            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogInformation("MyServiceA 开始执行");
                //每天的0点开始计算
                if (DateTime.Now.Hour == 0)
                //if (true)
                {
                    try
                    {
                        DateTime diwutian = this.diwugongzuori();
                        //第五个工作日结束后开始计算
                        if (DateTime.Now.Date == diwutian.AddDays(1))
                        //if (true)
                        {
                            try
                            {
                                //using (TransactionScope scope = new TransactionScope())
                                //{
                                    this.jisuankaoqin();
                                    this.jisuangongzi();
                                    //scope.Complete();
                                //}
                await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
                            }
                            catch (Exception ex)
                            {
                                _logger.LogInformation(ex.ToString());
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        _logger.LogInformation(ex.ToString());
                    }
                }
                await Task.Delay(TimeSpan.FromMinutes(59), stoppingToken);
                _logger.LogInformation("继续执行");
            }
@@ -38,5 +115,2649 @@
        {
            base.Dispose();
        }
        //计算第五个工作日
        public DateTime diwugongzuori()
        {
            var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList("");
            AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get("");
            var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList();
            var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList();
            //获取本月的第五个工作日日期。
            DateTime datemin = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
            DateTime datemax = datemin.AddMonths(1);
            _logger.LogInformation("datemin" + datemin);
            _logger.LogInformation("datemax" + datemax);
            DateTime diwutian = DateTime.MinValue;
            int i = 0;
            while (datemin < datemax)
            {
                //是否上班日期
                if ((int)datemin.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)datemin.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                {
                    //是否节假日
                    if (jiejiari.Exists(x => x.ValueStart <= datemin && x.ValueEnd >= datemin))
                    {
                    }
                    else
                    {
                        i += 1;
                    }
                }
                else
                {
                    //是否调休日  调休日需要上班
                    if (tiaoxiuri.Exists(x => x.ValueStart <= datemin && x.ValueEnd >= datemin))
                    {
                        i += 1;
                    }
                    else
                    {
                    }
                }
                if (i == 5)
                {
                    diwutian = datemin;
                    break;
                }
                datemin = datemin.AddDays(1);
            }
            _logger.LogInformation("diwutian" + diwutian);
            _logger.LogInformation("DateTime.Now" + DateTime.Now.Date);
            return diwutian;
        }
        //计算考勤
        public void jisuankaoqin()
        {
            var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList("");
            AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get("");
            var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList();
            var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList();
            //每天的考勤时间点
            string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.');
            int WorkingStarthour = int.Parse(WorkingStart[0]);
            int WorkingStartmin = int.Parse(WorkingStart[1]);
            string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.');
            int WorkingEndhour = int.Parse(WorkingEnd[0]);
            int WorkingEndmin = int.Parse(WorkingEnd[1]);
            string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.');
            int OffworkStarthour = int.Parse(OffworkStart[0]);
            int OffworkStartmin = int.Parse(OffworkStart[1]);
            string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.');
            int OffworkEndhour = int.Parse(OffworkEnd[0]);
            int OffworkEndmin = int.Parse(OffworkEnd[1]);
            ResultEntity resultEntity = new ResultEntity();
            resultEntity.Result = false;
            //查询所有的有效人员
            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();
            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 datemaxkaoqin = dateminkaoqin.AddMonths(1);
                List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[a].Id);
                List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[a].Id);
                //插入考勤主表
                AdmAttendanceDTO admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[a].Id, dateminkaoqin.Year, dateminkaoqin.Month);
                if (admAttendanceDTO == null)
                {
                    admAttendanceDTO = new AdmAttendanceDTO();
                    admAttendanceDTO.Userid = userList[a].Id;
                    admAttendanceDTO.Year = dateminkaoqin.Year;
                    admAttendanceDTO.Month = dateminkaoqin.Month;
                    admAttendanceDTO.Yingchuqin = 0;
                    admAttendanceDTO.Offdays = 0;
                    admAttendanceDTO.Shijichuqin = 0;
                    admAttendanceDTO.Qingjia = 0;
                    admAttendanceDTO.Jiaban = 0;
                    admAttendanceDTO.Xiaojia = 0;
                    admAttendanceDTO.Chidao = 0;
                    admAttendanceDTO.Zaotui = 0;
                    admAttendanceDTO.Kuanggong = 0;
                    admAttendanceDTO.Islock = "D";
                    admAttendanceDTO.RecStatus = "A";
                    admAttendanceDTO.Creater = "1";
                    admAttendanceDTO.Modifier = "1";
                    admAttendanceDTO.Createtime = DateTime.Now;
                    admAttendanceDTO.Modifytime = admAttendanceDTO.Createtime;
                     resultEntity   =   _admAttendanceService.save(admAttendanceDTO);
                    if(resultEntity.Result == false)
                    {
                        throw new Exception("计算失败");
                    }
                }
                int Yingchuqin = 0;
                int Offdays = 0;
                decimal Shijichuqin = 0;
                decimal Qingjia = 0;
                decimal Jiaban = 0;
                decimal Chidao = 0;
                decimal Zaotui = 0;
                decimal Kuanggong = 0;
                decimal Xiaojia = 0;
                while (dateminkaoqin < datemaxkaoqin)
                {
                    _logger.LogInformation("dateminkaoqin " + dateminkaoqin);
                    bool iswork = false;
                    //是否上班日期
                    if ((int)dateminkaoqin.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateminkaoqin.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                    {
                        //是否节假日
                        if (jiejiari.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin))
                        {
                            Offdays += 1;
                        }
                        else
                        {
                            Yingchuqin += 1;
                            iswork = true;
                        }
                    }
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= dateminkaoqin.Date && x.ValueEnd >= dateminkaoqin.Date))
                        {
                            Yingchuqin += 1;
                            iswork = true;
                        }
                        else
                        {
                            Offdays += 1;
                        }
                    }
                    if(userList[a].Outdate.HasValue && dateminkaoqin >=userList[a].Outdate   )
                    {
                        dateminkaoqin = dateminkaoqin.AddDays(1);
                        continue;
                    }
                    if (userList[a].Indate.HasValue && dateminkaoqin < userList[a].Indate)
                    {
                        dateminkaoqin = dateminkaoqin.AddDays(1);
                        continue;
                    }
                    //判断考勤状态
                    AdmSignInDTO admSignInDTO = _signinService.GetByUserAndDate(userList[a].Id, dateminkaoqin);
                    if (admSignInDTO == null)
                    {
                        admSignInDTO = new AdmSignInDTO();
                    }
                    //查询请假   请假时间不能重叠
                    List<AdmAskLeaveDTO> admAskLeaveDTOMin = admAskLeaveDTOs.Where(x =>x.Lavetype != "2" &&  x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x=>x.Createtime).ToList();
                    //查询销假   销假时间不能重叠
                    List<AdmAskLeaveOffDTO> admAskLeaveOffDTOMin = admAskLeaveOffDTOs.Where(x => x.StratTime < dateminkaoqin.AddDays(1) && x.EndTime > dateminkaoqin).OrderByDescending(x => x.Createtime).ToList();
                    //请假开始时间上班时间
                    DateTime StratTimeWorkingStart = dateminkaoqin.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin);
                    DateTime StratTimeWorkingEnd = dateminkaoqin.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin);
                    DateTime StratTimeOffworkStart = dateminkaoqin.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin);
                    DateTime StratTimeOffworkEnd = dateminkaoqin.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin);
                    //上班时间
                    TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart);
                    TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
                    int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes;
                     decimal Shangwuchidaofenzhong = 0;
                    decimal Xiawuchidaofenzhong = 0;
                    decimal Shangwuzaotuifenzhong = 0;
                    decimal Xiawuzaotuifenzhong = 0;
                    decimal Kuanggongtianshu = 0;
                    decimal dangtianqingjia = 0;
                    decimal dangtianxiaojia = 0;
                    string Iswork = "D";
                    if (iswork)
                    {
                        Iswork = "A";
                    }
                    //是否是工作日
                    if (iswork)
                    {
                        //判断考勤时间的连续性
                        //判断早上是否迟到,判断早上是否早退,早退矿工处理
                        DateTime? starttime = null;
                        DateTime? endttime = null;
                        bool kuanggong = false;
                        List<DateBiJiaoDTO> dateBiJiaoDTOs = new List<DateBiJiaoDTO>();
                        if (admSignInDTO != null && admSignInDTO.MorningIn.HasValue && admSignInDTO.MorningOut.HasValue)
                        {
                            DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                            dateBiJiaoDTO.StartTime = admSignInDTO.MorningIn;
                            dateBiJiaoDTO.EndTime = admSignInDTO.MorningOut;
                            dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                        }
                        foreach (var admAskLeave in admAskLeaveDTOMin)
                        {
                            if(admAskLeave.StratTime< StratTimeWorkingEnd)
                            {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeave.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeave.EndTime;
                                dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                            }
                        }
                        foreach (var admAskLeaveOff in admAskLeaveOffDTOMin)
                        {
                            if (admAskLeaveOff.StratTime < StratTimeWorkingEnd)
                            {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime;
                                dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                            }
                        }
                        dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList();
                        if (dateBiJiaoDTOs.Count == 0)
                        {
                            Kuanggong += new decimal(0.5);
                            Kuanggongtianshu += new decimal(0.5);
                        }
                        else
                        {
                            //判断上午考勤时间是否全覆盖
                            for (int i = 0; i < dateBiJiaoDTOs.Count; i++)
                            {
                                if (i == 0)
                                {
                                    starttime = dateBiJiaoDTOs[i].StartTime;
                                    endttime = dateBiJiaoDTOs[i].EndTime;
                                }
                                else
                                {
                                    if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
                                    {
                                        kuanggong = true;
                                        break;
                                    }
                                    else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
                                    {
                                        endttime = dateBiJiaoDTOs[i].EndTime;
                                    }
                                }
                            }
                            if (kuanggong)
                            {
                                Kuanggong += new decimal(0.5);
                                Kuanggongtianshu += new decimal(0.5);
                            }
                            else
                            {
                                decimal shangwukuanggong = 0;
                                if(starttime> StratTimeWorkingStart)
                                {
                                    TimeSpan chidao = starttime.Value.Subtract(StratTimeWorkingStart);
                                    if(chidao.Days>0 ||  ( chidao.Hours*60+ chidao.Minutes) > admAttendanceRuleDTO.Absenteeism)
                                    {
                                        if (shangwukuanggong == 0)
                                        {
                                            shangwukuanggong += new decimal(0.5);
                                            Kuanggong += new decimal(0.5);
                                        }
                                    }
                                    else
                                    {
                                        Chidao += 1;
                                        Shangwuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes;
                                    }
                                }
                                if(shangwukuanggong ==0 && endttime < StratTimeWorkingEnd)
                                {
                                    TimeSpan zaotui = StratTimeWorkingEnd.Subtract(endttime.Value);
                                    if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism)
                                    {
                                        if (shangwukuanggong == 0)
                                        {
                                            shangwukuanggong += new decimal(0.5);
                                            Kuanggong += new decimal(0.5);
                                        }
                                    }
                                    else
                                    {
                                        Zaotui += 1;
                                        Shangwuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes;
                                    }
                                }
                                Kuanggongtianshu += shangwukuanggong;
                            }
                        }
                        //判断下午是否迟到,判断下午是否早退,早退矿工处理
                        starttime = null;
                        endttime = null;
                        kuanggong = false;
                       dateBiJiaoDTOs = new List<DateBiJiaoDTO>();
                        if (admSignInDTO != null && admSignInDTO.AfternoonIn.HasValue && admSignInDTO.AfternoonOut.HasValue)
                        {
                            DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                            dateBiJiaoDTO.StartTime = admSignInDTO.AfternoonIn;
                            dateBiJiaoDTO.EndTime = admSignInDTO.AfternoonOut;
                            dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                        }
                        foreach (var admAskLeave in admAskLeaveDTOMin)
                        {
                            if (admAskLeave.EndTime > StratTimeOffworkStart)
                            {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeave.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeave.EndTime;
                                dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                            }
                        }
                        foreach (var admAskLeaveOff in admAskLeaveOffDTOMin)
                        {
                            if (admAskLeaveOff.EndTime > StratTimeOffworkStart)
                            {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime;
                                dateBiJiaoDTOs.Add(dateBiJiaoDTO);
                            }
                        }
                        dateBiJiaoDTOs = dateBiJiaoDTOs.OrderBy(x => x.StartTime).ToList();
                        if (dateBiJiaoDTOs.Count == 0)
                        {
                            Kuanggong += new decimal(0.5);
                            Kuanggongtianshu += new decimal(0.5);
                        }
                        else
                        {
                            //判断上午考勤时间是否全覆盖
                            for (int i = 0; i < dateBiJiaoDTOs.Count; i++)
                            {
                                if (i == 0)
                                {
                                    starttime = dateBiJiaoDTOs[i].StartTime;
                                    endttime = dateBiJiaoDTOs[i].EndTime;
                                }
                                else
                                {
                                    if (dateBiJiaoDTOs[i].StartTime > dateBiJiaoDTOs[i - 1].EndTime)
                                    {
                                        kuanggong = true;
                                        break;
                                    }
                                    else if (dateBiJiaoDTOs[i].EndTime > dateBiJiaoDTOs[i - 1].EndTime)
                                    {
                                        endttime = dateBiJiaoDTOs[i].EndTime;
                                    }
                                }
                            }
                            if (kuanggong)
                            {
                                Kuanggong += new decimal(0.5);
                                Kuanggongtianshu += new decimal(0.5);
                            }
                            else
                            {
                                decimal xiawuwukuanggong = 0;
                                if (starttime > StratTimeOffworkStart)
                                {
                                    TimeSpan chidao = starttime.Value.Subtract(StratTimeOffworkStart);
                                    if (chidao.Days > 0 || (chidao.Hours * 60 + chidao.Minutes) > admAttendanceRuleDTO.Absenteeism)
                                    {
                                        if (xiawuwukuanggong == 0)
                                        {
                                            xiawuwukuanggong += new decimal(0.5);
                                            Kuanggong += new decimal(0.5);
                                        }
                                    }
                                    else
                                    {
                                        Chidao += 1;
                                        Xiawuchidaofenzhong = chidao.Hours * 60 + chidao.Minutes;
                                    }
                                }
                                if (xiawuwukuanggong == 0 && endttime < StratTimeOffworkEnd)
                                {
                                    TimeSpan zaotui = StratTimeOffworkEnd.Subtract(endttime.Value);
                                    if (zaotui.Days > 0 || (zaotui.Hours * 60 + zaotui.Minutes) > admAttendanceRuleDTO.Absenteeism)
                                    {
                                        if (xiawuwukuanggong == 0)
                                        {
                                            xiawuwukuanggong += new decimal(0.5);
                                            Kuanggong += new decimal(0.5);
                                        }
                                    }
                                    else
                                    {
                                        Zaotui += 1;
                                        Xiawuzaotuifenzhong = zaotui.Hours * 60 + zaotui.Minutes;
                                    }
                                }
                                Kuanggongtianshu += xiawuwukuanggong;
                            }
                        }
                        //计算当天请假
                        List<DateBiJiaoDTO> qingjias = new List<DateBiJiaoDTO>();
                        var feichuqinjia = admAskLeaveDTOMin.Where(x => x.Lavetype != "4").ToList();
                        foreach (var admAskLeave in feichuqinjia)
                        {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeave.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeave.EndTime;
                                qingjias.Add(dateBiJiaoDTO);
                        }
                        var feichuqinxiaojia = admAskLeaveOffDTOMin.Where(x => x.Lavetype == "2").ToList();
                        foreach (var admAskLeaveOff in feichuqinxiaojia)
                        {
                                DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                                dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime;
                                dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime;
                                qingjias.Add(dateBiJiaoDTO);
                        }
                        foreach(var  qingjia in qingjias)
                        {
                            if(qingjia.StartTime< StratTimeWorkingStart)
                            {
                                qingjia.StartTime = StratTimeWorkingStart;
                            }
                            if (qingjia.StartTime > StratTimeWorkingEnd && qingjia.StartTime < StratTimeOffworkStart)
                            {
                                qingjia.StartTime = StratTimeOffworkStart;
                            }
                            if (qingjia.EndTime > StratTimeWorkingEnd && qingjia.EndTime < StratTimeOffworkStart)
                            {
                                qingjia.EndTime = StratTimeWorkingEnd;
                            }
                            if (qingjia.EndTime > StratTimeOffworkEnd)
                            {
                                qingjia.EndTime = StratTimeOffworkEnd;
                            }
                            TimeSpan qingjiashiijan = qingjia.EndTime.Value.Subtract(qingjia.StartTime.Value);
                            if(qingjia.StartTime<= StratTimeWorkingEnd && qingjia.EndTime>= StratTimeOffworkStart)
                            {
                                TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd);
                                dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes- wuxiushijian.Hours * 60- wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2);
                            }
                            else
                            {
                                dangtianqingjia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2);
                            }
                        }
                        Qingjia += dangtianqingjia;
                        //计算当天出勤天数
                        Shijichuqin += (1 - Kuanggongtianshu - dangtianqingjia);
                        //计算销假(出差,补卡)
                        List<DateBiJiaoDTO> xiaojias = new List<DateBiJiaoDTO>();
                        var xiaojiala = admAskLeaveOffDTOMin.Where(x => x.Lavetype != "2").ToList();
                        foreach (var admAskLeaveOff in xiaojiala)
                        {
                            DateBiJiaoDTO dateBiJiaoDTO = new DateBiJiaoDTO();
                            dateBiJiaoDTO.StartTime = admAskLeaveOff.StratTime;
                            dateBiJiaoDTO.EndTime = admAskLeaveOff.EndTime;
                            xiaojias.Add(dateBiJiaoDTO);
                        }
                        foreach (var xiaojia in xiaojias)
                        {
                            if (xiaojia.StartTime < StratTimeWorkingStart)
                            {
                                xiaojia.StartTime = StratTimeWorkingStart;
                            }
                            if (xiaojia.StartTime > StratTimeWorkingEnd && xiaojia.StartTime < StratTimeOffworkStart)
                            {
                                xiaojia.StartTime = StratTimeOffworkStart;
                            }
                            if (xiaojia.EndTime > StratTimeWorkingEnd && xiaojia.EndTime < StratTimeOffworkStart)
                            {
                                xiaojia.EndTime = StratTimeWorkingEnd;
                            }
                            if (xiaojia.EndTime > StratTimeOffworkEnd)
                            {
                                xiaojia.EndTime = StratTimeOffworkEnd;
                            }
                            TimeSpan qingjiashiijan = xiaojia.EndTime.Value.Subtract(xiaojia.StartTime.Value);
                            if (xiaojia.StartTime <= StratTimeWorkingEnd && xiaojia.EndTime >= StratTimeOffworkStart)
                            {
                                TimeSpan wuxiushijian = StratTimeOffworkStart.Subtract(StratTimeWorkingEnd);
                                dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes - wuxiushijian.Hours * 60 - wuxiushijian.Minutes)) / ((decimal)shangbanshijian), 2);
                            }
                            else
                            {
                                dangtianxiaojia += Math.Round(((decimal)(qingjiashiijan.Hours * 60 + qingjiashiijan.Minutes)) / ((decimal)shangbanshijian), 2);
                            }
                        }
                        Xiaojia += dangtianxiaojia;
                        //计算加班时间
                        if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue)
                        {
                            DateTime overdate = admSignInDTO.OvertimeIn.Value;
                            if (admSignInDTO.OvertimeIn.Value< StratTimeOffworkEnd)
                            {
                                overdate = StratTimeOffworkEnd;
                            }
                            TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate);
                            Jiaban += Math.Round((decimal)(jiaban.Hours * 60) / (decimal)shangbanshijian, 2);
                        }
                    }
                    else
                    {
                        //加班
                        //计算加班时间
                        if (admSignInDTO != null && admSignInDTO.OvertimeIn.HasValue && admSignInDTO.OvertimeOut.HasValue)
                        {
                            TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(admSignInDTO.OvertimeIn.Value);
                            Jiaban += Math.Round((decimal)(jiaban.Hours * 60+ jiaban.Minutes) / (decimal)shangbanshijian, 2);
                        }
                    }
                    //插入考勤明细表
                    AdmAttendanceDtlDTO admAttendanceDtlDTO = _admAttendanceDtlService.GetByUserAndDate(admAttendanceDTO.Id, dateminkaoqin);
                    if (admAttendanceDtlDTO == null)
                    {
                        admAttendanceDtlDTO = new AdmAttendanceDtlDTO();
                        admAttendanceDtlDTO.AttendanceId = admAttendanceDTO.Id;
                        admAttendanceDtlDTO.SgninDate = dateminkaoqin;
                        admAttendanceDtlDTO.MorningIn = admSignInDTO.MorningIn;
                        admAttendanceDtlDTO.MorningOut = admSignInDTO.MorningOut;
                        admAttendanceDtlDTO.AfternoonIn = admSignInDTO.AfternoonIn;
                        admAttendanceDtlDTO.AfternoonOut = admSignInDTO.AfternoonOut;
                        admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn;
                        admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut;
                        admAttendanceDtlDTO.Qingjia = dangtianqingjia;
                        admAttendanceDtlDTO.Xiaojia = dangtianxiaojia;
                        admAttendanceDtlDTO.RecStatus = "A";
                        admAttendanceDtlDTO.Creater = "1";
                        admAttendanceDtlDTO.Modifier = "1";
                        admAttendanceDtlDTO.Createtime = DateTime.Now;
                        admAttendanceDtlDTO.Modifytime = admAttendanceDTO.Createtime;
                        admAttendanceDtlDTO.Shangwuchidaofenzhong = Shangwuchidaofenzhong;
                        admAttendanceDtlDTO.Xiawuchidaofenzhong = Xiawuchidaofenzhong;
                        admAttendanceDtlDTO.Shangwuzaotuifenzhong = Shangwuzaotuifenzhong;
                        admAttendanceDtlDTO.Xiawuzaotuifenzhong = Xiawuzaotuifenzhong;
                        admAttendanceDtlDTO.Kuanggongtianshu = Kuanggongtianshu;
                        admAttendanceDtlDTO.Iswork = Iswork;
                        resultEntity = _admAttendanceDtlService.save(admAttendanceDtlDTO);
                        if (resultEntity.Result == false)
                        {
                            throw new Exception("计算失败");
                        }
                    }
                    else
                    {
                        admAttendanceDtlDTO.AttendanceId = admAttendanceDTO.Id;
                        admAttendanceDtlDTO.SgninDate = dateminkaoqin;
                        admAttendanceDtlDTO.MorningIn = admSignInDTO.MorningIn;
                        admAttendanceDtlDTO.MorningOut = admSignInDTO.MorningOut;
                        admAttendanceDtlDTO.AfternoonIn = admSignInDTO.AfternoonIn;
                        admAttendanceDtlDTO.AfternoonOut = admSignInDTO.AfternoonOut;
                        admAttendanceDtlDTO.OvertimeIn = admSignInDTO.OvertimeIn;
                        admAttendanceDtlDTO.OvertimeOut = admSignInDTO.OvertimeOut;
                        admAttendanceDtlDTO.Qingjia = dangtianqingjia;
                        admAttendanceDtlDTO.Xiaojia = dangtianxiaojia;
                        admAttendanceDtlDTO.RecStatus = "A";
                        admAttendanceDtlDTO.Creater = "1";
                        admAttendanceDtlDTO.Modifier = "1";
                        admAttendanceDtlDTO.Createtime = DateTime.Now;
                        admAttendanceDtlDTO.Modifytime = admAttendanceDTO.Createtime;
                        admAttendanceDtlDTO.Shangwuchidaofenzhong = Shangwuchidaofenzhong;
                        admAttendanceDtlDTO.Xiawuchidaofenzhong = Xiawuchidaofenzhong;
                        admAttendanceDtlDTO.Shangwuzaotuifenzhong = Shangwuzaotuifenzhong;
                        admAttendanceDtlDTO.Xiawuzaotuifenzhong = Xiawuzaotuifenzhong;
                        admAttendanceDtlDTO.Kuanggongtianshu = Kuanggongtianshu;
                        admAttendanceDtlDTO.Iswork = Iswork;
                        resultEntity = _admAttendanceDtlService.save(admAttendanceDtlDTO);
                        if (resultEntity.Result == false)
                        {
                            throw new Exception("计算失败");
                        }
                    }
                    dateminkaoqin = dateminkaoqin.AddDays(1);
                }
                if(Shijichuqin< Yingchuqin)
                {
                    if((Yingchuqin -Shijichuqin)< Jiaban)
                    {
                        Jiaban = Jiaban - (Yingchuqin - Shijichuqin);
                        Shijichuqin = Yingchuqin;
                    }
                    else
                    {
                        Shijichuqin += Jiaban;
                        Jiaban = 0;
                    }
                }
                admAttendanceDTO.Yingchuqin = Yingchuqin;
                admAttendanceDTO.Offdays = Offdays;
                admAttendanceDTO.Shijichuqin = Shijichuqin;
                admAttendanceDTO.Jiaban = Jiaban;
                admAttendanceDTO.Zaotui = Zaotui;
                admAttendanceDTO.Kuanggong = Kuanggong;
                admAttendanceDTO.Qingjia = Qingjia;
                admAttendanceDTO.Xiaojia = Xiaojia;
                admAttendanceDTO.Chidao = Chidao;
                admAttendanceDTO.Islock = "A";
                resultEntity = _admAttendanceService.save(admAttendanceDTO);
                if (resultEntity.Result == false)
                {
                    throw new Exception("计算失败");
                }
            }
        }
        //计算工资
        public void jisuangongzi()
        {
            //查询所有的有效人员
            DateTime dateminkaoqin = new DateTime(DateTime.Now.Year, DateTime.Now.Month - 1, 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();
            List<SimBindView>  simBindViews  = _simService.GetBindSim().Where(x=>x.simstatus == "A").ToList();
            AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get("");
            //每天的考勤时间点
            string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.');
            int WorkingStarthour = int.Parse(WorkingStart[0]);
            int WorkingStartmin = int.Parse(WorkingStart[1]);
            string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.');
            int WorkingEndhour = int.Parse(WorkingEnd[0]);
            int WorkingEndmin = int.Parse(WorkingEnd[1]);
            string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.');
            int OffworkStarthour = int.Parse(OffworkStart[0]);
            int OffworkStartmin = int.Parse(OffworkStart[1]);
            string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.');
            int OffworkEndhour = int.Parse(OffworkEnd[0]);
            int OffworkEndmin = int.Parse(OffworkEnd[1]);
            List<FiPiecerateDTO>   fiPiecerateDTOs  = _fiPiecerateService.GetList();
            List<HrJixiaotichengDTO>  hrJixiaotichengDTOs = _hrJixiaotichengService.GetList().Where(x => x.Effecttime < datemaxkaoqin).ToList();
            for (int i = 0; i < userList.Count; i++)
            {
                _logger.LogInformation("开始计算" + userList[i].UserName + "工资");
                HrSalaryDTO hrSalaryDTO  =   _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month);
                if (hrSalaryDTO == null)
                {
                    hrSalaryDTO = new HrSalaryDTO();
                    hrSalaryDTO.Userid = userList[i].Id;
                    hrSalaryDTO.Year = dateminkaoqin.Year;
                    hrSalaryDTO.Month = dateminkaoqin.Month;
                }
                //查询当月考勤
                AdmAttendanceDTO admAttendanceDTO = _admAttendanceService.GetByUserAndDate(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month);
                if (admAttendanceDTO == null)
                {
                    _logger.LogInformation( userList[i].UserName + ":" + dateminkaoqin.Year+"年"+ dateminkaoqin.Month + "月没有查询到考勤");
                    continue;
                }
                AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch();
                searchEntity.AttendanceId = admAttendanceDTO.Id;
                List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList();
                //当月出勤率
                decimal chuqinlv = Math.Round(admAttendanceDTO.Shijichuqin / admAttendanceDTO.Yingchuqin,4);
                //查询当前员工职务的基本工资配置
               var hrJibengongzi = hrJibengongziDTOs.Where(x=>x.PostId == userList[i].HrPosition ).OrderByDescending(x=>x.Effecttime).FirstOrDefault();
                if (hrJibengongzi == null)
                {
                    _logger.LogInformation(userList[i].UserName + ": 职务所属资本工资为空");
                    continue;
                }
                hrSalaryDTO.Jibengongzi = Math.Round( hrJibengongzi.Jibengongzi.Value * chuqinlv, 2);
                hrSalaryDTO.Baomifei = Math.Round(hrJibengongzi.Baomifei.Value * chuqinlv, 2);
                //是否在试用期
                decimal geshuiqizheng = 5000;
                if (userList[i].geshuiqizheng.HasValue)
                {
                    geshuiqizheng = userList[i].geshuiqizheng.Value;
                }
                var Shebaodanwei = hrJibengongzi.Shebaodanwei.HasValue ? hrJibengongzi.Shebaodanwei.Value : 0;
                var Shebaogeren = hrJibengongzi.Shebaogeren.HasValue ? hrJibengongzi.Shebaogeren.Value : 0;
                decimal yingnashuie = 0;
                hrSalaryDTO.Queqin = 0;
                hrSalaryDTO.Gongzuobutie = 0;
                hrSalaryDTO.Jiabangongzi = 0;
                decimal shiyongqichuqintianshu = 0;
                decimal shiyongqichuqinlv = 0;
                if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && dateminkaoqin>= userList[i].ShiyongDate.Value && dateminkaoqin <= userList[i].ShiyongDateEnd.Value)
                {
                    if (!userList[i].ShiyongPrice.HasValue)
                    {
                        _logger.LogInformation(userList[i].UserName + ": 员工处于试用期,但是试用期工资为空");
                        continue;
                    }
                    //试用期的出勤率
                    shiyongqichuqinlv = chuqinlv;
                    if(userList[i].ShiyongDateEnd.Value< datemaxkaoqin.AddDays(-1))
                    {
                        foreach (var admAttendanceDtlDTO in admAttendanceDtlDTOs)
                        {
                            if (admAttendanceDtlDTO.SgninDate <= userList[i].ShiyongDateEnd.Value && admAttendanceDtlDTO.Iswork == "A")
                            {
                                    shiyongqichuqintianshu += (1 - admAttendanceDtlDTO.Qingjia - admAttendanceDtlDTO.Kuanggongtianshu);
                                    if (admAttendanceDtlDTO.Kuanggongtianshu > 0)
                                    {
                                        var queqingkoukuan = Math.Round(userList[i].ShiyongPrice.Value / jiabangongzibiaozhun * admAttendanceDtlDTO.Kuanggongtianshu * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2);
                                        if (queqingkoukuan > 0)
                                        {
                                            hrSalaryDTO.Queqin += queqingkoukuan;
                                        }
                                    }
                            }
                        }
                        shiyongqichuqinlv = Math.Round(shiyongqichuqintianshu / admAttendanceDTO.Yingchuqin, 4);
                    }
                    else
                    {
                        if (admAttendanceDTO.Kuanggong > 0)
                        {
                            var queqingkoukuan = Math.Round(userList[i].ShiyongPrice.Value / jiabangongzibiaozhun * admAttendanceDTO.Kuanggong * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2);
                            if (queqingkoukuan > 0)
                            {
                                hrSalaryDTO.Queqin += queqingkoukuan;
                            }
                        }
                        hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * userList[i].ShiyongPrice.Value, 2);
                    }
                    hrSalaryDTO.Gongzuobutie += Math.Round( (userList[i].ShiyongPrice.Value - hrJibengongzi.Baomifei.Value- hrJibengongzi.Jibengongzi.Value ) * shiyongqichuqinlv, 2);
                    //yingnashuie = userList[i].ShiyongPrice.Value - Shebaogeren - geshuiqizheng;
                }
                if(true)
                {
                    decimal BasicPrice = 0;
                    if(!decimal.TryParse(userList[i].BasicPrice,out BasicPrice))
                    {
                        _logger.LogInformation(userList[i].UserName + ": 员工没有维护工资");
                        continue;
                    }
                    //转正后的出勤率
                    decimal zhuanzhengchuqinlv = chuqinlv- shiyongqichuqinlv;
                    if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && userList[i].ShiyongDateEnd.Value >= dateminkaoqin && userList[i].ShiyongDateEnd.Value <= datemaxkaoqin.AddDays(-1))
                    {
                        //decimal zhuanzhengchuqintianshu = 0;
                        foreach (var admAttendanceDtlDTO in admAttendanceDtlDTOs)
                        {
                            if (admAttendanceDtlDTO.SgninDate > userList[i].ShiyongDateEnd.Value && admAttendanceDtlDTO.Iswork == "A")
                            {
                                //zhuanzhengchuqintianshu += (1 - admAttendanceDtlDTO.Qingjia - admAttendanceDtlDTO.Kuanggongtianshu);
                                if (admAttendanceDtlDTO.Kuanggongtianshu > 0)
                                {
                                    var queqingkoukuan = Math.Round(BasicPrice / jiabangongzibiaozhun * admAttendanceDtlDTO.Kuanggongtianshu * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2);
                                    if (queqingkoukuan > 0)
                                    {
                                        hrSalaryDTO.Queqin += queqingkoukuan;
                                    }
                                }
                            }
                        }
                        //decimal zhuanzhengchuqintianshu = admAttendanceDTO.Shijichuqin - shiyongqichuqintianshu;
                        //zhuanzhengchuqinlv = Math.Round(zhuanzhengchuqintianshu / admAttendanceDTO.Yingchuqin, 4);
                        if (userList[i].ShiyongDate.HasValue && userList[i].ShiyongDateEnd.HasValue && dateminkaoqin >= userList[i].ShiyongDate.Value && dateminkaoqin <= userList[i].ShiyongDateEnd.Value)
                        {
                            if(userList[i].ShiyongDateEnd.Value < datemaxkaoqin.AddDays(-1))
                            {
                                hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2);
                            }
                        }
                        else
                        {
                            hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2);
                        }
                    }
                    else
                    {
                        //矿工扣钱
                        if (admAttendanceDTO.Kuanggong > 0)
                        {
                            var queqingkoukuan = Math.Round(BasicPrice / jiabangongzibiaozhun * admAttendanceDTO.Kuanggong * (admAttendanceRuleDTO.AbsenteeismPayment1 - 1), 2);
                            if (queqingkoukuan > 0)
                            {
                                hrSalaryDTO.Queqin += queqingkoukuan;
                            }
                        }
                        hrSalaryDTO.Jiabangongzi += Math.Round((admAttendanceDTO.Jiaban / jiabangongzibiaozhun) * BasicPrice, 2);
                    }
                    hrSalaryDTO.Gongzuobutie += Math.Round((BasicPrice - hrJibengongzi.Baomifei.Value - hrJibengongzi.Jibengongzi.Value) * zhuanzhengchuqinlv, 2);
                    //yingnashuie = BasicPrice - Shebaogeren - geshuiqizheng;
                }
                //迟到早退扣钱
                //AdmAttendanceDtlDTOSearch searchEntity = new AdmAttendanceDtlDTOSearch();
                //searchEntity.AttendanceId = admAttendanceDTO.Id;
                //List<AdmAttendanceDtlDTO> admAttendanceDtlDTOs = _admAttendanceDtlService.GetList(searchEntity).OrderBy(x => x.SgninDate).ToList();
                if (admAttendanceDtlDTOs.Count > 0)
                {
                    for (int j = 0; j < admAttendanceDtlDTOs.Count; j++)
                    {
                        if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong > 0)
                        {
                            if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 15)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 30)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 60)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuchidaofenzhong < 120)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                        }
                        if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong > 0)
                        {
                            if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 15)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 30)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 60)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                            else if (admAttendanceDtlDTOs[j].Shangwuzaotuifenzhong < 120)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                        }
                        if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong > 0)
                        {
                            if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 15)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 30)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 60)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuchidaofenzhong < 120)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                        }
                        if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong > 0)
                        {
                            if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 15)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment1;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 30)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment2;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 60)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                            else if (admAttendanceDtlDTOs[j].Xiawuzaotuifenzhong < 120)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.LatePayment3;
                            }
                        }
                    }
                }
                //病假事假扣钱
                List<AdmAskLeaveDTO> admAskLeaveDTOs = _signinService.GetAskLeaveByUserId(userList[i].Id).Where(x => x.Lavetype == "1" && (  (x.StratTime >= dateminkaoqin &&    x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin) )).OrderByDescending(x => x.Createtime).ToList();
                if(admAskLeaveDTOs!=null && admAskLeaveDTOs.Count > 0)
                {
                    foreach(var admAskLeaveDTO in admAskLeaveDTOs)
                    {
                        DateTime? AskLeavestart = null;
                        DateTime? AskLeaveend = null;
                        if(admAskLeaveDTO.StratTime< dateminkaoqin)
                        {
                            AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin);
                        }
                        else
                        {
                            AskLeavestart = admAskLeaveDTO.StratTime;
                        }
                        if (admAskLeaveDTO.EndTime >= datemaxkaoqin)
                        {
                            AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin);
                        }
                        else
                        {
                            AskLeaveend = admAskLeaveDTO.EndTime;
                        }
                        AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value);
                        if (admAskLeaveDTO1.LaveDay.Value  > 0 || admAskLeaveDTO1.LavehHour > 0)
                        {
                            if (admAskLeaveDTO1.LaveDay.Value >= 1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment4;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value ==0 && admAskLeaveDTO1.LavehHour >2)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment3;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment2;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour ==1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.PersonalPayment1;
                            }
                        }
                    }
                }
                List<AdmAskLeaveOffDTO> admAskLeaveOffDTOs = _signinService.GetAskLeaveOffByUserId(userList[i].Id).Where(x => x.Lavetype == "2" && ((x.StratTime >= dateminkaoqin && x.StratTime < datemaxkaoqin) || (x.EndTime >= dateminkaoqin && x.EndTime < datemaxkaoqin) || (x.EndTime >= datemaxkaoqin && x.StratTime < dateminkaoqin)  ) ).OrderByDescending(x => x.Createtime).ToList();
                if (admAskLeaveOffDTOs != null && admAskLeaveOffDTOs.Count > 0)
                {
                    foreach (var admAskLeaveOffDTO in admAskLeaveOffDTOs)
                    {
                        DateTime? AskLeavestart = null;
                        DateTime? AskLeaveend = null;
                        if (admAskLeaveOffDTO.StratTime < dateminkaoqin)
                        {
                            AskLeavestart = dateminkaoqin.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin);
                        }
                        else
                        {
                            AskLeavestart = admAskLeaveOffDTO.StratTime;
                        }
                        if (admAskLeaveOffDTO.EndTime >= datemaxkaoqin)
                        {
                            AskLeaveend = dateminkaoqin.AddDays(-1).AddHours(OffworkEndhour).AddMinutes(OffworkEndmin);
                        }
                        else
                        {
                            AskLeaveend = admAskLeaveOffDTO.EndTime;
                        }
                        AdmAskLeaveDTO admAskLeaveDTO1 = jisianChecktime(AskLeavestart.Value, AskLeaveend.Value);
                        if (admAskLeaveDTO1.LaveDay.Value > 0 || admAskLeaveDTO1.LavehHour > 0)
                        {
                            if (admAskLeaveDTO1.LaveDay.Value >= 1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment4;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 2)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment3;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour > 1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment2;
                            }
                            else if (admAskLeaveDTO1.LaveDay.Value == 0 && admAskLeaveDTO1.LavehHour == 1)
                            {
                                hrSalaryDTO.Queqin += admAttendanceRuleDTO.SickPayment1;
                            }
                        }
                    }
                }
                if(userList[i].IsGmsb != "D" && userList[i].Shebaodate.HasValue &&  userList[i].Shebaodate.Value < datemaxkaoqin)
                {
                    hrSalaryDTO.Shebao = Shebaodanwei;
                    hrSalaryDTO.Shebaokou = Shebaodanwei + Shebaogeren;
                }
                else
                {
                    hrSalaryDTO.Shebao = 0;
                    hrSalaryDTO.Shebaokou = 0;
                }
                var simBind =  simBindViews.Where(x => x.userid == userList[i].Id).FirstOrDefault();
                if (simBind != null)
                {
                    decimal cardpro = 0;
                    decimal.TryParse(simBind.cardpro, out cardpro);
                    hrSalaryDTO.Dianhuabutie = cardpro;
                }
                 var SimCost  =  _simService.GetSimCost(userList[i].Id, dateminkaoqin.Year, dateminkaoqin.Month);
                if (SimCost != null)
                {
                    hrSalaryDTO.Dianhuafei = SimCost.bill_amount;
                }
                hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang;
                if ("A".Equals(userList[i].Istravelsubsidy))
                {
                    hrSalaryDTO.Jiaotngbutie = hrJibengongzi.Jiaotongbutie;
                }
                //hrSalaryDTO.Jiangjin
                //hrSalaryDTO.Bufagongzi
                //hrSalaryDTO.Peichang
                hrSalaryDTO.Fakuan = 0;
                //工作安排罚款
                List<AdmMemoBookDTO> admMemoBookDTOs =  _DailyManageService.GetRemindsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin,"2");
                if (admMemoBookDTOs.Count > 0)
                {
                    for(int j=0; j< admMemoBookDTOs.Count; j++)
                    {
                        decimal fakuanshumu = 0;
                       if (decimal.TryParse(admMemoBookDTOs[j].ZhuiZe, out fakuanshumu))
                        {
                            hrSalaryDTO.Fakuan += fakuanshumu;
                        }
                    }
                }
                //违纪处理罚款
                List<AdmBreakPrecedentDTO> admBreakPrecedentDTOs = _admBreakPrecedentService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                if (admBreakPrecedentDTOs.Count > 0)
                {
                    for (int j = 0; j < admBreakPrecedentDTOs.Count; j++)
                    {
                        if (admBreakPrecedentDTOs[j].Chufajine.HasValue)
                        {
                            hrSalaryDTO.Fakuan += admBreakPrecedentDTOs[j].Chufajine.Value; ;
                        }
                    }
                }
                //hrSalaryDTO.Jiucuo
                //计算绩效提成
                hrSalaryDTO.Jixiaoticheng = 0;
                var hrJixiaotichengThis =  hrJixiaotichengDTOs.Where(x => x.PostId == userList[i].HrPosition).ToList();
                if( hrJixiaotichengThis!=null&& hrJixiaotichengThis.Count > 0)
                {
                    //var feijijiandengji = fiPiecerateDTOs.Where(x => x.Standard == "A");
                    //var  jijiandengji =    fiPiecerateDTOs.Where(x => x.Standard == "A");
                    #region 上门拜访客户
                    var cooperVisitDTOs = _cooperVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (cooperVisitDTOs != null && cooperVisitDTOs.Count > 0)
                    {
                        var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 = cooperVisitDTOs.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 = cooperVisitDTOs.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 新加群组
                    var groupTopicDTOs = _groupTopicService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (groupTopicDTOs != null && groupTopicDTOs.Count > 0)
                    {
                        var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 = groupTopicDTOs.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 = groupTopicDTOs.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 客户资料录入
                    var cooperatecustomCustomerDTOs = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (cooperatecustomCustomerDTOs != null && cooperatecustomCustomerDTOs.Count > 0)
                    {
                        var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 = cooperatecustomCustomerDTOs.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 = cooperatecustomCustomerDTOs.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 录入客户签单
                   var cooperatecustomCustomers = _cooperatecustomCustomerService.GetListsalaryqiandan(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0)
                    {
                        var jijianidddd = fiPiecerateDTOs.Where(x => x.Standard == "D" && 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 = cooperatecustomCustomers.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 = cooperatecustomCustomers.Count - renwujishu;
                                        if (youxiaojijian > 0)
                                        {
                                            hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 计件登记
                    var pieceCheckDTOs = _admPieceCheckService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    if (pieceCheckDTOs != null && pieceCheckDTOs.Count > 0)
                    {
                        foreach (var pieceCheckDTO in pieceCheckDTOs)
                        {
                            if (pieceCheckDTO.Gongzi.HasValue)
                            {
                                hrSalaryDTO.Jixiaoticheng += pieceCheckDTO.Gongzi.Value;
                            }
                        }
                    }
                    #endregion
                    //合作客户订单
                    List<CooperOrderDTO> cooperOrderDTOs =  _cooperOrderService.GetList(userList[i].Id, dateminkaoqin, datemaxkaoqin);
                    #region 图书销售
                    var cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "01").ToList();
                    var jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "图书销售").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count>0)
                    {
                      var jixiaotichengfangan =    hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 =     cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian* new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region   政采咨询
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "02").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "政采咨询").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region   标书制作订单
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "03").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "标书制作订单").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region   培训
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "04").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "培训").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region  套餐会员
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "05").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "套餐会员").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 专家申请
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "06").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "专家申请").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 履约纠纷
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "07").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "履约纠纷").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 风险代理
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "08").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "风险代理").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 软件销售提成
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "09").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "软件销售提成").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                    #region 其他业务
                    cooperOrdertushu = cooperOrderDTOs.Where(x => x.OrderType == "10").ToList();
                    jijianid = fiPiecerateDTOs.Where(x => x.Standard == "D" && x.Project == "其他业务").FirstOrDefault();
                    if (jijianid != null && cooperOrdertushu.Count > 0)
                    {
                        var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianid.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 = cooperOrdertushu.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 = cooperOrdertushu.Count - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "03")
                            {
                                decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                            else if (jixiaotichengfangan.Renwustandard == "04")
                            {
                                decimal renwujishu = jixiaotichengfangan.Renwu.Value;
                                if (jixiaotichengfangan.Tichengstandard == "02")
                                {
                                    var dingdanjine = cooperOrdertushu.Sum(x => x.Money);
                                    var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
                                    var dingdanyouhui = cooperOrdertushu.Sum(x => x.Youhui);
                                    var dingdanyouhuizhenshi = dingdanyouhui.HasValue ? dingdanyouhui.Value : 0;
                                    decimal youxiaojijian = dingdanjinezhenshi - dingdanyouhuizhenshi - renwujishu;
                                    if (youxiaojijian > 0)
                                    {
                                        hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
                                    }
                                }
                            }
                        }
                    }
                    #endregion
                }
                hrSalaryDTO.Daozhanggongzi = 0;
                decimal jibengongzi = hrSalaryDTO.Jibengongzi.HasValue ? hrSalaryDTO.Jibengongzi.Value : 0;
                decimal baomifei = hrSalaryDTO.Baomifei.HasValue ? hrSalaryDTO.Baomifei.Value : 0;
                decimal gongzuobutie = hrSalaryDTO.Gongzuobutie.HasValue ? hrSalaryDTO.Gongzuobutie.Value : 0;
                decimal jiabangongzi = hrSalaryDTO.Jiabangongzi.HasValue ? hrSalaryDTO.Jiabangongzi.Value : 0;
                decimal shebao = hrSalaryDTO.Shebao.HasValue ? hrSalaryDTO.Shebao.Value : 0;
                decimal dianhuabutie = hrSalaryDTO.Dianhuabutie.HasValue ? hrSalaryDTO.Dianhuabutie.Value : 0;
                decimal quanqinjiang = hrSalaryDTO.Quanqinjiang.HasValue ? hrSalaryDTO.Quanqinjiang.Value : 0;
                decimal jiaotngbutie = hrSalaryDTO.Jiaotngbutie.HasValue ? hrSalaryDTO.Jiaotngbutie.Value : 0;
                decimal jixiaoticheng = hrSalaryDTO.Jixiaoticheng.HasValue ? hrSalaryDTO.Jixiaoticheng.Value : 0;
                decimal jiangjin = hrSalaryDTO.Jiangjin.HasValue ? hrSalaryDTO.Jiangjin.Value : 0;
                decimal bufagongzi = hrSalaryDTO.Bufagongzi.HasValue ? hrSalaryDTO.Bufagongzi.Value : 0;
                decimal shebaokou = hrSalaryDTO.Shebaokou.HasValue ? hrSalaryDTO.Shebaokou.Value : 0;
                decimal dianhuafei = hrSalaryDTO.Dianhuafei.HasValue ? hrSalaryDTO.Dianhuafei.Value : 0;
                decimal queqin = hrSalaryDTO.Queqin.HasValue ? hrSalaryDTO.Queqin.Value : 0;
                decimal fakuan = hrSalaryDTO.Fakuan.HasValue ? hrSalaryDTO.Fakuan.Value : 0;
                decimal peichang = hrSalaryDTO.Peichang.HasValue ? hrSalaryDTO.Peichang.Value : 0;
                decimal jiucuo = hrSalaryDTO.Jiucuo.HasValue ? hrSalaryDTO.Jiucuo.Value : 0;
                yingnashuie = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou  - dianhuafei - queqin - fakuan - peichang + jiucuo - geshuiqizheng;
                hrSalaryDTO.Geshui = 0;
                if (yingnashuie > 0)
                {
                    decimal yingnashuie1 = 0;
                    decimal yingnashuie2 = 0;
                    decimal yingnashuie3 = 0;
                    decimal yingnashuie4 = 0;
                    decimal yingnashuie5 = 0;
                    if (yingnashuie > 39250)
                    {
                        yingnashuie1 = 4750;
                        yingnashuie2 = (9250 - 4750);
                        yingnashuie3 = (25250 - 9250);
                        yingnashuie4 = (39250 - 25250);
                        yingnashuie5 = (yingnashuie - 39250);
                    }
                    else if (yingnashuie > 25250)
                    {
                        yingnashuie1 = 4750;
                        yingnashuie2 = (9250 - 4750);
                        yingnashuie3 = (25250 - 9250);
                        yingnashuie4 = (yingnashuie - 25250);
                    }
                    else if (yingnashuie > 9250)
                    {
                        yingnashuie1 = 4750;
                        yingnashuie2 = (9250 - 4750);
                        yingnashuie3 = (yingnashuie - 9250);
                    }
                    else if (yingnashuie > 4750)
                    {
                        yingnashuie1 = 4750;
                        yingnashuie2 = (yingnashuie - 4750);
                    }
                    else
                    {
                        yingnashuie1 = yingnashuie;
                    }
                    if (yingnashuie1 > 0)
                    {
                        var yingjiao1 = Math.Round(yingnashuie1 * new decimal(0.05) - 0, 2);
                        if (yingjiao1 > 0)
                        {
                            hrSalaryDTO.Geshui += yingjiao1;
                        }
                    }
                    if (yingnashuie2 > 0)
                    {
                        var yingjiao2 = Math.Round(yingnashuie2 * new decimal(0.1) - 250, 2);
                        if (yingjiao2 > 0)
                        {
                            hrSalaryDTO.Geshui += yingjiao2;
                        }
                    }
                    if (yingnashuie3 > 0)
                    {
                        var yingjiao3 = Math.Round(yingnashuie3 * new decimal(0.2) - 1250, 2);
                        if (yingjiao3 > 0)
                        {
                            hrSalaryDTO.Geshui += yingjiao3;
                        }
                    }
                    if (yingnashuie4 > 0)
                    {
                        var yingjiao4 = Math.Round(yingnashuie4 * new decimal(0.3) - 4250, 2);
                        if (yingjiao4 > 0)
                        {
                            hrSalaryDTO.Geshui += yingjiao4;
                        }
                    }
                    if (yingnashuie5 > 0)
                    {
                        var yingjiao5 = Math.Round(yingnashuie5 * new decimal(0.35) - 6750, 2);
                        if (yingjiao5 > 0)
                        {
                            hrSalaryDTO.Geshui += yingjiao5;
                        }
                    }
                }
                decimal geshui = hrSalaryDTO.Geshui.HasValue ? hrSalaryDTO.Geshui.Value : 0;
                hrSalaryDTO.Daozhanggongzi += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + dianhuabutie + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou - geshui - dianhuafei - queqin - fakuan - peichang + jiucuo;
                hrSalaryDTO.Yufagongzi = userList[i].advancewages;
                if (userList[i].advancewages.HasValue)
                {
                    hrSalaryDTO.Yufagongziheji = 0;
                    HrSalaryDTO hrSalaryDTOlast = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.AddMonths(-1).Year, dateminkaoqin.AddMonths(-1).Month);
                    if(hrSalaryDTOlast!=null && hrSalaryDTOlast.Yufagongziheji.HasValue)
                    {
                        hrSalaryDTO.Yufagongziheji = hrSalaryDTOlast.Yufagongziheji;
                    }
                    hrSalaryDTO.Yufagongziheji += (hrSalaryDTO.Daozhanggongzi- hrSalaryDTO.Yufagongzi);
                }
                hrSalaryDTO.RecStatus = "A";
                hrSalaryDTO.Islock = "D";
                hrSalaryDTO.Creater = "1";
                hrSalaryDTO.Createtime = DateTime.Now;
                hrSalaryDTO.Modifier = hrSalaryDTO.Creater;
                hrSalaryDTO.Modifytime = hrSalaryDTO.Createtime;
                _hrSalaryService.save(hrSalaryDTO);
            }
        }
        public AdmAskLeaveDTO jisianChecktime(DateTime StratTime, DateTime EndTime)
        {
            //string dateDiff = null;
            AdmAttendanceRuleDTO admAttendanceRuleDTO = _attendanceRuleService.Get("");
            var admAttendanceRulesDtlDTOs = _attendanceRuleService.GetDtlList("");
            var jiejiari = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiejiari").ToList();
            var tiaoxiuri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "tiaoxiuri").ToList();
            //每天的考勤时间点
            string[] WorkingStart = admAttendanceRuleDTO.WorkingStart.Split('.');
            int WorkingStarthour = int.Parse(WorkingStart[0]);
            int WorkingStartmin = int.Parse(WorkingStart[1]);
            string[] WorkingEnd = admAttendanceRuleDTO.WorkingEnd.Split('.');
            int WorkingEndhour = int.Parse(WorkingEnd[0]);
            int WorkingEndmin = int.Parse(WorkingEnd[1]);
            string[] OffworkStart = admAttendanceRuleDTO.OffworkStart.Split('.');
            int OffworkStarthour = int.Parse(OffworkStart[0]);
            int OffworkStartmin = int.Parse(OffworkStart[1]);
            string[] OffworkEnd = admAttendanceRuleDTO.OffworkEnd.Split('.');
            int OffworkEndhour = int.Parse(OffworkEnd[0]);
            int OffworkEndmin = int.Parse(OffworkEnd[1]);
            //请假开始时间上班时间
            DateTime StratTimeWorkingStart = StratTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin);
            DateTime StratTimeWorkingEnd = StratTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin);
            DateTime StratTimeOffworkStart = StratTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin);
            DateTime StratTimeOffworkEnd = StratTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin);
            //请假结束时间上班时间
            DateTime EndTimeWorkingStart = EndTime.Date.AddHours(WorkingStarthour).AddMinutes(WorkingStartmin);
            DateTime EndTimeWorkingEnd = EndTime.Date.AddHours(WorkingEndhour).AddMinutes(WorkingEndmin);
            DateTime EndTimeOffworkStart = EndTime.Date.AddHours(OffworkStarthour).AddMinutes(OffworkStartmin);
            DateTime EndTimeOffworkEnd = EndTime.Date.AddHours(OffworkEndhour).AddMinutes(OffworkEndmin);
            //上班时间
            TimeSpan shangwu = StratTimeWorkingEnd.Subtract(StratTimeWorkingStart);
            TimeSpan xiawu = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
            int shangbanshijian = shangwu.Hours * 60 + shangwu.Minutes + xiawu.Hours * 60 + xiawu.Minutes;
            int LavehTime = 0;
            TimeSpan ts = EndTime.Subtract(StratTime);
            for (int i = 0; i <= ts.Days; i++)
            {
                if (i == 0)
                {
                    //是否上班日期
                    if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                    {
                        //是否节假日
                        if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        {
                            LavehTime += 0;
                        }
                        else
                        {
                            if (StratTime <= StratTimeWorkingStart)
                            {
                                LavehTime += shangbanshijian;
                            }
                            else if (StratTime <= StratTimeWorkingEnd)
                            {
                                TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime);
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
                                LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (StratTime <= StratTimeOffworkStart)
                            {
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (StratTime <= StratTimeOffworkEnd)
                            {
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                        }
                    }
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        {
                            if (StratTime <= StratTimeWorkingStart)
                            {
                                LavehTime += shangbanshijian;
                            }
                            else if (StratTime <= StratTimeWorkingEnd)
                            {
                                TimeSpan shangwu1 = StratTimeWorkingEnd.Subtract(StratTime);
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
                                LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (StratTime <= StratTimeOffworkStart)
                            {
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTimeOffworkStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (StratTime <= StratTimeOffworkEnd)
                            {
                                TimeSpan xiawu1 = StratTimeOffworkEnd.Subtract(StratTime);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                        }
                        else
                        {
                            LavehTime += 0;
                        }
                    }
                }
                if (i == ts.Days)
                {
                    //是否上班日期
                    if ((int)EndTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)EndTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                    {
                        //是否节假日
                        if (jiejiari.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date))
                        {
                            LavehTime += 0;
                        }
                        else
                        {
                            if (EndTime >= EndTimeOffworkEnd)
                            {
                                LavehTime += shangbanshijian;
                            }
                            else if (EndTime >= EndTimeOffworkStart)
                            {
                                TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart);
                                TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart);
                                LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (EndTime >= EndTimeWorkingEnd)
                            {
                                TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (EndTime >= EndTimeWorkingStart)
                            {
                                TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                        }
                    }
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= EndTime.Date && x.ValueEnd >= EndTime.Date))
                        {
                            if (EndTime >= EndTimeOffworkEnd)
                            {
                                LavehTime += shangbanshijian;
                            }
                            else if (EndTime >= EndTimeOffworkStart)
                            {
                                TimeSpan shangwu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart);
                                TimeSpan xiawu1 = EndTime.Subtract(EndTimeOffworkStart);
                                LavehTime += shangwu1.Hours * 60 + shangwu1.Minutes + xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (EndTime >= EndTimeWorkingEnd)
                            {
                                TimeSpan xiawu1 = EndTimeWorkingEnd.Subtract(EndTimeWorkingStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                            else if (EndTime >= EndTimeWorkingStart)
                            {
                                TimeSpan xiawu1 = EndTime.Subtract(EndTimeWorkingStart);
                                LavehTime += xiawu1.Hours * 60 + xiawu1.Minutes;
                            }
                        }
                        else
                        {
                            LavehTime += 0;
                        }
                    }
                }
                if (i != 0 && i != ts.Days)
                {
                    DateTime dateTimenow = StratTime.AddDays(i).Date;
                    //是否上班日期
                    if ((int)dateTimenow.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)dateTimenow.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                    {
                        //是否假期 假期不上班
                        if (jiejiari.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date))
                        {
                            LavehTime += 0;
                        }
                        else
                        {
                            LavehTime += shangbanshijian;
                        }
                    }
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        {
                            LavehTime += shangbanshijian;
                        }
                        else
                        {
                            LavehTime += 0;
                        }
                    }
                }
                if (ts.Days == 0)
                { //是否上班日期
                    if ((int)StratTime.Date.DayOfWeek >= admAttendanceRuleDTO.WeekStart && (int)StratTime.Date.DayOfWeek <= admAttendanceRuleDTO.WeekEnd)
                    {
                        //是否节假日
                        if (jiejiari.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        {
                            LavehTime -= 0;
                        }
                        else
                        {
                            LavehTime -= shangbanshijian;
                        }
                    }
                    else
                    {
                        //是否调休日  调休日需要上班
                        if (tiaoxiuri.Exists(x => x.ValueStart <= StratTime.Date && x.ValueEnd >= StratTime.Date))
                        {
                            LavehTime -= shangbanshijian;
                        }
                        else
                        {
                            LavehTime -= 0;
                        }
                    }
                }
            }
            AdmAskLeaveDTO admAsk = new AdmAskLeaveDTO();
            admAsk.LaveDay = (int)(LavehTime / shangbanshijian);
            int lefthour = (int)(LavehTime % shangbanshijian);
            admAsk.LavehHour = lefthour / 60;
            if (lefthour % 60 > 0)
            {
                admAsk.LavehHour += 1;
            }
            return admAsk;
        }
    }
}