Browse Source

结算单

yangzian 3 years ago
parent
commit
cf566bc04d

+ 2 - 2
jeecg-boot-base/jeecg-boot-base-core/src/main/java/org/jeecg/common/aspect/DictAspect.java

@@ -136,7 +136,7 @@ public class DictAspect {
                /* if (((Result) result).getResult() instanceof List) {
                     return;
                 }*/
-                if (ObjectUtil.isEmpty(((Result) result).getResult())) {
+                if (ObjectUtil.isEmpty(((PageInfo) ((Result) result).getResult()))) {
                     return;
                 }
                 List<JSONObject> items = new ArrayList<>();
@@ -171,7 +171,7 @@ public class DictAspect {
                     }
                     items.add(item);
                 }
-                ((Result) result).setResult(items);
+                ((Result<PageInfo>) result).getResult().setList(items);
             }
         }
     }

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

@@ -49,6 +49,7 @@ public class SettlementController {
     }
 
 
+    @ApiOperation(value="财务结算-上传账户", notes="财务结算-上传账户")
     @PostMapping("/settlementAccountImport")
     public Result settlementAccountImport(ctopCwjsSettlementInfo settlementInfo,@RequestParam("file") MultipartFile files) {
 

+ 52 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/controller/SettlementFileController.java

@@ -0,0 +1,52 @@
+package org.jeecg.ctop.finance.settlement.controller;
+
+import com.github.pagehelper.PageInfo;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.api.vo.Result;
+import org.jeecg.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementFileInfo;
+import org.jeecg.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementInfo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+import org.jeecg.ctop.finance.settlement.service.ISettlementFileInfoService;
+import org.jeecg.ctop.finance.settlement.service.ISettlementInfoService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.Map;
+
+
+/**
+ * Administrator
+ * 2021/7/28
+ **/
+
+@Slf4j
+@RestController
+@RequestMapping("/finance/settLementFileController")
+public class SettlementFileController {
+
+    @Autowired
+    private ISettlementFileInfoService settlementFileInfoService;
+
+    @ApiOperation(value="结算单-结算单列表查询", notes="结算单-结算单列表查询")
+    @GetMapping(value = "/getSettlementSheetList")
+    public Result<PageInfo<Map<String,String>>> getSettlementSheetList(SettlementFileParamsVo paramsVo,
+                                                                       @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
+                                                                       @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
+        //TODO 根据用户角色查询列表
+       return settlementFileInfoService.getSettlementSheetList(paramsVo,pageNo,pageSize);
+    }
+
+
+
+    @ApiOperation(value="结算单-删除", notes="结算单-删除")
+    @GetMapping(value = "/deleteSettlementFile")
+    public Result deleteSettlementFile(SettlementFileParamsVo paramsVo) {
+        return settlementFileInfoService.deleteSettlementFile(paramsVo);
+    }
+
+
+
+
+}

+ 108 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/pojo/ctopCwjsSettlementFileInfo.java

@@ -0,0 +1,108 @@
+package org.jeecg.ctop.finance.settlement.entity.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 财务结算 结算单信息
+ * zian Y
+ * 2021/7/28
+ **/
+
+@Data
+public class ctopCwjsSettlementFileInfo implements Serializable {
+
+    @TableId(type = IdType.AUTO)
+    /**
+     * 主键id
+     */
+    //@TableField(exist = false)
+    private Long id;
+
+    /**
+     * 广告主公司id
+     */
+    //@Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
+    private String advertiserId;
+    @TableField(exist = false)
+    private String advertiserName;
+
+    /**
+     * 产品id
+     */
+    private String productId;
+    @TableField(exist = false)
+    private String productName;
+
+    @TableField(exist = false)
+    private String projectName;
+
+    @TableField(exist = false)
+    private String accountName;
+
+    @TableField(exist = false)
+    private String saleUserId;
+
+    /**
+     * 年-月
+     */
+    private String uploadYears;
+
+    /**
+     * 媒体类型 1-头条 2-快手 3-头条内广 4-快手内广
+     */
+    private Integer mediaId;
+
+    /**
+     * 文件md5
+     */
+    private String signature;
+
+    /**
+     * 文件路径
+     */
+    private String fileUrl;
+
+    /**
+     * 文件名称
+     */
+    private String fileName;
+
+    /**
+     * 账户id
+     */
+    private String accountId;
+
+
+    /**
+     * 删除状态(0,正常,1已删除)
+     */
+    private Integer delFlag;
+
+    /**
+     * 创建人id
+     */
+    private String createUserId;
+    @TableField(exist = false)
+    private String createUserName;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+    @TableField(exist = false)
+    private String startTime;
+    @TableField(exist = false)
+    private String endTime;
+
+    /**
+     * 更新时间
+     */
+    private Date updateTime;
+
+}

+ 2 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/entity/pojo/ctopCwjsSettlementInfo.java

@@ -93,7 +93,9 @@ public class ctopCwjsSettlementInfo implements Serializable {
      * 创建时间
      */
     private Date createTime;
+    @TableField(exist = false)
     private String startTime;
+    @TableField(exist = false)
     private String endTime;
 
     /**

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

@@ -0,0 +1,78 @@
+package org.jeecg.ctop.finance.settlement.entity.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 财务结算 结算单信息
+ * zian Y
+ * 2021/7/28
+ **/
+
+@Data
+public class SettlementFileParamsVo implements Serializable {
+
+
+
+    /**
+     * 广告主公司id
+     */
+    //@Dict(dicCode = "id", dictTable = "ctop_advertiser", dicText = "name")
+    private String advertiserId;
+    private String advertiserName;
+
+    /**
+     * 产品id
+     */
+    private String productId;
+    private String productName;
+
+    /**
+     * 项目id
+     */
+    private String projectId;
+    private String projectName;
+
+
+    /**
+     * 账户id
+     */
+    private String accountId;
+    private String accountName;
+
+
+    /**
+     * 年-月
+     */
+    private String uploadYears;
+
+    /**
+     * 媒体类型 1-头条 2-快手 3-头条内广 4-快手内广
+     */
+    private Integer mediaId;
+
+
+    /**
+     * 创建人id
+     */
+    private String createUserId;
+    private String createUserName;
+
+
+    /**
+     * 其他人员
+     */
+    private String otherUserIds;
+
+
+
+    private String startTime;
+    private String endTime;
+
+
+}

+ 37 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/SettlementFileInfoMapper.java

@@ -0,0 +1,37 @@
+package org.jeecg.ctop.finance.settlement.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import io.lettuce.core.dynamic.annotation.Param;
+import org.jeecg.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementFileInfo;
+import org.jeecg.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementInfo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ *
+ * @description:
+ *
+ * @return:
+ * @author: zianY
+ * @time: 2021/7/28 17:07
+ */
+public interface SettlementFileInfoMapper extends BaseMapper<ctopCwjsSettlementFileInfo> {
+
+    /**
+     *查询 财务结算-结算单列表
+     * @param paramsVo
+     * @return
+     */
+    List<Map<String,String>> getSettlementSheetList(SettlementFileParamsVo paramsVo);
+
+
+    /**
+     * 删除
+     * @param paramsVo
+     * @return
+     */
+    Integer deleteSettlementFile(SettlementFileParamsVo paramsVo);
+}

+ 94 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/SettlementFileInfoMapper.xml

@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.jeecg.ctop.finance.settlement.mapper.SettlementFileInfoMapper">
+
+    <!-- 查询 财务结算-结算单列表-->
+    <select id="getSettlementSheetList" resultType="java.util.LinkedHashMap">
+        SELECT
+           t.*,
+           MAX(t.create_time) as imageCreateTIme
+        from (
+              SELECT
+              f.id,
+              cwjs.id as cwId,
+              f.create_time,
+              f.upload_years as uploadYears,
+              cwjs.advertiser_id as advertiserId,
+              ( SELECT ad.NAME FROM ctop_advertiser ad WHERE ad.id = cwjs.advertiser_id LIMIT 1 ) advertiserName,
+              cwjs.product_id as productId,
+              ( SELECT cp.product_name FROM ctop_product cp WHERE cp.id = cwjs.product_id LIMIT 1 ) productName,
+            cwjs.project_id as projectId,
+            ( SELECT project.project_name FROM ctop_project project WHERE project.id = cwjs.project_id LIMIT 1 ) projectName,
+              cwjs.account_id as accountId,
+              cwjs.account_name as accountName,
+              cwjs.media_id as mediaId,
+              cwjs.operate_type as operateType,
+              cwjs.status as status,
+              cwjs.del_flag as delFlag,
+              cwjs.create_user_id as saleUserId,
+              ( SELECT su.realname FROM sys_user su WHERE su.id = cwjs.create_user_id LIMIT 1 ) saleUserName,
+              f.create_user_id as operateUserId,
+              ( SELECT su.realname FROM sys_user su WHERE su.id = f.create_user_id LIMIT 1 ) operateUserName
+            FROM
+            ctop_cwjs_settlement_info cwjs,
+            ctop_cwjs_settlement_file_info f
+        WHERE
+            cwjs.del_flag = 0
+          and f.del_flag = 0
+          and cwjs.advertiser_id = f.advertiser_id
+          and cwjs.product_id = f.product_id
+          and cwjs.media_id = f.media_id
+        ORDER BY f.create_time DESC LIMIT 999999) t
+
+        <where>
+            <if test="advertiserName !=null and advertiserName != ''">
+                AND advertiserName like concat ('%',#{advertiserName},'%')
+            </if>
+            <if test="productName !=null and productName != ''">
+                AND productName like concat ('%',#{productName},'%')
+            </if>
+            <if test="projectName !=null and projectName != ''">
+                AND projectName like concat ('%',#{projectName},'%')
+            </if>
+            <if test="accountName !=null and accountName != ''">
+                AND accountName like concat ('%',#{accountName},'%')
+            </if>
+            <if test="createUserId !=null and createUserId != ''">
+                AND saleUserId = #{createUserId}
+            </if>
+
+
+
+            <if test="mediaId !=null and mediaId != ''">
+                AND media_id = #{mediaId}
+            </if>
+            <if test="startTime !=null and startTime != ''">
+                AND imageCreateTIme &gt;= #{startTime}
+            </if>
+            <if test="endTime !=null and endTime != ''">
+                AND imageCreateTIme &lt;= #{endTime}
+            </if>
+        </where>
+
+        GROUP BY t.advertiserId,t.productId,t.uploadYears,t.operateUserId
+        ORDER BY imageCreateTIme DESC
+
+    </select>
+
+
+
+    <!-- 删除财务结算图片 -->
+    <update id="deleteSettlementFile">
+        UPDATE ctop_cwjs_settlement_file_info
+        SET del_flag = 1
+        WHERE advertiser_id = #{advertiserId}
+          and product_id = #{productId}
+          and media_id = #{mediaId}
+          and upload_years = #{uploadYears}
+          and create_user_id = #{createUserId}
+    </update>
+
+
+
+
+</mapper>

+ 1 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/mapper/xml/SettlementInfoMapper.xml

@@ -74,4 +74,5 @@
     </update>
 
 
+
 </mapper>

+ 21 - 0
jeecg-boot-finance/src/main/java/org/jeecg/ctop/finance/settlement/service/ISettlementFileInfoService.java

@@ -0,0 +1,21 @@
+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.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementFileInfo;
+import org.jeecg.ctop.finance.settlement.entity.pojo.ctopCwjsSettlementInfo;
+import org.jeecg.ctop.finance.settlement.entity.vo.SettlementFileParamsVo;
+
+import java.util.Map;
+
+public interface ISettlementFileInfoService extends IService<ctopCwjsSettlementFileInfo> {
+
+    Result<PageInfo<Map<String,String>>> getSettlementSheetList(SettlementFileParamsVo paramsVo, Integer pageNo, Integer pageSize);
+
+
+    Result deleteSettlementFile(SettlementFileParamsVo paramsVo);
+
+
+
+}

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

@@ -0,0 +1,126 @@
+package org.jeecg.ctop.finance.settlement.service.serviceImpl;
+
+import cn.afterturn.easypoi.excel.ExcelImportUtil;
+import cn.afterturn.easypoi.excel.entity.ImportParams;
+import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.antlr.v4.runtime.misc.Array2DHashSet;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.shiro.SecurityUtils;
+import org.jeecg.common.api.vo.Result;
+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.pojo.ctopCwjsSettlementInfo;
+import org.jeecg.ctop.finance.settlement.entity.vo.AccountImportVo;
+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.ISettlementFileInfoService;
+import org.jeecg.ctop.finance.settlement.service.ISettlementInfoService;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@Service
+public class SettlementFileInfoServiceImpl extends ServiceImpl<SettlementFileInfoMapper, ctopCwjsSettlementFileInfo> implements ISettlementFileInfoService {
+
+    @Resource
+    private SettlementFileInfoMapper settlementFileInfoMapper;
+
+    @Resource
+    private SettlementInfoMapper settlementInfoMapper;
+
+
+    /**
+     *
+     * @description: 查询 财务结算-结算单列表
+     *
+     * @param paramsVo
+     * @param pageNo
+     * @param pageSize
+     * @return: org.jeecg.common.api.vo.Result
+     * @author: zianY
+     */
+    @Override
+    public Result<PageInfo<Map<String,String>>> getSettlementSheetList(SettlementFileParamsVo paramsVo, Integer pageNo, Integer pageSize) {
+        Set accountSet = new HashSet();
+        Set imageSet = new HashSet();
+        PageHelper.startPage(pageNo, pageSize);
+        List<Map<String,String>> list = settlementFileInfoMapper.getSettlementSheetList(paramsVo);
+        list.forEach(map -> {
+            //账户数量
+            QueryWrapper<ctopCwjsSettlementInfo> settlementAccountQw = new QueryWrapper<>();
+            //广告主id
+            settlementAccountQw.eq("advertiser_id",map.get("advertiserId"));
+            //产品id
+            settlementAccountQw.eq("product_id",map.get("productId"));
+            //媒体类型 1-头条 2-快手 3-头条内广 4-快手内广
+            settlementAccountQw.eq("media_id",map.get("mediaId"));
+            //账户状态 0-开 1-关
+            settlementAccountQw.eq("status",0);
+            //(0,正常,1已删除)
+            settlementAccountQw.eq("del_flag",0);
+            List<ctopCwjsSettlementInfo> settlementAccountList =  settlementInfoMapper.selectList(settlementAccountQw);
+            List<String>  advertiserList = settlementAccountList.stream().map(ctopCwjsSettlementInfo::getAccountId).collect(Collectors.toList());
+            if (!Check.isNull(advertiserList)){
+                accountSet.addAll(advertiserList);
+            }
+            //图片数量
+            QueryWrapper<ctopCwjsSettlementFileInfo> settlementFileInfoQw = new QueryWrapper<>();
+            //广告主id
+            settlementFileInfoQw.eq("advertiser_id",map.get("advertiserId"));
+            //产品id
+            settlementFileInfoQw.eq("product_id",map.get("productId"));
+            //媒体类型 1-头条 2-快手 3-头条内广 4-快手内广
+            settlementFileInfoQw.eq("media_id",map.get("mediaId"));
+            //上传人 (运营)
+            settlementFileInfoQw.eq("create_user_id",map.get("operateUserId"));
+            //(0,正常,1已删除)
+            settlementFileInfoQw.eq("del_flag",0);
+            List<ctopCwjsSettlementFileInfo> settlementFileList =  settlementFileInfoMapper.selectList(settlementFileInfoQw);
+            List<String>  imageList = settlementFileList.stream().map(ctopCwjsSettlementFileInfo::getAccountId).collect(Collectors.toList());
+            if (!Check.isNull(imageList)){
+                imageSet.addAll(imageList);
+            }
+            map.put("accountCount", Check.isNull(settlementAccountList) ? "0" : String.valueOf(settlementAccountList.size()));
+            map.put("imageCount",Check.isNull(settlementFileList) ? "0" : String.valueOf(settlementFileList.size()));
+        });
+
+        //当前页 账户、图片(去重)总计
+        if (!Check.isNull(list)){
+            list.get(0).put("accountTotal",Check.isNull(accountSet.size()) ? "0" : String.valueOf(accountSet.size()));
+            list.get(0).put("imageTotal",Check.isNull(imageSet.size()) ? "0" : String.valueOf(imageSet.size()));
+        }
+
+        PageInfo<Map<String,String>> pageInfo = new PageInfo<>(list);
+        return Result.successMsg("财务结算-结算单列表查询成功。", pageInfo);
+    }
+
+
+    /**
+     *
+     * @description: 删除
+     *
+     * @param paramsVo
+     * @return: org.jeecg.common.api.vo.Result
+     * @author: zianY
+     */
+    @Override
+    public Result deleteSettlementFile(SettlementFileParamsVo paramsVo) {
+        settlementFileInfoMapper.deleteSettlementFile(paramsVo);
+        return Result.successMsg("删除成功。",null);
+    }
+
+}