Ver código fonte

平面、设计师leader绩效逻辑修改

hcst_sunzhen 5 anos atrás
pai
commit
7246c4b19c

+ 41 - 4
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/controller/PerformanceController2.java

@@ -3,10 +3,7 @@ package org.jeecg.modules.system.controller;
 import cn.com.ctop.common.module.entity.MaterialInfo;
 import cn.com.ctop.performanceaccount.entity.PerformanceAccount;
 import cn.com.ctop.performanceappraisal.entity.Performance;
-import cn.com.ctop.userefficientvideomap.entity.AccountDTO;
-import cn.com.ctop.userefficientvideomap.entity.DesignMaterialInfo;
-import cn.com.ctop.userefficientvideomap.entity.PerformanceTimeDTO;
-import cn.com.ctop.userefficientvideomap.entity.UserDto2;
+import cn.com.ctop.userefficientvideomap.entity.*;
 import cn.com.ctop.userefficientvideomap.mapper.UserEfficientVideoMapMapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -21,6 +18,7 @@ import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.DateUtils;
+import org.jeecg.modules.ctop.entity.Project;
 import org.jeecg.modules.system.service.IPerformanceService2;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
@@ -638,4 +636,43 @@ public class PerformanceController2 {
     }
 
 
+    @AutoLog(value = "项目报表-按平台获取其下所有项目信息以及消耗")
+    @ApiOperation(value = "按平台获取其下所有项目信息以及消耗", notes = "按平台获取其下所有项目信息以及消耗")
+    @PostMapping(value = "/getProjcetListByMediaType")
+    public Result<List<ProjectDTO>> getProjcetListByMediaType(@RequestBody PerformanceTimeDTO dto,
+                                                             HttpServletRequest req) {
+        Result<List<ProjectDTO>> result = new Result<>();
+        Integer year = dto.getYear();
+        Integer quarter = dto.getQuarter();
+        Integer appType = dto.getAppType();
+        if(year==null || quarter == null || appType == null ){
+            result.setSuccess(false);
+            result.setMessage("媒体类型均不能为空");
+        }
+        List<ProjectDTO> userDto2List = performanceService.getProjcetListByMediaType(year, quarter, appType);
+        result.setSuccess(true);
+        result.setResult(userDto2List);
+        return result;
+    }
+
+    @AutoLog(value = "项目报表-根据projectId获取其下账户季度消耗信息")
+    @ApiOperation(value = "根据projectId获取其下账户季度消耗信息", notes = "根据projectId获取其下账户季度消耗信息")
+    @PostMapping(value = "/getQuarterAccountDetail")
+    public Result<List<AccountDTO>> getQuarterAccountDetail(@RequestBody PerformanceTimeDTO dto,
+                                                              HttpServletRequest req) {
+        Result<List<AccountDTO>> result = new Result<>();
+        Integer year = dto.getYear();
+        Integer quarter = dto.getQuarter();
+        Integer appType = dto.getAppType();
+        if(year==null || quarter == null || appType == null ){
+            result.setSuccess(false);
+            result.setMessage("媒体类型均不能为空");
+        }
+        List<AccountDTO> userDto2List = performanceService.getQuarterAccountDetail(year, quarter, appType);
+        result.setSuccess(true);
+        result.setResult(userDto2List);
+        return result;
+    }
+
+
 }

+ 7 - 0
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPerformanceService2.java

@@ -5,6 +5,7 @@ import cn.com.ctop.performanceaccount.entity.PerformanceAccount;
 import cn.com.ctop.performanceappraisal.entity.Performance;
 import cn.com.ctop.userefficientvideomap.entity.AccountDTO;
 import cn.com.ctop.userefficientvideomap.entity.DesignMaterialInfo;
+import cn.com.ctop.userefficientvideomap.entity.ProjectDTO;
 import cn.com.ctop.userefficientvideomap.entity.UserDto2;
 import com.baomidou.mybatisplus.extension.service.IService;
 
@@ -122,4 +123,10 @@ public interface IPerformanceService2 extends IService<Performance> {
 
     //根据userId获取此人在季度的消耗明细
     List<PerformanceAccount> getYunyingQuarterDetailByUserId(Integer year, Integer quarter, String userId, Integer appType);
+
+    //按平台获取其下所有项目信息以及消耗
+    List<ProjectDTO> getProjcetListByMediaType(Integer year, Integer quarter, Integer appType );
+
+    //根据projectId获取其下账户季度消耗信息
+    List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer appType);
 }

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

@@ -109,148 +109,148 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         newToutiaoVideo( calcDate,  thisYear,  thisQuarter,  thisMonth, DateUtils.formatDate(friday),  DateUtils.formatDate(thursday));
     }
 
