Sfoglia il codice sorgente

平面、设计师leader绩效逻辑修改、绩效项目维度接口增加

hcst_sunzhen 5 anni fa
parent
commit
eb38c55a13

+ 63 - 39
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/impl/PerformanceServiceImpl2.java

@@ -630,11 +630,11 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         String endTime = quarterStartEndDateMap.get("endDate");
 
         //编导
-        kuaishouPlanPerformance(thisYear, thisQuarter, startTime, endTime);
+        //kuaishouPlanPerformance(thisYear, thisQuarter, startTime, endTime);
         //拍摄
-        kuaishouShotPerformance(thisYear, thisQuarter, startTime, endTime);
+        //kuaishouShotPerformance(thisYear, thisQuarter, startTime, endTime);
         //剪辑
-        kuaishouClipPerformance(thisYear, thisQuarter, startTime, endTime);
+        //kuaishouClipPerformance(thisYear, thisQuarter, startTime, endTime);
         //平面设计
         kuaishouPlanePerformance(thisYear, thisQuarter, startTime, endTime);
         //设计师leader
@@ -706,8 +706,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByPlanId(planList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(编导40%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.4"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.4"));
+            }
             Performance performance = new Performance();
             performance.setAppType(2); //1头条 2快手
             performance.setRoleId(planList.get(i).getRoleId());
@@ -793,8 +795,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByShotId(shotList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(拍摄10%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.1"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.1"));
+            }
             Performance performance = new Performance();
             performance.setAppType(2); //1头条 2快手
             performance.setRoleId(shotList.get(i).getRoleId());
@@ -819,8 +823,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByShotId(shotList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(3‰)*提成比例(拍摄10%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.1"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.1"));
+            }
             Performance performance = new Performance();
             performance.setAppType(2); //1头条 2快手
             performance.setRoleId(shotList.get(i).getRoleId());
@@ -877,8 +883,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByClipId(clipList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(剪辑30%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.3"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.005")).multiply(new BigDecimal("0.3"));
+            }
             Performance performance = new Performance();
             performance.setAppType(2); //1头条 2快手
             performance.setRoleId(clipList.get(i).getRoleId());
@@ -903,8 +911,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.getTotalCostByClipId(clipList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(3‰)*提成比例(剪辑30%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.3"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.3"));
+            }
             Performance performance = new Performance();
             performance.setAppType(2); //1头条 2快手
             performance.setRoleId(clipList.get(i).getRoleId());
@@ -948,6 +958,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             UserDto2 designLeader = userEfficientVideoMapMapper.getProjectDesignResponsibleInfo(projectDTO.getProjectId());
             List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
             BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
+            quarterCost = quarterCost==null?BigDecimal.ZERO:quarterCost;
             //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师,故跳过
             int size = planeList.size();
             log.info(projectDTO.getProjectName() + "中有" + size + "个平面设计");
@@ -963,17 +974,17 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 planeProjectCost.setUserId(designLeader.getUserId());
                 //增加平面人数、和项目单独的绩效
                 planeProjectCost.setProjectPlaneCount(1);
-                planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.003")));
+                planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.003")).setScale(4,BigDecimal.ROUND_HALF_UP));
                 planeProjectCost.setType(2);
 
                 if (null == designLeaderMap.get(designLeader.getUserId())) {
                     designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
                     designLeader.setCost(quarterCost);  //项目总消耗
-                    planeMap.put(planeProjectCost.getUserId(), designLeader);
+                    designLeaderMap.put(planeProjectCost.getUserId(), designLeader);
                 } else {
                     //将增加的金额增加到
-                    planeMap.get(designLeader.getUserId()).setEffiRate(planeMap.get(designLeader.getUserId()).getEffiRate().add(designLeader.getEffiRate()));
-                    planeMap.get(designLeader.getUserId()).setCost(planeMap.get(designLeader.getUserId()).getCost().add(designLeader.getCost()));
+                    designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(planeProjectCost.getProjectPerformance()));
+                    designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(quarterCost));
                 }
                 planeProjectCostMapper.insert(planeProjectCost);
 
@@ -997,7 +1008,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 planeProjectCost.setUserId(plane.getUserId());
                 //增加平面人数、和项目单独的绩效
                 planeProjectCost.setProjectPlaneCount(planeList.size());
-                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.003")).setScale(2));
+                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.003")).setScale(4,BigDecimal.ROUND_HALF_UP));
                 if (null == planeMap.get(plane.getUserId())) {
                     plane.setEffiRate(averageQuarterCost);
                     planeMap.put(plane.getUserId(), plane);
@@ -1024,11 +1035,11 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             if (null == designLeaderMap.get(designLeader.getUserId())) {
                 designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
                 designLeader.setCost(quarterCost);  //项目总消耗
-                planeMap.put(designLeader.getUserId(), designLeader);
+                designLeaderMap.put(designLeader.getUserId(), designLeader);
             } else {
                 //将增加的金额增加到
-                planeMap.get(designLeader.getUserId()).setEffiRate(planeMap.get(designLeader.getUserId()).getEffiRate().add(designLeader.getEffiRate()));
-                planeMap.get(designLeader.getUserId()).setCost(planeMap.get(designLeader.getUserId()).getCost().add(designLeader.getCost()));
+                designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(planeProjectCost.getProjectPerformance()));
+                designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(quarterCost));
             }
             planeProjectCostMapper.insert(planeProjectCost);
 
