Bläddra i källkod

修改业绩管理模块逻辑

y 2 år sedan
förälder
incheckning
894e8827c8

+ 6 - 2
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.QuOrders;
 import com.ydtech.modules.admin.model.QuTeamNum;
+import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.QuTeamNumDto;
 import com.ydtech.modules.admin.model.dto.SysUserDto;
@@ -153,9 +155,11 @@ 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);
+    List<SysDept> getDept();
 
-    IPage<QuTeamNum> quUserNum(Page page,@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
+    List<SysUser> getUser(List<SysDept> deptList);
+
+    List<QuOrders> getOrders(QuTeamNumDto quTeamNumDto);
 }
 
 

+ 29 - 0
src/main/java/com/ydtech/modules/admin/model/QuOrders.java

@@ -0,0 +1,29 @@
+package com.ydtech.modules.admin.model;
+
+import lombok.Data;
+
+/**
+ * @author jianlong
+ * @date 2024-01-17 17:21
+ */
+@Data
+public class QuOrders {
+
+    private String orderNo;
+
+    private String orderStatus;
+
+    private String jqPremium;
+
+    private String syPremium;
+
+    private String taxAmount;
+
+    private String deptId;
+
+    private String deptName;
+
+    private String userId;
+
+    private String userName;
+}

+ 3 - 1
src/main/java/com/ydtech/modules/admin/model/QuTeamNum.java

@@ -4,12 +4,14 @@ import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
 import lombok.Data;
 
+import java.math.BigDecimal;
+
 /**
  * @author jianlong
  * @date 2024-01-16 11:57
  */
 @Data