-    //快手有效视频统计
-    private void kuaishouEffiVideo(Date calcDate, String effiCalcStart, String effiCalcEnd, String effiStart, String effiEnd, int thisYear, int thisMonth, int thisQuarter) {
-        log.info("快手有效视频统计开始,统计时间为 " + calcDate);
-        //获取时间段内所有<快手>的有效视频
-        List<EffiVideoDTO> EffiVideoDTOList = userEfficientVideoMapMapper.getUserVideoMap(effiStart, effiEnd, effiCalcStart, effiCalcEnd);
-
-        for (EffiVideoDTO effiVideoDTO : EffiVideoDTOList) {
-            //判断此视频是否已经在关系表中存在,如果已经存在则说明此视频已经存在,跳过即可
-            //有效视频的逻辑是无论是快手还是头条
-            int signatureCount = userEfficientVideoMapMapper.getEffiVideoCountBySignature(effiVideoDTO.getSignature(), new Integer(2));//1快手 2头条
-            if (signatureCount != 0) {
-                continue;
-            }
-
-            UserEfficientVideoMap shot = new UserEfficientVideoMap();
-            UserEfficientVideoMap plane = new UserEfficientVideoMap();
-            UserEfficientVideoMap plan = new UserEfficientVideoMap();
-            UserEfficientVideoMap clip = new UserEfficientVideoMap();
-
-            //拍摄
-            shot.setUserId(effiVideoDTO.getShotId());
-            shot.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            shot.setQuarter(thisQuarter);
-            shot.setAppType(2); //1头条 2快手
-            shot.setYear(thisYear);
-            shot.setMonth(thisMonth);
-            shot.setCalcDate(calcDate);
-            shot.setRoleId("7bff9afed625aeeabca6bffe3c189183");
-            userEfficientVideoMapMapper.insert(shot);
-
-            //平面
-            plane.setUserId(effiVideoDTO.getPlaneId());
-            plane.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            plane.setQuarter(thisQuarter);
-            plane.setAppType(2); //1头条 2快手
-            plane.setYear(thisYear);
-            plane.setMonth(thisMonth);
-            plane.setCalcDate(calcDate);
-            plane.setRoleId("8dc30cb9810bde89bdc3fa8a85b830b0");
-            userEfficientVideoMapMapper.insert(plane);
-
-            //策划
-            plan.setUserId(effiVideoDTO.getPlanId());
-            plan.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            plan.setQuarter(thisQuarter);
-            plan.setAppType(2); //1头条 2快手
-            plan.setYear(thisYear);
-            plan.setMonth(thisMonth);
-            plan.setCalcDate(calcDate);
-            plan.setRoleId("0214283aa16f943efbb149ea4bb18f18");
-            userEfficientVideoMapMapper.insert(plan);
-
-            //剪辑
-            clip.setUserId(effiVideoDTO.getClipId());
-            clip.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            clip.setQuarter(thisQuarter);
-            clip.setAppType(2); //1头条 2快手
-            clip.setYear(thisYear);
-            clip.setMonth(thisMonth);
-            clip.setCalcDate(calcDate);
-            clip.setRoleId("f38d8d70cf7ec50d5357a749e4dbf8ee");
-            userEfficientVideoMapMapper.insert(clip);
-
-            //快手有效视频同步到有效视频素材库
-            userEfficientVideoMapMapper.updateKuaishouEffiType(1, effiVideoDTO.getSignature());
-
-        }
-        log.info("快手有效视频统计结束,统计时间为 " + calcDate);
-    }
-
-    //头条有效视频计算
-    private void toutiaoEffiVideo(Date calcDate, String effiCalcStart, String effiCalcEnd, String effiStart, String effiEnd, int thisYear, int thisMonth, int thisQuarter) {
-        log.info("头条手有效视频统计开始,统计时间为 " + calcDate);
-        //获取时间段内所有头条的有效视频
-        List<EffiVideoDTO> EffiVideoDTOList = userEfficientVideoMapMapper.getToutiaoUserVideoMap(effiStart, effiEnd, effiCalcStart, effiCalcEnd);
-
-        for (EffiVideoDTO effiVideoDTO : EffiVideoDTOList) {
-            //判断此视频是否已经在关系表中存在,如果已经存在则说明此视频已经存在,跳过即可
-            //有效视频的逻辑是无论是快手还是头条
-            int signatureCount = userEfficientVideoMapMapper.getEffiVideoCountBySignature(effiVideoDTO.getSignature(), new Integer(1));//1头条 2快手
-            if (signatureCount != 0) {
-                continue;
-            }
-
-            UserEfficientVideoMap shot = new UserEfficientVideoMap();
-            UserEfficientVideoMap plane = new UserEfficientVideoMap();
-            UserEfficientVideoMap plan = new UserEfficientVideoMap();
-            UserEfficientVideoMap clip = new UserEfficientVideoMap();
-
-            //拍摄
-            shot.setUserId(effiVideoDTO.getShotId());
-            shot.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            shot.setQuarter(thisQuarter);
-            shot.setAppType(1); //1头条 2快手
-            shot.setYear(thisYear);
-            shot.setMonth(thisMonth);
-            shot.setCalcDate(calcDate);
-            shot.setRoleId("7bff9afed625aeeabca6bffe3c189183");
-            //role_code shot
-            userEfficientVideoMapMapper.insert(shot);
-
-            //平面
-            plane.setUserId(effiVideoDTO.getPlaneId());
-            plane.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            plane.setQuarter(thisQuarter);
-            plane.setAppType(1); //1头条 2快手
-            plane.setYear(thisYear);
-            plane.setMonth(thisMonth);
-            plane.setCalcDate(calcDate);
-            plane.setRoleId("8dc30cb9810bde89bdc3fa8a85b830b0");
-            //role_code shot
-            userEfficientVideoMapMapper.insert(plane);
-
-            //策划
-            plan.setUserId(effiVideoDTO.getPlanId());
-            plan.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            plan.setQuarter(thisQuarter);
-            plan.setAppType(1); //1头条 2快手
-            plan.setYear(thisYear);
-            plan.setMonth(thisMonth);
-            plan.setCalcDate(calcDate);
-            plan.setRoleId("0214283aa16f943efbb149ea4bb18f18");
-            //role_code plan
-            userEfficientVideoMapMapper.insert(plan);
-
-            //剪辑
-            clip.setUserId(effiVideoDTO.getClipId());
-            clip.setEfficientVideoSignature(effiVideoDTO.getSignature());
-            clip.setQuarter(thisQuarter);
-            clip.setAppType(1); //1头条 2快手
-            clip.setYear(thisYear);
-            clip.setMonth(thisMonth);
-            clip.setCalcDate(calcDate);
-            clip.setRoleId("f38d8d70cf7ec50d5357a749e4dbf8ee");
-            //role_code clip
-            userEfficientVideoMapMapper.insert(clip);
-
-            //头条有效视频同步到有效视频素材库
-            userEfficientVideoMapMapper.updateToutiaoEffiType(1, effiVideoDTO.getSignature());
-        }
-        log.info("头条有效视频统计结束,统计时间为 " + calcDate);
-    }
+    //快手有效视频统计--旧版已废弃
+    //private void kuaishouEffiVideo(Date calcDate, String effiCalcStart, String effiCalcEnd, String effiStart, String effiEnd, int thisYear, int thisMonth, int thisQuarter) {
+    //    log.info("快手有效视频统计开始,统计时间为 " + calcDate);
+    //    //获取时间段内所有<快手>的有效视频
+    //    List<EffiVideoDTO> EffiVideoDTOList = userEfficientVideoMapMapper.getUserVideoMap(effiStart, effiEnd, effiCalcStart, effiCalcEnd);
+    //
+    //    for (EffiVideoDTO effiVideoDTO : EffiVideoDTOList) {
+    //        //判断此视频是否已经在关系表中存在,如果已经存在则说明此视频已经存在,跳过即可
+    //        //有效视频的逻辑是无论是快手还是头条
+    //        int signatureCount = userEfficientVideoMapMapper.getEffiVideoCountBySignature(effiVideoDTO.getSignature(), new Integer(2));//1快手 2头条
+    //        if (signatureCount != 0) {
+    //            continue;
+    //        }
+    //
+    //        UserEfficientVideoMap shot = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap plane = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap plan = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap clip = new UserEfficientVideoMap();
+    //
+    //        //拍摄
+    //        shot.setUserId(effiVideoDTO.getShotId());
+    //        shot.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        shot.setQuarter(thisQuarter);
+    //        shot.setAppType(2); //1头条 2快手
+    //        shot.setYear(thisYear);
+    //        shot.setMonth(thisMonth);
+    //        shot.setCalcDate(calcDate);
+    //        shot.setRoleId("7bff9afed625aeeabca6bffe3c189183");
+    //        userEfficientVideoMapMapper.insert(shot);
+    //
+    //        //平面
+    //        plane.setUserId(effiVideoDTO.getPlaneId());
+    //        plane.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        plane.setQuarter(thisQuarter);
+    //        plane.setAppType(2); //1头条 2快手
+    //        plane.setYear(thisYear);
+    //        plane.setMonth(thisMonth);
+    //        plane.setCalcDate(calcDate);
+    //        plane.setRoleId("8dc30cb9810bde89bdc3fa8a85b830b0");
+    //        userEfficientVideoMapMapper.insert(plane);
+    //
+    //        //策划
+    //        plan.setUserId(effiVideoDTO.getPlanId());
+    //        plan.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        plan.setQuarter(thisQuarter);
+    //        plan.setAppType(2); //1头条 2快手
+    //        plan.setYear(thisYear);
+    //        plan.setMonth(thisMonth);
+    //        plan.setCalcDate(calcDate);
+    //        plan.setRoleId("0214283aa16f943efbb149ea4bb18f18");
+    //        userEfficientVideoMapMapper.insert(plan);
+    //
+    //        //剪辑
+    //        clip.setUserId(effiVideoDTO.getClipId());
+    //        clip.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        clip.setQuarter(thisQuarter);
+    //        clip.setAppType(2); //1头条 2快手
+    //        clip.setYear(thisYear);
+    //        clip.setMonth(thisMonth);
+    //        clip.setCalcDate(calcDate);
+    //        clip.setRoleId("f38d8d70cf7ec50d5357a749e4dbf8ee");
+    //        userEfficientVideoMapMapper.insert(clip);
+    //
+    //        //快手有效视频同步到有效视频素材库
+    //        userEfficientVideoMapMapper.updateKuaishouEffiType(1, effiVideoDTO.getSignature());
+    //
+    //    }
+    //    log.info("快手有效视频统计结束,统计时间为 " + calcDate);
+    //}
+
+    //头条有效视频计算--旧版 已废弃
+    //private void toutiaoEffiVideo(Date calcDate, String effiCalcStart, String effiCalcEnd, String effiStart, String effiEnd, int thisYear, int thisMonth, int thisQuarter) {
+    //    log.info("头条手有效视频统计开始,统计时间为 " + calcDate);
+    //    //获取时间段内所有头条的有效视频
+    //    List<EffiVideoDTO> EffiVideoDTOList = userEfficientVideoMapMapper.getToutiaoUserVideoMap(effiStart, effiEnd, effiCalcStart, effiCalcEnd);
+    //
+    //    for (EffiVideoDTO effiVideoDTO : EffiVideoDTOList) {
+    //        //判断此视频是否已经在关系表中存在,如果已经存在则说明此视频已经存在,跳过即可
+    //        //有效视频的逻辑是无论是快手还是头条
+    //        int signatureCount = userEfficientVideoMapMapper.getEffiVideoCountBySignature(effiVideoDTO.getSignature(), new Integer(1));//1头条 2快手
+    //        if (signatureCount != 0) {
+    //            continue;
+    //        }
+    //
+    //        UserEfficientVideoMap shot = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap plane = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap plan = new UserEfficientVideoMap();
+    //        UserEfficientVideoMap clip = new UserEfficientVideoMap();
+    //
+    //        //拍摄
+    //        shot.setUserId(effiVideoDTO.getShotId());
+    //        shot.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        shot.setQuarter(thisQuarter);
+    //        shot.setAppType(1); //1头条 2快手
+    //        shot.setYear(thisYear);
+    //        shot.setMonth(thisMonth);
+    //        shot.setCalcDate(calcDate);
+    //        shot.setRoleId("7bff9afed625aeeabca6bffe3c189183");
+    //        //role_code shot
+    //        userEfficientVideoMapMapper.insert(shot);
+    //
+    //        //平面
+    //        plane.setUserId(effiVideoDTO.getPlaneId());
+    //        plane.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        plane.setQuarter(thisQuarter);
+    //        plane.setAppType(1); //1头条 2快手
+    //        plane.setYear(thisYear);
+    //        plane.setMonth(thisMonth);
+    //        plane.setCalcDate(calcDate);
+    //        plane.setRoleId("8dc30cb9810bde89bdc3fa8a85b830b0");
+    //        //role_code shot
+    //        userEfficientVideoMapMapper.insert(plane);
+    //
+    //        //策划
+    //        plan.setUserId(effiVideoDTO.getPlanId());
+    //        plan.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        plan.setQuarter(thisQuarter);
+    //        plan.setAppType(1); //1头条 2快手
+    //        plan.setYear(thisYear);
+    //        plan.setMonth(thisMonth);
+    //        plan.setCalcDate(calcDate);
+    //        plan.setRoleId("0214283aa16f943efbb149ea4bb18f18");
+    //        //role_code plan
+    //        userEfficientVideoMapMapper.insert(plan);
+    //
+    //        //剪辑
+    //        clip.setUserId(effiVideoDTO.getClipId());
+    //        clip.setEfficientVideoSignature(effiVideoDTO.getSignature());
+    //        clip.setQuarter(thisQuarter);
+    //        clip.setAppType(1); //1头条 2快手
+    //        clip.setYear(thisYear);
+    //        clip.setMonth(thisMonth);
+    //        clip.setCalcDate(calcDate);
+    //        clip.setRoleId("f38d8d70cf7ec50d5357a749e4dbf8ee");
+    //        //role_code clip
+    //        userEfficientVideoMapMapper.insert(clip);
+    //
+    //        //头条有效视频同步到有效视频素材库
+    //        userEfficientVideoMapMapper.updateToutiaoEffiType(1, effiVideoDTO.getSignature());
+    //    }
+    //    log.info("头条有效视频统计结束,统计时间为 " + calcDate);
+    //}
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     //有效视频计算结束
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -783,7 +783,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         //平面设计
         kuaishouPlanePerformance(thisYear, thisQuarter, startTime, endTime);
         //设计师leader
