Explorar o código

Merge remote-tracking branch 'origin/test' into test

zhouzeyu@c-top.com.cn %!s(int64=3) %!d(string=hai) anos
pai
achega
3acd3e0075
Modificáronse 22 ficheiros con 517 adicións e 516 borrados
  1. 2 1
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java
  2. 5 5
      jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java
  3. 21 12
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/ExportReportController.java
  4. 0 8
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/SettlementController.java
  5. 9 18
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/SettlementFileController.java
  6. 3 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/vo/ProfitReportBytedanceVo.java
  7. 1 0
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/vo/SettlementFileParamsVo.java
  8. 7 4
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/ReportSettlementMapper.java
  9. 131 255
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/ReportSettlementMapper.xml
  10. 6 13
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/IReportSettlementService.java
  11. 3 4
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/ISettlementFileInfoService.java
  12. 249 178
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/ReportSettlementServiceImpl.java
  13. 13 2
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/SettlementFileInfoServiceImpl.java
  14. 2 2
      jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/SettlementInfoServiceImpl.java
  15. 3 0
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java
  16. 22 6
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml
  17. 2 2
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java
  18. 0 1
      jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserCompanyServiceImpl.java
  19. 38 2
      jeecg-boot-module-system/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java
  20. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialUploadController.java
  21. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java
  22. 0 1
      jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java

+ 2 - 1
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroConfig.java

