Преглед на файлове

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

hcst_sunzhen преди 5 години
родител
ревизия
7b85c89994

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

@@ -664,11 +664,50 @@ public class PerformanceController2 {
         Integer year = dto.getYear();
         Integer quarter = dto.getQuarter();
         Integer appType = dto.getAppType();
-        if(year==null || quarter == null || appType == null ){
+        Integer projectId = dto.getProjectId();
+        if(year==null || quarter == null || appType == null || projectId == null){
+            result.setSuccess(false);
+            result.setMessage("媒体类型均不能为空");
+        }
+        List<AccountDTO> userDto2List = performanceService.getQuarterAccountDetail(year, quarter, projectId, appType);
+        result.setSuccess(true);
+        result.setResult(userDto2List);
+        return result;
+    }
+
+    @AutoLog(value = "项目报表-根据accountId获取季度视频信息")
+    @ApiOperation(value = "根据accountId获取季度视频信息", notes = "根据accountId获取季度视频信息")
+    @PostMapping(value = "/getKuaishouQuarterVideoInfoByAccountId")
+    public Result<List<VideoDTO>> getKuaishouQuarterVideoInfoByAccountId(@RequestBody PerformanceTimeDTO dto,
+                                                            HttpServletRequest req) {
+        Result<List<VideoDTO>> result = new Result<>();
+        Integer year = dto.getYear();
+        Integer quarter = dto.getQuarter();
+        Long accountId = dto.getAccountId();
+        if(year==null || quarter == null || accountId == null ){
+            result.setSuccess(false);
+            result.setMessage("媒体类型均不能为空");
+        }
+        List<VideoDTO> userDto2List = performanceService.getKuaishouQuarterVideoInfoByAccountId(year, quarter, accountId);
+        result.setSuccess(true);
+        result.setResult(userDto2List);
+        return result;
+    }
+
+    @AutoLog(value = "项目报表-根据accountId获取季度视频信息")
+    @ApiOperation(value = "根据accountId获取季度视频信息", notes = "根据accountId获取季度视频信息")
+    @PostMapping(value = "/getToutiaoQuarterVideoInfoByAccountId")
+    public Result<List<VideoDTO>> getToutiaoQuarterVideoInfoByAccountId(@RequestBody PerformanceTimeDTO dto,
+                                                                         HttpServletRequest req) {
+        Result<List<VideoDTO>> result = new Result<>();
+        Integer year = dto.getYear();
+        Integer quarter = dto.getQuarter();
+        Long accountId = dto.getAccountId();
+        if(year==null || quarter == null || accountId == null ){
             result.setSuccess(false);
             result.setMessage("媒体类型均不能为空");
         }
-        List<AccountDTO> userDto2List = performanceService.getQuarterAccountDetail(year, quarter, appType);
+        List<VideoDTO> userDto2List = performanceService.getToutiaoQuarterVideoInfoByAccountId(year, quarter, accountId);
         result.setSuccess(true);
         result.setResult(userDto2List);
         return result;

+ 8 - 5
jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/service/IPerformanceService2.java

@@ -3,10 +3,7 @@ package org.jeecg.modules.system.service;
 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.ProjectDTO;
-import cn.com.ctop.userefficientvideomap.entity.UserDto2;
+import cn.com.ctop.userefficientvideomap.entity.*;
 import com.baomidou.mybatisplus.extension.service.IService;
 
 import java.util.List;
@@ -128,5 +125,11 @@ public interface IPerformanceService2 extends IService<Performance> {
     List<ProjectDTO> getProjcetListByMediaType(Integer year, Integer quarter, Integer appType );
 
     //根据projectId获取其下账户季度消耗信息
-    List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer appType);
+    List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer projectId, Integer appType);
+
+    //根据accountId获取季度视频信息
+    List<VideoDTO> getKuaishouQuarterVideoInfoByAccountId(Integer year, Integer quarter, Long accountId);
+
+    //根据accountId获取季度视频信息
+    List<VideoDTO> getToutiaoQuarterVideoInfoByAccountId(Integer year, Integer quarter, Long accountId);
 }

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