-        kuaishouDesignLeaderPerformance(thisYear, thisQuarter, startTime, endTime);
+        //kuaishouDesignLeaderPerformance(thisYear, thisQuarter, startTime, endTime);
 
         log.info(thisYear + "年第" + thisQuarter + "季度快手设计师季度绩效计算开始");
     }
@@ -802,10 +802,10 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         toutiaoShotPerformance(thisYear, thisQuarter, startTime, endTime);
         //剪辑
         toutiaoClipPerformance(thisYear, thisQuarter, startTime, endTime);
-        //平面设计
+        //平面设计、设计师leader写在一起
         toutiaoPlanePerformance(thisYear, thisQuarter, startTime, endTime);
         //设计师leader
-        toutiaoDesignLeaderPerformance(thisYear, thisQuarter, startTime, endTime);
+        //toutiaoDesignLeaderPerformance(thisYear, thisQuarter, startTime, endTime);
 
         log.info(thisYear + "年第" + thisQuarter + "头条设计师季度绩效计算开始");
     }
@@ -822,9 +822,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         //循环编导列表计算视频有效率并排序
         for (UserDto2 userDto : planList) {
             //有效视频数量 1toutiao 2kuaishou
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "0214283aa16f943efbb149ea4bb18f18");
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "plan");
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("plan", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "plan");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -903,9 +903,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         List<UserDto2> shotList = userEfficientVideoMapMapper.getKuaishouShotList(); //拍摄
         for (UserDto2 userDto : shotList) {
             //有效视频数量 //1toutiao 2kuaishou
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "7bff9afed625aeeabca6bffe3c189183");
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "shot");
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("shot", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "shot");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -984,9 +984,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         List<UserDto2> clipList = userEfficientVideoMapMapper.getKuaishouClipList(); //剪辑
         for (UserDto2 userDto : clipList) {
             //有效视频数量
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "f38d8d70cf7ec50d5357a749e4dbf8ee");
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, thisYear, thisQuarter, userDto.getUserId(), "clip");
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("clip", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "clip");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -1064,12 +1064,12 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         //搜索所有项目,循环并计算时间段内的项目总消耗,并查询其中有没有平面设计师
         //如果有并且不止一个就平分;创建一个list,将设计师的userDto加入进来,然后可以在不同的项目中累加(需要增加一张表格,然后记录其中的每一个项目消耗)
         Map<String, UserDto2> planeMap = new HashMap<>();