-public class QuTeamNum {
+public class QuTeamNum{
 
 
     @ApiModelProperty(value = "部门名称")

+ 164 - 33
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -23,11 +23,13 @@ import com.ydtech.modules.admin.service.*;
 import com.ydtech.modules.base.controller.BaseController;
 import com.ydtech.modules.base.model.dto.PageDto;
 import com.ydtech.modules.base.model.vo.PageVo;
+import com.ydtech.modules.esm.model.EsmInsAttributionTemplate;
 import com.ydtech.modules.esm.model.EsmUserImage;
 import com.ydtech.modules.esm.model.EsmUserReferrer;
 import com.ydtech.modules.esm.model.vo.EsmUserImageVo;
 import com.ydtech.modules.esm.service.EsmUserImageService;
 import com.ydtech.modules.esm.service.EsmUserReferrerService;
+import com.ydtech.modules.ins.model.InsOrdersExcel;
 import com.ydtech.security.utils.PasswordUtils;
 import com.ydtech.utils.StringUtils;
 import com.ydtech.utils.idgen.IdGenerate;
@@ -88,43 +90,172 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @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);
-                }
+        if (quTeamNumDto.getTeamOrUserFlag() == null) {
+            throw new SystemException("必传参数未传");
+        }
+        //判断是要查询用户还是团队
+        if ("1".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            List<SysDept> dept = sysUserMapper.getDept();
+            List<QuOrders> orders = sysUserMapper.getOrders(quTeamNumDto);
+            List<QuTeamNum> list = new ArrayList<>();
+            dept.forEach(item -> {
+                QuTeamNum quTeamNum = new QuTeamNum();
+                quTeamNum.setQuoteNum("0");
+                quTeamNum.setSubmitNum("0");
+                quTeamNum.setHasInsuredNum("0");
+                quTeamNum.setTotalSumpremium("0");
+                quTeamNum.setJqPremiumSum("0");
+                quTeamNum.setSyPremiumSum("0");
+                quTeamNum.setTaxaMountSum("0");
+                orders.forEach(order -> {
+                    if (order.getDeptId() != null) {
+                        if (order.getDeptId().equals(item.getId())) {
+                            //报价次数
+                            if (Integer.parseInt(order.getOrderStatus()) > 1) {
+                                quTeamNum.setQuoteNum(String.valueOf(Integer.parseInt(quTeamNum.getQuoteNum()) + 1));
+                            }
+                            //提交核保次数
+                            if (Integer.parseInt(order.getOrderStatus()) == 3) {
+                                quTeamNum.setSubmitNum(String.valueOf(Integer.parseInt(quTeamNum.getSubmitNum()) + 1));
+                            }
+                            //已承保次数
+                            if (Integer.parseInt(order.getOrderStatus()) == 4) {
+                                quTeamNum.setHasInsuredNum(String.valueOf(Integer.parseInt(quTeamNum.getHasInsuredNum()) + 1));
+                            }
+
+
+                            //总保费
+                            BigDecimal totalSumpremium = new BigDecimal(quTeamNum.getTotalSumpremium());
+                            //交强费用
+                            BigDecimal jqPremiumSum = new BigDecimal(quTeamNum.getJqPremiumSum());
+                            //商业费用
+                            BigDecimal syPremiumSum = new BigDecimal(quTeamNum.getSyPremiumSum());
+                            //车船税
+                            BigDecimal taxaMountSum = new BigDecimal(quTeamNum.getTaxaMountSum());
+
+
+                            if (order.getJqPremium() != null && order.getSyPremium() != null) {
+                                //交强险费用
+                                quTeamNum.setJqPremiumSum(String.valueOf(jqPremiumSum.add(new BigDecimal(order.getJqPremium()))));
+                                //商业险费用
+                                quTeamNum.setSyPremiumSum(String.valueOf(syPremiumSum.add(new BigDecimal(order.getSyPremium()))));
+                                //总承保保费总数
+                                quTeamNum.setTotalSumpremium(String.valueOf(totalSumpremium.add(new BigDecimal(order.getJqPremium())).add(new BigDecimal(order.getSyPremium()))));
+                            }
+
+                            if (order.getTaxAmount() != null) {
+                                //车船税
+                                quTeamNum.setTaxaMountSum(String.valueOf(taxaMountSum.add(new BigDecimal(order.getTaxAmount()))));
+                            }
+
+                        }
+                    }
+                });
+                quTeamNum.setDeptId(item.getId());
+                quTeamNum.setDeptName(item.getName());
+                list.add(quTeamNum);
+            });
+
+            return getQuTeamNumIPage(quTeamNumDto, list);
+
+        } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            List<SysDept> dept = sysUserMapper.getDept();
+            List<SysUser> user = sysUserMapper.getUser(dept);
+            //如果未传时间 就默认当前月
+            if (quTeamNumDto.getCreateTimeStart() == null && quTeamNumDto.getCreateTimeEnd() == null) {
+                LocalDate now = LocalDate.now();
+                quTeamNumDto.setCreateTimeStart(now.with(TemporalAdjusters.firstDayOfMonth()));
+                quTeamNumDto.setCreateTimeEnd(now.with(TemporalAdjusters.lastDayOfMonth()));
+            }
+            List<QuOrders> orders = sysUserMapper.getOrders(quTeamNumDto);
+            List<QuTeamNum> list = new ArrayList<>();
+            user.forEach(item -> {
+                QuTeamNum quTeamNum = new QuTeamNum();
+                quTeamNum.setQuoteNum("0");
+                quTeamNum.setSubmitNum("0");
+                quTeamNum.setHasInsuredNum("0");
+                quTeamNum.setTotalSumpremium("0");
+                quTeamNum.setJqPremiumSum("0");
+                quTeamNum.setSyPremiumSum("0");
+                quTeamNum.setTaxaMountSum("0");
+                orders.forEach(order -> {
+                    if (order.getUserId() != null) {
+                        if (order.getUserId().equals(item.getId())) {
+                            //报价次数
+                            if (Integer.parseInt(order.getOrderStatus()) > 1) {
+                                quTeamNum.setQuoteNum(String.valueOf(Integer.parseInt(quTeamNum.getQuoteNum()) + 1));
+                            }
+                            //提交核保次数
+                            if (Integer.parseInt(order.getOrderStatus()) == 3) {
+                                quTeamNum.setSubmitNum(String.valueOf(Integer.parseInt(quTeamNum.getSubmitNum()) + 1));
+                            }
+                            //已承保次数
+                            if (Integer.parseInt(order.getOrderStatus()) == 4) {
+                                quTeamNum.setHasInsuredNum(String.valueOf(Integer.parseInt(quTeamNum.getHasInsuredNum()) + 1));
+                            }
+
+                            //总保费
+                            BigDecimal totalSumpremium = new BigDecimal(quTeamNum.getTotalSumpremium());
+                            //交强费用
+                            BigDecimal jqPremiumSum = new BigDecimal(quTeamNum.getJqPremiumSum());
+                            //商业费用
+                            BigDecimal syPremiumSum = new BigDecimal(quTeamNum.getSyPremiumSum());
+                            //车船税
+                            BigDecimal taxaMountSum = new BigDecimal(quTeamNum.getTaxaMountSum());
+
+                            if (order.getJqPremium() != null && order.getSyPremium() != null) {
+                                //交强险费用
+                                quTeamNum.setJqPremiumSum(String.valueOf(jqPremiumSum.add(new BigDecimal(order.getJqPremium()))));
+                                //商业险费用
+                                quTeamNum.setSyPremiumSum(String.valueOf(syPremiumSum.add(new BigDecimal(order.getSyPremium()))));
+                                //总承保保费总数
+                                quTeamNum.setTotalSumpremium(String.valueOf(totalSumpremium.add(new BigDecimal(order.getJqPremium())).add(new BigDecimal(order.getSyPremium()))));
+                            }
+
+                            if (order.getTaxAmount() != null) {
+                                //车船税
+                                quTeamNum.setTaxaMountSum(String.valueOf(taxaMountSum.add(new BigDecimal(order.getTaxAmount()))));
+                            }
+                        }
+                    }
+                });
+                quTeamNum.setUserId(item.getId());
+                quTeamNum.setUserName(item.getName());
+                quTeamNum.setDeptId(item.getDeptId());
+                quTeamNum.setDeptName(item.getDeptName());
+                list.add(quTeamNum);
+            });
+
+            return getQuTeamNumIPage(quTeamNumDto, list);
+        }
+        throw new SystemException("参数错误");
 
