Bladeren bron

新增业绩管理模块

y 2 jaren geleden
bovenliggende
commit
f613598ea5

+ 10 - 2
src/main/java/com/ydtech/modules/admin/controller/SysUserController.java

@@ -14,6 +14,7 @@ import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.constants.RoleConstants;
 import com.ydtech.modules.admin.model.*;
 import com.ydtech.modules.admin.model.dto.AgentUserDto;
+import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.vo.*;
 import com.ydtech.modules.admin.service.*;
@@ -388,7 +389,7 @@ public class SysUserController extends BaseController {
         return HttpResult.ok(sysUserService.gainUserPage(pageDto));
     }
 
-    @ApiOperation(value = "用户查询分页")
+    @ApiOperation(value = "分为渠道和个代的用户查询分页")
     @PostMapping(value = "/findUserList")
     public HttpResult findUserList(@RequestBody PageDto<SysUserDto> pageDto) {
         //获取用户角色
@@ -404,6 +405,13 @@ public class SysUserController extends BaseController {
         return HttpResult.ok(sysUserService.findUserList(pageDto));
     }
 
+    @ApiOperation(value = "渠道数据统计")
+    @PostMapping(value = "/quTeamNum")
+    public HttpResult quTeamNum(@RequestBody QuTeamNumDto quTeamNumDto) {
+
+        return HttpResult.ok("",sysUserService.quTeamNum(quTeamNumDto));
+    }
+
 
     @ApiOperation(value = "(重构)审批通过")
     @ApiImplicitParams({
@@ -539,7 +547,7 @@ public class SysUserController extends BaseController {
         int noCount = 3;//顺序号是几位的
 
         List<SysUser> list = sysUserService.lambdaQuery().eq(SysUser::getMobile, dto.getMobile()).list();
-        if(!list.isEmpty()){
+        if (!list.isEmpty()) {
             throw new SystemException("手机号已经被注册请重新跟换手机号。如有疑问请联系管理人员。");
         }
 

+ 6 - 0
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.model.QuTeamNum;
 import com.ydtech.modules.admin.model.SysUser;
+import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.model.vo.SysUserVO;
@@ -150,6 +152,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     @Select({"<script>",selectSql,"</script>"})
     List<SysUser> findAllAgentRoleUser(@Param("userId") String userId,@Param("roleId") String roleId);
+
+    IPage<QuTeamNum> quTeamNum(Page page,@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
+
+    IPage<QuTeamNum> quUserNum(Page page,@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
 }
 
 

+ 53 - 0
src/main/java/com/ydtech/modules/admin/model/QuTeamNum.java

@@ -0,0 +1,53 @@
+package com.ydtech.modules.admin.model;
+
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Data;
+
+/**
+ * @author jianlong
+ * @date 2024-01-16 11:57
+ */
+@Data
+public class QuTeamNum {
+
+
+    @ApiModelProperty(value = "部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "部门ID")
+    private String deptId;
+
+
+    @ApiModelProperty(value = "成员名称")
+    private String userName;
+
+
+    @ApiModelProperty(value = "成员ID")
+    private String userId;
+
+
+    @ApiModelProperty(value = "报价次数")
+    private String quoteNum;
+
+
+    @ApiModelProperty(value = "提交核保次数")
+    private String submitNum;
+
+
+    @ApiModelProperty(value = "已承保数量")
+    private String hasInsuredNum;
+
+
+    @ApiModelProperty(value = "总承保保费总数")
+    private String totalSumpremium;
+
+    @ApiModelProperty(value = "交强险费用")
+    private String jqPremiumSum;
+
+    @ApiModelProperty(value = "商业险费用")
+    private String syPremiumSum;
+
+    @ApiModelProperty(value = "车船税")
+    private String taxaMountSum;
+}

+ 46 - 0
src/main/java/com/ydtech/modules/admin/model/dto/QuTeamNumDto.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author jianlong
+ * @date 2024-01-16 14:26
+ */
+@Data
+public class QuTeamNumDto {
+    @ApiModelProperty("查询团队或者用户标志")
+    private String teamOrUserFlag;
+    @ApiModelProperty("部门id")
+    private String deptId;
+    @ApiModelProperty("部门名称")
+    private String deptName;
+
+    @ApiModelProperty(value = "成员名称")
+    private String userName;
+
+    @ApiModelProperty(value = "成员ID")
+    private String userId;
+
+    @ApiModelProperty(value = "创建时间开始")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createTimeStart;
+
+    @ApiModelProperty(value = "创建时间结束")
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private LocalDate createTimeEnd;
+
+
+    @TableField(exist = false)
+    private int pageNo;
+
+    @TableField(exist = false)
+    private int pageSize;
+}

+ 4 - 0
src/main/java/com/ydtech/modules/admin/service/SysUserService.java

@@ -5,9 +5,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.QuTeamNum;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.SysUserRole;
 import com.ydtech.core.page.PageResult;
+import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
 import com.ydtech.modules.admin.model.vo.SysUser2Vo;
@@ -76,6 +78,8 @@ public interface SysUserService extends IService<SysUser> {
      */
     IPage<SysUserBaseVO> findUserList(PageDto<SysUserDto> pageDto);
 
+    IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto);
+
     /**
      * 获取添加用户ID
      *

+ 49 - 0
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -8,10 +8,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.ydtech.core.page.HttpResult;
+import com.ydtech.core.page.PageRequest;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.*;
+import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
 import com.ydtech.modules.admin.model.vo.SysUser2Vo;
 import com.ydtech.modules.admin.model.vo.SysUserBaseVO;
@@ -33,8 +35,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.temporal.TemporalAdjusters;
 import java.util.*;
 import java.util.stream.Collectors;
+import java.util.stream.Stream;
 
 
 @Service
@@ -79,6 +85,49 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         return sysUserMapper.findUserList(page, sysUserVO);
     }
 
+    @Override
+    public IPage<QuTeamNum> quTeamNum(QuTeamNumDto quTeamNumDto) {
+        //判断必传标识是否为空
+        if (quTeamNumDto.getTeamOrUserFlag() != null) {
+            //判断是要查询用户还是团队
+            if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
+                PageRequest pageRequest = new PageRequest();
+                pageRequest.setPageNum(quTeamNumDto.getPageNo());
+                pageRequest.setPageSize(quTeamNumDto.getPageSize());
+                Page page = PageRequest.buildPageRequest(pageRequest);
+
+                if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
+                    LocalDate date = LocalDate.now();
+                    LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
+                    LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
+
+                    quTeamNumDto.setCreateTimeStart(firstDay);
+                    quTeamNumDto.setCreateTimeEnd(lastDay);
+                }
+
+                return sysUserMapper.quTeamNum(page, quTeamNumDto);
+            } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
+                PageRequest pageRequest = new PageRequest();
+                pageRequest.setPageNum(quTeamNumDto.getPageNo());
+                pageRequest.setPageSize(quTeamNumDto.getPageSize());
+                Page page = PageRequest.buildPageRequest(pageRequest);
+
+                if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
+                    LocalDate date = LocalDate.now();
+                    LocalDate firstDay = date.with(TemporalAdjusters.firstDayOfMonth()); // 获取当前月的第一天
+                    LocalDate lastDay = date.with(TemporalAdjusters.lastDayOfMonth()); // 获取当前月的最后一天
+
+                    quTeamNumDto.setCreateTimeStart(firstDay);
+                    quTeamNumDto.setCreateTimeEnd(lastDay);
+                }
+                return sysUserMapper.quUserNum(page, quTeamNumDto);
+            }
+            throw new SystemException("参数错误");
+        }
+        throw new SystemException("必传参数未传");
+    }
+
+
     @Override
     public SysUser findByUsername(String username) {
         SysUser sysUser = null;

+ 1 - 1
src/main/resources/application.yml

@@ -7,7 +7,7 @@ server:
 
 spring:
   profiles:
-      active: dev
+      active: pre
 
 
 

+ 80 - 0
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -165,4 +165,84 @@
             </if>
         </if>
     </select>
+    <select id="quTeamNum" resultType="com.ydtech.modules.admin.model.QuTeamNum">
+        SELECT
+        a.deptid,
+        a.deptname,
+        count( CASE WHEN b.orderstatus = 2 THEN 1 ELSE NULL END ) submitNum,
+        count( CASE WHEN b.orderstatus >= 1 THEN 1 ELSE NULL END ) quoteNum,
+        count( CASE WHEN b.orderstatus = 3 THEN 1 ELSE NULL END ) hasInsuredNum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.jqpremium ELSE NULL END) jqPremiumSum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.sypremium ELSE NULL END) syPremiumSum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.taxamount ELSE NULL END) taxaMountSum,
+        sum( CASE WHEN b.orderstatus = '3' THEN b.jqpremium + b.sypremium ELSE 0 END ) AS totalSumpremium
+        FROM
+        ins_orders a
+        LEFT JOIN ins_area_company b ON a.orderno = b.orderno
+        JOIN sys_dept c ON a.deptid = c.id
+        JOIN ( SELECT a.id FROM sys_dept a WHERE a.comlevel = '5' AND a.management_source = '1' AND a.del_flag = '0' ) d ON c.parent_id = d.id
+        WHERE
+        b.orderstatus IN ( '1', '2', '3' )
+        AND c.del_flag = '0'
+        <if test="quTeamNumDto.deptName != null and quTeamNumDto.deptName != '' ">
+            AND a.deptname LIKE concat('%',#{quTeamNumDto.deptName},'%')
+        </if>
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != '' ">
+            AND a.deptId = #{quTeamNumDto.deptId}
+        </if>
+        <if test="quTeamNumDto.createTimeStart != null">
+            AND b.createtime &gt;= #{quTeamNumDto.createTimeStart}
+        </if>
+        <if test="quTeamNumDto.createTimeEnd != null">
+            AND b.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+        </if>
+        GROUP BY
+        a.deptid,
+        a.deptname
+        ORDER BY
+        a.deptname
+    </select>
+    <select id="quUserNum" resultType="com.ydtech.modules.admin.model.QuTeamNum">
+        SELECT
+        a.userid,
+        a.username,
+        count( CASE WHEN b.orderstatus = 2 THEN 1 ELSE NULL END ) submitNum,
+        count( CASE WHEN b.orderstatus >= 1 THEN 1 ELSE NULL END ) quoteNum,
+        count( CASE WHEN b.orderstatus = 3 THEN 1 ELSE NULL END ) hasInsuredNum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.jqpremium ELSE NULL END) jqPremiumSum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.sypremium ELSE NULL END) syPremiumSum,
+        sum(CASE WHEN b.orderstatus = '3' THEN b.taxamount ELSE NULL END) taxaMountSum,
+        sum( CASE WHEN b.orderstatus = '3' THEN b.jqpremium + b.sypremium ELSE 0 END ) AS totalSumpremium
+        FROM
+        ins_orders a
+        LEFT JOIN ins_area_company b ON a.orderno = b.orderno
+        JOIN sys_dept c ON a.deptid = c.id
+        JOIN ( SELECT a.id FROM sys_dept a WHERE a.comlevel = '5' AND a.management_source = '1' AND a.del_flag = '0' ) d ON c.parent_id = d.id
+        WHERE
+        b.orderstatus IN ( '1', '2', '3' )
+        AND c.del_flag = '0'
+        <if test="quTeamNumDto.userName != null and quTeamNumDto.userName != '' ">
+            AND a.username LIKE concat('%',#{quTeamNumDto.userName},'%')
+        </if>
+        <if test="quTeamNumDto.userId != null and quTeamNumDto.userId != '' ">
+            AND a.userId = #{quTeamNumDto.userId}
+        </if>
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != '' ">
+            AND a.deptId = #{quTeamNumDto.deptId}
+        </if>
+        <if test="quTeamNumDto.deptName != null and quTeamNumDto.deptName != '' ">
+            AND a.deptname LIKE concat('%',#{quTeamNumDto.deptName},'%')
+        </if>
+        <if test="quTeamNumDto.createTimeStart != null">
+            AND b.createtime &gt;= #{quTeamNumDto.createTimeStart}
+        </if>
+        <if test="quTeamNumDto.createTimeEnd != null">
+            AND b.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+        </if>
+        GROUP BY
+        a.userid,
+        a.username
+        ORDER BY
+        a.username
+    </select>
 </mapper>