+        Map<String, UserDto2> designLeaderMap = new HashMap<>();
 
-        //TODO ctop_project表有修改,需要进行相对应的变化
         //获取所有project根据媒体类型获取快手下的项目类型 1头条 2快手
         List<ProjectDTO> projectDTOS = userEfficientVideoMapMapper.getProjects("2");
 
-        //循环project
+        //循环project,项目下面有平面的话,平面分享5%的消耗
         for (ProjectDTO projectDTO : projectDTOS) {
             //判断是否是北京的部门负责的项目,如果不是的话跳出
             String orgCode = userEfficientVideoMapMapper.getOrgCodeByProjectId(projectDTO.getProjectId());
@@ -1078,14 +1078,57 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 continue;
             }
 
+            UserDto2 designLeader = userEfficientVideoMapMapper.getProjectDesignResponsibleInfo(projectDTO.getProjectId());
             List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
+            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
             //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师,故跳过
             int size = planeList.size();
             log.info(projectDTO.getProjectName() + "中有" + size + "个平面设计");
+            //平面设计数据为0,项目leader的绩效给20%
             if (size == 0) {
+                //项目下面有平面的情况下,项目leader给15%的绩效,快手给3‰
+                //Performance performance = new Performance();
+                //performance.setAppType(2);
+                //performance.setRoleId("projectLeader");
+                //performance.setQuarter(thisQuarter);
+                //performance.setYear(thisYear);
+                //performance.setStartTime(startTime);
+                //performance.setEndTime(endTime);
+                //performance.setTotalCost(quarterCost);
+                //performance.setCommissionRate(new BigDecimal("0.003"));  //快手平台提成比例 3千分之
+                //performance.setRoleCommissionRate(new BigDecimal("0.2"));  //项目没有平面的情况下,提成比例20%
+                //performance.setTotalPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.003")).setScale(2));
+                //performance.setUserId(designLeader.getUserId());
+                //performance.setVideoEfficiency(null);  //项目设计师leader没有视频有效率一说
+                //performanceMapper.insert(performance);
+
+                PlaneProjectCost planeProjectCost = new PlaneProjectCost();
+                planeProjectCost.setAppType(2); //1头条 2快手
+                planeProjectCost.setProjectId(projectDTO.getProjectId());
+                planeProjectCost.setYear(thisYear);
+                planeProjectCost.setQuarter(thisQuarter);
+                planeProjectCost.setProjectTotalCost(quarterCost);
+                planeProjectCost.setProjectCost(quarterCost);
+                planeProjectCost.setUserId(designLeader.getUserId());
+                //增加平面人数、和项目单独的绩效
+                planeProjectCost.setProjectPlaneCount(1);
+                planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.003")));
+                planeProjectCost.setType(2);
+
+                if (null == designLeaderMap.get(designLeader.getUserId())) {
+                    designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
+                    designLeader.setCost(quarterCost);  //项目总消耗
+                    planeMap.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()));
+                }
+                planeProjectCostMapper.insert(planeProjectCost);
+
                 continue;
             }
