Selaa lähdekoodia

经销商销售统计

lyhzzz 2 vuotta sitten
vanhempi
commit
27688c6e4a

+ 2 - 0
src/main/java/com/fdkankan/manage/common/CacheUtil.java

@@ -1,8 +1,10 @@
 package com.fdkankan.manage.common;
 
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
 import com.fdkankan.manage.vo.request.OrderParam;
 
 public class CacheUtil {
 
     public static OrderParam orderParam = new OrderParam();
+    public static AgentNewLogParam agentParam = new AgentNewLogParam();
 }

+ 12 - 0
src/main/java/com/fdkankan/manage/controller/AgentNewController.java

@@ -13,12 +13,15 @@ import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.IAgentNewService;
 import com.fdkankan.manage.service.IUserService;
 import com.fdkankan.manage.vo.request.AgentAddIncrementParam;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
 import com.fdkankan.manage.vo.request.AgentParam;
 import com.fdkankan.manage.vo.response.AgentVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 
 /**
@@ -43,6 +46,7 @@ public class AgentNewController {
 
         return ResultData.ok(agentNewService.pageList(agentParam));
     }
+
     @GetMapping("/allList")
     public ResultData listAll(){
         return ResultData.ok(agentNewService.list());
@@ -96,6 +100,14 @@ public class AgentNewController {
         return ResultData.ok();
     }
 
+    @PostMapping("/logList")
+    public ResultData logList(@RequestBody AgentNewLogParam param){
+        return ResultData.ok(agentNewService.logList(param));
+    }
+    @GetMapping("/export")
+    public void export(HttpServletRequest req, HttpServletResponse resp) throws Exception {
+        agentNewService.export(req,resp);
+    }
 
 }
 

+ 61 - 0
src/main/java/com/fdkankan/manage/entity/AgentNewLog.java

@@ -0,0 +1,61 @@
+package com.fdkankan.manage.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.util.Date;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author 
+ * @since 2022-11-10
+ */
+@Getter
+@Setter
+@TableName("t_agent_new_log")
+public class AgentNewLog implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 代理商授权用户日志表
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    @TableField("agent_id")
+    private Integer agentId;
+
+    /**
+     * 0专业会员,1高级会员,2场景下载
+     */
+    @TableField("type")
+    private Integer type;
+
+    /**
+     * 授权对象id
+     */
+    @TableField("user_id")
+    private Integer userId;
+
+    /**
+     * 授权次数
+     */
+    @TableField("count")
+    private Integer count;
+
+    @TableField("create_time")
+    private Date createTime;
+
+    @TableField("update_time")
+    private Date updateTime;
+
+
+}

+ 3 - 3
src/main/java/com/fdkankan/manage/generate/AutoGenerate.java

