فهرست منبع

修改业绩管理模块逻辑

y 2 سال پیش
والد
کامیت
8624682286

+ 2 - 3
src/main/java/com/ydtech/modules/admin/dao/SysUserMapper.java

@@ -155,11 +155,10 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
     @Select({"<script>",selectSql,"</script>"})
     List<SysUser> findAllAgentRoleUser(@Param("userId") String userId,@Param("roleId") String roleId);
 
-    List<SysDept> getDept();
+    List<QuTeamNum> getDept(@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
 
-    List<SysUser> getUser(List<SysDept> deptList);
+    List<QuTeamNum> getUser(@Param("quTeamNumDto")QuTeamNumDto quTeamNumDto);
 
-    List<QuOrders> getOrders(QuTeamNumDto quTeamNumDto);
 }
 
 

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

@@ -28,6 +28,12 @@ public class QuTeamNum{
     @ApiModelProperty(value = "成员ID")
     private String userId;
 
+    @ApiModelProperty(value = "订单状态")
+    private String orderStatus;
+
+    @ApiModelProperty(value = "该订单状态下次数")
+    private String count;
+
 
     @ApiModelProperty(value = "报价次数")
     private String quoteNum;

+ 69 - 145
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -95,166 +95,90 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         }
         //判断是要查询用户还是团队
         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));
-                            }
-
+            List<QuTeamNum> dept = sysUserMapper.getDept(quTeamNumDto);
 
-                            //总保费
-                            BigDecimal totalSumpremium = new BigDecimal(quTeamNum.getTotalSumpremium());
-                            //交强费用
-                            BigDecimal jqPremiumSum = new BigDecimal(quTeamNum.getJqPremiumSum());
-                            //商业费用
-                            BigDecimal syPremiumSum = new BigDecimal(quTeamNum.getSyPremiumSum());
-                            //车船税
-                            BigDecimal taxaMountSum = new BigDecimal(quTeamNum.getTaxaMountSum());
+            return getQuTeamNumIPage(quTeamNumDto, dept);
 
+        } else if ("2".equals(quTeamNumDto.getTeamOrUserFlag())) {
+            List<QuTeamNum> dept = sysUserMapper.getUser(quTeamNumDto);
 
-                            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);
+            return getQuTeamNumIPage(quTeamNumDto, dept);
+        }
+        throw new SystemException("参数错误");
+    }
 
+    private IPage<QuTeamNum> getQuTeamNumIPage(QuTeamNumDto quTeamNumDto, List<QuTeamNum> dept) {
+        Map<String, List<QuTeamNum>> collect = new HashMap<>();
+        int flag;
+        if (quTeamNumDto.getTeamOrUserFlag().equals("1")) {
+            collect = dept.stream()
+                    .collect(Collectors.groupingBy(QuTeamNum::getDeptId));
+            flag = 1;
         } 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));
-                            }
+            collect = dept.stream()
+                    .collect(Collectors.groupingBy(QuTeamNum::getUserId));
+            flag = 2;
+        } else {
+            flag = 0;
+        }
 