-            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
+
             BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
 
             //循环项目下所有平面设计
@@ -1103,7 +1146,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 planeProjectCost.setUserId(plane.getUserId());
                 //增加平面人数、和项目单独的绩效
                 planeProjectCost.setProjectPlaneCount(planeList.size());
-                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")));
+                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.003")).setScale(2));
                 if (null == planeMap.get(plane.getUserId())) {
                     plane.setEffiRate(averageQuarterCost);
                     planeMap.put(plane.getUserId(), plane);
@@ -1113,6 +1156,47 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 }
                 planeProjectCostMapper.insert(planeProjectCost);
             }
+
+            //项目下面有平面的情况下,项目leader给15%的绩效
+            //Performance performance = new Performance();
+            //performance.setAppType(2);
+            //performance.setRoleId("projectLeader");
+            //performance.setQuarter(thisQuarter);
+            //performance.setYear(thisYear);
+            //performance.setStartTime(startTime);
+            //performance.setEndTime(endTime);
+            //performance.setTotalCost(quarterCost);
+            //performance.setCommissionRate(new BigDecimal("0.003"));  //快手平台比例3‰
+            //performance.setRoleCommissionRate(new BigDecimal("0.15")); //项目有平面的情况下设计师leader的提成比例为15%
+            //performance.setTotalPerformance(quarterCost.multiply(new BigDecimal("0.15")).multiply(new BigDecimal("0.003")));
+            //performance.setUserId(designLeader.getUserId());
+            //performance.setVideoEfficiency(null);  //项目设计师leader没有视频有效率一说
+            //performanceMapper.insert(performance);
+
+            PlaneProjectCost planeProjectCost = new PlaneProjectCost();
+            planeProjectCost.setAppType(2); //1头条 2快手
+            planeProjectCost.setProjectId(projectDTO.getProjectId());
+            planeProjectCost.setYear(thisYear);
+            planeProjectCost.setQuarter(thisQuarter);
+            planeProjectCost.setProjectTotalCost(quarterCost);
+            planeProjectCost.setProjectCost(quarterCost);
+            planeProjectCost.setUserId(designLeader.getUserId());
+            //增加平面人数、和项目单独的绩效
+            planeProjectCost.setProjectPlaneCount(1);
+            planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.003")));
+            planeProjectCost.setType(2);
+
+            if (null == designLeaderMap.get(designLeader.getUserId())) {
+                designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
+                designLeader.setCost(quarterCost);  //项目总消耗
+                planeMap.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()));
+            }
+            planeProjectCostMapper.insert(planeProjectCost);
+
         }
 
         //循环planeMap插入数据
@@ -1122,54 +1206,71 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             performance.setRoleId(planeMap.get(key).getRoleId());
             performance.setQuarter(thisQuarter);
             performance.setYear(thisYear);
-            //performance.setCommissionRate(new BigDecimal("0.05"));
+            performance.setCommissionRate(new BigDecimal("0.003"));
             performance.setRoleCommissionRate(new BigDecimal("0.05"));
             performance.setTotalCost(planeMap.get(key).getEffiRate());
-            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")));
+            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.003")));
             performance.setStartTime(startTime);
             performance.setEndTime(endTime);
             performance.setUserId(planeMap.get(key).getUserId());
             performanceMapper.insert(performance);
         }