@@ -1086,22 +1086,6 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             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());
@@ -1118,7 +1102,7 @@ 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);
+                    planeMap.put(planeProjectCost.getUserId(), designLeader);
                 } else {
                     //将增加的金额增加到
                     planeMap.get(designLeader.getUserId()).setEffiRate(planeMap.get(designLeader.getUserId()).getEffiRate().add(designLeader.getEffiRate()));
@@ -1157,22 +1141,6 @@ 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());
@@ -1555,29 +1523,13 @@ 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(designLeader.getEffiRate()));
+                        designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.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;
             }
@@ -1629,29 +1581,13 @@ 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(designLeader.getEffiRate()));
+                designLeaderMap.get(designLeader.getUserId()).setCost(designLeaderMap.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插入数据
@@ -1677,7 +1613,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
             performance.setRoleId(designLeaderMap.get(key).getRoleId());
             performance.setQuarter(thisQuarter);
             performance.setYear(thisYear);
-            //performance.setCommissionRate(new BigDecimal("0.002")); //头条平台比例2‰
+            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"));
@@ -2706,7 +2642,7 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
 
     //快手优化季度绩效报表
     @Override
-    public List<UserDto2> kuaishouYouhuaQuarterReport(Integer year, Integer quarter) {
+    public List<UserDto2>  kuaishouYouhuaQuarterReport(Integer year, Integer quarter) {
         Integer appType = 2;
         //1 获取快手下所有人
         List<UserDto2> userDto2List = userEfficientVideoMapMapper.getKuaishouYunyingDepartUserInfo();
@@ -2768,12 +2704,26 @@ public class PerformanceServiceImpl2 extends ServiceImpl<PerformanceMapper, Perf
     }
 
     //根据projectId获取其下账户季度消耗信息
-    public List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer appType){
-        return userEfficientVideoMapMapper.getQuarterAccountDetail(year, quarter, appType);
+    public List<AccountDTO> getQuarterAccountDetail(Integer year, Integer quarter, Integer projectId, Integer appType){
+        return userEfficientVideoMapMapper.getQuarterAccountDetail(year, quarter, projectId, appType);
     }
 
+    //根据accountId获取季度视频信息
+    public List<VideoDTO> getKuaishouQuarterVideoInfoByAccountId(Integer year, Integer quarter, Long accountId){
+        Map<String,String> dateMap = DateUtils.quarterStartEndDate(year, quarter);
+        String startDate = dateMap.get("startDate");
+        String endDate = dateMap.get("endDate");
+        return userEfficientVideoMapMapper.getKuaishouQuarterVideoInfoByAccountId(startDate, endDate, accountId);
 
+    }
 
+    //根据accountId获取季度视频信息
+    public List<VideoDTO> getToutiaoQuarterVideoInfoByAccountId(Integer year, Integer quarter, Long accountId){
+        Map<String,String> dateMap = DateUtils.quarterStartEndDate(year, quarter);
+        String startDate = dateMap.get("startDate");
+        String endDate = dateMap.get("endDate");
+        return userEfficientVideoMapMapper.getToutiaoQuarterVideoInfoByAccountId(startDate, endDate, accountId);
+    }
 
 }
 

+ 2 - 0
performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/entity/PerformanceTimeDTO.java

@@ -13,4 +13,6 @@ public class PerformanceTimeDTO implements Serializable {
     private Integer quarter;
     private String userId;
     private Integer appType;
+    private Long accountId;
+    private Integer projectId;
 }

+ 21 - 0
performance-appraisal/src/main/java/cn/com/ctop/userefficientvideomap/entity/VideoDTO.java

@@ -0,0 +1,21 @@
+package cn.com.ctop.userefficientvideomap.entity;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+@Data
+public class VideoDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String signature;
+    private BigDecimal charge;
+    private String creativeUrl;
+    private String shot;
+    private String plan;
+    private String plane;
+    private String clip;
+
+}

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

@@ -226,10 +226,15 @@ public interface UserEfficientVideoMapMapper extends BaseMapper<UserEfficientVid
     //按平台获取其下所有项目信息以及消耗
     List<ProjectDTO> getProjcetListByMediaType(@Param("year")Integer year, @Param("quarter")Integer quarter, @Param("appType")Integer appType);
     //根据projectId获取其下账户季度消耗信息
