工资 饼就这么大,资本是如何内卷剥削的? 集体计件工资算法
前言:饼就这么大,资本是如何内卷剥削?
居然这么多阅读量 晕
202111023 第二次修订
刚出高校财务坑 又进工厂财务坑 ,第一次接触到居然还有这么资本的算法 还是我跟独资外企整的 唉。
思路 看公式 最关键点是小组总评分 也就是分母。
上面公式对理解有歧义
分析拆解简化下 A个人集体计件工资 算法
小组总产量 * ((A个人出勤*(杂七杂八的权重系数))/(A个人出勤*(A杂七杂八的权重系数)+B个人出勤*(B杂七杂八的权重系数)+C个人出勤*(C杂七杂八的权重系数)......)+各种补贴
第一步 :先根据组织-小组 分组拿小组的总工资
select 0 as 集体计件工资,sum(A个人出勤) A个人出勤 , sum(A杂七杂八的权重)
from 个人上班信息 order by 组织, 小组, 每天
第二步:一个一个遍历 求和 积累总输出 分母 小组总系数
第三步 遍历 总数 拿累计的最大系数 就是分母
关键点 注意用max
第四步 得出个人总集体 总工资
真实业务
迭代修正后的代码
List<WagesTaxationDto> listWagesTaxationDtonew = new List<WagesTaxationDto>();
if (list.Count() > 0)
{
List<WagesTaxationDto> listdept = new List<WagesTaxationDto>();
WagesTaxationDto itemtotal = new WagesTaxationDto();
//为啥会把上一次的情况 妈的
//分母总数
foreach (var baseitem in list.ToList())
{
WagesTaxationDto addWagesTaxationDto = new WagesTaxationDto();
addWagesTaxationDto = baseitem;
/*注意逻辑只能+ 不能和*/
//itemtotal.PieceType1 = baseitem.PieceType1; 20211122 加组
if (baseitem.FtyCode == itemtotal.FtyCode && baseitem.Department == itemtotal.Department && baseitem.PieceType == (int)PieceType.PieceType2 && baseitem.GroupName == itemtotal.GroupName && baseitem.WorkingDate == itemtotal.WorkingDate)
{
addWagesTaxationDto.PieceType2 = itemtotal.PieceType2 + baseitem.ActualAttendance * (baseitem.PostCoefficient + baseitem.WorkingYearsCoefficient + baseitem.TechnicalScoringCoefficient + baseitem.PersonalRating);
}
else
{
addWagesTaxationDto.PieceType2 = baseitem.ActualAttendance * (baseitem.PostCoefficient + baseitem.WorkingYearsCoefficient + baseitem.TechnicalScoringCoefficient + baseitem.PersonalRating);
}
itemtotal = addWagesTaxationDto;
listdept.Add(addWagesTaxationDto);
}
//正常来说后面的逻辑在这个括号里面
}
设置分母
WagesTaxationDto newWagesTaxationDto = new WagesTaxationDto();
foreach (var baseitemnew in list.ToList())
{
//if (baseitemnew.WorkerId == "HNXM0025" && baseitemnew.PieceType == (int)PieceType.PieceType1)
//{
//}
newWagesTaxationDto = baseitemnew;
// 这里取得 为空 判断 分母
decimal tempdeptmaxPieceType1 = 0, DeptOput = 0, DeptOputPiece = 0;
// decimal? DeptOput = 0, DeptOputPiece = 0;
if (listdept.FirstOrDefault(t => t.FtyCode == baseitemnew.FtyCode && t.Department == baseitemnew.Department && t.PieceType == (int)PieceType.PieceType2 && t.GroupName == baseitemnew.GroupName && t.WorkingDate == baseitemnew.WorkingDate) != null)
{
tempdeptmaxPieceType1 = listdept.Where(t => t.FtyCode == baseitemnew.FtyCode && t.Department == baseitemnew.Department && t.GroupName == baseitemnew.GroupName && t.PieceType == (int)PieceType.PieceType2 && t.WorkingDate == baseitemnew.WorkingDate).Max(p => p.PieceType2);
}
分蛋糕
newWagesTaxationDto.PieceType2 = 0;
//小组相等就算总分母
if (baseitemnew.PieceType == (int)PieceType.PieceType2 && tempdeptmaxPieceType1 != 0)
{
baseitemnew.PieceTypeRatio = tempdeptmaxPieceType1;
newWagesTaxationDto.PieceType2 = (DeptOput * DeptOputPiece) * ((baseitemnew.ActualAttendance * (baseitemnew.PostCoefficient + baseitemnew.WorkingYearsCoefficient + baseitemnew.TechnicalScoringCoefficient + baseitemnew.PersonalRating)) / tempdeptmaxPieceType1)
;
}