-        log.info(thisYear + "年第" + thisQuarter + "季度快手平面设计师季度绩效计算结束");
-    }
-    ///////////////////////////////////////////////////////////////////////////////////////////////////////快手平面end
-
-    //////////////////////////////////////////////////////////////////////////////////////////////////快手设计师leader绩效计算start
-    private void kuaishouDesignLeaderPerformance(int thisYear, int thisQuarter, String startTime, String endTime) {
-        log.info(thisYear + "年第" + thisQuarter + "季度快手设计师leader季度绩效计算开始");
-        //直接查询出来各种媒体类型的设计组长
-        List<UserDto2> designLeaderList = userEfficientVideoMapMapper.getKuaishouDesignLeaderList();
-
-        //循环list然后根据查出leader组下的剪辑userId
-        for (UserDto2 userDto : designLeaderList) {
-            List<String> clipList = userEfficientVideoMapMapper.getClip(userDto.getDepId());
-            BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
-
-            for (String clipUserId : clipList) {
-                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(2, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
-                totalCost = totalCost.add(clipCost);
-            }
-
-            //总绩效=剪辑消耗总合 * 平台比例 * 20%
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.2"));
 
+        for (String key : designLeaderMap.keySet()) {
             Performance performance = new Performance();
-            performance.setAppType(2); //1头条 2快手
-            performance.setRoleId(userDto.getRoleId());
+            performance.setAppType(1); //1头条 2快手
+            performance.setRoleId(designLeaderMap.get(key).getRoleId());
             performance.setQuarter(thisQuarter);
             performance.setYear(thisYear);
-            performance.setCommissionRate(new BigDecimal("0.003"));
-            performance.setTotalCost(totalCost);
-            performance.setTotalPerformance(totalPerformance);
+            //performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2‰
+            performance.setTotalCost(designLeaderMap.get(key).getCost());
+            performance.setTotalPerformance(designLeaderMap.get(key).getEffiRate());  //头条
+            //performance.setRoleCommissionRate(new BigDecimal("0.05"));
             performance.setStartTime(startTime);
             performance.setEndTime(endTime);
-            performance.setRoleCommissionRate(new BigDecimal("0.2"));
-            performance.setUserId(userDto.getUserId());
+            performance.setUserId(designLeaderMap.get(key).getUserId());
             performanceMapper.insert(performance);
         }
-        log.info(thisYear + "年第" + thisQuarter + "季度快手设计师leader季度绩效计算结束");
+
+        log.info(thisYear + "年第" + thisQuarter + "季度快手平面设计师季度绩效计算结束");
     }
+    ///////////////////////////////////////////////////////////////////////////////////////////////////////快手平面end
+
+    //////////////////////////////////////////////////////////////////////////////////////////////////快手设计师leader绩效计算start
+    //private void kuaishouDesignLeaderPerformance(int thisYear, int thisQuarter, String startTime, String endTime) {
+    //    log.info(thisYear + "年第" + thisQuarter + "季度快手设计师leader季度绩效计算开始");
+    //    //直接查询出来各种媒体类型的设计组长
+    //    List<UserDto2> designLeaderList = userEfficientVideoMapMapper.getKuaishouDesignLeaderList();
+    //
+    //    //循环list然后根据查出leader组下的剪辑userId
+    //    for (UserDto2 userDto : designLeaderList) {
+    //        List<String> clipList = userEfficientVideoMapMapper.getClip(userDto.getDepId());
+    //        BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
+    //
+    //        for (String clipUserId : clipList) {
+    //            BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(2, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
+    //            totalCost = totalCost.add(clipCost);
+    //        }
+    //
+    //        //总绩效=剪辑消耗总合 * 平台比例 * 20%
+    //        BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.003")).multiply(new BigDecimal("0.2"));
+    //
+    //        Performance performance = new Performance();
+    //        performance.setAppType(2); //1头条 2快手
+    //        performance.setRoleId(userDto.getRoleId());
+    //        performance.setQuarter(thisQuarter);
+    //        performance.setYear(thisYear);
+    //        performance.setCommissionRate(new BigDecimal("0.003"));
+    //        performance.setTotalCost(totalCost);
+    //        performance.setTotalPerformance(totalPerformance);
+    //        performance.setStartTime(startTime);
+    //        performance.setEndTime(endTime);
+    //        performance.setRoleCommissionRate(new BigDecimal("0.2"));
+    //        performance.setUserId(userDto.getUserId());
+    //        performanceMapper.insert(performance);
+    //    }
+    //    log.info(thisYear + "年第" + thisQuarter + "季度快手设计师leader季度绩效计算结束");
+    //}
     //////////////////////////////////////////////////////////////////////////////////////////////////快手设计师leader绩效计算end
 
     ////////////////////////////////////////////////////////////////////////////////////////////
@@ -1183,9 +1284,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         //循环编导列表计算视频有效率并排序
         for (UserDto2 userDto : planList) {
             //有效视频数量
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "0214283aa16f943efbb149ea4bb18f18");  //媒体类型 //1头条 2快手
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "plan");  //媒体类型 //1头条 2快手
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("plan", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 1, userDto.getUserId(), "plan");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -1261,9 +1362,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         List<UserDto2> shotList = userEfficientVideoMapMapper.getToutiaoShotList(); //拍摄
         for (UserDto2 userDto : shotList) {
             //有效视频数量
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "7bff9afed625aeeabca6bffe3c189183");
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "shot");
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("shot", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 1, userDto.getUserId(), "shot");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -1339,9 +1440,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         List<UserDto2> clipList = userEfficientVideoMapMapper.getKuaishouClipList(); //剪辑
         for (UserDto2 userDto : clipList) {
             //有效视频数量 //1头条 2快手
-            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "f38d8d70cf7ec50d5357a749e4dbf8ee");
+            int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(1, thisYear, thisQuarter, userDto.getUserId(), "clip");
             //总视频数量
-            int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("clip", startTime, endTime, userDto.getUserId());
+            int videoCount = userEfficientVideoMapMapper.getQuarterVideoCountByRoleCodeAndUserId(thisYear, thisQuarter, 2, userDto.getUserId(), "clip");
             //视频有效率
             BigDecimal effiRate = new BigDecimal(String.valueOf(effiVideoCount)).divide(new BigDecimal(String.valueOf(videoCount)));
             userDto.setEffiRate(effiRate);
@@ -1416,8 +1517,8 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         //搜索所有项目,循环并计算时间段内的项目总消耗,并查询其中有没有平面设计师
         //如果有并且不止一个就平分;创建一个list,将设计师的userDto加入进来,然后可以在不同的项目中累加(需要增加一张表格,然后记录其中的每一个项目消耗)
         Map<String, UserDto2> planeMap = new HashMap<>();
+        Map<String, UserDto2> designLeaderMap = new HashMap<>();
 
-        //TODO ctop_project表有修改,需要进行相对应的变化
         //获取所有project根据媒体类型获取快手下的项目类型 1-头条 2-快手
         List<ProjectDTO> projectDTOS = userEfficientVideoMapMapper.getProjects("1");
 
@@ -1430,13 +1531,57 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 continue;
             }
 
+            UserDto2 designLeader = userEfficientVideoMapMapper.getProjectDesignResponsibleInfo(projectDTO.getProjectId());
             List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
-            //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师,故跳过
+            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
+            //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师;项目没有平面的情况下,项目leader绩效提成为20%
             int size = planeList.size();
             if (size == 0) {
+                //平面设计数据为0,项目leader的绩效给20%
+                if (size == 0) {
+                    PlaneProjectCost planeProjectCost = new PlaneProjectCost();
+                    planeProjectCost.setAppType(1); //1头条 2快手
+                    planeProjectCost.setProjectId(projectDTO.getProjectId());
+                    planeProjectCost.setYear(thisYear);
+                    planeProjectCost.setQuarter(thisQuarter);
+                    planeProjectCost.setProjectTotalCost(quarterCost);
+                    planeProjectCost.setProjectCost(quarterCost);
+                    planeProjectCost.setUserId(designLeader.getUserId());
+                    //增加平面人数、和项目单独的绩效
+                    planeProjectCost.setProjectPlaneCount(1);
+                    planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.002")));
+                    planeProjectCost.setType(2);
+
+                    if (null == designLeaderMap.get(designLeader.getUserId())) {
+                        designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
+                        designLeader.setCost(quarterCost);  //项目总消耗
+                        planeMap.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()));
+                    }
+                    planeProjectCostMapper.insert(planeProjectCost);
+
+                    ////项目下面有平面的情况下,项目leader给15%的绩效,快手给3‰
+                    //Performance performance = new Performance();
+                    //performance.setAppType(1);
+                    //performance.setRoleId("projectLeader");
+                    //performance.setQuarter(thisQuarter);
+                    //performance.setYear(thisYear);
+                    //performance.setStartTime(startTime);
+                    //performance.setEndTime(endTime);
+                    //performance.setTotalCost(quarterCost);
+                    //performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2千分之
+                    //performance.setRoleCommissionRate(new BigDecimal("0.2"));  //头条设计师leader提成比例
+                    //performance.setTotalPerformance(quarterCost.multiply(new BigDecimal("0.2")).multiply(new BigDecimal("0.002")));
+                    //performance.setUserId(designLeader.getUserId());
+                    //performance.setVideoEfficiency(null);  //项目设计师leader没有视频有效率一说
+                    //performanceMapper.insert(performance);
+                }
                 continue;
             }