-    List<AccountDTO> getQuarterAccountDetail(@Param("year")Integer year, @Param("quarter")Integer quarter, @Param("appType")Integer appType);
+    List<AccountDTO> getQuarterAccountDetail(@Param("year")Integer year, @Param("quarter")Integer quarter, @Param("projectId")Integer projectId, @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);
+
+    List<VideoDTO> getKuaishouQuarterVideoInfoByAccountId(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("accountId")Long accountId);
+
+    List<VideoDTO> getToutiaoQuarterVideoInfoByAccountId(@Param("startDate")String startDate, @Param("endDate")String endDate, @Param("accountId")Long accountId);
+
 }
 

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

@@ -1540,7 +1540,7 @@
             b.auth_name as authName,
             a.cost as cost,
             a.user_id as userId,
-            c.user_name as userName,
+            c.realname as userName,
             b.media_id as mediaId,
             b.advertiser_name as advertiserName,
             b.project_id as projectId,
@@ -1557,7 +1557,7 @@
                         account_id
                         from
                         ctop_user_allocation where project_id = #{projectId}) and a.year = #{year} and a.quarter = #{quarter}
-        order by account_id,start_date
+        order by a.account_id,a.start_date
     </select>
 
     <select id="getProjectDesignResponsibleInfo" resultType="cn.com.ctop.userefficientvideomap.entity.UserDto2">
@@ -1575,4 +1575,58 @@
             id = #{projectId}
     </select>
 
+    <!-- 快手根据账户获取其下视频制作信息以及消耗 -->
+    <select id="getKuaishouQuarterVideoInfoByAccountId" resultType="cn.com.ctop.userefficientvideomap.entity.VideoDTO">
+            select
+            a.signature,
+            a.charge,
+            (select url from ctop_kuaishou_video_get where signature = a.signature limit 1) as url,
+            b.url as creativeUrl,
+            d1.realname as shot,
+            d2.realname as plan,
+            d3.realname as plane,
+            d4.realname as clip
+        from
+        (
+        select signature, sum(charge) as charge from ctop_kuaishou_report_daily_creative where creative_id in  (
+        select creative_id from ctop_kuaishou_creative where photo_id != 0 and account_id = #{accountId}
+        )
+        and stat_date &gt;= #{startDate} and stat_date &lt;= #{endDate} <!-- and signature is not null --> group by signature
+        ) a
+        left join ctop_material_info b on a.signature = b.code
+        left join ctop_material_ascription c on b.id = c.material_id
+        left join sys_user d1 on d1.id = c.shot_id
+        left join sys_user d2 on d2.id = c.plan_id
+        left join sys_user d3 on d3.id = c.plane_id
+        left join sys_user d4 on d4.id = c.clip_id
+    </select>
+
+    <!-- 头条根据账户获取其下视频制作信息以及消耗 -->
+    <select id="getToutiaoQuarterVideoInfoByAccountId" resultType="cn.com.ctop.userefficientvideomap.entity.VideoDTO">
+        select
+        a.signature,
+        a.charge,
+        (select video_url from  ctop_bytedance_video_info where signature = a.signature limit 1) as creativeUrl,
+        b.url,
+        d1.realname as shot,
+        d2.realname as plan,
+        d3.realname as plane,
+        d4.realname as clip
+        from
+        (
+            select creative_id,signature, sum(cost) as charge from ctop_bytedance_report_creative_daily where creative_id in  (
+            select id from ctop_bytedance_creative where account_id = #{accountId}
+            )
+            and date_format(stat_datetime,'%Y-%m-%d') &gt;= #{startDate}
+            and date_format(stat_datetime,'%Y-%m-%d') &lt;= #{endDate}
+            <!--and  signature is not null --> group by signature
+        ) a
+        left join ctop_material_info b on a.signature = b.code
+        left join ctop_material_ascription c on b.id = c.material_id
+        left join sys_user d1 on d1.id = c.shot_id
+        left join sys_user d2 on d2.id = c.plan_id
+        left join sys_user d3 on d3.id = c.plane_id
+        left join sys_user d4 on d4.id = c.clip_id
+    </select>
+
 </mapper>