-                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("参数错误");
+    private IPage<QuTeamNum> getQuTeamNumIPage(QuTeamNumDto quTeamNumDto, List<QuTeamNum> list) {
+        if (quTeamNumDto.getUserId() != null) {
+            List<QuTeamNum> collect = list.stream().filter(item -> item.getUserId().equals(quTeamNumDto.getUserId())).collect(Collectors.toList());
+            collect = collect.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
+                    collect(Collectors.toList());
+            IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize(), list.size());
+            page.setRecords(collect);
+            return page;
         }
-        throw new SystemException("必传参数未传");
+        if (quTeamNumDto.getDeptId() != null) {
+            List<QuTeamNum> collect = list.stream().filter(item -> item.getDeptId().equals(quTeamNumDto.getDeptId())).collect(Collectors.toList());
+            collect = collect.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
+                    collect(Collectors.toList());
+            IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize(), list.size());
+            page.setRecords(collect);
+            return page;
+        }
+
+        List<QuTeamNum> collection = list.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
+                collect(Collectors.toList());
+        IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize(), list.size());
+        page.setRecords(collection);
+        return page;
     }
 
 

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

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

+ 42 - 74
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -165,84 +165,52 @@
             </if>
         </if>
     </select>
-    <select id="quTeamNum" resultType="com.ydtech.modules.admin.model.QuTeamNum">
+    <select id="getDept" resultType="com.ydtech.modules.admin.model.SysDept">
         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
+            a.id,
+            a.NAME
         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
+            sys_dept a
+        left join sys_dept b on a.parent_id = b.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
+            b.del_flag = '0'
+          AND b.management_source = '1'
     </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}
+
+    <select id="getUser" resultType="com.ydtech.modules.admin.model.SysUser">
+       select
+        name,id,dept_id
+       from sys_user
+       where
+           status = '1'
+        and dept_id in
+        <foreach close=")" collection="deptList" item="listItem" open="(" separator=",">
+             #{listItem.id}
+        </foreach>
+    </select>
+
+    <select id="getOrders" resultType="com.ydtech.modules.admin.model.QuOrders">
+       select
+           a.orderno,
+           a.orderstatus,
+           b.jqpremium,
+           b.sypremium,
+           b.taxamount,
+           a.deptid,
+           a.deptname,
+           a.deptname,
+           a.deptname,
+           a.userid,
+           a.username
+        from ins_orders a
+       left join ins_area_company b on a.orderno = b.orderno
+       where
+           1 = 1
+        <if test="createTimeStart">
+          and   a.createtime &gt;= #{createTimeStart}
         </if>
-        GROUP BY
-        a.userid,
-        a.username
-        ORDER BY
-        a.username
+       <if test="createTimeEnd">
+          and   a.createtime &lt;= #{createTimeEnd}
+       </if>
     </select>
 </mapper>