工资 饼就这么大,资本是如何内卷剥削的? 集体计件工资算法

前言:饼就这么大,资本是如何内卷剥削? 

算法,即剥削_喜欢打酱油的老鸟-CSDN博客

 居然这么多阅读量 晕

 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)
                        ;
                    }

posted @ 2021-11-13 20:45  cao919  阅读(215)  评论(0编辑  收藏  举报