-            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
+
             BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
 
             //循环项目下所有平面设计
@@ -1455,16 +1600,58 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
                 //增加平面人数、和项目单独的绩效
                 planeProjectCost.setProjectPlaneCount(planeList.size());
                 planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")));
+                planeProjectCost.setType(1);
 
                 if (null == planeMap.get(plane.getUserId())) {
                     plane.setEffiRate(averageQuarterCost);
-                    planeMap.put("plane.getUserId()", plane);
+                    planeMap.put(plane.getUserId(), plane);
                 } else {
                     //将增加的金额增加到
                     planeMap.get(plane.getUserId()).setEffiRate(planeMap.get(plane.getUserId()).getEffiRate().add(plane.getEffiRate()));
                 }
                 planeProjectCostMapper.insert(planeProjectCost);
             }
+
+            //将每个项目绩效信息记录在ctop_plane_project_cost中。并将每一个leader的总消耗和总绩效加和,最后合并到ctop_performance表当中
+            PlaneProjectCost planeProjectCost = new PlaneProjectCost();
+            planeProjectCost.setAppType(1); //1头条 2快手
+            planeProjectCost.setProjectId(projectDTO.getProjectId());
+            planeProjectCost.setYear(thisYear);
+            planeProjectCost.setQuarter(thisQuarter);
+            planeProjectCost.setProjectTotalCost(quarterCost);
+            planeProjectCost.setProjectCost(quarterCost);
+            planeProjectCost.setUserId(designLeader.getUserId());
+            //增加平面人数、和项目单独的绩效
+            planeProjectCost.setProjectPlaneCount(1);
+            planeProjectCost.setProjectPerformance(quarterCost.multiply(new BigDecimal("0.15")).multiply(new BigDecimal("0.002")));
+            planeProjectCost.setType(2);
+
+            if (null == designLeaderMap.get(designLeader.getUserId())) {
+                designLeader.setEffiRate(planeProjectCost.getProjectPerformance());  //项目绩效
+                designLeader.setCost(quarterCost);  //项目总消耗
+                planeMap.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()));
+            }
+            planeProjectCostMapper.insert(planeProjectCost);
+
+            ////项目下面有平面的情况下,项目leader给15%的绩效,快手给3‰
+            //Performance performance = new Performance();
+            //performance.setAppType(1);
+            //performance.setRoleId("projectLeader");
+            //performance.setQuarter(thisQuarter);
+            //performance.setYear(thisYear);
+            //performance.setStartTime(startTime);
+            //performance.setEndTime(endTime);
+            //performance.setTotalCost(quarterCost);
+            //performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2千分之
+            //performance.setRoleCommissionRate(new BigDecimal("0.15"));  //头条设计师leader提成比例,在有平面设计师的情况下
+            //performance.setTotalPerformance(quarterCost.multiply(new BigDecimal("0.15")).multiply(new BigDecimal("0.002")));
+            //performance.setUserId(designLeader.getUserId());
+            //performance.setVideoEfficiency(null);  //项目设计师leader没有视频有效率一说
+            //performanceMapper.insert(performance);
         }
 
         //循环planeMap插入数据
@@ -1474,54 +1661,70 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             performance.setRoleId(planeMap.get(key).getRoleId());
             performance.setQuarter(thisQuarter);
             performance.setYear(thisYear);
-            //performance.setCommissionRate(new BigDecimal("0.05"));
+            performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2‰
             performance.setTotalCost(planeMap.get(key).getEffiRate());
-            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")));
+            performance.setTotalPerformance(planeMap.get(key).getEffiRate().multiply(new BigDecimal("0.05")).multiply(new BigDecimal("0.002")));  //头条
             performance.setRoleCommissionRate(new BigDecimal("0.05"));
             performance.setStartTime(startTime);
             performance.setEndTime(endTime);
             performance.setUserId(planeMap.get(key).getUserId());
             performanceMapper.insert(performance);
         }