@@ -217,7 +217,8 @@ public class ShiroConfig {
 
         filterChainDefinitionMap.put("/exportReportController/**", "anon");
         //filterChainDefinitionMap.put("/settLementController/**", "anon");
-        filterChainDefinitionMap.put("/settLementFileController/**", "anon");
+//        filterChainDefinitionMap.put("/settLementFileController/**", "anon");
+
         filterChainDefinitionMap.put("/ctop/projectMember/**", "anon");
         filterChainDefinitionMap.put("/agent/**", "anon");
         filterChainDefinitionMap.put("/materialUse/**", "anon");

+ 5 - 5
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/config/shiro/ShiroRealm.java

@@ -86,7 +86,7 @@ public class ShiroRealm extends AuthorizingRealm {
      * @throws AuthenticationException
      */
     @Override
-    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) throws AuthenticationException {
+    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken auth) {
         log.debug("===============Shiro身份认证开始============doGetAuthenticationInfo==========");
         String token = (String) auth.getCredentials();
         if (token == null) {
@@ -103,7 +103,7 @@ public class ShiroRealm extends AuthorizingRealm {
      *
      * @param token
      */
-    public LoginUser checkUserTokenIsEffect(String token) throws AuthenticationException {
+    public LoginUser checkUserTokenIsEffect(String token){
         // 解密获得username,用于和数据库进行对比
         String username = JwtUtil.getUsername(token);
         if (username == null) {
@@ -114,15 +114,15 @@ public class ShiroRealm extends AuthorizingRealm {
         log.debug("———校验token是否有效————checkUserTokenIsEffect——————— "+ token);
         LoginUser loginUser = commonAPI.getUserByName(username);
         if (loginUser == null) {
-            throw new AuthenticationException("用户不存在!");
+            log.info("用户不存在!");
         }
         // 判断用户状态
         if (loginUser.getStatus() != 1) {
-            throw new AuthenticationException("账号已被锁定,请联系管理员!");
+            log.info("账号已被锁定,请联系管理员!");
         }
         // 校验token是否超时失效 & 或者账号密码是否错误
         if (!jwtTokenRefresh(token, username, loginUser.getPassword())) {
-            throw new AuthenticationException("Token失效,请重新登录!");
+            log.info("Token失效,请重新登录!");
         }
 
         return loginUser;

+ 21 - 12
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/ExportReportController.java

@@ -1,14 +1,20 @@
 package org.jeecg.ctop.finance.settlement.controller;
 
+import cn.com.ctop.common.module.service.ISysUserService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
 import org.jeecg.ctop.finance.settlement.service.IReportSettlementService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
 import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
 
 
 /**
@@ -24,23 +30,30 @@ public class ExportReportController {
 
     @Autowired
     private IReportSettlementService reportSettlementService;
-
+    @Autowired
+    private ISysUserService userService;
 
     @ApiOperation(value = "财务结算-结算单导出-头条", notes = "财务结算-结算单导出-头条")
     @GetMapping(value = "/settlementReportBytedance")
-    public Result settlementReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
-        return reportSettlementService.settlementReportBytedance(paramsVo,response);
-
+    public Result settlementReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response) throws Exception{
+        SysUser user = userService.getById(paramsVo.getUserId());
+        String date = paramsVo.getUploadYears();
+        if(null == date||date.equals("")){
+            paramsVo.setUploadYears(DateUtils.formatDate(new Date(),"yyyy-MM"));
+        }
+        return reportSettlementService.settlementReportBytedance(paramsVo,response,user);
     }
 
 
     @ApiOperation(value = "财务结算-结算单导出-快手", notes = "财务结算-结算单导出-快手")
     @GetMapping(value = "/settlementReportKuaiShou")
     public Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
-        return reportSettlementService.settlementReportKuaiShou(paramsVo,response);
-
+        SysUser user = userService.getById(paramsVo.getUserId());
+        String date = paramsVo.getUploadYears();
+        if(null == date||date.equals("")){
+            paramsVo.setUploadYears(DateUtils.formatDate(new Date(),"yyyy-MM"));
+        }
+        return reportSettlementService.settlementReportKuaiShou(paramsVo,response,user);
     }
 
 
@@ -48,18 +61,14 @@ public class ExportReportController {
     @ApiOperation(value = "财务结算-利润表导出-头条", notes = "财务结算-利润表导出-头条")
     @GetMapping(value = "/porfitReportBytedance")
     public Result porfitReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
         return reportSettlementService.porfitReportBytedance(paramsVo,response);
-
     }
 
 
     @ApiOperation(value = "财务结算-利润表导出-快手", notes = "财务结算-利润表导出-快手")
     @GetMapping(value = "/porfitReportKuaiShou")
     public Result porfitReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
         return reportSettlementService.porfitReportKuaiShou(paramsVo,response);
-
     }
 
 

+ 0 - 8
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/SettlementController.java

@@ -120,18 +120,10 @@ public class SettlementController {
         return Result.successMsg("查询用户",list);
     }
 
-
-
     @ApiOperation(value="财务结算-获取所有运营人员", notes="财务结算-获取所有运营人员")
     @GetMapping("/getAllOperationUser")
     public Result getAllOperationUser() {
         List<Map<String,Object>> list = cwjsPolicyInfoService.getAllOperationUser();
         return Result.successMsg("查询运营用户列表",list);
     }
-
-
-
-
-
-
 }

+ 9 - 18
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/SettlementFileController.java

@@ -1,9 +1,13 @@
 package org.jeecg.ctop.finance.settlement.controller;
 
+import cn.com.ctop.common.module.service.ISysUserService;
 import com.github.pagehelper.PageInfo;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.ctop.finance.policy.utils.Check;
 import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementFileInfo;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
@@ -27,20 +31,13 @@ import java.util.Set;
 @RestController
 @RequestMapping("/settLementFileController")
 public class SettlementFileController {
-
     @Autowired
     private ISettlementFileInfoService settlementFileInfoService;
-
-
     @Autowired
     private ISysRoleService sysRoleService;
-
-
     @Autowired
     private IMaterialReportOverViewService materialReportOverViewService;
 
-
-
     @ApiOperation(value="结算单-结算单列表查询", notes="结算单-结算单列表查询")
     @GetMapping(value = "/getSettlementSheetList")
     public Result<PageInfo<Map<String,String>>> getSettlementSheetList(SettlementFileParamsVo paramsVo,
@@ -89,8 +86,6 @@ public class SettlementFileController {
         return settlementFileInfoService.deleteSettlementFile(paramsVo);
     }
 
-
-
     @ApiOperation(value="结算单-账户截图上传", notes="结算单-账户截图上传")
     @PostMapping(value = "/insertAccountImages")
     public Result insertAccountImages(@RequestBody CtopCwjsSettlementFileInfo settlementFileInfo) {
@@ -100,18 +95,14 @@ public class SettlementFileController {
         return settlementFileInfoService.insertAccountImages(settlementFileInfo);
     }
 
-
     @ApiOperation(value="结算单-查询账户数量以及图片数量", notes="结算单-查询账户数量以及图片数量")
     @PostMapping(value = "/getAccountNumAndImgNum")
     public Result getAccountNumAndImgNum(@RequestBody SettlementFileParamsVo paramsVo) {
-        return settlementFileInfoService.getAccountNumAndImgNum(paramsVo);
+        LoginUser loginUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
+        SysUser user = userService.getById(loginUser.getId());
+        return settlementFileInfoService.getAccountNumAndImgNum(paramsVo,user);
     }
-
-
-
-
-
-
-
+    @Autowired
+    private ISysUserService userService;
 
 }

+ 3 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/vo/ProfitReportBytedanceVo.java

@@ -20,6 +20,9 @@ public class ProfitReportBytedanceVo implements Serializable {
     @Excel(name = "产品名称",width = 25)
     private String productName;
 
+    @Excel(name = "账户ID",width = 25)
+    private String accountId;
+
     @Excel(name = "总消耗",width = 10)
     private String cost;
 

+ 1 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/vo/SettlementFileParamsVo.java

@@ -26,6 +26,7 @@ public class SettlementFileParamsVo implements Serializable {
     //@Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
     private String advertiserId;
     private String advertiserName;
+    private String userId;
 
     /**
      * 产品id

+ 7 - 4
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/ReportSettlementMapper.java

@@ -56,7 +56,9 @@ public interface ReportSettlementMapper {
      * 查询 头条利润表 总花费
      * @return
      */
-    List<Map<String,Object>> getProfitBytedanceAccountCost(@Param("accountId") String accountId,@Param("startTime") String startTime,@Param("endTime") String endTime);
+    List<Map<String,Object>> getProfitBytedanceAccount(@Param("startTime") String startTime,@Param("endTime") String endTime);
+    Map<String,Object> getProfitBytedanceAccountCost(@Param("accountId") String accountId,@Param("startTime") String startTime,@Param("endTime") String endTime);
+
     List<Map<String,Object>> getProfitBytedanceCost(@Param("accountId") String accountId,@Param("startTime") String startTime,@Param("endTime") String endTime);
 
     /**
@@ -64,7 +66,8 @@ public interface ReportSettlementMapper {
      * @param
      * @return
      */
-    List<Map<String,Object>> getProfitKuaiShouAccountCost(@Param("accountId")String accountId,@Param("startTime")String startTime ,@Param("endTime")String endTime);
+    List<Map<String,Object>> getProfitKuaiShouAgentAccount(@Param("startTime")String startTime ,@Param("endTime")String endTime);
+    Map<String,Object> getProfitKuaiShouAccountCost(@Param("accountId")String accountId,@Param("startTime")String startTime ,@Param("endTime")String endTime);
     //快手 利润表 账户 时间段内的数据信息
     List<Map<String,Object>> getProfitKuaiShouCost(@Param("accountId")String accountId,@Param("startTime")String startTime ,@Param("endTime")String endTime);
 
@@ -77,11 +80,11 @@ public interface ReportSettlementMapper {
 
     Map<String,Object> getProfitRebate(@Param("productName") String productName,@Param("startTime")String startTime,@Param("endTime")String endTime);
 
-    Map<String,Object> getProfitBytedanceSale(String accountId);
+    Map<String,Object> getProfitReportSale(String accountId);
 
     Map<String,Object> getProfitBytedanceOperate(String accountId);
 
-    Map<String,Object> getProfitKuaiShouOperate(String accountId);
+    Map<String,Object> getProfitReportOperateAndArea(String accountId);
 
 
 

+ 131 - 255
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/ReportSettlementMapper.xml

@@ -32,10 +32,8 @@
         <if test="mediaId !=null and mediaId != ''">
             AND media_id = #{mediaId}
         </if>
-
     </select>
 
-
     <!-- 查询 头条 账户 图片-->
     <select id="getAccountImagesBytedance" resultType="java.lang.String">
         SELECT
@@ -47,10 +45,6 @@
         AND upload_years = #{uploadYears}
     </select>
 
-
-
-
-
     <!-- 获取快手 账户 日流水信息  账户维度-->
     <select id="getAccountTransactionDayKuaiShou" resultType="org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo">
         select t.*,c.auth_name as accountName,
@@ -70,9 +64,6 @@
         where uploadYears = #{uploadYears}
     </select>
 
-
-
-
     <!-- 获取快手 账户 日流水信息  代理商维度-->
     <select id="getAccountTransactionDayKuaiShouAgent" resultType="org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo">
 
@@ -102,8 +93,6 @@
             t.date
     </select>
 
-
-
     <!-- 获取快手 账户 日流水信息  代理商 和 账户 维度-->
     <select id="getTransactionDayKuaiShouAgentAndAccount" resultType="org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportKuaiShouVo">
         SELECT
@@ -169,81 +158,64 @@
     </select>
 
 
-
-
-
     <!-- 查询 头条利润表 所用账户-->
-    <select id="getProfitBytedanceAccountCost" resultType="java.util.LinkedHashMap">
-      <!--  SELECT
-        d.advertiser_id AS accountId,
-        SUM( d.cost ) AS cost,
-        SUM( d.cash_cost ) AS cashCost,
-        SUM( d.reward_cost ) rewardCost,
-        pd.id as productId,
-        pd.product_name AS productName
+    <select id="getProfitBytedanceAccount" resultType="java.util.LinkedHashMap">
+        SELECT
+        d.advertiser_id as accountId
         FROM
         ctop_account_transaction_day d
-        LEFT JOIN ctop_user_allocation u ON d.advertiser_id = u.account_id
-        LEFT JOIN ctop_project p ON u.project_id = p.id
-        LEFT JOIN ctop_product pd on pd.id = p.product_id
-        where (u.media_id = 1 or u.media_id = 3)
-            <if test="accountId !=null and accountId != ''">
-                AND d.advertiser_id = #{accountId}
-            </if>
-            <if test="startTime !=null and startTime != ''">
-                AND d.date &gt;= #{startTime}
-            </if>
-            <if test="endTime !=null and endTime != ''">
-                AND d.date &lt;= #{endTime}
-            </if>
-        GROUP BY
-            d.advertiser_id;
--->
+        WHERE d.cost >0
+    <if test="startTime !=null and startTime != ''">
+        AND d.date &gt;= #{startTime}
+    </if>
+    <if test="endTime !=null and endTime != ''">
+        AND d.date &lt;= #{endTime}
+    </if>
+        GROUP BY d.advertiser_id;
+</select>
 
+    <!-- 查询 头条利润表 所用账户-->
+    <select id="getProfitBytedanceAccountCost" resultType="java.util.LinkedHashMap">
         SELECT
-        d.advertiser_id AS accountId,
-        SUM( d.cost ) AS cost,
-        SUM( d.cash_cost ) AS cashCost,
-        SUM( d.reward_cost ) rewardCost,
-        p.id AS productId,
-        p.product_name AS productName
+        d.advertiser_id as accountId,
+        ROUND(SUM( d.cost ),2) AS cost,
+        ROUND(SUM( d.cash_cost ),2) AS cashCost,
+        ROUND(SUM( d.reward_cost ),2) as rewardCost,
+        IFNULL((SELECT a.name from ctop_user_allocation u,ctop_advertiser a where d.advertiser_id = u.account_id and u.advertiser_id = a.id),(SELECT a.name
+        from ctop_cwjs_settlement_info c ,ctop_advertiser a where c.account_id = d.advertiser_id and c.advertiser_id = a.id)) as advertiserName,
+        IFNULL((SELECT
+        p.product_name
+        FROM ctop_user_allocation u,ctop_project pj,ctop_product p where d.advertiser_id = u.account_id and u.project_id = pj.id and pj.product_id = p.id
+        ),(SELECT p.product_name
+        FROM ctop_cwjs_settlement_info c,ctop_product p where d.advertiser_id = c.account_id and c.product_id = p.id)) productName
         FROM
-        ctop_account_transaction_day d,
-        ctop_cwjs_settlement_info c,
-        ctop_product p
-        WHERE
-        d.advertiser_id = c.account_id
-        AND c.product_id = p.id
-        <if test="accountId !=null and accountId != ''">
-            AND d.advertiser_id = #{accountId}
-        </if>
-        <if test="startTime !=null and startTime != ''">
-            AND d.date &gt;= #{startTime}
-        </if>
-        <if test="endTime !=null and endTime != ''">
-            AND d.date &lt;= #{endTime}
-        </if>
-        GROUP BY
-        d.advertiser_id;
-
-    </select>
+        ctop_account_transaction_day d
+<where>
+    <if test="accountId !=null and accountId != ''">
+        AND d.advertiser_id = #{accountId}
+    </if>
+    <if test="startTime !=null and startTime != ''">
+        AND d.date &gt;= #{startTime}
+    </if>
+    <if test="endTime !=null and endTime != ''">
+        AND d.date &lt;= #{endTime}
+    </if>
+</where>
+        GROUP BY d.advertiser_id
+        limit 1
 
+</select>
 
     <!-- 查询 头条利润表 总花费-->
     <select id="getProfitBytedanceCost" resultType="java.util.LinkedHashMap">
-       <!-- SELECT
+        SELECT
         d.advertiser_id AS accountId,
         SUM( d.cost ) AS cost,
         SUM( d.cash_cost ) AS cashCost,
-        SUM( d.reward_cost ) rewardCost,
-        pd.id as productId,
-        pd.product_name AS productName
+        SUM( d.reward_cost ) rewardCost
         FROM
         ctop_account_transaction_day d
-        LEFT JOIN ctop_user_allocation u ON d.advertiser_id = u.account_id
-        LEFT JOIN ctop_project p ON u.project_id = p.id
-        LEFT JOIN ctop_product pd on pd.id = p.product_id
-        where (u.media_id = 1 or u.media_id = 3)
+        <where>
             <if test="accountId !=null and accountId != ''">
                 AND d.advertiser_id = #{accountId}
             </if>
@@ -253,24 +225,7 @@
             <if test="endTime !=null and endTime != ''">
                 AND d.date &lt;= #{endTime}
             </if>
--->
-
-        SELECT
-        d.advertiser_id AS accountId,
-        SUM( d.cost ) AS cost,
-        SUM( d.cash_cost ) AS cashCost,
-        SUM( d.reward_cost ) rewardCost
-        FROM
-        ctop_account_transaction_day d
-        <if test="accountId !=null and accountId != ''">
-            AND d.advertiser_id = #{accountId}
-        </if>
-        <if test="startTime !=null and startTime != ''">
-            AND d.date &gt;= #{startTime}
-        </if>
-        <if test="endTime !=null and endTime != ''">
-            AND d.date &lt;= #{endTime}
-        </if>
+        </where>
 
     </select>
 
@@ -278,38 +233,6 @@
 
     <!-- 查询 头条利润表  返点类型和比列-->
     <select id="getProfitBytedance" resultType="java.util.LinkedHashMap">
-<!--
-
-        SELECT
-        pp.create_user_id,
-        cp.rebate_type AS rebateType,
-        cp.rebate_rate AS rebateRate,
-        cp.approved_status AS approvedStatus,
-        cp.policy_start_date as policyStartDate,
-        cp.policy_end_date as policyEndDate,
-        cp.create_time as createTime
-        FROM
-        ctop_cwjs_policy_product pp
-        LEFT JOIN ctop_cwjs_policy_info cp ON cp.id = pp.policy_id
-        WHERE
-        pp.del_flag = 0
-        AND cp.del_flag = 0
-        and cp.approved_status = 3
-        <if test="mediaType !=null and mediaType != ''">
-            AND cp.media_type = #{mediaType}
-        </if>
-        <if test="productName !=null and productName != ''">
-            AND pp.policy_product_name = #{productName}
-        </if>
-        <if test="startTime !=null and startTime != ''">
-            AND  (cp.policy_start_date &gt;= #{startTime} or cp.policy_start_date &lt;= #{endTime})
-        </if>
-        <if test="endTime !=null and endTime != ''">
-            AND (cp.policy_end_date &gt;= #{startTime} or cp.policy_end_date &lt;= #{endTime})
-        </if>
-
--->
-
         SELECT t.* from (
         SELECT
         cp.rebate_type AS rebateType,
@@ -327,9 +250,7 @@
         <if test="mediaType !=null and mediaType != ''">
             AND cp.media_type = #{mediaType}
         </if>
-        <if test="productName !=null and productName != ''">
             AND r.product_name = #{productName}
-        </if>
         <if test="startTime !=null and startTime != ''">
             AND  r.policy_date &gt;= #{startTime}
         </if>
@@ -338,9 +259,6 @@
         </if>
         GROUP BY r.policy_id
         ) t
-
-
-
     </select>
 
 
@@ -367,47 +285,47 @@
         GROUP BY
         p.id
         limit 1
-
-
-
-
     </select>
 
-
-    <!-- 查询 头条利润表  销售人员姓名 -->
-    <select id="getProfitBytedanceSale" resultType="java.util.LinkedHashMap">
-
-        SELECT f.create_user_id,u.realname as saleName
+    <!-- 查询 利润表  销售人员姓名 -->
+    <select id="getProfitReportSale" resultType="java.util.LinkedHashMap">
+       <!-- SELECT f.create_user_id,u.realname as saleName
         from ctop_cwjs_settlement_info f
         LEFT  JOIN sys_user u on u.id = f.create_user_id
         where f.del_flag = 0
         <if test="accountId !=null and accountId != ''">
             AND f.account_id = #{accountId}
         </if>
-        limit 1
-
-
+        limit 1-->
+        ( SELECT
+        p.sale_id,
+        y.realname AS saleName
+        FROM
+        ctop_user_allocation u
+        LEFT JOIN ctop_project p ON u.project_id = p.id
+        LEFT JOIN sys_user y ON y.id = p.sale_id
+        WHERE
+        u.account_id = #{accountId}
+        LIMIT 1
+        )
+        UNION ALL
+        (
+        SELECT
+        f.create_user_id,
+        u.realname AS saleName
+        FROM
+        ctop_cwjs_settlement_info f
+        LEFT JOIN sys_user u ON u.id = f.create_user_id
+        WHERE
+        f.del_flag = 0
+        AND f.account_id = #{accountId}
+        LIMIT 1
+        )
+        LIMIT 1
     </select>
 
-
-
     <!-- 查询 头条利润表  广告主和运营和运营所属区域-->
     <select id="getProfitBytedanceOperate" resultType="java.util.LinkedHashMap">
-        <!--select
-        u.advertiser_id,
-        u.advertiser_name as advertiserName,
-        u.user_id,
-        u.user_name as operateName,
-        u.auth_name,
-        IFNULL(p.nick_name,'') as operateArea
-        from
-        ctop_user_allocation u
-        LEFT JOIN user_company p on p.user_id = u.user_id
-          <where>
-              <if test="accountId !=null and accountId != ''">
-                  AND u.account_id = #{accountId}
-              </if>
-          </where>-->
         SELECT
         c.create_user_id AS operateUserId,
         p.user_name AS operateName,
@@ -422,49 +340,38 @@
             AND c.account_id = #{accountId}
         </if>
         limit 1
-
     </select>
 
+    <!-- 查询 快手 代理商 所有账户-->
+    <select id="getProfitKuaiShouAgentAccount" resultType="java.util.LinkedHashMap">
+        SELECT k.* from
+        ctop_kuaishou_daily_agent k
+        where k.total_charged_in_yuan !=0
+            <if test="startTime !=null and startTime != ''">
+                AND k.date_time &gt;= #{startTime}
+            </if>
+            <if test="endTime !=null and endTime != ''">
+                AND k.date_time &lt;= #{endTime}
+            </if>
+        GROUP BY k.account_id
+    </select>
 
-<!-- 查询 快手 利润表 总花费-->
+    <!-- 查询 快手 利润表 总花费-->
     <select id="getProfitKuaiShouAccountCost" resultType="java.util.LinkedHashMap">
-        <!--SELECT
-            d.account_id AS accountId,
-            SUM( d.daily_charge ) AS cost,
-            SUM( d.real_charged ) AS cashCost,
-            pd.id as productId,
-            pd.product_name AS productName
-        FROM
-            ctop_kuaishou_daily_flows d
-        LEFT JOIN ctop_user_allocation u ON d.account_id = u.account_id
-        LEFT JOIN ctop_project p ON u.project_id = p.id
-        LEFT JOIN ctop_product pd on pd.id = p.product_id
-        where (u.media_id = 2 or u.media_id = 4)
-        <if test="accountId !=null and accountId != ''">
-            AND d.account_id = #{accountId}
-        </if>
-        <if test="startTime !=null and startTime != ''">
-            AND d.date &gt;= #{startTime}
-        </if>
-        <if test="endTime !=null and endTime != ''">
-            AND d.date &lt;= #{endTime}
-        </if>
-        GROUP BY
-            d.account_id;-->
-
         SELECT
         d.account_id as accountId,
         d.user_id AS ksId,
-        SUM(d.total_charged_in_yuan) AS cost,
-        SUM((d.real_charged_in_yuan + d.total_rebate_real_charged_in_yuan + d.credit_real_charged_in_yuan)) as cashCost,
-        c.product_id as productId,
-        (SELECT p.product_name from ctop_product p where p.id = c.product_id) AS productName,
-        (SELECT d.name as advertiserName from ctop_advertiser d where d.id = c.advertiser_id) advertiserName
+        round(SUM(d.total_charged_in_yuan),3) AS cost,
+        round(SUM((d.real_charged_in_yuan + d.total_rebate_real_charged_in_yuan + d.credit_real_charged_in_yuan)),3) as cashCost,
+        IFNULL((SELECT a.name from ctop_user_allocation u,ctop_advertiser a where d.account_id = u.account_id and u.advertiser_id = a.id),(SELECT a.name
+        from ctop_cwjs_settlement_info c ,ctop_advertiser a where c.account_id = d.account_id and c.advertiser_id = a.id)) as advertiserName,
+        IFNULL((SELECT
+        p.product_name
+        FROM ctop_user_allocation u,ctop_project pj,ctop_product p where d.account_id = u.account_id and u.project_id = pj.id and pj.product_id = p.id
+        ),(SELECT p.product_name
+        FROM ctop_cwjs_settlement_info c,ctop_product p where d.account_id = c.account_id and c.product_id = p.id)) productName
         FROM
         ctop_kuaishou_daily_agent d
-        RIGHT JOIN	ctop_cwjs_settlement_info c
-        on d.account_id = c.account_id
-        and c.kuai_shou_id = d.user_id
         <where>
             <if test="accountId !=null and accountId != ''">
                 AND d.account_id = #{accountId}
@@ -476,34 +383,14 @@
                 AND d.date_time &lt;= #{endTime}
             </if>
         </where>
-
         GROUP BY d.account_id
-    </select>
+        limit 1
+
 
+    </select>
 
-<!-- 查询 快手 利润表 总花费-->
+    <!-- 查询 快手 利润表 总花费-->
     <select id="getProfitKuaiShouCost" resultType="java.util.LinkedHashMap">
-        <!--SELECT
-        d.account_id AS accountId,
-        SUM( d.daily_charge ) AS cost,
-        SUM( d.real_charged ) AS cashCost,
-        pd.id as productId,
-        pd.product_name AS productName
-        FROM
-        ctop_kuaishou_daily_flows d
-        LEFT JOIN ctop_user_allocation u ON d.account_id = u.account_id
-        LEFT JOIN ctop_project p ON u.project_id = p.id
-        LEFT JOIN ctop_product pd on pd.id = p.product_id
-        where (u.media_id = 2 or u.media_id = 4)
-        <if test="accountId !=null and accountId != ''">
-            AND d.account_id = #{accountId}
-        </if>
-        <if test="startTime !=null and startTime != ''">
-            AND d.date &gt;= #{startTime}
-        </if>
-        <if test="endTime !=null and endTime != ''">
-            AND d.date &lt;= #{endTime}
-        </if>-->
         SELECT
         d.account_id,
         d.user_id AS ksId,
@@ -522,35 +409,12 @@
                 AND d.date_time &lt;= #{endTime}
             </if>
         </where>
-
-
     </select>
 
 
-
-    <!-- 查询 快手 利润表  广告主和运营和运营所属区域-->
-    <select id="getProfitKuaiShouOperate" resultType="java.util.LinkedHashMap">
-       <!-- select
-        u.advertiser_id,
-        u.account_id,
-        b.user_id as ksId,
-        d.name as advertiserName,
-        u.user_id,
-        u.user_name as operateName,
-        u.auth_name,
-        IFNULL(p.nick_name,'') as operateArea
-        from
-        ctop_user_allocation u
-        LEFT JOIN ctop_kuaishou_advertiser_base_info b on u.account_id = b.account_id
-        LEFT JOIN user_company p on p.user_id = u.user_id
-        LEFT JOIN ctop_advertiser d on u.advertiser_id = d.id
-    <where>
-        <if test="accountId !=null and accountId != ''">
-            AND u.account_id = #{accountId}
-        </if>
-    </where>-->
-
-        SELECT
+    <!-- 查询 利润表  运营和运营所属区域-->
+    <select id="getProfitReportOperateAndArea" resultType="java.util.LinkedHashMap">
+        <!--SELECT
         c.create_user_id AS operateUserId,
         p.user_name AS operateName,
         IFNULL( p.nick_name, '' ) AS operateArea,
@@ -563,17 +427,36 @@
             <if test="accountId !=null and accountId != ''">
                 AND c.account_id = #{accountId}
             </if>
-            limit 1
-    </select>
-
-
-
-
-
-    <!--  给运营人员发送微信通知 -->
+            limit 1-->
 
+        ( SELECT
+        u.user_id AS operateUserId,
+        u.user_name AS operateName,
+        IFNULL( p.nick_name, '' ) AS operateArea
+        FROM
+        ctop_user_allocation u
+        LEFT JOIN user_company p ON u.user_id = p.user_id
+        WHERE
+        u.account_id = #{accountId}
+        LIMIT 1
+        ) UNION ALL
+        (
+        SELECT
+        c.create_user_id AS operateUserId,
+        p.user_name AS operateName,
+        IFNULL( p.nick_name, '' ) AS operateArea
+        FROM
+        ctop_cwjs_settlement_file_info c
+        LEFT JOIN user_company p ON c.create_user_id = p.user_id
+        WHERE
+        c.del_flag = 0
+        AND c.account_id = #{accountId}
+        LIMIT 1
+        )
+        LIMIT 1
+    </select>
 
-<!--  查询 所有已绑定用户的运营人员id -->
+    <!--  查询 所有已绑定用户的运营人员id -->
     <select id="getAccountOperateUserId" resultType="java.util.LinkedHashMap">
         SELECT user_id userId,user_name userName
         from ctop_user_allocation
@@ -599,11 +482,4 @@
 	AND c.user_id = #{userId}
     </select>
 
-
-
-
-
-    <!--  给运营人员发送微信通知 -->
-
-
 </mapper>

+ 6 - 13
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/IReportSettlementService.java

@@ -1,6 +1,8 @@
 package org.jeecg.ctop.finance.settlement.service;
 
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementReportBytedanceVo;
@@ -12,28 +14,19 @@ public interface IReportSettlementService {
 
     List<SettlementReportBytedanceVo> getAccountTransactionDayBytedance();
 
-    Result settlementReportBytedance(SettlementFileParamsVo paramsVo,HttpServletResponse response);
-
-    Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo,HttpServletResponse response);
-
-
+    Result settlementReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response, SysUser user);
 
+    Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response, SysUser user);
 
     Result porfitReportBytedance(SettlementFileParamsVo paramsVo,HttpServletResponse response);
 
     Result porfitReportKuaiShou(SettlementFileParamsVo paramsVo,HttpServletResponse response);
 
-
-
-
     Result sendMessageToOperate();
-    Result sendMessageToOperateDemo(String userId);
-
-
-
 
+    Result sendMessageToOperateDemo(String userId);
 
     void cwjsPRofit(CwjsPolicyInfo cwjsPolicyInfo);
 
-
+    List<String> getAccountId(SettlementFileParamsVo paramsVo,SysUser user);
 }

+ 3 - 4
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/ISettlementFileInfoService.java

@@ -3,6 +3,8 @@ package org.jeecg.ctop.finance.settlement.service;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.github.pagehelper.PageInfo;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementFileInfo;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
 
@@ -12,12 +14,9 @@ public interface ISettlementFileInfoService extends IService<CtopCwjsSettlementF
 
     Result<PageInfo<Map<String,String>>> getSettlementSheetList(SettlementFileParamsVo paramsVo, Integer pageNo, Integer pageSize);
 
-
     Result deleteSettlementFile(SettlementFileParamsVo paramsVo);
 
     Result insertAccountImages(CtopCwjsSettlementFileInfo settlementFileInfo);
 
-    Result getAccountNumAndImgNum(SettlementFileParamsVo paramsVo);
-
-
+    Result getAccountNumAndImgNum(SettlementFileParamsVo paramsVo, SysUser user);
 }

+ 249 - 178
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/ReportSettlementServiceImpl.java

@@ -2,7 +2,12 @@ package org.jeecg.ctop.finance.settlement.service.serviceImpl;
 
 import cn.afterturn.easypoi.excel.ExcelExportUtil;
 import cn.afterturn.easypoi.excel.entity.ExportParams;
+import cn.com.ctop.common.module.entity.SysLog;
+import cn.com.ctop.common.module.entity.UserAllocation;
 import cn.com.ctop.common.module.mapper.MailLogMapper;
+import cn.com.ctop.common.module.mapper.SysLogMapper;
+import cn.com.ctop.common.module.mapper.SysRoleMapper;
+import cn.com.ctop.common.module.mapper.UserAllocationMapper;
 import cn.com.ctop.common.module.utils.CorpWexinUtils;
 import cn.com.ctop.common.module.utils.ImageUtils;
 import com.alibaba.fastjson.JSONObject;
@@ -16,6 +21,9 @@ import org.apache.poi.ss.usermodel.HorizontalAlignment;
 import org.apache.poi.ss.usermodel.Workbook;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.common.util.DateUtils;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyInfo;
 import org.jeecg.ctop.finance.policy.entity.CwjsPolicyProduct;
 import org.jeecg.ctop.finance.policy.mapper.CwjsPolicyProductMapper;
@@ -29,6 +37,7 @@ import org.jeecg.ctop.finance.settlement.mapper.SettlementInfoMapper;
 import org.jeecg.ctop.finance.settlement.service.IReportSettlementService;
 import org.jeecg.ctop.finance.utils.SettlementUtil;
 import org.jeecg.ctop.finance.utils.createExcelByTemplate;
+import org.jeecg.modules.ctop.service.IMaterialReportOverViewService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -43,6 +52,7 @@ import java.io.*;
 import java.net.URL;
 import java.net.URLEncoder;
 import java.text.MessageFormat;
+import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.List;
 import java.util.stream.Collectors;
@@ -51,29 +61,31 @@ import java.util.stream.Collectors;
 @Slf4j
 @Service
 public class ReportSettlementServiceImpl implements IReportSettlementService {
-
     @Resource
     private ReportSettlementMapper reportSettlementMapper;
-
     @Resource
     private CorpWexinUtils corpWexinUtils;
     @Resource
     private MailLogMapper mailLogMapper;
-
     @Resource
     private CwjsProfitMapper cwjsProfitMapper;
+    @Resource
+    private UserAllocationMapper userAllocationMapper;
+    @Resource
+    private SysRoleMapper roleMapper;
+    @Autowired
+    private IMaterialReportOverViewService materialReportOverViewService;
+    @Resource
+    private SysLogMapper sysLogMapper;
 
 
     @Override
     public List<SettlementReportBytedanceVo> getAccountTransactionDayBytedance() {
         return reportSettlementMapper.getAccountTransactionDayBytedance(null);
     }
-
     @Override
-    public Result settlementReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
+    public Result settlementReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response, SysUser user) {
         try {
-
             //第一步创建workbook
             HSSFWorkbook wb = new HSSFWorkbook();
 
@@ -88,7 +100,7 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             style.setFont(font);
 
             //查询 账户id
-            List<String> accountIdList = reportSettlementMapper.getAccountIdBytedance(paramsVo);
+            List<String> accountIdList = this.getAccountId(paramsVo,user);
 
             if (Check.isNull(accountIdList)){
                 return Result.errorMsg("该广告主和产品下无法查询到绑定的账户信息");
@@ -97,7 +109,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             int num = 0;
 
             for (int k = 0; k < accountIdList.size(); k++) {
-
                 String accountId = accountIdList.get(k);
                 paramsVo.setAccountId(accountId);
 
@@ -128,23 +139,23 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
 
                 //5:创建第2行的单元格
                 HSSFCell cell = row.createCell(0);     //第一个单元格
-                cell.setCellValue("   日期   ");         //设定值
+                cell.setCellValue("日期");         //设定值
                 cell.setCellStyle(style);          //内容居中
 
                 cell = row.createCell(1);
-                cell.setCellValue("      账户名称      ");
+                cell.setCellValue("账户名称");
                 cell.setCellStyle(style);
 
                 cell = row.createCell(2);
-                cell.setCellValue("      账户ID      ");
+                cell.setCellValue("账户ID");
                 cell.setCellStyle(style);
 
                 cell = row.createCell(3);
-                cell.setCellValue("      所属代理商名称      ");
+                cell.setCellValue("所属代理商名称");
                 cell.setCellStyle(style);
 
                 cell = row.createCell(4);
-                cell.setCellValue("      所属代理商ID      ");
+                cell.setCellValue("所属代理商ID");
                 cell.setCellStyle(style);
 
                 cell = row.createCell(5);
@@ -179,9 +190,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                 cell.setCellValue("冻结(¥)");
                 cell.setCellStyle(style);
 
-
-
-
                 for (int i = 0; i < settlementList.size(); i++) {
                     SettlementReportBytedanceVo vo = settlementList.get(i);
                     //创建行 (表头占0-1行 所以 从 2开始)
@@ -204,8 +212,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                     row.createCell(12).setCellValue(vo.getFrozen());
                 }
 
-
-
                 //查询 图片 url
                 List<String> imageUrlList = reportSettlementMapper.getAccountImagesBytedance(accountId,paramsVo.getUploadYears());
 
@@ -252,19 +258,64 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             output.close();
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("====>>>>", e.getMessage());
             return Result.errorMsg(e.getMessage());
         }
         return null;
     }
+    /**
+     * @param paramsVo
+     * @param user
+     * @return
+     */
+    @Override
+    public List<String> getAccountId(SettlementFileParamsVo paramsVo,SysUser user) {
+        String uploadYears = paramsVo.getUploadYears();
+        //1:区分媒体(头条:1 快手:2)
+        Integer mediaId = paramsVo.getMediaId();
+        List<String> settlementAccountList = reportSettlementMapper.getAccountIdBytedance(paramsVo);
+        String roleCode = roleMapper.getRoleCodeByUserId(user.getId());
+        Set<String>sales = new HashSet<>();
+        List<UserAllocation>allocations ;
+        if("admin".equals(roleCode)|| "finance".equals(roleCode)){
+            //查询所有可用的账户
+        }else if("saleDirector".equals(roleCode)){
+            //查询自己下辖的所有销售绑定的账户
+            sales = materialReportOverViewService.recursiveQuerySubordinate(paramsVo.getCreateUserId());
+        }else if("saleAssistant".equals(roleCode)|| "sale".equals(roleCode)|| "saleAm".equals(roleCode)){
+            //查询自己名绑定下的账户
+            sales.add(user.getId());
+        }
+        if(sales.isEmpty()){
+            sales = null;
+        }
+        allocations = userAllocationMapper.getAccountInfoBySalesId(sales,mediaId+"",paramsVo.getAdvertiserId(),paramsVo.getProductId());
+        return mergeAccountId(settlementAccountList,allocations,uploadYears);
+    }
 
-
+    private List<String> mergeAccountId(List<String> settlementAccountList, List<UserAllocation> allocations,String uploadYears) {
+        List<String>salesAccount = new ArrayList<>();
+        for(UserAllocation allocation:allocations){
+            if(allocation.getAccountStatus() == 0){
+                salesAccount.add(allocation.getAccountId()+"");
+            }
+            if(allocation.getAccountStatus() == 1){
+                //被关停的账户
+                Long updateDateNum = Long.parseLong(DateUtils.formatDate(allocation.getUpdateTime(),"yyyymm"));
+                uploadYears = uploadYears.replace("-","");
+                Long uploadYearNum = Long.parseLong(uploadYears);
+                if(updateDateNum>=uploadYearNum){
+                    salesAccount.add(allocation.getAccountId()+"");
+                }
+            }
+        }
+        settlementAccountList.removeAll(salesAccount);
+        settlementAccountList.addAll(salesAccount);
+        return settlementAccountList;
+    }
 
     @Override
-    public Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
+    public Result settlementReportKuaiShou(SettlementFileParamsVo paramsVo, HttpServletResponse response, SysUser user) {
         try {
-
             //第一步创建workbook
             HSSFWorkbook wb = new HSSFWorkbook();
 
@@ -279,16 +330,14 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             style.setFont(font);
 
             //查询 需要导出的数据的账户id
-            List<String> accountIdList = reportSettlementMapper.getAccountIdBytedance(paramsVo);
+            List<String> accountIdList = this.getAccountId(paramsVo,user);
 
             if (Check.isNull(accountIdList)){
                 return Result.errorMsg("该广告主和产品下无法查询到绑定的快手账户信息");
             }
 
             int num = 0;
-
             for (int k = 0; k < accountIdList.size(); k++) {
-
                 String accountId = accountIdList.get(k);
                 paramsVo.setAccountId(accountId);
 
@@ -449,16 +498,11 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             output.close();
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("====>>>>", e.getMessage());
             return Result.errorMsg(e.getMessage());
         }
         return null;
     }
 
-
-
-    @Resource
-    private SettlementInfoMapper settlementInfoMapper;
     /**
      *
      * @description: 财务结算 利润表导出 头条
@@ -469,89 +513,105 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
      */
     @Override
     public Result porfitReportBytedance(SettlementFileParamsVo paramsVo, HttpServletResponse response) {
-
         try {
             //查询 头条利润表 时间段内 所有 账户
-            List<Map<String,Object>> list = reportSettlementMapper.getProfitBytedanceAccountCost(null,paramsVo.getStartTime(),paramsVo.getEndTime());
+            List<Map<String,Object>> list = reportSettlementMapper.getProfitBytedanceAccount(paramsVo.getStartTime(),paramsVo.getEndTime());
             if (Check.isNull(list)){
                 return Result.errorMsg("暂无数据");
             }
             List<ProfitReportBytedanceVo> resultList = new ArrayList<>(list.size());
-            for (Map<String, Object> map : list) {
-              /*  //查看该账户 状态信息
-                QueryWrapper<CtopCwjsSettlementInfo> settlementAccountQw = new QueryWrapper<>();
-                settlementAccountQw.eq("account_id",map.get("accountId"));
-                //账户状态 0-开 1-关
-                settlementAccountQw.eq("status",0);
-                //(0,正常,1已删除)
-                settlementAccountQw.eq("del_flag",0);
-                List<CtopCwjsSettlementInfo> settlementAccountList =  settlementInfoMapper.selectList(settlementAccountQw);
-                if (Check.isNull(settlementAccountList)){
-                    continue;
+            for (Map<String, Object> mapList : list) {
+              //查看该账户 状态信息
+                /*QueryWrapper<SysLog> sysLogQw = new QueryWrapper<>();
+                sysLogQw.eq("log_type", 2);
+                //操作类型
+                sysLogQw.eq("operate_type", 10001);
+                sysLogQw.eq("log_content", "0");//0开 1关
+                sysLogQw.eq("request_param", mapList.get("accountId").toString());
+                sysLogQw.orderByDesc("create_time");
+                sysLogQw.last("limit 1");
+                SysLog sysLog = sysLogMapper.selectOne(sysLogQw);
+                if (!Check.isNull(sysLog)) {
+                    SimpleDateFormat m = new SimpleDateFormat("MM");
+                    String createMonth = m.format(sysLog.getCreateTime());
+                    int crate = Integer.valueOf(createMonth);
+                    Calendar cal = Calendar.getInstance();
+                    int month = cal.get(Calendar.MONTH) + 1;
                 }*/
+                //查看账户数据
+                Map<String,Object> map = reportSettlementMapper.getProfitBytedanceAccountCost(mapList.get("accountId").toString(),paramsVo.getStartTime(),paramsVo.getEndTime());
 
                 ProfitReportBytedanceVo voSource = new ProfitReportBytedanceVo();
-                //查询销售
-                Map<String,Object> slaeMap = reportSettlementMapper.getProfitBytedanceSale(map.get("accountId")+"");
-                voSource.setSaleName(Check.isNull(slaeMap) ? "" : slaeMap.getOrDefault("saleName","")+"");//销售
+                voSource.setAccountId(map.get("accountId")+"");
 
+                voSource.setAdvertiserName(!Check.isNull(map.get("advertiserName")) ? map.getOrDefault("advertiserName","")+"" : "" );//广告主名称
                 //产品名称
-                voSource.setProductName(map.getOrDefault("productName","")+"");
+                voSource.setProductName(!Check.isNull(map.get("productName")) ? map.getOrDefault("productName","")+"" : "" );
+
 
-                Map<String,Object> operateMap = reportSettlementMapper.getProfitBytedanceOperate(map.get("accountId")+"");
+                //查询销售
+                Map<String,Object> slaeMap = reportSettlementMapper.getProfitReportSale(map.get("accountId")+"");
+                voSource.setSaleName(Check.isNull(slaeMap) ? "" : slaeMap.getOrDefault("saleName","")+"");//销售
+                //查询运营
+                Map<String,Object> operateMap = reportSettlementMapper.getProfitReportOperateAndArea(map.get("accountId")+"");
                 if (!Check.isNull(operateMap)){
-                    voSource.setAdvertiserName(operateMap.getOrDefault("advertiserName","")+"");//广告主名称
                     voSource.setOperateName(operateMap.getOrDefault("operateName","")+"");//运营
                     voSource.setOperateArea(operateMap.getOrDefault("operateArea","")+"");//运营所属区域
                 }
-
-                //查询 头条利润表  返点类型和比列
-                List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName")+"","1",paramsVo.getStartTime(),paramsVo.getEndTime());
-                List listPolicyTIme = new ArrayList();
-                for (Map<String, Object> rate : rateMap) {
-                    listPolicyTIme.add(rate.get("policyStartDate"));
-                    listPolicyTIme.add(rate.get("policyEndDate"));
-                }
-                //政策时间 去重 排序
-                List<Object> times = SettlementUtil.sortlistTest(listPolicyTIme);
-                // 使用政策的时间段 拼接 开始 和 截至 时间
-                List<Map<String, String>> arrayList = new ArrayList<>();
-                for ( int i = 0; i < times.size(); i++) {
-                    HashMap<String, String> mapTime = new HashMap<>();
-                    mapTime.put("startDate", times.get(i).toString());
-                    mapTime.put("endDate",  times.get(i+1).toString());
-                    i += 1;
-                    arrayList.add(mapTime);
-                }
-
                 //政策所有时间点
                 List<String> policyDaysList = new ArrayList<>();
-                for (Map<String, String> stringMap : arrayList) {
-                    ProfitReportBytedanceVo vo = new ProfitReportBytedanceVo();
-                    //使用政策 返点类型和比例
-                    Map<String,Object>  policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName")+"",stringMap.get("startDate"),stringMap.get("endDate"));
-                    if (!Check.isNull(policyRateMap)){
-                        if(Integer.valueOf(policyRateMap.get("rebateType").toString())== 0){
-                            vo.setRebateType("返现");//返点类型
-                        }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 1){
-                            vo.setRebateType("返货");
-                        }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 2){
-                            vo.setRebateType("返现+返货");
+                if (!Check.isNull(map.get("productName"))){
+                    //查询 头条利润表  返点类型和比列
+                    List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName")+"","1",paramsVo.getStartTime(),paramsVo.getEndTime());
+                    List listPolicyTIme = new ArrayList();
+                    for (Map<String, Object> rate : rateMap) {
+                        listPolicyTIme.add(rate.get("policyStartDate"));
+                        listPolicyTIme.add(rate.get("policyEndDate"));
+                    }
+                    //政策时间 去重 排序
+                    List<Object> times = SettlementUtil.sortlistTest(listPolicyTIme);
+                    // 使用政策的时间段 拼接 开始 和 截至 时间
+                    List<Map<String, String>> arrayList = new ArrayList<>();
+                    for ( int i = 0; i < times.size(); i++) {
+                        HashMap<String, String> mapTime = new HashMap<>();
+                        mapTime.put("startDate", times.get(i).toString());
+                        mapTime.put("endDate",  times.size() < 2 ? times.get(i).toString() : times.get(i + 1).toString());
+                        i += 1;
+                        arrayList.add(mapTime);
+                    }
+
+
+                    for (Map<String, String> stringMap : arrayList) {
+                        ProfitReportBytedanceVo vo = new ProfitReportBytedanceVo();
+                        //使用政策 返点类型和比例
+                        Map<String,Object>  policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName")+"",stringMap.get("startDate"),stringMap.get("endDate"));
+                        if (!Check.isNull(policyRateMap)){
+                            if(Integer.valueOf(policyRateMap.get("rebateType").toString())== 0){
+                                vo.setRebateType("返现");//返点类型
+                            }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 1){
+                                vo.setRebateType("返货");
+                            }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 2){
+                                vo.setRebateType("返现+返货");
+                            }
+                            vo.setRebateRate(policyRateMap.getOrDefault("rebateRate","")+"%");//返点比列
+                        }else {
+                            vo.setRebateType("");
                         }
-                        vo.setRebateRate(policyRateMap.getOrDefault("rebateRate","")+"%");//返点比列
-                    }else {
-                        vo.setRebateType("");
+                        // 时间段内 账户流水 信息
+                        List<Map<String,Object>> listAccount = reportSettlementMapper.getProfitBytedanceCost(map.get("accountId")+"",stringMap.get("startDate"),stringMap.get("endDate"));
+                        listAccount.removeAll(Collections.singleton(null));
+                        vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost","")+"");//总消耗
+                        vo.setCost(String.format("%.3f",new Double(vo.getCost())));
+                        vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost","")+"");//现金消耗
+                        vo.setCashCost(String.format("%.3f",new Double(vo.getCashCost())));
+                        vo.setRewardCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("rewardCost","")+"");//赠款消耗
+                        vo.setRewardCost(String.format("%.3f",new Double(vo.getRewardCost())));
+                        BeanUtils.copyProperties(voSource,vo,SettlementUtil.getNullPropertyNames(voSource));
+                        vo.setTime(stringMap.get("startDate")+"----"+stringMap.get("endDate"));
+                        resultList.add(vo);
+                        policyDaysList.addAll(SettlementUtil.getAllDatesOfTwoTimes(stringMap.get("startDate"),stringMap.get("endDate")));
                     }
-                    // 时间段内 账户流水 信息
-                    List<Map<String,Object>> listAccount = reportSettlementMapper.getProfitBytedanceCost(map.get("accountId")+"",stringMap.get("startDate"),stringMap.get("endDate"));
-                    listAccount.removeAll(Collections.singleton(null));
-                    vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost","")+"");//总消耗
-                    vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost","")+"");//现金消耗
-                    vo.setRewardCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("rewardCost","")+"");//赠款消耗
-                    BeanUtils.copyProperties(voSource,vo,SettlementUtil.getNullPropertyNames(voSource));
-                    vo.setTime(stringMap.get("startDate")+"----"+stringMap.get("endDate"));
-                    resultList.add(vo);
-                    policyDaysList.addAll(SettlementUtil.getAllDatesOfTwoTimes(stringMap.get("startDate"),stringMap.get("endDate")));
+
                 }
 
                 //不使用政策 的时间段
@@ -573,10 +633,13 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                     List<Map<String,Object>> listAccount = reportSettlementMapper.getProfitBytedanceCost(map.get("accountId")+"",stringMap.get("startDate"),stringMap.get("endDate"));
                     listAccount.removeAll(Collections.singleton(null));
                     vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost","")+"");//总消耗
+                    vo.setCost(String.format("%.3f",new Double(vo.getCost())));
                     vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost","")+"");//现金消耗
+                    vo.setCashCost(String.format("%.3f",new Double(vo.getCashCost())));
                     vo.setRewardCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("rewardCost","")+"");//赠款消耗
+                    vo.setRewardCost(String.format("%.3f",new Double(vo.getRewardCost())));
                     BeanUtils.copyProperties(voSource,vo,SettlementUtil.getNullPropertyNames(voSource));
-                    vo.setTime(stringMap.get("startDate")+"----"+stringMap.get("endDate"));
+                    vo.setTime((!Check.isNull(vo.getRebateType()) ? stringMap.get("startDate")+"----"+stringMap.get("endDate") : ""));
                     resultList.add(vo);
                 }
             }
@@ -592,14 +655,11 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
 
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("====>>>>", e.getMessage());
             return Result.errorMsg(e.getMessage());
         }
         return null;
     }
 
-
-
     /**
      *
      * @description: 财务结算 利润表导出 快手
@@ -613,96 +673,109 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
 
         try {
             //查询 快手利润表  时间段内的 所有账户
-            List<Map<String,Object>> list = reportSettlementMapper.getProfitKuaiShouAccountCost(null,paramsVo.getStartTime(),paramsVo.getEndTime());
+            List<Map<String,Object>> list = reportSettlementMapper.getProfitKuaiShouAgentAccount(paramsVo.getStartTime(),paramsVo.getEndTime());
             if (Check.isNull(list)){
                 return Result.errorMsg("暂无数据");
             }
             List<ProfitReportKuaiShouVo> resultList = new ArrayList<>(list.size());
-            for (Map<String, Object> map : list) {
-              /*  //查看该账户 状态信息
-                QueryWrapper<CtopCwjsSettlementInfo> settlementAccountQw = new QueryWrapper<>();
-                settlementAccountQw.eq("account_id",map.get("accountId"));
-                //账户状态 0-开 1-关
-                settlementAccountQw.eq("status",0);
-                //(0,正常,1已删除)
-                settlementAccountQw.eq("del_flag",0);
-                List<CtopCwjsSettlementInfo> settlementAccountList =  settlementInfoMapper.selectList(settlementAccountQw);
-                if (Check.isNull(settlementAccountList)){
-                    continue;
-                }
-*/
-                ProfitReportKuaiShouVo voSource = new ProfitReportKuaiShouVo();
-
-                voSource.setAccountId(map.getOrDefault("accountId","")+"");//账户id
-                voSource.setProductName(map.getOrDefault("productName","")+"");//产品名称
-                voSource.setKsId(map.getOrDefault("ksId","")+"");//快手id
-                voSource.setAdvertiserName(map.getOrDefault("advertiserName","")+"");//广告主名称
-
-                //查询销售
-                Map<String,Object> slaeMap = reportSettlementMapper.getProfitBytedanceSale(map.get("accountId")+"");
-                voSource.setSaleName(Check.isNull(slaeMap) ? "" : slaeMap.getOrDefault("saleName","")+"");//销售
-
-                Map<String,Object> operateMap = reportSettlementMapper.getProfitKuaiShouOperate(map.get("accountId")+"");
-                if (!Check.isNull(operateMap)){
-                    voSource.setOperateName(operateMap.getOrDefault("operateName","")+"");//运营
-                    voSource.setOperateArea(operateMap.getOrDefault("operateArea","")+"");//运营所属区域
-                }
+            for (Map<String, Object> mapList : list) {
+                //查看该账户 状态信息
+               /* QueryWrapper<SysLog> sysLogQw = new QueryWrapper<>();
+                sysLogQw.eq("log_type", 2);
+                //操作类型
+                sysLogQw.eq("operate_type", 10001);
+                sysLogQw.eq("log_content", "0");//0开 1关
+                sysLogQw.eq("request_param", mapList.get("account_id").toString());
+                sysLogQw.orderByDesc("create_time");
+                sysLogQw.last("limit 1");
+                SysLog sysLog = sysLogMapper.selectOne(sysLogQw);
+                if (!Check.isNull(sysLog)) {
+                    SimpleDateFormat m = new SimpleDateFormat("MM");
+                    String createMonth = m.format(sysLog.getCreateTime());
+                    int crate = Integer.parseInt(createMonth);
+                    Calendar cal = Calendar.getInstance();
+                    int month = cal.get(Calendar.MONTH) + 1;
 
-                //查询 快手利润表  返点类型和比列
-                List<Map<String,Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName")+"","2",paramsVo.getStartTime(),paramsVo.getEndTime());
-                List listPolicyTIme = new ArrayList();
-                for (Map<String, Object> rate : rateMap) {
-                    listPolicyTIme.add(rate.get("policyStartDate"));
-                    listPolicyTIme.add(rate.get("policyEndDate"));
-                }
+                }*/
 
-                //政策时间 去重 排序
-                List<Object> times = SettlementUtil.sortlistTest(listPolicyTIme);
-                // 使用政策的时间段 拼接 开始 和 截至 时间
-                List<Map<String, String>> arrayList = new ArrayList<>();
-                for ( int i = 0; i < times.size(); i++) {
-                    HashMap<String, String> mapTime = new HashMap<>();
-                    mapTime.put("startDate", times.get(i).toString());
-                    mapTime.put("endDate",  times.get(i+1).toString());
-                    i += 1;
-                    arrayList.add(mapTime);
+                //查询账户数据信息
+               Map<String,Object> map = reportSettlementMapper.getProfitKuaiShouAccountCost(mapList.get("account_id").toString(),paramsVo.getStartTime(),paramsVo.getEndTime());
+                ProfitReportKuaiShouVo voSource = new ProfitReportKuaiShouVo();
+                voSource.setAccountId(map.getOrDefault("accountId", "") + "");//账户id
+                voSource.setProductName( !Check.isNull(map.get("productName")) ? map.getOrDefault("productName", "") + "" : "");//产品名称
+                voSource.setKsId(map.getOrDefault("ksId", "") + "");//快手id
+                voSource.setAdvertiserName(!Check.isNull(map.get("advertiserName")) ? map.getOrDefault("advertiserName", "") + "" : "");//广告主名称
+
+                //销售
+                Map<String, Object> slaeMap = reportSettlementMapper.getProfitReportSale(map.get("accountId") + "");
+                voSource.setSaleName(Check.isNull(slaeMap) ? "" : slaeMap.getOrDefault("saleName", "") + "");//销售
+                //运营
+                Map<String, Object> operateMap = reportSettlementMapper.getProfitReportOperateAndArea(map.get("accountId") + "");
+                if (!Check.isNull(operateMap)) {
+                    voSource.setOperateName(operateMap.getOrDefault("operateName", "") + "");//运营
+                    voSource.setOperateArea(operateMap.getOrDefault("operateArea", "") + "");//运营所属区域
                 }
 
                 //政策所有时间点
                 List<String> policyDaysList = new ArrayList<>();
-                for (Map<String, String> stringMap : arrayList) {
-                    ProfitReportKuaiShouVo vo = new ProfitReportKuaiShouVo();
-                    //使用政策 返点类型和比例
-                    Map<String,Object>  policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName")+"",stringMap.get("startDate"),stringMap.get("endDate"));
-                    if (!Check.isNull(policyRateMap)){
-                        if(Integer.valueOf(policyRateMap.get("rebateType").toString())== 0){
-                            vo.setRebateType("返现");//返点类型
-                        }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 1){
-                            vo.setRebateType("返货");
-                        }else if (Integer.valueOf(policyRateMap.get("rebateType").toString())== 2){
-                            vo.setRebateType("返现+返货");
+                if (!Check.isNull(map.get("productName"))) {
+                    //查询 快手利润表  返点类型和比列
+                    List<Map<String, Object>> rateMap = reportSettlementMapper.getProfitBytedance(map.get("productName") + "", "2", paramsVo.getStartTime(), paramsVo.getEndTime());
+                    List listPolicyTIme = new ArrayList();
+                    for (Map<String, Object> rate : rateMap) {
+                        listPolicyTIme.add(rate.get("policyStartDate"));
+                        listPolicyTIme.add(rate.get("policyEndDate"));
+                    }
+
+                    //政策时间 去重 排序
+                    List<Object> times = SettlementUtil.sortlistTest(listPolicyTIme);
+                    // 使用政策的时间段 拼接 开始 和 截至 时间
+                     List<Map<String, String>> arrayList = new ArrayList<>();
+                    if (!Check.isNull(times)){
+                        for (int i = 0; i < times.size(); i++) {
+                            HashMap<String, String> mapTime = new HashMap<>();
+                            mapTime.put("startDate", times.get(i).toString());
+                            mapTime.put("endDate", times.size() < 2 ? times.get(i).toString() : times.get(i + 1).toString());
+                            i += 1;
+                            arrayList.add(mapTime);
                         }
-                        vo.setRebateRate(policyRateMap.getOrDefault("rebateRate","")+"%");//返点比列
-                    }else {
-                        vo.setRebateType("");
                     }
 
-                    // 时间段内 账户流水 信息
-                    List<Map<String,Object>> listAccount = reportSettlementMapper.getProfitKuaiShouCost(map.get("accountId")+"",stringMap.get("startDate"),stringMap.get("endDate"));
-                    listAccount.removeAll(Collections.singleton(null));
-                    vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost","")+"");//总消耗
-                    vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost","")+"");//现金消耗
-                    BeanUtils.copyProperties(voSource,vo,SettlementUtil.getNullPropertyNames(voSource));
-                    vo.setTime(stringMap.get("startDate")+"----"+stringMap.get("endDate"));
-                    resultList.add(vo);
-                    policyDaysList.addAll(SettlementUtil.getAllDatesOfTwoTimes(stringMap.get("startDate"),stringMap.get("endDate")));
+                    for (Map<String, String> stringMap : arrayList) {
+                        ProfitReportKuaiShouVo vo = new ProfitReportKuaiShouVo();
+                        //使用政策 返点类型和比例
+                        Map<String, Object> policyRateMap = reportSettlementMapper.getProfitRebate(map.get("productName") + "", stringMap.get("startDate"), stringMap.get("endDate"));
+                        if (!Check.isNull(policyRateMap)) {
+                            if (Integer.valueOf(policyRateMap.get("rebateType").toString()) == 0) {
+                                vo.setRebateType("返现");//返点类型
+                            } else if (Integer.valueOf(policyRateMap.get("rebateType").toString()) == 1) {
+                                vo.setRebateType("返货");
+                            } else if (Integer.valueOf(policyRateMap.get("rebateType").toString()) == 2) {
+                                vo.setRebateType("返现+返货");
+                            }
+                            vo.setRebateRate(policyRateMap.getOrDefault("rebateRate", "") + "%");//返点比列
+                        } else {
+                            vo.setRebateType("");
+                        }
+
+                        // 时间段内 账户流水 信息
+                        List<Map<String, Object>> listAccount = reportSettlementMapper.getProfitKuaiShouCost(map.get("accountId") + "", stringMap.get("startDate"), stringMap.get("endDate"));
+                        listAccount.removeAll(Collections.singleton(null));
+                        vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost", "") + "");//总消耗
+                        vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost", "") + "");//现金消耗
+                        BeanUtils.copyProperties(voSource, vo, SettlementUtil.getNullPropertyNames(voSource));
+                        vo.setTime(stringMap.get("startDate") + "----" + stringMap.get("endDate"));
+                        resultList.add(vo);
+                        policyDaysList.addAll(SettlementUtil.getAllDatesOfTwoTimes(stringMap.get("startDate"), stringMap.get("endDate")));
+                    }
                 }
 
+
                 //不使用政策 的时间段
                 // 获取两个日期之间 所有的 时间 年-月-日
-                List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(paramsVo.getStartTime(),paramsVo.getEndTime());
+                List<String> betweenDaysList = SettlementUtil.getAllDatesOfTwoTimes(paramsVo.getStartTime(), paramsVo.getEndTime());
                 // 时间差集(所有时间段 - 使用政策的时间段)
-                List<String>  reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
+                List<String> reduceList = betweenDaysList.stream().filter(item -> !policyDaysList.contains(item)).collect(Collectors.toList());
                 //差集拼接  开始 和 结束时间
                 List<Map<String, String>> stringList = SettlementUtil.getTime(reduceList);
                 for (Map<String, String> stringMap : stringList) {
@@ -714,12 +787,12 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
                     vo.setRebateType("");//返点类型
                     vo.setRebateRate("");//返点比列
                     //账户流水 信息
-                    List<Map<String,Object>> listAccount = reportSettlementMapper.getProfitKuaiShouCost(map.get("accountId")+"",stringMap.get("startDate"),stringMap.get("endDate"));
+                    List<Map<String, Object>> listAccount = reportSettlementMapper.getProfitKuaiShouCost(map.get("accountId") + "", stringMap.get("startDate"), stringMap.get("endDate"));
                     listAccount.removeAll(Collections.singleton(null));
-                    vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost","")+"");//总消耗
-                    vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost","")+"");//现金消耗
-                    BeanUtils.copyProperties(voSource,vo,SettlementUtil.getNullPropertyNames(voSource));
-                    vo.setTime(stringMap.get("startDate")+"----"+stringMap.get("endDate"));
+                    vo.setCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cost", "") + "");//总消耗
+                    vo.setCashCost(Check.isNull(listAccount) ? "0" : listAccount.get(0).getOrDefault("cashCost", "") + "");//现金消耗
+                    BeanUtils.copyProperties(voSource, vo, SettlementUtil.getNullPropertyNames(voSource));
+                    vo.setTime(!Check.isNull(vo.getRebateType()) ? stringMap.get("startDate") + "----" + stringMap.get("endDate") : "");
                     resultList.add(vo);
                 }
 
@@ -738,7 +811,6 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
 
         } catch (Exception e) {
             e.printStackTrace();
-            log.error("====>>>>", e.getMessage());
             return Result.errorMsg(e.getMessage());
         }
         return null;
@@ -847,5 +919,4 @@ public class ReportSettlementServiceImpl implements IReportSettlementService {
             }
         }
     }
-
 }

+ 13 - 2
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/SettlementFileInfoServiceImpl.java

@@ -6,14 +6,18 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 import lombok.extern.slf4j.Slf4j;
 import org.jeecg.common.api.vo.Result;
+import org.jeecg.common.system.entity.SysUser;
+import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.ctop.finance.policy.utils.Check;
 import org.jeecg.ctop.finance.settlement.entity.pojo.CtopCwjsSettlementFileInfo;
 import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
 import org.jeecg.ctop.finance.settlement.mapper.SettlementFileInfoMapper;
 import org.jeecg.ctop.finance.settlement.mapper.SettlementInfoMapper;
+import org.jeecg.ctop.finance.settlement.service.IReportSettlementService;
 import org.jeecg.ctop.finance.settlement.service.ISettlementFileInfoService;
 import org.jeecg.ctop.finance.utils.SettlementUtil;
 import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -179,6 +183,8 @@ public class SettlementFileInfoServiceImpl extends ServiceImpl<SettlementFileInf
         return Result.successMsg("账户截图上传成功",null);
     }
 
+    @Autowired
+    private IReportSettlementService reportSettlementService;
 
     /**
      * @description: 查询账户数量以及图片数量
@@ -187,10 +193,15 @@ public class SettlementFileInfoServiceImpl extends ServiceImpl<SettlementFileInf
      * @author: zianY
      */
     @Override
-    public Result getAccountNumAndImgNum(SettlementFileParamsVo paramsVo) {
+    public Result getAccountNumAndImgNum(SettlementFileParamsVo paramsVo, SysUser user) {
         Map<String,String> map =  settlementFileInfoMapper.getAccountNumAndImgNum(paramsVo);
+        List<String>accountIds = reportSettlementService.getAccountId(paramsVo,user);
+        if(null == accountIds||accountIds.isEmpty()){
+            map.put("accountNum","0");
+        }else{
+            map.put("accountNum",accountIds.size()+"");
+        }
         return Result.successMsg("查询账户数量以及图片数量成功",map);
-
     }
 
 

+ 2 - 2
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/serviceImpl/SettlementInfoServiceImpl.java

@@ -96,8 +96,8 @@ public class SettlementInfoServiceImpl extends ServiceImpl<SettlementInfoMapper,
             LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
             SysLog sysLog = new SysLog();
             sysLog.setLogType(2);
-            sysLog.setLogContent("修改账户状态为==="+status);
-            sysLog.setRequestParam(String.valueOf(status));
+            sysLog.setLogContent(String.valueOf(status));
+            sysLog.setRequestParam(userAllocation.getAccountId().toString());
             sysLog.setOperateType(10001);
             sysLog.setUserid(user.getId());
             sysLog.setCreateBy(user.getRealname());

+ 3 - 0
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/UserAllocationMapper.java

@@ -8,6 +8,7 @@ import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * @Description: 用户分配
@@ -66,4 +67,6 @@ public interface UserAllocationMapper extends BaseMapper<UserAllocation> {
 
     Map<String,Object>getCwjsSettlementByAccountId(String accountId);
     void updCwjsSettlementStatus(@Param("id") String id, @Param("status") Integer status);
+
+    List<UserAllocation> getAccountInfoBySalesId(@Param("sales")Set<String> sales,@Param("mediaId")String mediaId,@Param("advertiserId")String advertiserId,@Param("productId")String productId);
 }

+ 22 - 6
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/mapper/xml/UserAllocationMapper.xml

@@ -25,7 +25,7 @@
         <if test="userId != null and userId != ''">
             and cua.user_id = #{userId}
         </if>
-
+        and account_status = 0
     </select>
 
     <select id="queryAdvertiserId" resultType="String">
@@ -239,22 +239,38 @@
         AND auto_delivery = 1
     </select>
 
-
-
-
     <!-- 根据账户id 查看财务账户 -->
     <select id="getCwjsSettlementByAccountId" resultType="java.util.LinkedHashMap">
         select * from ctop_cwjs_settlement_info
         WHERE del_flag = 0
           and account_id = #{accountId}
     </select>
-<!-- 修改状态 -->
+    <select id="getAccountInfoBySalesId" resultType="cn.com.ctop.common.module.entity.UserAllocation">
+        select cua.*
+            from ctop_user_allocation cua
+            left join ctop_project cp on cp.id = cua.project_id
+        where 1=1
+          and cua.media_id = #{mediaId}
+          <if test="advertiserId!=null and advertiserId!= '' ">
+              and cp.advertiser_id = #{advertiserId}
+          </if>
+        <if test="productId!=null and productId!= '' ">
+            and cp.product_id = #{productId}
+        </if>
+        <if test="sales !=null and sales != ''">
+            AND cp.sale_id in
+            <foreach collection="sales" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+    <!-- 修改状态 -->
     <update id="updCwjsSettlementStatus">
         UPDATE ctop_cwjs_settlement_info
         SET STATUS = #{status}
         WHERE
             id = #{id}
-
     </update>
 
 

+ 2 - 2
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserAllocationServiceImpl.java

@@ -290,8 +290,8 @@ public class UserAllocationServiceImpl extends ServiceImpl<UserAllocationMapper,
             LoginUser user = (LoginUser) SecurityUtils.getSubject().getPrincipal();
             SysLog sysLog = new SysLog();
             sysLog.setLogType(2);
-            sysLog.setLogContent("修改账户状态为==="+accountStatus);
-            sysLog.setRequestParam(String.valueOf(accountStatus));
+            sysLog.setLogContent(String.valueOf(accountStatus));
+            sysLog.setRequestParam(userAllocationEntity.getAccountId().toString());
             sysLog.setOperateType(10001);
             sysLog.setUserid(user.getId());
             sysLog.setCreateBy(user.getRealname());

+ 0 - 1
jeecg-boot-module-system/src/main/java/cn/com/ctop/common/module/service/impl/UserCompanyServiceImpl.java

@@ -115,7 +115,6 @@ public class UserCompanyServiceImpl extends ServiceImpl<UserCompanyMapper, UserC
         Map<String, Object> deleteMap = new HashMap<>();
         deleteMap.put("user_id", userId);
         userCompanyMapper.deleteByMap(deleteMap);
-
     }
 
     @Override

+ 38 - 2
jeecg-boot-module-system/src/main/java/cn/com/ctop/manage/modules/material/service/impl/MaterialUploadServiceImpl.java

@@ -83,14 +83,50 @@ public class MaterialUploadServiceImpl implements IMaterialUploadService {
             if ("2".equals(mediaId) || "4".equals(mediaId)) {
                 this.kuaiShouUpload(mediaId, materialArray, accountArray, userId, shieldBackwardSwitch);
             } else if ("1".equals(mediaId) || "3".equals(mediaId)) {
-                this.touTiaoUpload(mediaId, materialArray, accountArray, userId);
+                this.touTiaoUpload(materialArray, accountArray, userId);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
 
-    private void touTiaoUpload(String mediaId, JSONArray materialArray, JSONArray accountArray, String userId) {
+    private void touTiaoUpload(JSONArray materialArray, JSONArray accountArray, String userId) {
+        for (int j = 0; j < materialArray.size(); j++) {
+            String materialId = materialArray.getString(j);
+            MaterialInfo materialInfo = materialInfoMapper.selectById(materialId);
+            if (null == materialInfo||materialInfo.getStatus()!=1) {
+                log.info("头条视频素材推送异常=>id:{};message:{}",materialId,"素材不存在或者未审核通过");
+                continue;
+            }
+            try {
+                String url = materialInfo.getUrl();
+                String localUrl = LoadFileUtil.downLoadFromUrl(url, downloadUrl);
+                for (int i = 0; i < accountArray.size(); i++) {
+                    Long accountId = accountArray.getLong(i);
+                    if (Check.isNull(accountId)) {
+                        continue;
+                    }
+                    touTiaoExecutorService.submit(new Runnable() {
+                        @Override
+                        public void run() {
+                            try {
+                                log.info("头条文件多线程上传:{},accountId:{}", Thread.currentThread().getName(), accountId);
+                                if ("VIDEO".equals(materialInfo.getType())) {
+                                    fileInfoService.uploadVideoToBytedance(String.valueOf(accountId), localUrl, userId, materialInfo.getMaterialName());
+                                }
+                            } catch (Exception e) {
+                                e.printStackTrace();
+                            }
+                        }
+                    });
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+    }
+
+    private void touTiaoUploadV2(String mediaId, JSONArray materialArray, JSONArray accountArray, String userId) {
         for (int j = 0; j < materialArray.size(); j++) {
             String materialId = materialArray.getString(j);
             MaterialInfo materialInfo = materialInfoMapper.selectById(materialId);

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialUploadController.java

@@ -48,7 +48,6 @@ public class MaterialUploadController {
                 throw new Exception("请选择账号或素材");
             }
             LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
-
             new Thread(() -> materialUploadService.uploadAccount(mediaId, materialArray, accountArray, sysUser.getId(), shieldBackwardSwitch)).start();
             returnMap.put("success", true);
             returnMap.put("message", "开始上传文件");

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/ProjectMemberController.java

@@ -515,7 +515,6 @@ public class ProjectMemberController {
     public Result<List<Map<String, Object>>> getProjectAccountBy(String mediaType,String userId) {
         Result<List<Map<String, Object>>> resultBody = new Result<>();
         try {
-
             List<Map<String, Object>> result = projectMemberService.getProjectAccountByUserId(userId, mediaType);
             resultBody.setSuccess(true);
             resultBody.setResult(result);

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/UserAllocationController.java

@@ -164,7 +164,6 @@ public class UserAllocationController {
         mediaList.add(mediaId);
         //    List<ProjectMember> projectList = projectMemberService.getOwnProjects(mediaList);
         List<ProjectMember> productList = projectMemberService.getOwnProducts(mediaList, productId);
-        log.info("產品列表:{}", productList);
 
         //  projectMemberService.getOwnProjects(mediaList);
         List<ProjectMember> projectMemberList = new ArrayList<>();