@@ -18,7 +18,7 @@ public class AutoGenerate {
         String path =System.getProperty("user.dir");
 
         generate(path,"manage", getTables(new String[]{
-                "t_receiver_info",
+                "t_agent_new_log",
         }));
 
 //        generate(path,"goods", getTables(new String[]{
@@ -46,8 +46,8 @@ public class AutoGenerate {
 
 
     public static void  generate(String path,String moduleName,  List<String> tables){
-        FastAutoGenerator.create("jdbc:mysql://120.24.144.164:3306/4dkankan_v4",
-                "root","4Dage@4Dage#@168")
+        FastAutoGenerator.create("jdbc:mysql://rm-wz90w10465iiwwv098o.mysql.rds.aliyuncs.com:3306/4dkankan_v4_prod",
+                "root","D2719bd0cae1a005")
                 .globalConfig(builder -> {
                     builder.author("")               //作者
                             .outputDir(path+"\\src\\main\\java")    //输出路径(写到java目录)

+ 25 - 0
src/main/java/com/fdkankan/manage/mapper/IAgentNewLogMapper.java

@@ -0,0 +1,25 @@
+package com.fdkankan.manage.mapper;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.entity.AgentNewLog;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
+import com.fdkankan.manage.vo.response.AgentLogGVo;
+import com.fdkankan.manage.vo.response.AgentNewLogVo;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author 
+ * @since 2022-11-10
+ */
+@Mapper
+public interface IAgentNewLogMapper extends BaseMapper<AgentNewLog> {
+
+    List<AgentLogGVo> listGroup(AgentNewLogParam param);
+}

+ 22 - 0
src/main/java/com/fdkankan/manage/service/IAgentNewLogService.java

@@ -0,0 +1,22 @@
+package com.fdkankan.manage.service;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.entity.AgentNewLog;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
+import com.fdkankan.manage.vo.response.AgentNewLogVo;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author 
+ * @since 2022-11-10
+ */
+public interface IAgentNewLogService extends IService<AgentNewLog> {
+
+    List<AgentNewLogVo> getVoList( AgentNewLogParam param);
+}

+ 8 - 0
src/main/java/com/fdkankan/manage/service/IAgentNewService.java

@@ -3,9 +3,13 @@ package com.fdkankan.manage.service;
 import com.fdkankan.manage.entity.AgentNew;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.fdkankan.manage.vo.request.AgentAddIncrementParam;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
 import com.fdkankan.manage.vo.request.AgentParam;
 import com.fdkankan.manage.vo.response.AgentVo;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
 /**
  * <p>
  *  服务类
@@ -19,4 +23,8 @@ public interface IAgentNewService extends IService<AgentNew> {
     Object pageList(AgentParam agentParam);
 
     void addIncrementNum(AgentAddIncrementParam param);
+
+    Object logList(AgentNewLogParam param);
+
+    void export(HttpServletRequest req, HttpServletResponse resp);
 }

+ 62 - 0
src/main/java/com/fdkankan/manage/service/impl/AgentNewLogServiceImpl.java

@@ -0,0 +1,62 @@
+package com.fdkankan.manage.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fdkankan.manage.entity.AgentNew;
+import com.fdkankan.manage.entity.AgentNewLog;
+import com.fdkankan.manage.mapper.IAgentNewLogMapper;
+import com.fdkankan.manage.service.IAgentNewLogService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.fdkankan.manage.service.IAgentNewService;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
+import com.fdkankan.manage.vo.response.AgentLogGVo;
+import com.fdkankan.manage.vo.response.AgentNewLogVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author 
+ * @since 2022-11-10
+ */
+@Service
+public class AgentNewLogServiceImpl extends ServiceImpl<IAgentNewLogMapper, AgentNewLog> implements IAgentNewLogService {
+
+    @Autowired
+    IAgentNewService agentNewService;
+
+    @Override
+    public List<AgentNewLogVo> getVoList( AgentNewLogParam param) {
+        List<AgentLogGVo> pageLog = this.getBaseMapper().listGroup(param);
+        HashMap<Integer,AgentNewLogVo> map = new HashMap<>();
+        for (AgentLogGVo gVo : pageLog) {
+            AgentNewLogVo vo = map.get(gVo.getAgentId());
+            if(vo == null){
+                vo = new AgentNewLogVo();
+                AgentNew agentNew = agentNewService.getById(gVo.getAgentId());
+                if(agentNew == null){
+                    continue;
+                }
+                vo.setAgentName(agentNew.getName());
+
+            }
+            switch (gVo.getType()){
+                case 0 : vo.setMajorNum(gVo.getNum() + vo.getMajorNum());
+                case 1 : vo.setHighNum(gVo.getNum() + vo.getHighNum());
+                case 2 : vo.setDownNum(gVo.getNum() + vo.getDownNum());
+            }
+            map.put(gVo.getAgentId(),vo);
+        }
+        List<AgentNewLogVo> list = new ArrayList<>();
+        for (Integer key : map.keySet()) {
+            list.add(map.get(key));
+        }
+        return list;
+    }
+}

+ 37 - 3
src/main/java/com/fdkankan/manage/service/impl/AgentNewServiceImpl.java

@@ -1,26 +1,33 @@
 package com.fdkankan.manage.service.impl;
 
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
 import com.amazonaws.services.lexmodelbuilding.model.Intent;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.response.PageInfo;
+import com.fdkankan.manage.common.CacheUtil;
 import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.entity.*;
 import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.mapper.IAgentNewMapper;
-import com.fdkankan.manage.service.IAgentNewService;
+import com.fdkankan.manage.service.*;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.fdkankan.manage.service.IIncrementTypeService;
-import com.fdkankan.manage.service.ISysUserService;
 import com.fdkankan.manage.vo.request.AgentAddIncrementParam;
+import com.fdkankan.manage.vo.request.AgentNewLogParam;
 import com.fdkankan.manage.vo.request.AgentParam;
+import com.fdkankan.manage.vo.request.OrderParam;
+import com.fdkankan.manage.vo.response.AgentNewLogVo;
 import com.fdkankan.manage.vo.response.AgentVo;
+import com.fdkankan.manage.vo.response.OrderVo;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -40,6 +47,10 @@ public class AgentNewServiceImpl extends ServiceImpl<IAgentNewMapper, AgentNew>
     ISysUserService sysUserService;
     @Autowired
     IIncrementTypeService incrementTypeService;
+    @Autowired
+    IAgentNewLogService agentNewLogService;
+    @Autowired
+    IExcelService excelService;
 
     @Override
     public Object pageList(AgentParam agentParam) {
@@ -90,4 +101,27 @@ public class AgentNewServiceImpl extends ServiceImpl<IAgentNewMapper, AgentNew>
         this.update(wrapper);
 
     }
+
+    @Override
+    public Object logList(AgentNewLogParam param) {
+        CacheUtil.agentParam = param;
+        return agentNewLogService.getVoList(param);
+    }
+
+    @Override
+    public void export(HttpServletRequest req, HttpServletResponse resp) {
+        AgentNewLogParam param = CacheUtil.agentParam;
+        List<AgentNewLogVo> voList = agentNewLogService.getVoList(param);
+        ExcelWriter excelWriter = null;
+        try {
+            excelWriter = EasyExcel.write(resp.getOutputStream(),AgentNewLogVo.class).build();
+            excelService.commonExport(req,resp,"经销商结算统计",voList,excelWriter);
+        }catch (Exception e){
+            e.printStackTrace();
+        }finally {
+            if(excelWriter != null){
+                excelWriter.finish();
+            }
+        }
+    }
 }

+ 30 - 0
src/main/java/com/fdkankan/manage/vo/request/AgentNewLogParam.java

@@ -0,0 +1,30 @@
+package com.fdkankan.manage.vo.request;
+
+import com.fdkankan.common.request.RequestBase;
+import com.fdkankan.manage.util.Dateutils;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class AgentNewLogParam extends RequestBase {
+
+    private List<String> timeList;
+
+    private String startTime;
+    private String endTime;
+
+    public String getStartTime() {
+        if(timeList != null && timeList.size() >1){
+            return Dateutils.getStartTime(timeList.get(0));
+        }
+        return Dateutils.getStartTime(startTime);
+    }
+
+    public String getEndTime() {
+        if(timeList != null && timeList.size() >1){
+            return Dateutils.getEndTime(timeList.get(1));
+        }
+        return Dateutils.getEndTime(endTime);
+    }
+}

+ 10 - 0
src/main/java/com/fdkankan/manage/vo/response/AgentLogGVo.java

@@ -0,0 +1,10 @@
+package com.fdkankan.manage.vo.response;
+
+import lombok.Data;
+
+@Data
+public class AgentLogGVo {
+    private Integer  agentId;
+    private Integer  type;
+    private Integer  num;
+}

+ 19 - 0
src/main/java/com/fdkankan/manage/vo/response/AgentNewLogVo.java

@@ -0,0 +1,19 @@
+package com.fdkankan.manage.vo.response;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import lombok.Data;
+
+@Data
+public class AgentNewLogVo {
+
+    @ExcelProperty("经销商名称")
+    private String  agentName;
+    @ExcelProperty("专业会员(年)销售数据")
+    private Integer  majorNum = 0;
+    @ExcelProperty("高级会员(月)销售数据")
+    private Integer  highNum = 0;
+    @ExcelProperty("场景下载销售数量")
+    private Integer  downNum = 0;
+
+
+}

+ 11 - 0
src/main/resources/mapper/manage/AgentNewLogMapper.xml

@@ -0,0 +1,11 @@
+<?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="com.fdkankan.manage.mapper.IAgentNewLogMapper">
+
+    <select id="listGroup" resultType="com.fdkankan.manage.vo.response.AgentLogGVo" parameterType="com.fdkankan.manage.vo.request.AgentNewLogParam">
+        select agent_id,type,sum(count)as num from t_agent_new_log GROUP BY agent_id,type
+        <if test="param.startTime != null and param.startTime !='' ">
+            and create_time between #{param.startTime} and #{param.endTime}
+        </if>
+    </select>
+</mapper>