-                            //总保费
-                            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()))));
+        List<QuTeamNum> quTeamNums = new ArrayList<>();
+        collect.forEach((k, v) -> {
+            QuTeamNum teamNum = new QuTeamNum();
+            teamNum.setHasInsuredNum("0");
+            teamNum.setSubmitNum("0");
+            teamNum.setSyPremiumSum("0");
+            teamNum.setJqPremiumSum("0");
+            teamNum.setTaxaMountSum("0");
+            teamNum.setTotalSumpremium("0");
+            teamNum.setQuoteNum("0");
+
+            if (!v.isEmpty()) {
+                v.forEach(quTeamNum -> {
+                    if (quTeamNum.getOrderStatus() != null) {
+                        if (quTeamNum.getOrderStatus().equals("3")) {
+                            if (quTeamNum.getJqPremiumSum() == null) {
+                                quTeamNum.setJqPremiumSum("0");
                             }
-
-                            if (order.getTaxAmount() != null) {
-                                //车船税
-                                quTeamNum.setTaxaMountSum(String.valueOf(taxaMountSum.add(new BigDecimal(order.getTaxAmount()))));
+                            if (quTeamNum.getSyPremiumSum() == null) {
+                                quTeamNum.setSyPremiumSum("0");
                             }
+                            //添加总额
+                            teamNum.setTotalSumpremium(String.valueOf(new BigDecimal(teamNum.getTotalSumpremium())
+                                    .add(new BigDecimal(quTeamNum.getSyPremiumSum())).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
+                            teamNum.setSyPremiumSum(String.valueOf(new BigDecimal(teamNum.getSyPremiumSum()).add(new BigDecimal(quTeamNum.getSyPremiumSum()))));
+                            teamNum.setJqPremiumSum(String.valueOf(new BigDecimal(teamNum.getJqPremiumSum()).add(new BigDecimal(quTeamNum.getJqPremiumSum()))));
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                            teamNum.setHasInsuredNum(String.valueOf(new BigDecimal(teamNum.getHasInsuredNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                        }
+                        if (quTeamNum.getOrderStatus().equals("2")) {
+                            teamNum.setSubmitNum(String.valueOf(new BigDecimal(teamNum.getSubmitNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
+                        }
+                        if (quTeamNum.getOrderStatus().equals("1")) {
+                            teamNum.setQuoteNum(String.valueOf(new BigDecimal(teamNum.getQuoteNum()).add(new BigDecimal(quTeamNum.getCount()))));
                         }
                     }
                 });
-                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("参数错误");
-
+            }
 
-    }
+            if (flag == 1) {
+                teamNum.setDeptId(v.get(0).getDeptId());
+                teamNum.setDeptName(v.get(0).getDeptName());
+            } else if (flag == 2) {
+                teamNum.setUserId(v.get(0).getUserId());
+                teamNum.setUserName(v.get(0).getUserName());
+            }
 
-    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;
-        }
-        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;
-        }
+            quTeamNums.add(teamNum);
+        });
 
-        List<QuTeamNum> collection = list.stream().skip((quTeamNumDto.getPageNo() - 1) * quTeamNumDto.getPageSize()).limit(quTeamNumDto.getPageSize()).
+        List<QuTeamNum> collect1 = quTeamNums.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);
+        IPage<QuTeamNum> page = new Page<>(quTeamNumDto.getPageNo(), quTeamNumDto.getPageSize());
+        page.setRecords(collect1);
+        page.setTotal(quTeamNums.size());
         return page;
     }
 
@@ -587,7 +511,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         if (StringUtils.isNotEmpty(sysUser.getReferrerId())) {
             //推荐人
             esmUserReferrerService.addReferrer(sysUser.getReferrerId(), userId);
-        }else if("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())){
+        } else if ("20".equals(sysUser.getRoleId()) || "21".equals(sysUser.getRoleId())) {
             //如果是 团队长或代码人 并且没有推荐人 则默认推荐人为自己
             esmUserReferrerService.addReferrer(sysUser.getId(), userId);
         }

+ 103 - 40
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -165,52 +165,115 @@
             </if>
         </if>
     </select>
-    <select id="getDept" resultType="com.ydtech.modules.admin.model.SysDept">
+
+
+
+    <resultMap id="QuTeamNumMap" type="com.ydtech.modules.admin.model.QuTeamNum">
+        <id column="id" javaType="String" jdbcType="VARCHAR"  property="deptId"/>
+        <result column="name" javaType="String" jdbcType="VARCHAR" property="deptName"/>
+        <result column="orderstatus" javaType="String" jdbcType="VARCHAR" property="orderStatus"/>
+        <result column="count" javaType="String" jdbcType="VARCHAR" property="count"/>
+        <result column="jqpremium" javaType="String" jdbcType="VARCHAR" property="jqPremiumSum"/>
+        <result column="sypremium" javaType="String" jdbcType="VARCHAR" property="syPremiumSum"/>
+        <result column="taxamount" javaType="String" jdbcType="VARCHAR" property="taxaMountSum"/>
+    </resultMap>
+
+    <select id="getDept" resultMap="QuTeamNumMap">
+        SELECT
+        sd.id,
+        sd.name,
+        i.orderstatus,
+        i.count,
+        i.jqpremium,
+        i.sypremium,
+        i.taxamount
+        FROM
+        sys_dept sd
+        LEFT JOIN (
         SELECT
-            a.id,
-            a.NAME
+        io.deptid AS deptid,
+        iac.orderstatus AS orderstatus,
+        count(*) AS count,
+        sum( iac.jqpremium ) AS jqpremium,
+        sum( iac.sypremium ) AS sypremium,
+        sum( iac.taxamount ) AS taxamount
         FROM
-            sys_dept a
-        left join sys_dept b on a.parent_id = b.id
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
         WHERE
-            b.del_flag = '0'
-          AND b.management_source = '1'
-    </select>
+        iac.orderstatus in (1,2,3)
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and io.deptid = #{quTeamNumDto.deptId}
+        </if>
+        <if test="quTeamNumDto.createTimeStart != null">
+            and io.createtime &gt;= #{quTeamNumDto.createTimeStart}
+        </if>
+        <if test="quTeamNumDto.createTimeEnd != null">
+            and io.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+        </if>
+        GROUP BY
+        iac.orderstatus,
+        io.userid
+        ) AS i ON i.deptid = sd.id
+        WHERE
+        sd.del_flag = 0
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and sd.id like concat('%',#{quTeamNumDto.deptId},'%')
+        </if>
 
-    <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}
+    <resultMap id="QuUserNumMap" type="com.ydtech.modules.admin.model.QuTeamNum">
+        <id column="id" javaType="String" jdbcType="VARCHAR"  property="userId"/>
+        <result column="name" javaType="String" jdbcType="VARCHAR" property="userName"/>
+        <result column="orderstatus" javaType="String" jdbcType="VARCHAR" property="orderStatus"/>
+        <result column="count" javaType="String" jdbcType="VARCHAR" property="count"/>
+        <result column="jqpremium" javaType="String" jdbcType="VARCHAR" property="jqPremiumSum"/>
+        <result column="sypremium" javaType="String" jdbcType="VARCHAR" property="syPremiumSum"/>
+        <result column="taxamount" javaType="String" jdbcType="VARCHAR" property="taxaMountSum"/>
+    </resultMap>
+
+    <select id="getUser" resultMap="QuUserNumMap">
+        SELECT
+        su.id,
+        su.name,
+        i.orderstatus,
+        i.count,
+        i.jqpremium,
+        i.sypremium,
+        i.taxamount
+        FROM
+        sys_user su
+        LEFT JOIN (
+        SELECT
+        io.userid AS userid,
+        iac.orderstatus AS orderstatus,
+        count(*) AS count,
+        sum( iac.jqpremium ) AS jqpremium,
+        sum( iac.sypremium ) AS sypremium,
+        sum( iac.taxamount ) AS taxamount
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus in (1,2,3)
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and io.deptid = #{quTeamNumDto.deptId}
+        </if>
+        <if test="quTeamNumDto.createTimeStart != null">
+            and io.createtime &gt;= #{quTeamNumDto.createTimeStart}
+        </if>
+        <if test="quTeamNumDto.createTimeEnd != null">
+            and io.createtime &lt;= #{quTeamNumDto.createTimeEnd}
+        </if>
+        GROUP BY
+        iac.orderstatus,
+        io.userid
+        ) AS i ON i.userid = su.id
+        WHERE
+        su.status = 1
+        <if test="quTeamNumDto.deptId != null and quTeamNumDto.deptId != ''">
+            and su.id like concat('%',#{quTeamNumDto.deptId},'%')
         </if>
-       <if test="createTimeEnd">
-          and   a.createtime &lt;= #{createTimeEnd}
-       </if>
     </select>
 </mapper>