@@ -1108,8 +1119,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //头条编导总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByPlanId(planList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(编导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(1); //1头条 2快手
             performance.setRoleId(planList.get(i).getRoleId());
@@ -1134,8 +1147,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //这个编导的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByPlanId(planList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(2‰)*提成比例(编导40%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.4"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.4"));
+            }
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
             performance.setRoleId(planList.get(i).getRoleId());
@@ -1189,8 +1204,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByShotId(shotList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(拍摄10%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.1"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.1"));
+            }
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
             performance.setRoleId(shotList.get(i).getRoleId());
@@ -1215,8 +1232,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByShotId(shotList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(3‰)*提成比例(拍摄10%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.1"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.1"));
+            }
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
             performance.setRoleId(shotList.get(i).getRoleId());
@@ -1270,8 +1289,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByClipId(clipList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(5‰)*提成比例(剪辑30%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.3"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.3"));
+            }
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
             performance.setRoleId(clipList.get(i).getRoleId());
@@ -1296,8 +1317,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             //总消耗--获取这个人所在项目的总消耗
             BigDecimal totalCost = userEfficientVideoMapMapper.toutiaoGetTotalCostByClipId(clipList.get(i).getUserId(), startTime, endTime);
             //总绩效=总消耗*提点比例(3‰)*提成比例(剪辑30%)
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.3"));
-
+            BigDecimal totalPerformance = BigDecimal.ZERO;
+            if(totalCost != null) {
+                totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.3"));
+            }
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
             performance.setRoleId(clipList.get(i).getRoleId());
@@ -1342,6 +1365,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             UserDto2 designLeader = userEfficientVideoMapMapper.getProjectDesignResponsibleInfo(projectDTO.getProjectId());
             List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
             BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
+            quarterCost = quarterCost==null?BigDecimal.ZERO:quarterCost;
             //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师;项目没有平面的情况下,项目leader绩效提成为20%
             int size = planeList.size();
             if (size == 0) {
@@ -1366,8 +1390,8 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                         designLeaderMap.put(designLeader.getUserId(), designLeader);
                     } else {
                         //将增加的金额增加到
-                        designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(designLeader.getEffiRate()));
-                        designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(designLeader.getCost()));
+                        designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(planeProjectCost.getProjectPerformance()));
+                        designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(quarterCost));
                     }
                     planeProjectCostMapper.insert(planeProjectCost);
                 }
@@ -1415,7 +1439,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             planeProjectCost.setUserId(designLeader.getUserId());
             //增加平面人数、和项目单独的绩效
             planeProjectCost.setProjectPlaneCount(1);
-            planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.15")).multiply(new BigDecimal("0.002")));
+            planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.15")).multiply(new BigDecimal("0.002")).setScale(4,BigDecimal.ROUND_HALF_UP));
             planeProjectCost.setType(2);
 
             if (null == designLeaderMap.get(designLeader.getUserId())) {
@@ -1424,8 +1448,8 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 designLeaderMap.put(designLeader.getUserId(), designLeader);
             } else {
                 //将增加的金额增加到
-                designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(designLeader.getEffiRate()));
-                designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(designLeader.getCost()));
+                designLeaderMap.get(designLeader.getUserId()).setEffiRate(designLeaderMap.get(designLeader.getUserId()).getEffiRate().add(planeProjectCost.getProjectPerformance()));
+                designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.get(designLeader.getUserId()).getCost().add(quarterCost));
             }
             planeProjectCostMapper.insert(planeProjectCost);
         }
@@ -1439,7 +1463,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             performance.setYear(thisYear);
             performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2‰
             performance.setTotalCost(planeMap.get(key).getEffiRate());
-            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.002")));  //头条
+            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.002")).setScale(4,BigDecimal.ROUND_HALF_UP));  //头条
             performance.setRoleCommissionRate(new BigDecimal("0.05"));
             performance.setStartTime(startTime);
             performance.setEndTime(endTime);

+ 1 - 1
performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/mapper/xml/UserEfficientVideoMapMapper.xml

@@ -1572,7 +1572,7 @@
             left join sys_user_role c on b.id = c.user_id
             left join sys_role d on c.role_id = d.id
             where
-            id = #{projectId}
+            a.id = #{projectId}
     </select>
 
     <!-- 快手根据账户获取其下视频制作信息以及消耗 -->