-        log.info(thisYear + "年第" + thisQuarter + "季度头条平面季度绩效计算结束");
-    }
-    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////头条平面设计师绩效end
-
-    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////头条设计师leader绩效 start
-    private void toutiaoDesignLeaderPerformance(int thisYear, int thisQuarter, String startTime, String endTime) {
-        log.info(thisYear + "年第" + thisQuarter + "季度头条设计师leader季度绩效计算开始");
-        //直接查询出来各种媒体类型的设计组长
-        List<UserDto2> designLeaderList = userEfficientVideoMapMapper.getKuaishouDesignLeaderList();
-
-        //循环list然后根据查出leader组下的剪辑userId
-        for (UserDto2 userDto : designLeaderList) {
-            List<String> clipList = userEfficientVideoMapMapper.getClip(userDto.getDepId());
-            BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
-
-            for (String clipUserId : clipList) {
-                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(1, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
-                totalCost = totalCost.add(clipCost);
-            }
-
-            //总绩效=小组下所有剪辑消耗总合 * 平台比例 * 20%
-            BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.2"));
 
+        for (String key : designLeaderMap.keySet()) {
             Performance performance = new Performance();
             performance.setAppType(1); //1头条 2快手
-            performance.setRoleId(userDto.getRoleId());
+            performance.setRoleId(designLeaderMap.get(key).getRoleId());
             performance.setQuarter(thisQuarter);
             performance.setYear(thisYear);
-            performance.setCommissionRate(new BigDecimal("0.002")); //千分之
-            performance.setRoleCommissionRate(new BigDecimal("0.2"));
-            performance.setTotalCost(totalCost);
-            performance.setTotalPerformance(totalPerformance);
+            //performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2‰
+            performance.setTotalCost(designLeaderMap.get(key).getCost());
+            performance.setTotalPerformance(designLeaderMap.get(key).getEffiRate());  //头条
+            //performance.setRoleCommissionRate(new BigDecimal("0.05"));
             performance.setStartTime(startTime);
             performance.setEndTime(endTime);
-            performance.setUserId(userDto.getUserId());
+            performance.setUserId(designLeaderMap.get(key).getUserId());
             performanceMapper.insert(performance);
         }
-        log.info(thisYear + "年第" + thisQuarter + "季度头条设计师leader季度绩效计算开始");
+        log.info(thisYear + "年第" + thisQuarter + "季度头条平面季度绩效计算结束");
     }
+    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////头条平面设计师绩效end
+
+    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////头条设计师leader绩效 start
+    //private void toutiaoDesignLeaderPerformance(int thisYear, int thisQuarter, String startTime, String endTime) {
+    //    log.info(thisYear + "年第" + thisQuarter + "季度头条设计师leader季度绩效计算开始");
+    //    //直接查询出来各种媒体类型的设计组长
+    //    List<UserDto2> designLeaderList = userEfficientVideoMapMapper.getKuaishouDesignLeaderList();
+    //
+    //    //循环list然后根据查出leader组下的剪辑userId
+    //    for (UserDto2 userDto : designLeaderList) {
+    //        List<String> clipList = userEfficientVideoMapMapper.getClip(userDto.getDepId());
+    //        BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
+    //
+    //        for (String clipUserId : clipList) {
+    //            BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(1, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
+    //            totalCost = totalCost.add(clipCost);
+    //        }
+    //
+    //        //总绩效=小组下所有剪辑消耗总合 * 平台比例 * 20%
+    //        BigDecimal totalPerformance = totalCost.multiply(new BigDecimal("0.002")).multiply(new BigDecimal("0.2"));
+    //
+    //        Performance performance = new Performance();
+    //        performance.setAppType(1); //1头条 2快手
+    //        performance.setRoleId(userDto.getRoleId());
+    //        performance.setQuarter(thisQuarter);
+    //        performance.setYear(thisYear);
+    //        performance.setCommissionRate(new BigDecimal("0.002")); //千分之
+    //        performance.setRoleCommissionRate(new BigDecimal("0.2"));
+    //        performance.setTotalCost(totalCost);
+    //        performance.setTotalPerformance(totalPerformance);
+    //        performance.setStartTime(startTime);
+    //        performance.setEndTime(endTime);
+    //        performance.setUserId(userDto.getUserId());
+    //        performanceMapper.insert(performance);
+    //    }
+    //    log.info(thisYear + "年第" + thisQuarter + "季度头条设计师leader季度绩效计算开始");
+    //}
 
     /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////头条设计师leader绩效 end
     ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -2559,5 +2762,18 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
         return userEfficientVideoMapMapper.getYunyingQuarterDetailByUserId(year, quarter, userId, appType);
     }
 
+    //按平台获取其下所有项目信息以及消耗
+    public List<ProjectDTO> getProjcetListByMediaType(Integer year, Integer quarter, Integer appType ){
+        return userEfficientVideoMapMapper.getProjcetListByMediaType(year, quarter, appType);
+    }
+
+    //根据projectId获取其下账户季度消耗信息
+    public List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer appType){
+        return userEfficientVideoMapMapper.getQuarterAccountDetail(year, quarter, appType);
+    }
+
+
+
+
 }
 

+ 2 - 0
performance-appraisal/src/main/java/cn/com/ctop/planeprojectcost/entity/PlaneProjectCost.java

@@ -76,4 +76,6 @@ public class PlaneProjectCost {
      */
     @ApiModelProperty(value = "projectPlaneCount")
     private Integer projectPlaneCount;
+
+    private Integer type;
 }

+ 3 - 0
performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/mapper/UserEfficientVideoMapMapper.java

@@ -228,5 +228,8 @@ public interface UserEfficientVideoMapMapper extends BaseMapper<UserEfficientVid
     //根据projectId获取其下账户季度消耗信息
     List<AccountDTO> getQuarterAccountDetail(@Param("year")Integer year, @Param("quarter")Integer quarter, @Param("appType")Integer appType);
 
+    Integer getQuarterVideoCountByRoleCodeAndUserId(@Param("year")Integer year, @Param("quarter")Integer quarter, @Param("appType")Integer appType, @Param("userId")String userId, @Param("roleCode")String roleCode);
+
+    UserDto2 getProjectDesignResponsibleInfo(@Param("projectId")Long projectId);
 }
 

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

@@ -75,6 +75,19 @@
         </choose>
     </select>
 
+    <select id="getQuarterVideoCountByRoleCodeAndUserId" resultType="Integer">
+        select
+        count(1)
+        from
+        ctop_user_video_map
+        where
+        year = #{year}
+        and quarter = #{quarter}
+        and role_id = #{roleCode}
+        and user_id = #{userId}
+        and app_type = #{appType}
+    </select>
+
     <select id="getQuarterVideoCount" resultType="integer">
             select
             count(1)
@@ -1221,7 +1234,6 @@
             order by create_time
             ) a
         group by code -->
-
             select
             b.signature
         from ctop_kuaishou_creative a
@@ -1544,8 +1556,23 @@
                         select
                         account_id
                         from
-                        ctop_user_allocation where project_id = #{projectId}) and year = #{year} and quarter = #{quarter}
+                        ctop_user_allocation where project_id = #{projectId}) and a.year = #{year} and a.quarter = #{quarter}
+        order by account_id,start_date
     </select>
 
+    <select id="getProjectDesignResponsibleInfo" resultType="cn.com.ctop.userefficientvideomap.entity.UserDto2">
+        select
+        a.design_responsible_id as userId,
+        a.design_responsible_name as userName,
+        d.role_code as roleCode,
+        d.role_name as roleName
+            from
+            ctop_project a
+            left join sys_user b on a.design_responsible_id = b.id
+            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}
+    </select>
 
 </mapper>