using DTO;
|
using IServices;
|
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Logging;
|
using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Collections.Generic;
|
using System.IO;
|
using System.Linq;
|
using System.Net.Http;
|
using System.Net.Http.Headers;
|
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;
|
private readonly IIntentionCustomerService _intentionCustomerService;
|
private readonly IIntentionVisitService _intentionVisitService;
|
private readonly IProjectService _projectService;
|
private readonly ICusFangwenjiluService _cusFangwenjiluService;
|
private readonly ILiaotianService _liaotianService;
|
private readonly IDtChannelArticleNewsService _dtChannelArticleNewsService;
|
private readonly IConfiguration _configuration;
|
private readonly IHttpClientFactory _clientFactory;
|
private readonly IAskService _askService;
|
private readonly IAdmEvaluateService _admEvaluateService;
|
private readonly IExpertService _expertService;
|
private readonly zhengcaioaContext _context;
|
private readonly zcUserInfoN_dbContext _zcUsercontext;
|
|
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>();
|
_intentionCustomerService = factory.CreateScope().ServiceProvider.GetRequiredService<IIntentionCustomerService>();
|
_intentionVisitService = factory.CreateScope().ServiceProvider.GetRequiredService<IIntentionVisitService>();
|
|
_projectService = factory.CreateScope().ServiceProvider.GetRequiredService<IProjectService>();
|
_cusFangwenjiluService = factory.CreateScope().ServiceProvider.GetRequiredService<ICusFangwenjiluService>();
|
_liaotianService = factory.CreateScope().ServiceProvider.GetRequiredService<ILiaotianService>();
|
_dtChannelArticleNewsService = factory.CreateScope().ServiceProvider.GetRequiredService<IDtChannelArticleNewsService>();
|
_configuration = factory.CreateScope().ServiceProvider.GetRequiredService<IConfiguration>();
|
_clientFactory = factory.CreateScope().ServiceProvider.GetRequiredService<IHttpClientFactory>();
|
_askService= factory.CreateScope().ServiceProvider.GetRequiredService<IAskService>();
|
_admEvaluateService = factory.CreateScope().ServiceProvider.GetRequiredService<IAdmEvaluateService>();
|
_expertService = factory.CreateScope().ServiceProvider.GetRequiredService<IExpertService>();
|
_context = factory.CreateScope().ServiceProvider.GetRequiredService<zhengcaioaContext>();
|
_zcUsercontext = factory.CreateScope().ServiceProvider.GetRequiredService<zcUserInfoN_dbContext>();
|
}
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
{
|
_logger.LogInformation("MyServiceA is starting.");
|
|
//stoppingToken.Register(() => File.Create($"E:\\dotnetCore\\Practice\\Practice\\{DateTime.Now.Millisecond}.txt"));
|
|
DateTime datenow = DateTime.Now.Date;
|
while (!stoppingToken.IsCancellationRequested)
|
{
|
_logger.LogInformation("MyServiceA 开始执行");
|
_logger.LogInformation(datenow.ToString("yyyy-MM-dd HH:mm:ss"));
|
//每天的0点开始计算
|
if (datenow <= DateTime.Now.Date && DateTime.Now.Hour == 0)
|
//if (true)
|
{
|
|
try
|
{
|
_logger.LogInformation("判断是否是第五个工作日结束");
|
DateTime diwutian = this.diwugongzuori();
|
//第五个工作日结束后开始计算
|
if (DateTime.Now.Date == diwutian.AddDays(1))
|
//if (true)
|
{
|
try
|
{
|
_logger.LogInformation("计算考勤工资");
|
//using (TransactionScope scope = new TransactionScope())
|
//{
|
this.jisuankaoqin();
|
await this.jisuangongziAsync();
|
//scope.Complete();
|
//}
|
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation(ex.ToString());
|
}
|
}
|
|
|
_logger.LogInformation("判断是否计算工龄工资");
|
if (DateTime.Now.Date.Month==1 && DateTime.Now.Date.Day == 31)
|
//if (true)
|
{
|
jisuangonglinggongzi();
|
}
|
|
|
_logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无");
|
this.ywjlguiling();
|
_logger.LogInformation("把超过90天还没有转化的档案客户的业务经理归为无执行结束");
|
|
_logger.LogInformation("把会员系统和oa系统手机号相同的客户关联起来");
|
this.huiyuanguanlian();
|
_logger.LogInformation("把会员系统和oa系统手机号相同的客户关联起来执行结束");
|
}
|
catch (Exception ex)
|
{
|
_logger.LogInformation(ex.ToString());
|
}
|
|
datenow = DateTime.Now.Date.AddDays(1);
|
}
|
|
|
await Task.Delay(TimeSpan.FromMinutes(10), stoppingToken);
|
|
_logger.LogInformation("继续执行");
|
}
|
|
_logger.LogInformation("MyServiceA background task is stopping.");
|
}
|
|
public override void Dispose()
|
{
|
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;
|
}
|
|
|
//把超过90天还没有转化的档案客户的业务经理归为无
|
public void ywjlguiling()
|
{
|
var intentionCustomerDTOs = _intentionCustomerService.GetList().Where(x=>x.Ywjltime < DateTime.Now.AddDays(-90)).ToList();
|
|
foreach(var intentionCustomerDTO in intentionCustomerDTOs)
|
{
|
intentionCustomerDTO.Ywjl = null;
|
intentionCustomerDTO.Ywjltime = null;
|
_intentionCustomerService.save(intentionCustomerDTO);
|
}
|
}
|
|
|
//把会员系统和oa系统手机号相同的客户关联起来
|
public void huiyuanguanlian()
|
{
|
var cooperatecustomCustomers = _context.CooperatecustomCustomers.Where(x => x.RecStatus == "A" && x.HuiyuanId == null).ToList();
|
var frameworkUsers = _zcUsercontext.FrameworkUsers.Where(x => x.IsValid == true).ToList();
|
if (cooperatecustomCustomers != null && cooperatecustomCustomers.Count > 0)
|
{
|
foreach (var cooperatecustomCustomer in cooperatecustomCustomers)
|
{
|
if (!string.IsNullOrEmpty(cooperatecustomCustomer.Tel))
|
{
|
var frameworkUser = frameworkUsers.Where(x => x.Itcode == cooperatecustomCustomer.Tel).FirstOrDefault();
|
if (frameworkUser != null)
|
{
|
cooperatecustomCustomer.HuiyuanId = frameworkUser.Id.ToString();
|
}
|
}
|
|
}
|
_context.SaveChanges();
|
}
|
|
|
|
var intentionCustomers = _context.IntentionCustomers.Where(x => x.RecStatus == "A" && x.HuiyuanId == null).ToList();
|
if (intentionCustomers != null && intentionCustomers.Count > 0)
|
{
|
foreach (var intentionCustomer in intentionCustomers)
|
{
|
if (!string.IsNullOrEmpty(intentionCustomer.Tel))
|
{
|
var frameworkUser = frameworkUsers.Where(x => x.Itcode == intentionCustomer.Tel).FirstOrDefault();
|
if (frameworkUser != null)
|
{
|
intentionCustomer.HuiyuanId = frameworkUser.Id.ToString();
|
}
|
}
|
|
}
|
_context.SaveChanges();
|
}
|
|
}
|
|
//计算考勤
|
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();
|
var jiabanri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiabanri").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;
|
var Month = DateTime.Now.Month - 1;
|
var Year = DateTime.Now.Year;
|
if (Month == 0)
|
{
|
Month = 12;
|
Year = Year - 1;
|
}
|
//查询所有的有效人员
|
List<PltUserDTO> userList = _userService.GetListjisuankaoqin(new DateTime(Year, Month, 1), new DateTime(Year, Month, 1).AddMonths(1));//.Where(x => x.UserSn == "yang").ToList();
|
for (int a = 0; a < userList.Count; a++)
|
{
|
_logger.LogInformation("开始计算" + userList[a].UserName + "考勤");
|
//开始计算考勤
|
DateTime dateminkaoqin = new DateTime(Year, Month, 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].Zhiwustatus == "D" && 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 (endttime>= StratTimeWorkingEnd)
|
{
|
break;
|
}
|
}
|
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 (endttime >= StratTimeOffworkEnd)
|
{
|
break;
|
}
|
}
|
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" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").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)
|
{
|
var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin);
|
if(admAskovertimeDTO!=null&& !string.IsNullOrEmpty(admAskovertimeDTO.Id))
|
{
|
DateTime overdate = admSignInDTO.OvertimeIn.Value;
|
if (admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd)
|
{
|
overdate = StratTimeOffworkEnd;
|
}
|
TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate);
|
decimal jiabanshijian = jiaban.Hours;
|
if(new decimal(jiaban.Hours) > admAskovertimeDTO.Overtime.Value)
|
{
|
jiabanshijian = admAskovertimeDTO.Overtime.Value;
|
}
|
if (jiabanshijian > new decimal(shangbanshijian) / 60)
|
{
|
jiabanshijian = new decimal(shangbanshijian) /60;
|
}
|
Jiaban += Math.Round(jiabanshijian * 60 / shangbanshijian, 2);
|
}
|
|
|
|
}
|
}
|
else
|
{
|
//判断今天是否公司要求加班
|
var shifoujiaban = jiabanri.Exists(x => x.ValueStart <= dateminkaoqin && x.ValueEnd >= dateminkaoqin);
|
if (shifoujiaban)
|
{
|
|
//判断考勤时间的连续性
|
|
//判断早上是否迟到,判断早上是否早退,早退矿工处理
|
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" && x.Lavetype != "7" && x.Lavetype != "3" && x.Lavetype != "9").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;
|
//计算当天出勤天数
|
Jiaban += (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)
|
{
|
var admAskovertimeDTO = _askService.GetAskovertimeByUeridAndjiabantime(userList[a].Id, dateminkaoqin);
|
if (admAskovertimeDTO != null && !string.IsNullOrEmpty(admAskovertimeDTO.Id))
|
{
|
//如果当天是公司要求加班,则自己申请的加班从下班开始算
|
DateTime overdate = admSignInDTO.OvertimeIn.Value;
|
if (shifoujiaban && admSignInDTO.OvertimeIn.Value < StratTimeOffworkEnd)
|
{
|
overdate = StratTimeOffworkEnd;
|
}
|
TimeSpan jiaban = admSignInDTO.OvertimeOut.Value.Subtract(overdate);
|
decimal jiabanshijian = jiaban.Hours;
|
if (new decimal(jiaban.Hours) > admAskovertimeDTO.Overtime.Value)
|
{
|
jiabanshijian = admAskovertimeDTO.Overtime.Value;
|
}
|
if (jiabanshijian > new decimal(shangbanshijian) / 60)
|
{
|
jiabanshijian = new decimal(shangbanshijian) / 60;
|
}
|
Jiaban += Math.Round(jiabanshijian * 60 / 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 async Task jisuangongziAsync()
|
{
|
var Month = DateTime.Now.Month - 1;
|
var Year = DateTime.Now.Year;
|
if (Month == 0)
|
{
|
Month = 12;
|
Year = Year - 1;
|
}
|
//查询所有的有效人员
|
DateTime dateminkaoqin = new DateTime(Year, Month, 1);
|
DateTime datemaxkaoqin = dateminkaoqin.AddMonths(1);
|
List<PltUserDTO> userList = _userService.GetListjisuankaoqin(dateminkaoqin, datemaxkaoqin);//.Where(x => x.UserSn == "yang").ToList();
|
List<HrJibengongziDTO> hrJibengongziDTOs = _JibengongziService.GetList().Where(x=> x.Effecttime < datemaxkaoqin).ToList();
|
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();
|
|
//查询是否有不称职的工作考评
|
var admEvaluateDTOs = _admEvaluateService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x=>x.EvaluateValue == "03").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;
|
}
|
var shebaoDTO = _JibengongziService.GetListShebao().FirstOrDefault();
|
if (shebaoDTO == 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 = shebaoDTO.Shebaodanwei.HasValue ? shebaoDTO.Shebaodanwei.Value : 0;
|
var Shebaogeren = shebaoDTO.Shebaogeren.HasValue ? shebaoDTO.Shebaogeren.Value : 0;
|
decimal yingnashuie = 0;
|
hrSalaryDTO.Queqin = 0;
|
hrSalaryDTO.Fakuan = 0;
|
hrSalaryDTO.Gongzuobutie = 0;
|
hrSalaryDTO.Jiabangongzi = 0;
|
decimal shiyongqichuqintianshu = 0;
|
decimal shiyongqichuqinlv = 0;
|
decimal yingfaheji = 0;
|
|
|
decimal BasicPrice = 0;
|
if (!decimal.TryParse(userList[i].BasicPrice, out BasicPrice))
|
{
|
_logger.LogInformation(userList[i].UserName + ": 员工没有维护工资");
|
continue;
|
}
|
|
|
|
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;
|
}
|
//查询是否有不称职的工作考评
|
var admEvaluateDTOsshiyongqi = _admEvaluateService.GetListsalary(userList[i].Id, dateminkaoqin, userList[i].ShiyongDateEnd.Value.AddDays(1)).Where(x => x.EvaluateValue == "03").ToList();
|
|
|
//试用期的出勤率
|
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);
|
|
//工作评价不合格罚款
|
hrSalaryDTO.Fakuan += Math.Round(userList[i].ShiyongPrice.Value * admEvaluateDTOsshiyongqi.Count / admAttendanceDTO.Yingchuqin + BasicPrice * (admEvaluateDTOs.Count - admEvaluateDTOsshiyongqi.Count) / admAttendanceDTO.Yingchuqin, 2);
|
|
}
|
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.Fakuan += Math.Round(userList[i].ShiyongPrice.Value * admEvaluateDTOs.Count / admAttendanceDTO.Yingchuqin, 2);
|
}
|
|
|
|
|
hrSalaryDTO.Gongzuobutie += Math.Round( (userList[i].ShiyongPrice.Value - hrJibengongzi.Baomifei.Value- hrJibengongzi.Jibengongzi.Value ) * shiyongqichuqinlv, 2);
|
|
|
|
|
|
|
|
|
}
|
else
|
{
|
//工作评价罚款
|
hrSalaryDTO.Fakuan += Math.Round(BasicPrice * admEvaluateDTOs.Count/ admAttendanceDTO.Yingchuqin , 2);
|
}
|
|
|
if(true)
|
{
|
//转正后的出勤率
|
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);
|
|
|
|
|
|
|
}
|
|
//迟到早退扣钱
|
//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;
|
}
|
|
if(admAttendanceDTO.Shijichuqin>=admAttendanceDTO.Yingchuqin
|
&& hrSalaryDTO.Queqin <=0)
|
{
|
hrSalaryDTO.Quanqinjiang = hrJibengongzi.Quanqingjiang;
|
}
|
else
|
{
|
hrSalaryDTO.Quanqinjiang = 0;
|
}
|
|
|
if ("A".Equals(userList[i].Istravelsubsidy))
|
{
|
hrSalaryDTO.Jiaotngbutie = hrJibengongzi.Jiaotongbutie;
|
}
|
//hrSalaryDTO.Jiangjin
|
//hrSalaryDTO.Bufagongzi
|
//hrSalaryDTO.Peichang
|
|
|
|
|
//工作安排罚款
|
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 = 0;
|
|
//计算绩效提成
|
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 caigougonggaoDTOsyue = _projectService.GetcaigougonggaoListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (caigougonggaoDTOsyue != null && caigougonggaoDTOsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "采购公告录入").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = caigougonggaoDTOsyue.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 = caigougonggaoDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 采购项目录入
|
|
var projectDTOsyue = _projectService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (projectDTOsyue!=null && projectDTOsyue.Count > 0 )
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "采购项目录入").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = projectDTOsyue.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 = projectDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
|
|
|
|
#region 客户资料录入
|
|
var _intentionCustomerDTOs = _intentionCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (_intentionCustomerDTOs!=null && _intentionCustomerDTOs.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "客户资料录入").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = _intentionCustomerDTOs.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 = _intentionCustomerDTOs.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.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 intentionVisitDTOs = _intentionVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "01").ToList();
|
if (intentionVisitDTOs != null && intentionVisitDTOs.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "电话推广").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = intentionVisitDTOs.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 = intentionVisitDTOs.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 群发短信
|
|
var duanxinsyue = _cusFangwenjiluService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.Fasongfangshi == "01").ToList();
|
if (duanxinsyue != null && duanxinsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "群发短信").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = duanxinsyue.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 = duanxinsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 群发邮件
|
|
var youjiansyue = _cusFangwenjiluService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.Fasongfangshi == "02").ToList();
|
if (youjiansyue != null && youjiansyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "群发邮件").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = youjiansyue.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 = youjiansyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 新增意向客户(订单)
|
|
var yixiangsyue = _intentionCustomerService.GetListsalaryyixiang(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (yixiangsyue != null && yixiangsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "新增意向客户(订单)").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = yixiangsyue.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 = yixiangsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
|
#region 新增注册会员
|
|
//本月数量
|
List<YaoQingYongHuDTO> zhucehuiyuansyue = new List<YaoQingYongHuDTO>();
|
try
|
{
|
//var pltUserDTO = _userService.GetPltUserEntity(userList[i].Id);
|
string huiyuanurl = _configuration.GetSection("huiyuanurl").Value;
|
string GetYGYaoQingYonghu = _configuration.GetSection("GetYGYaoQingYonghu").Value;
|
Uri postUrl2 = new Uri(huiyuanurl + GetYGYaoQingYonghu);
|
|
JObject questions2 = new JObject();
|
questions2.Add("UserID", userList[i].Id);
|
questions2.Add("StartTime", dateminkaoqin.ToString("yyyy-MM-dd HH:mm:ss"));
|
questions2.Add("EndTime", datemaxkaoqin.ToString("yyyy-MM-dd HH:mm:ss"));
|
|
string requestJson2 = questions2.ToString();
|
string result2 = string.Empty;
|
|
using (HttpContent httpContent = new StringContent(requestJson2))
|
{
|
httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");
|
|
var httpClient2 = _clientFactory.CreateClient();
|
httpClient2.Timeout = new TimeSpan(0, 0, 10);
|
var Result2 = await httpClient2.PostAsync(postUrl2, httpContent);
|
result2 = Result2.Content.ReadAsStringAsync().Result;
|
}
|
|
_logger.LogInformation("result2:" + result2);
|
JObject jobjectresult = (JObject)JsonConvert.DeserializeObject(result2);
|
|
if (jobjectresult["code"] != null && jobjectresult["code"].ToString() == "1")
|
{
|
|
zhucehuiyuansyue = JsonConvert.DeserializeObject<List<YaoQingYongHuDTO>>(jobjectresult["data"].ToString());
|
|
}
|
|
}
|
catch (Exception ex)
|
{
|
|
}
|
|
|
//var qianyueDTOsyue = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (zhucehuiyuansyue != null && zhucehuiyuansyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "新增注册会员").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = zhucehuiyuansyue.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 = zhucehuiyuansyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
|
#region 新增签约客户
|
|
var qianyueDTOsyue = _cooperatecustomCustomerService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (qianyueDTOsyue != null && qianyueDTOsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "新增签约客户").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = qianyueDTOsyue.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 = qianyueDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 上门拜访客户
|
|
var cooperVisitDTOs = _cooperVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "02").ToList();
|
var intentionVisitDTOsshangmen = _intentionVisitService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin).Where(x => x.VisType == "02").ToList();
|
if ( cooperVisitDTOs.Count > 0 || intentionVisitDTOsshangmen.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "上门拜访客户").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = intentionVisitDTOsshangmen.Count + 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 = intentionVisitDTOsshangmen.Count + cooperVisitDTOs.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 新闻资讯
|
//本月数量
|
DtChannelArticleNewsDTOSearch searchEntity1 = new DtChannelArticleNewsDTOSearch();
|
searchEntity1.EndTime = datemaxkaoqin;
|
searchEntity1.AddTime = dateminkaoqin;
|
searchEntity1.UserName = userList[i].UserSn;
|
searchEntity1.CategoryId = 3;
|
var dtChannelArticleNewsDTOs = _dtChannelArticleNewsService.GetList(searchEntity1);
|
|
if (dtChannelArticleNewsDTOs != null && dtChannelArticleNewsDTOs.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "新闻资讯").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = dtChannelArticleNewsDTOs.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 = dtChannelArticleNewsDTOs.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 典型案例
|
//本月数量
|
searchEntity1 = new DtChannelArticleNewsDTOSearch();
|
searchEntity1.EndTime = datemaxkaoqin;
|
searchEntity1.AddTime = dateminkaoqin;
|
searchEntity1.UserName = userList[i].UserSn;
|
searchEntity1.CategoryId = 85;
|
var dianxinanDTOs = _dtChannelArticleNewsService.GetList(searchEntity1);
|
|
if (dianxinanDTOs != null && dianxinanDTOs.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "典型案例").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = dianxinanDTOs.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 = dianxinanDTOs.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 政采知识
|
//本月数量
|
searchEntity1 = new DtChannelArticleNewsDTOSearch();
|
searchEntity1.EndTime = datemaxkaoqin;
|
searchEntity1.AddTime = dateminkaoqin;
|
searchEntity1.UserName = userList[i].UserSn;
|
searchEntity1.CategoryId = 73;
|
var zhengcaizhishiDTOs = _dtChannelArticleNewsService.GetList(searchEntity1);
|
|
if (zhengcaizhishiDTOs != null && zhengcaizhishiDTOs.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "政采知识").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = zhengcaizhishiDTOs.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 = zhengcaizhishiDTOs.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 新增小采问题
|
|
var xinzengwendaDTOsyue = _liaotianService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (xinzengwendaDTOsyue != null && xinzengwendaDTOsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "新增小采问题").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = xinzengwendaDTOsyue.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 = xinzengwendaDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
#region 审核小采答问
|
|
var shenhewendaDTOsyue = _liaotianService.GetListsalaryshenhe(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (shenhewendaDTOsyue != null && shenhewendaDTOsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "审核小采答问").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = shenhewendaDTOsyue.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 = shenhewendaDTOsyue.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.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 - 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 - 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.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 - 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 - 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.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 - 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 - 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.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 - 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 - 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").OrderBy(x=>x.Createtime).ToList();
|
jijianid = fiPiecerateDTOs.Where(x => 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.Tichengstandard == "02")
|
{
|
|
if (cooperOrdertushu.Count > renwujishu)
|
{
|
List<CooperOrderDTO> cooperOrdertushuyouxiao = new List<CooperOrderDTO>();
|
for (int j = Convert.ToInt32(renwujishu); j < cooperOrdertushu.Count; j++)
|
{
|
cooperOrdertushuyouxiao.Add(cooperOrdertushu[j]);
|
}
|
var dingdanjine = cooperOrdertushuyouxiao.Sum(x => x.Money);
|
var dingdanjinezhenshi = dingdanjine.HasValue ? dingdanjine.Value : 0;
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * dingdanjinezhenshi * new decimal(0.01), 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 - 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 - 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.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 - 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 - 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.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 - 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 - 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.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 - 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 - 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.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 - 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 - 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.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 - 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 - 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 == "11").ToList();
|
jijianid = fiPiecerateDTOs.Where(x => 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 - 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 - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian * new decimal(0.01), 2);
|
}
|
}
|
}
|
}
|
}
|
|
#endregion
|
|
|
|
|
#region 专家录入
|
|
var zhuanjialuruDTOsyue = _expertService.GetListsalary(userList[i].Id, dateminkaoqin, datemaxkaoqin);
|
if (zhuanjialuruDTOsyue != null && zhuanjialuruDTOsyue.Count > 0)
|
{
|
var jijianidddd = fiPiecerateDTOs.Where(x => x.Project == "专家录入").FirstOrDefault();
|
if (jijianidddd != null)
|
{
|
var jixiaotichengfangan = hrJixiaotichengThis.Where(x => x.PiecerateId == jijianidddd.Id).OrderByDescending(x => x.Effecttime).FirstOrDefault();
|
if (jixiaotichengfangan != null && jixiaotichengfangan.Ticheng.HasValue && jixiaotichengfangan.Renwu.HasValue)
|
{
|
if (jixiaotichengfangan.Renwustandard == "01")
|
{
|
decimal renwujishu = admAttendanceDTO.Yingchuqin * jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
|
}
|
else if (jixiaotichengfangan.Renwustandard == "02")
|
{
|
decimal renwujishu = jixiaotichengfangan.Renwu.Value;
|
if (jixiaotichengfangan.Tichengstandard == "01")
|
{
|
decimal youxiaojijian = zhuanjialuruDTOsyue.Count - renwujishu;
|
if (youxiaojijian > 0)
|
{
|
hrSalaryDTO.Jixiaoticheng += Math.Round(jixiaotichengfangan.Ticheng.Value * youxiaojijian, 2);
|
}
|
|
}
|
}
|
}
|
|
}
|
}
|
#endregion
|
|
}
|
|
|
|
|
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;
|
|
//计算保底年薪
|
if (userList[i].Indate.HasValue && userList[i].miniyearsalary.HasValue && userList[i].miniyearsalary.Value>0)
|
{
|
DateTime jixinue = userList[i].Indate.Value;
|
if (userList[i].Indate.Value.Day != 1)
|
{
|
jixinue = new DateTime(userList[i].Indate.Value.AddMonths(1).Year, userList[i].Indate.Value.AddMonths(1).Month, 1);
|
}
|
int months = ((datemaxkaoqin.Year - jixinue.Year) * 12) + datemaxkaoqin.Month - jixinue.Month;
|
|
if(months % 12>=1 && months % 12 == 0)
|
{
|
decimal baodinianxin = 0;
|
//查询过去12个月的工资
|
for(int z = 1; z <= 12; z++)
|
{
|
var hrSalaryDTO1 = _hrSalaryService.GetListByUser(userList[i].Id, dateminkaoqin.AddMonths(-z).Year, dateminkaoqin.AddMonths(-z).Month);
|
if (hrSalaryDTO1 != null)
|
{
|
decimal jibengongzi1 = hrSalaryDTO1.Jibengongzi.HasValue ? hrSalaryDTO1.Jibengongzi.Value : 0;
|
decimal baomifei1 = hrSalaryDTO1.Baomifei.HasValue ? hrSalaryDTO1.Baomifei.Value : 0;
|
decimal gongzuobutie1 = hrSalaryDTO1.Gongzuobutie.HasValue ? hrSalaryDTO1.Gongzuobutie.Value : 0;
|
decimal jiabangongzi1 = hrSalaryDTO1.Jiabangongzi.HasValue ? hrSalaryDTO1.Jiabangongzi.Value : 0;
|
decimal shebao1 = hrSalaryDTO1.Shebao.HasValue ? hrSalaryDTO1.Shebao.Value : 0;
|
decimal dianhuabutie1 = hrSalaryDTO1.Dianhuabutie.HasValue ? hrSalaryDTO1.Dianhuabutie.Value : 0;
|
decimal quanqinjiang1 = hrSalaryDTO1.Quanqinjiang.HasValue ? hrSalaryDTO1.Quanqinjiang.Value : 0;
|
decimal jiaotngbutie1 = hrSalaryDTO1.Jiaotngbutie.HasValue ? hrSalaryDTO1.Jiaotngbutie.Value : 0;
|
decimal jixiaoticheng1 = hrSalaryDTO1.Jixiaoticheng.HasValue ? hrSalaryDTO1.Jixiaoticheng.Value : 0;
|
decimal jiangjin1 = hrSalaryDTO1.Jiangjin.HasValue ? hrSalaryDTO1.Jiangjin.Value : 0;
|
decimal bufagongzi1 = hrSalaryDTO1.Bufagongzi.HasValue ? hrSalaryDTO1.Bufagongzi.Value : 0;
|
decimal shebaokou1 = hrSalaryDTO1.Shebaokou.HasValue ? hrSalaryDTO1.Shebaokou.Value : 0;
|
|
decimal dianhuafei1 = hrSalaryDTO1.Dianhuafei.HasValue ? hrSalaryDTO1.Dianhuafei.Value : 0;
|
decimal queqin1 = hrSalaryDTO1.Queqin.HasValue ? hrSalaryDTO1.Queqin.Value : 0;
|
decimal fakuan1 = hrSalaryDTO1.Fakuan.HasValue ? hrSalaryDTO1.Fakuan.Value : 0;
|
decimal peichang1 = hrSalaryDTO1.Peichang.HasValue ? hrSalaryDTO1.Peichang.Value : 0;
|
decimal jiucuo1 = hrSalaryDTO1.Jiucuo.HasValue ? hrSalaryDTO1.Jiucuo.Value : 0;
|
|
baodinianxin += jibengongzi1 + baomifei1 + gongzuobutie1 + jiabangongzi1 + shebao1 + quanqinjiang1 + jiaotngbutie1 + jixiaoticheng1 + jiangjin1 + bufagongzi1 + jiucuo1+ peichang1;
|
}
|
}
|
baodinianxin += jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi + jiucuo + peichang;
|
if (baodinianxin < userList[i].miniyearsalary.Value)
|
{
|
jiucuo = userList[i].miniyearsalary.Value - baodinianxin;
|
}
|
}
|
}
|
|
yingfaheji = jibengongzi + baomifei + gongzuobutie + jiabangongzi + shebao + quanqinjiang + jiaotngbutie + jixiaoticheng + jiangjin + bufagongzi - shebaokou + ((dianhuabutie - dianhuafei) <= 0 ? (dianhuabutie - dianhuafei) : 0) - queqin - fakuan + peichang + jiucuo;
|
|
|
hrSalaryDTO.Yufagongzi = userList[i].advancewages;
|
|
if (userList[i].advancewages.HasValue && userList[i].advancewages.Value > 0)
|
{
|
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;
|
}
|
|
if (hrSalaryDTO.Yufagongziheji > 0)
|
{
|
if (yingfaheji < (hrSalaryDTO.Yufagongzi+shebao- shebaokou))
|
{
|
hrSalaryDTO.Yufagongziheji += (hrSalaryDTO.Yufagongzi + shebao - shebaokou - yingfaheji);
|
yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou);
|
}
|
else if (yingfaheji > (hrSalaryDTO.Yufagongzi + shebao - shebaokou))
|
{
|
if (hrSalaryDTO.Yufagongziheji >= (yingfaheji - (hrSalaryDTO.Yufagongzi + shebao - shebaokou)))
|
{
|
hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi + shebao - shebaokou) - yingfaheji);
|
yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou);
|
}
|
else
|
{
|
yingfaheji -= hrSalaryDTO.Yufagongziheji.Value;
|
hrSalaryDTO.Yufagongziheji = 0;
|
}
|
|
|
}
|
|
}
|
else if (hrSalaryDTO.Yufagongziheji == 0)
|
{
|
hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi + shebao - shebaokou) - yingfaheji);
|
if (yingfaheji < (hrSalaryDTO.Yufagongzi + shebao - shebaokou))
|
{
|
yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou);
|
}
|
}
|
else if (hrSalaryDTO.Yufagongziheji < 0)
|
{
|
if (yingfaheji < (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou))
|
{
|
if (-hrSalaryDTO.Yufagongziheji >= ((hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou) - yingfaheji))
|
{
|
hrSalaryDTO.Yufagongziheji += ((hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou) - yingfaheji);
|
yingfaheji = (hrSalaryDTO.Yufagongzi.Value + shebao - shebaokou);
|
}
|
else
|
{
|
yingfaheji += hrSalaryDTO.Yufagongziheji.Value;
|
hrSalaryDTO.Yufagongziheji = 0;
|
}
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
yingnashuie = yingfaheji - geshuiqizheng;
|
|
|
hrSalaryDTO.Geshui = 0;
|
if (yingnashuie > 0)
|
{
|
decimal yingnashuie1 = 0;
|
decimal yingnashuie2 = 0;
|
decimal yingnashuie3 = 0;
|
decimal yingnashuie4 = 0;
|
decimal yingnashuie5 = 0;
|
decimal yingnashuie6 = 0;
|
decimal yingnashuie7 = 0;
|
if (yingnashuie > 80000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (12000 - 3000);
|
yingnashuie3 = (25000 - 12000);
|
yingnashuie4 = (35000 - 25000);
|
yingnashuie5 = (55000 - 35000);
|
yingnashuie6 = (80000 - 55000);
|
yingnashuie7 = (yingnashuie - 55000);
|
}
|
if (yingnashuie > 55000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (12000 - 3000);
|
yingnashuie3 = (25000 - 12000);
|
yingnashuie4 = (35000 - 25000);
|
yingnashuie5 = (55000 - 35000);
|
yingnashuie6 = (yingnashuie - 55000);
|
}
|
if (yingnashuie > 35000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (12000 - 3000);
|
yingnashuie3 = (25000 - 12000);
|
yingnashuie4 = (35000 - 25000);
|
yingnashuie5 = (yingnashuie - 35000);
|
}
|
else if (yingnashuie > 25000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (12000 - 3000);
|
yingnashuie3 = (25000 - 12000);
|
yingnashuie4 = (yingnashuie - 25000);
|
|
}
|
else if (yingnashuie > 12000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (12000 - 3000);
|
yingnashuie3 = (yingnashuie - 12000);
|
}
|
else if (yingnashuie > 3000)
|
{
|
yingnashuie1 = 3000;
|
yingnashuie2 = (yingnashuie - 3000);
|
}
|
else
|
{
|
yingnashuie1 = yingnashuie;
|
}
|
if (yingnashuie1 > 0)
|
{
|
var yingjiao1 = Math.Round(yingnashuie1 * new decimal(0.03) - 0, 2);
|
if (yingjiao1 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao1;
|
}
|
|
}
|
if (yingnashuie2 > 0)
|
{
|
var yingjiao2 = Math.Round(yingnashuie2 * new decimal(0.1) - 0, 2);
|
if (yingjiao2 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao2;
|
}
|
}
|
if (yingnashuie3 > 0)
|
{
|
var yingjiao3 = Math.Round(yingnashuie3 * new decimal(0.2) - 0, 2);
|
if (yingjiao3 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao3;
|
}
|
}
|
if (yingnashuie4 > 0)
|
{
|
var yingjiao4 = Math.Round(yingnashuie4 * new decimal(0.25) - 0, 2);
|
if (yingjiao4 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao4;
|
}
|
}
|
if (yingnashuie5 > 0)
|
{
|
var yingjiao5 = Math.Round(yingnashuie5 * new decimal(0.30) - 0, 2);
|
if (yingjiao5 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao5;
|
}
|
}
|
if (yingnashuie6 > 0)
|
{
|
var yingjiao6 = Math.Round(yingnashuie6 * new decimal(0.35) - 0, 2);
|
if (yingjiao6 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao6;
|
}
|
}
|
if (yingnashuie7 > 0)
|
{
|
var yingjiao7 = Math.Round(yingnashuie7 * new decimal(0.45) - 0, 2);
|
if (yingjiao7 > 0)
|
{
|
hrSalaryDTO.Geshui += yingjiao7;
|
}
|
}
|
|
}
|
decimal geshui = hrSalaryDTO.Geshui.HasValue ? hrSalaryDTO.Geshui.Value : 0;
|
|
|
|
hrSalaryDTO.Daozhanggongzi = yingfaheji - geshui;
|
|
|
|
|
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 void jisuangonglinggongzi()
|
{
|
_logger.LogInformation("计算是否涨工龄工资");
|
List<PltUserDTO> userList = _userService.GetList();//.Where(x => x.UserSn == "yang").ToList();
|
foreach(var userDTO in userList)
|
{
|
if (userDTO.senioritywages.HasValue && userDTO.Indate.HasValue)
|
{
|
int year = DateTime.Now.Year - (userDTO.Indate.Value.Year+1);
|
if (userDTO.Indate.Value.Month==1 && userDTO.Indate.Value.Day == 1)
|
{
|
year = DateTime.Now.Year - userDTO.Indate.Value.Year ;
|
}
|
if ( year >= 1)
|
{
|
userDTO.BasicPrice += userDTO.senioritywages.Value;
|
_userService.savePltUser(userDTO);
|
_logger.LogInformation(userDTO.Name +"涨工龄工资"+ userDTO.senioritywages.HasValue +" 之后月薪" + userDTO.BasicPrice);
|
}
|
}
|
}
|
}
|
|
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();
|
|
var jiabanri = admAttendanceRulesDtlDTOs.Where(x => x.Name == "jiabanri").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)
|
|| jiabanri.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)
|
|| jiabanri.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 <= dateTimenow.Date && x.ValueEnd >= dateTimenow.Date)
|
|| jiabanri.Exists(x => x.ValueStart <= dateTimenow.Date && x.ValueEnd >= dateTimenow.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)
|
|| jiabanri.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;
|
}
|
}
|
}
|