|  | @@ -73,7 +73,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |          String effiCalcStart = DateUtils.formatDate(DateUtils.addDay(friday, -14)); //计算有效视频开始的时间
 | 
	
		
			
				|  |  |          log.info("有效视频统计的开始时间为" + effiCalcStart);
 | 
	
		
			
				|  |  |          String effiCalcEnd = DateUtils.formatDate(DateUtils.addDay(friday, -1)); //计算有效视频结束的时间
 | 
	
		
			
				|  |  | -        log.info("有效视频统计的结束时间为" + effiCalcStart);
 | 
	
		
			
				|  |  | +        log.info("有效视频统计的结束时间为" + effiCalcEnd);
 | 
	
		
			
				|  |  |          String effiStart = DateUtils.formatDate(DateUtils.addDay(friday, -21)); //有效视频发布开始时间
 | 
	
		
			
				|  |  |          log.info("有效视频发布的开始时间为" + effiStart);
 | 
	
		
			
				|  |  |          String effiEnd = DateUtils.formatDate(DateUtils.addDay(friday, -15)); //有效视频发布结束时间
 | 
	
	
		
			
				|  | @@ -263,7 +263,8 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //快手设计师、设计师leader和平面设计师逻辑
 | 
	
		
			
				|  |  | -    private void kuaishouDesigner(int thisYear, int thisQuarter) {
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void kuaishouDesigner(int thisYear, int thisQuarter) {
 | 
	
		
			
				|  |  |          log.info(thisYear + "年第" + thisQuarter + "季度快手设计师季度绩效计算开始");
 | 
	
		
			
				|  |  |          Map<String, String> quarterStartEndDateMap = DateUtils.quarterStartEndDate(thisYear, thisQuarter);
 | 
	
		
			
				|  |  |          String startTime = quarterStartEndDateMap.get("startDate");
 | 
	
	
		
			
				|  | @@ -274,7 +275,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |          //拍摄
 | 
	
		
			
				|  |  |          kuaishouShotPerformance(thisYear, thisQuarter, startTime, endTime);
 | 
	
		
			
				|  |  |          //剪辑
 | 
	
		
			
				|  |  | -        kuaishouClipPerformance(thisYear, thisQuarter, startTime, endTime);
 | 
	
		
			
				|  |  | +        //kuaishouClipPerformance(thisYear, thisQuarter, startTime, endTime);
 | 
	
		
			
				|  |  |          //平面设计
 | 
	
		
			
				|  |  |          kuaishouPlanePerformance(thisYear, thisQuarter, startTime, endTime);
 | 
	
		
			
				|  |  |          //设计师leader
 | 
	
	
		
			
				|  | @@ -284,7 +285,8 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      //头条设计师逻辑
 | 
	
		
			
				|  |  | -    private void toutiaoDesigner(int thisYear, int thisQuarter) {
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void toutiaoDesigner(int thisYear, int thisQuarter) {
 | 
	
		
			
				|  |  |          log.info(thisYear + "年第" + thisQuarter + "季度头条设计师季度绩效计算开始");
 | 
	
		
			
				|  |  |          Map<String, String> quarterStartEndDateMap = DateUtils.quarterStartEndDate(thisYear, thisQuarter);
 | 
	
		
			
				|  |  |          String startTime = quarterStartEndDateMap.get("startDate");
 | 
	
	
		
			
				|  | @@ -309,7 +311,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |      ////////////////////////////////////////////////////////////////////////////////////////////
 | 
	
		
			
				|  |  |      ////////////////////////////////////////////////////////////////////////////////////////////////编导季度绩效计算start
 | 
	
		
			
				|  |  |      private void kuaishouPlanPerformance(int thisYear, int thisQuarter, String startTime, String endTime) {
 | 
	
		
			
				|  |  | -        log.info(thisYear + "年第" + thisQuarter + "季度快手编导季度绩效计算开始");
 | 
	
		
			
				|  |  | +                             log.info(thisYear + "年第" + thisQuarter + "季度快手编导季度绩效计算开始");
 | 
	
		
			
				|  |  |          //1.根据角色(编导)查询出相对应角色所有的人
 | 
	
		
			
				|  |  |          //List<UserDto> planList = sysRoleMapper.getUserByRoleCode("plan"); //编导
 | 
	
		
			
				|  |  |          List<UserDto2> planList = userEfficientVideoMapMapper.getKuaishouPlanList(); //编导
 | 
	
	
		
			
				|  | @@ -327,9 +329,15 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取编导人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int planLength = planList.size();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的编导总人数为:" + planLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int top30 = new BigDecimal(String.valueOf(planLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的编导前30%人数为:" + top30);
 | 
	
		
			
				|  |  |          int middle50 = new BigDecimal(String.valueOf(planLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的编导中间50%人数为:" + middle50);
 | 
	
		
			
				|  |  | +        //测试数据
 | 
	
		
			
				|  |  | +        // top30 = 1;
 | 
	
		
			
				|  |  | +        // middle50 =1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= top30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -400,9 +408,15 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取编导人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int shotLength = shotList.size();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的拍摄总人数为:" + shotLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int shotTop30 = new BigDecimal(String.valueOf(shotLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的拍摄前30%人数为:" + shotTop30);
 | 
	
		
			
				|  |  |          int shotMiddle50 = new BigDecimal(String.valueOf(shotLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的拍摄中间50%人数为:" + shotTop30);
 | 
	
		
			
				|  |  | +        //测试完删除
 | 
	
		
			
				|  |  | +        // shotTop30 = 1;
 | 
	
		
			
				|  |  | +        // shotMiddle50 = 1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= shotTop30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -473,9 +487,15 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取剪辑人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int clipLength = clipList.size();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的剪辑总人数为:" + clipLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int clipTop30 = new BigDecimal(String.valueOf(clipLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的剪辑前30%人数为:" + clipTop30);
 | 
	
		
			
				|  |  |          int clipMiddle50 = new BigDecimal(String.valueOf(clipLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("快手参与有效率排名的剪辑中间50%人数为:" + clipMiddle50);
 | 
	
		
			
				|  |  | +        //测试完删除
 | 
	
		
			
				|  |  | +        //clipTop30 = 1;
 | 
	
		
			
				|  |  | +        //clipMiddle50 = 1;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= clipTop30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -535,15 +555,33 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |          //如果有并且不止一个就平分;创建一个list,将设计师的userDto加入进来,然后可以在不同的项目中累加(需要增加一张表格,然后记录其中的每一个项目消耗)
 | 
	
		
			
				|  |  |          Map<String, UserDto2> planeMap = new HashMap<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        //TODO ctop_project表有修改,需要进行相对应的变化
 | 
	
		
			
				|  |  |          //获取所有project根据媒体类型获取快手下的项目类型 1头条 2快手
 | 
	
		
			
				|  |  |          List<ProjectDTO> projectDTOS = userEfficientVideoMapMapper.getProjects("2");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        System.out.println("快手项目数量为:" + projectDTOS.size());
 | 
	
		
			
				|  |  |          //循环project
 | 
	
		
			
				|  |  |          for (ProjectDTO projectDTO : projectDTOS) {
 | 
	
		
			
				|  |  | -            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
 | 
	
		
			
				|  |  | +            //测试使用
 | 
	
		
			
				|  |  | +            //if(projectDTO.getProjectId() != 42L){
 | 
	
		
			
				|  |  | +            //    continue;
 | 
	
		
			
				|  |  | +            //}
 | 
	
		
			
				|  |  | +            System.out.println("快手平面所在项目为:" + projectDTO.getProjectName());
 | 
	
		
			
				|  |  | +            //判断是否是北京的部门负责的项目,如果不是的话跳出
 | 
	
		
			
				|  |  | +            String orgCode = userEfficientVideoMapMapper.getOrgCodeByProjectId(projectDTO.getProjectId());
 | 
	
		
			
				|  |  | +            if (!orgCode.startsWith("A01")) {
 | 
	
		
			
				|  |  | +                log.info("此项目不属于北京公司,跳出进入下一个项目计算");
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
 | 
	
		
			
				|  |  | -            //此项目当中平面数量
 | 
	
		
			
				|  |  | +            //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师,故跳过
 | 
	
		
			
				|  |  |              int size = planeList.size();
 | 
	
		
			
				|  |  | +            log.info(projectDTO.getProjectName() + "中有" + size + "个平面设计");
 | 
	
		
			
				|  |  | +            if(size == 0){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
 | 
	
		
			
				|  |  |              BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //循环项目下所有平面设计
 | 
	
	
		
			
				|  | @@ -559,10 +597,12 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |                  planeProjectCost.setProjectTotalCost(quarterCost);
 | 
	
		
			
				|  |  |                  planeProjectCost.setProjectCost(averageQuarterCost);
 | 
	
		
			
				|  |  |                  planeProjectCost.setUserId(plane.getUserId());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +                //增加平面人数、和项目单独的绩效
 | 
	
		
			
				|  |  | +                planeProjectCost.setProjectPlaneCount(planeList.size());
 | 
	
		
			
				|  |  | +                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")));
 | 
	
		
			
				|  |  |                  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()));
 | 
	
	
		
			
				|  | @@ -602,7 +642,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |              BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (String clipUserId : clipList) {
 | 
	
		
			
				|  |  | -                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(2, thisYear, thisQuarter, clipUserId);  //媒体类型 //1头条 2快手
 | 
	
		
			
				|  |  | +                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(2, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
 | 
	
		
			
				|  |  |                  totalCost = totalCost.add(clipCost);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -649,9 +689,12 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取编导人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int planLength = planList.size();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的编导总人数为:" + planLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int top30 = new BigDecimal(String.valueOf(planLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的编导前30%人数为:" + top30);
 | 
	
		
			
				|  |  |          int middle50 = new BigDecimal(String.valueOf(planLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的编导中间50%人数为:" + middle50);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= top30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -722,9 +765,12 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取编导人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int shotLength = shotList.size();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的拍摄总人数为:" + shotLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int shotTop30 = new BigDecimal(String.valueOf(shotLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的拍摄前30%人数为:" + shotTop30);
 | 
	
		
			
				|  |  |          int shotMiddle50 = new BigDecimal(String.valueOf(shotLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的拍摄中间50%人数为:" + shotMiddle50);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= shotTop30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -795,9 +841,12 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //获取剪辑人数并按照提点比例计算每个梯度的人数
 | 
	
		
			
				|  |  |          int clipLength = clipList.size();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的剪辑总人数为:" + clipLength);
 | 
	
		
			
				|  |  |          //获取前30%和中间50%的人数(视频有效率四舍五入)
 | 
	
		
			
				|  |  |          int clipTop30 = new BigDecimal(String.valueOf(clipLength)).multiply(new BigDecimal("0.3")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的前30%的人数为:" + clipTop30);
 | 
	
		
			
				|  |  |          int clipMiddle50 = new BigDecimal(String.valueOf(clipLength)).multiply(new BigDecimal("0.5")).setScale(0, BigDecimal.ROUND_HALF_UP).intValue();
 | 
	
		
			
				|  |  | +        log.info("头条参与有效率排名的中间50%的人数为:" + clipMiddle50);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环前30%有绩效的人数并计算其绩效,并入库
 | 
	
		
			
				|  |  |          for (int i = 0; i <= clipTop30 - 1; i++) {
 | 
	
	
		
			
				|  | @@ -857,15 +906,27 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |          //如果有并且不止一个就平分;创建一个list,将设计师的userDto加入进来,然后可以在不同的项目中累加(需要增加一张表格,然后记录其中的每一个项目消耗)
 | 
	
		
			
				|  |  |          Map<String, UserDto2> planeMap = new HashMap<>();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        //TODO ctop_project表有修改,需要进行相对应的变化
 | 
	
		
			
				|  |  |          //获取所有project根据媒体类型获取快手下的项目类型 1-头条 2-快手
 | 
	
		
			
				|  |  |          List<ProjectDTO> projectDTOS = userEfficientVideoMapMapper.getProjects("1");
 | 
	
		
			
				|  |  | +        System.out.println("头条项目数量为:" + projectDTOS.size());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          //循环project
 | 
	
		
			
				|  |  |          for (ProjectDTO projectDTO : projectDTOS) {
 | 
	
		
			
				|  |  | -            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
 | 
	
		
			
				|  |  | +            //判断是否是北京的部门负责的项目,如果不是的话跳出
 | 
	
		
			
				|  |  | +            String orgCode = userEfficientVideoMapMapper.getOrgCodeByProjectId(projectDTO.getProjectId());
 | 
	
		
			
				|  |  | +            if (!orgCode.startsWith("A01")) {
 | 
	
		
			
				|  |  | +                log.info(projectDTO.getProjectName() + "不是北京的部门的项目,跳出");
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |              List<UserDto2> planeList = userEfficientVideoMapMapper.getPlaneByProjectId(projectDTO.getProjectId());
 | 
	
		
			
				|  |  | -            //此项目当中平面数量
 | 
	
		
			
				|  |  | +            //此项目当中平面数量,平面数量为0的时候说明此project当中没有平面设计师,故跳过
 | 
	
		
			
				|  |  |              int size = planeList.size();
 | 
	
		
			
				|  |  | +            if(size == 0){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            BigDecimal quarterCost = userEfficientVideoMapMapper.getProjectQuarterCostById(startTime, endTime, projectDTO.getProjectId());
 | 
	
		
			
				|  |  |              BigDecimal averageQuarterCost = quarterCost.divide(new BigDecimal(String.valueOf(size)));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              //循环项目下所有平面设计
 | 
	
	
		
			
				|  | @@ -881,6 +942,9 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |                  planeProjectCost.setProjectTotalCost(quarterCost);
 | 
	
		
			
				|  |  |                  planeProjectCost.setProjectCost(averageQuarterCost);
 | 
	
		
			
				|  |  |                  planeProjectCost.setUserId(plane.getUserId());
 | 
	
		
			
				|  |  | +                //增加平面人数、和项目单独的绩效
 | 
	
		
			
				|  |  | +                planeProjectCost.setProjectPlaneCount(planeList.size());
 | 
	
		
			
				|  |  | +                planeProjectCost.setProjectPerformance(averageQuarterCost.multiply(new BigDecimal("0.05")));
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |                  if (null == planeMap.get(plane.getUserId())) {
 | 
	
		
			
				|  |  |                      plane.setEffiRate(averageQuarterCost);
 | 
	
	
		
			
				|  | @@ -924,7 +988,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |              BigDecimal totalCost = BigDecimal.ZERO; //剪辑总消耗
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              for (String clipUserId : clipList) {
 | 
	
		
			
				|  |  | -                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(1, thisYear, thisQuarter, clipUserId);  //媒体类型 //1头条 2快手
 | 
	
		
			
				|  |  | +                BigDecimal clipCost = userEfficientVideoMapMapper.getClipQuarterCost(1, thisQuarter, thisYear, clipUserId);  //媒体类型 //1头条 2快手
 | 
	
		
			
				|  |  |                  totalCost = totalCost.add(clipCost);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1370,13 +1434,15 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |      //{"videoAccount":"aabbcc","servingAccount":"ttyyhh","cost":34234.43}
 | 
	
		
			
				|  |  |      public List<DesignMaterialInfo> materialAccountInfo(String materialInfoId) {
 | 
	
		
			
				|  |  |          log.info("materialAccountInfo接口开始");
 | 
	
		
			
				|  |  | -        Date date = new Date();
 | 
	
		
			
				|  |  | -        Date getDate = DateUtils.addDay(date, -1);
 | 
	
		
			
				|  |  | -        String startDate = DateUtils.getQuarterStartDate(getDate);
 | 
	
		
			
				|  |  | -        String endDate = DateUtils.getQuarterEndDate(getDate);
 | 
	
		
			
				|  |  | -        String endNowDate = DateUtils.formatDate(getDate);
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        List<DesignMaterialInfo> materialInfoList = userEfficientVideoMapMapper.getMaterialAccountInfoByMaterialId(materialInfoId, startDate, endNowDate);
 | 
	
		
			
				|  |  | +        Map<String,String> quarterDate = DateUtils.quarterStartEndDate(year,quarter);
 | 
	
		
			
				|  |  | +        String startDate = quarterDate.get("startDate");
 | 
	
		
			
				|  |  | +        String endDate = quarterDate.get("endDate");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<DesignMaterialInfo> materialInfoList = userEfficientVideoMapMapper.getMaterialAccountInfoByMaterialId(materialInfoId, startDate, endDate);
 | 
	
		
			
				|  |  |          log.info("materialAccountInfo接口结束");
 | 
	
		
			
				|  |  |          return materialInfoList;
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -1397,5 +1463,149 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 | 
	
		
			
				|  |  |          timeMap.put("quarter", quarter);
 | 
	
		
			
				|  |  |          return timeMap;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //获取快手上个季度的季度有效数、素材总数、上个季度的绩效
 | 
	
		
			
				|  |  | +    public Map<String,Object> kuaishouDesignerLastQuarterPerformanceInfo(){
 | 
	
		
			
				|  |  | +        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //TODO 测试使用
 | 
	
		
			
				|  |  | +        //LoginUser sysUser = new LoginUser();
 | 
	
		
			
				|  |  | +        //sysUser.setId("f1f4c325a1234827af28fb4d957ffd70");
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,String> quarterDate = DateUtils.quarterStartEndDate(year,quarter);
 | 
	
		
			
				|  |  | +        String startDate = quarterDate.get("startDate");
 | 
	
		
			
				|  |  | +        String endDate = quarterDate.get("endDate");
 | 
	
		
			
				|  |  | +        SysRole role = userEfficientVideoMapMapper.getRoleIdByUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //有效视频数量 1toutiao 2kuaishou
 | 
	
		
			
				|  |  | +        int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, year, quarter, sysUser.getId(), role.getId());
 | 
	
		
			
				|  |  | +        //总视频数量
 | 
	
		
			
				|  |  | +        int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("plan", startDate, endDate, sysUser.getId());
 | 
	
		
			
				|  |  | +        //获取季度总绩效
 | 
	
		
			
				|  |  | +        BigDecimal performance = userEfficientVideoMapMapper.getQuarterPerformance(sysUser.getId(), year, quarter, 2);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //素材列表
 | 
	
		
			
				|  |  | +        List<DesignMaterialInfo> materialInfoList = userEfficientVideoMapMapper.designMaterialInfoList(role.getRoleCode(), sysUser.getId(), startDate, endDate);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Object> resultMap = new HashMap();
 | 
	
		
			
				|  |  | +        resultMap.put("effiVideoCount",effiVideoCount);
 | 
	
		
			
				|  |  | +        resultMap.put("videoCount",videoCount);
 | 
	
		
			
				|  |  | +        resultMap.put("performance",performance);
 | 
	
		
			
				|  |  | +        resultMap.put("materialInfoList",materialInfoList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return resultMap;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //TODO 获取头条上个季度的季度有效数、素材总数、上个季度的绩效
 | 
	
		
			
				|  |  | +    public void toutiaoDesignerLastQuarterPerformanceInfo(){
 | 
	
		
			
				|  |  | +        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  | +        Map<String,String> quarterDate = DateUtils.quarterStartEndDate(year,quarter);
 | 
	
		
			
				|  |  | +        String startDate = quarterDate.get("startDate");
 | 
	
		
			
				|  |  | +        String endDate = quarterDate.get("endDate");
 | 
	
		
			
				|  |  | +        SysRole role = userEfficientVideoMapMapper.getRoleIdByUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //有效视频数量 1toutiao 2kuaishou
 | 
	
		
			
				|  |  | +        int effiVideoCount = userEfficientVideoMapMapper.getEffiVideoCountByUserId(2, year, quarter, sysUser.getId(), role.getId());
 | 
	
		
			
				|  |  | +        //总视频数量
 | 
	
		
			
				|  |  | +        int videoCount = userEfficientVideoMapMapper.getQuarterMaterialCountByUserId("plan", startDate, endDate, sysUser.getId());
 | 
	
		
			
				|  |  | +        //获取季度总绩效
 | 
	
		
			
				|  |  | +        BigDecimal performance = userEfficientVideoMapMapper.getQuarterPerformance(sysUser.getId(), year, quarter, 1);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //获取设计师组下所有人的绩效
 | 
	
		
			
				|  |  | +    public Map<String,Object>  designerLastQuarterPerformanceInfo(){
 | 
	
		
			
				|  |  | +        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //TODO 测试删除
 | 
	
		
			
				|  |  | +        //LoginUser sysUser = new LoginUser();
 | 
	
		
			
				|  |  | +        //sysUser.setId("825dd716d4c041f9ac1c600bf6183979");
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  | +        //Map<String,String> quarterDate = DateUtils.quarterStartEndDate(year,quarter);
 | 
	
		
			
				|  |  | +        //String startDate = quarterDate.get("startDate");
 | 
	
		
			
				|  |  | +        //String endDate = quarterDate.get("endDate");
 | 
	
		
			
				|  |  | +        //SysRole role = userEfficientVideoMapMapper.getRoleIdByUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String DepartId = userEfficientVideoMapMapper.getDepartIdByUserId(sysUser.getId());
 | 
	
		
			
				|  |  | +        List<UserDto2> userDto2List = userEfficientVideoMapMapper.getUserListByDepartId(DepartId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //需要判断属于哪个部门
 | 
	
		
			
				|  |  | +        //判断如果在parent_id是不是快手或者头条的
 | 
	
		
			
				|  |  | +        int appType = 0; //头条1;快手2
 | 
	
		
			
				|  |  | +        String parentId = userEfficientVideoMapMapper.getParentIdByDepartId(DepartId);
 | 
	
		
			
				|  |  | +        if(parentId.equals("26c10ecb5e0d416bb01f8ff983f4588c")){
 | 
	
		
			
				|  |  | +            appType = 1;
 | 
	
		
			
				|  |  | +        }else{
 | 
	
		
			
				|  |  | +            appType = 2;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //循环获取userDto然后获取赋值季度、年度以及部门、绩效
 | 
	
		
			
				|  |  | +        for (UserDto2 userDto:userDto2List){
 | 
	
		
			
				|  |  | +            userDto.setYear(year);
 | 
	
		
			
				|  |  | +            userDto.setQuarter(quarter);
 | 
	
		
			
				|  |  | +            String departName = userEfficientVideoMapMapper.getDepartNameByUserId(userDto.getUserId());
 | 
	
		
			
				|  |  | +            //获取绩效
 | 
	
		
			
				|  |  | +            BigDecimal performance = userEfficientVideoMapMapper.getClipQuarterCost(appType,quarter,year, userDto.getUserId());
 | 
	
		
			
				|  |  | +            userDto.setDepartName(departName);
 | 
	
		
			
				|  |  | +            userDto.setEffiRate(performance);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Object> resultMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        resultMap.put("userList", userDto2List);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return resultMap;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //平面设计师(快手、头条可能不一样,头条内广是单独的媒体不知道是怎么回事)
 | 
	
		
			
				|  |  | +    public Map<String,Object> planeLastQuarterPerformanceInfo(int appType){
 | 
	
		
			
				|  |  | +        LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //测试删除
 | 
	
		
			
				|  |  | +        //LoginUser sysUser = new LoginUser();
 | 
	
		
			
				|  |  | +        //sysUser.setId("b0e4798234df4096936e6bc6d00db3ba");
 | 
	
		
			
				|  |  | +        //
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  | +        //Map<String,String> quarterDate = DateUtils.quarterStartEndDate(year,quarter);
 | 
	
		
			
				|  |  | +        List<PlaneProjectCostDTO> planeProjectCostList = userEfficientVideoMapMapper.getPlanePerformanceInfo(appType,year,quarter,sysUser.getId());
 | 
	
		
			
				|  |  | +        BigDecimal performance = userEfficientVideoMapMapper.getQuarterPerformance(sysUser.getId(), year, quarter, appType);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Map<String,Object> resultMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        resultMap.put("planeProjectCostList",planeProjectCostList);
 | 
	
		
			
				|  |  | +        resultMap.put("performance",performance);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return resultMap;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //获取同一媒体类型下上个季度所有人的绩效
 | 
	
		
			
				|  |  | +    public Map<String, Object> quarterUserPerformanceList(Integer appType){
 | 
	
		
			
				|  |  | +        Map<String, Object> resultMap = new HashMap<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        //LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
 | 
	
		
			
				|  |  | +        Map<String,Integer> quarterMap = DateUtils.lastQuarter(new Date());
 | 
	
		
			
				|  |  | +        int year = quarterMap.get("year");
 | 
	
		
			
				|  |  | +        int quarter = quarterMap.get("quarter");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        List<UserDto2> userDtoList = userEfficientVideoMapMapper.getUserPerformanceList(appType, year, quarter);
 | 
	
		
			
				|  |  | +        resultMap.put("userDtoList",userDtoList);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return resultMap;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 |