|
@@ -24,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.text.ParseException;
|
|
|
import java.util.*;
|
|
|
|
|
@@ -680,7 +681,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "plan");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(planList, new EffiRateComparator());
|
|
@@ -728,7 +732,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总消耗--获取这个人所在项目的总消耗
|
|
|
BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByPlanId(planList.get(i).getUserId(), startTime, endTime);
|
|
|
//总绩效=总消耗*提点比例(3‰)*提成比例(编导40%)
|
|
|
- BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.4"));
|
|
|
+ BigDecimal totalPerformance = BigDecimal.ZERO;
|
|
|
+ if(totalCost != null){
|
|
|
+ totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.4"));
|
|
|
+ }
|
|
|
|
|
|
Performance performance = new Performance();
|
|
|
performance.setAppType(2); //1头条 2快手
|
|
@@ -761,7 +768,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "shot");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(shotList, new EffiRateComparator());
|
|
@@ -842,7 +852,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "clip");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(clipList, new EffiRateComparator());
|
|
@@ -967,7 +980,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
|
|
|
+ BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
//循环项目下所有平面设计
|
|
|
for (UserDto2 plane : planeList) {
|
|
@@ -1073,7 +1086,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 1, userDto.getUserId(), "plan");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(planList, new EffiRateComparator());
|
|
@@ -1151,7 +1167,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 1, userDto.getUserId(), "shot");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(shotList, new EffiRateComparator());
|
|
@@ -1229,7 +1248,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
//总视频数量
|
|
|
int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "clip");
|
|
|
//视频有效率
|
|
|
- BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
|
|
|
+ BigDecimal effiRate=BigDecimal.ZERO;
|
|
|
+ if (videoCount != 0){
|
|
|
+ effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
+ }
|
|
|
userDto.setEffiRate(effiRate);
|
|
|
}
|
|
|
Collections.sort(clipList, new EffiRateComparator());
|
|
@@ -1352,7 +1374,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
- BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
|
|
|
+ BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)),4,BigDecimal.ROUND_HALF_UP);
|
|
|
|
|
|
//循环项目下所有平面设计
|
|
|
for (UserDto2 plane : planeList) {
|