Browse Source

增加人员区域业绩详情查看

haoyu 2 năm trước cách đây
mục cha
commit
f281d5f11e

+ 34 - 0
src/main/java/com/ydtech/modules/admin/constants/QuMarks.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.constants;
+
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @version
+ * @description: 金钱属性
+ * @author: tz
+ * @date: 2024-4-11 17:36:15
+ **/
+@Getter
+@AllArgsConstructor
+public enum QuMarks {
+
+    COMPANY_MARK(1, "保险公司"),
+    USER_MARK(2,"用户");
+
+    private final Integer code;
+
+    private final String desc;
+
+    public static QuMarks getQuMarks(Integer code) {
+        for (QuMarks quMarks : QuMarks.values()) {
+            if (quMarks.getCode().equals(code)) {
+                return quMarks;
+            }
+        }
+        return null;
+    }
+
+
+}

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

@@ -169,7 +169,18 @@ public interface SysUserMapper extends BaseMapper<SysUser> {
 
     List<QuUserNum> getUserNum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
 
+    List<QuUserNum> getMainOrderDetails(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+
     List<QuUserNum> getUserByCompany(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getComMainWaitAuditSum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getComMainWaitPaySum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getComMainAcceptInsuranceSum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+
+    List<QuUserNum> getUserDetail(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getUserMainWaitAuditSum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getUserMainWaitPaySum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+    List<QuUserNum> getUserMainAcceptInsuranceSum(@Param("quUserNumDto") QuUserNumDto quUserNumDto);
+
     /**
      *  @version
      *  @author: hxl

+ 3 - 2
src/main/java/com/ydtech/modules/admin/model/dto/QuUserNumDto.java

@@ -38,10 +38,11 @@ public class QuUserNumDto {
     @ApiModelProperty(value = "下属ID")
     private List<String> userIds;
 
-    @TableField(exist = false)
+    @ApiModelProperty(value = "查询标示")
+    private Integer quMarks;
+
     private int pageNum;
 
-    @TableField(exist = false)
     private int pageSize;
 
 }

+ 72 - 15
src/main/java/com/ydtech/modules/admin/service/impl/SysUserServiceImpl.java

@@ -11,6 +11,7 @@ import com.ydtech.constants.SysConstants;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.core.page.PageResult;
 import com.ydtech.exception.SystemException;
+import com.ydtech.modules.admin.constants.QuMarks;
 import com.ydtech.modules.admin.constants.RoleConstants;
 import com.ydtech.modules.admin.dao.SysUserMapper;
 import com.ydtech.modules.admin.model.*;
@@ -813,7 +814,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             // 根据查询条件获取用户数量统计信息
             quUserNumDto.setUserIds(strIds);
             List<QuUserNum> userNums = sysUserMapper.getUserNum(quUserNumDto);
-
+            List<QuUserNum> orderDetails = sysUserMapper.getMainOrderDetails(quUserNumDto);
             // 根据区域名称匹配用户数量统计信息,并构造最终返回的结果列表
             for (QuUserNum quUserNum : userNums) {
                 for (SysArea sysArea : areaList) {
@@ -822,27 +823,26 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
                         String substring = sysArea.getAreaCode().substring(0, quUserNumDto.getGrouping());
                         if (quUserNum.getAreaCode().equals(substring)) {
                             quUserNum.setAreaName(sysArea.getAreaCname());
-                            quUserNums.add(quUserNum);
                         }
                     }
                 }
+                for (QuUserNum orderDetail : orderDetails) {
+                    if (quUserNum.getAreaCode().equals(orderDetail.getAreaCode())) {
+                        quUserNum.setMainAcceptInsuranceSum(orderDetail.getMainAcceptInsuranceSum());
+                        quUserNum.setMainWaitAuditSum(orderDetail.getMainWaitAuditSum());
+                        quUserNum.setMainWaitPaySum(orderDetail.getMainWaitPaySum());
+                    }
+                }
+                quUserNums.add(quUserNum);
             }
         }
 
-
         // 为每个区域生成未匹配到的统计信息
         for (SysArea sysArea : areaList) {
             if (exists(quUserNums, sysArea)) {
                 QuUserNum userNum = new QuUserNum();
                 // 设置未匹配到的区域的默认统计信
                 userNum.setAreaName(sysArea.getAreaCname());
-                userNum.setQuoteNum("0");
-                userNum.setSubmitNum("0");
-                userNum.setHasInsuredNum("0");
-                userNum.setTotalSumpremium("0");
-                userNum.setJqPremiumSum("0");
-                userNum.setSyPremiumSum("0");
-                userNum.setTaxaMountSum("0");
                 quUserNums.add(userNum);
             }
         }
@@ -895,8 +895,65 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         // 设置查询条件中的用户ID列表
         quUserNumDto.setUserIds(strIds);
 
-        // 根据公司和用户ID列表查询用户数量统计信息
-        List<QuUserNum> deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
+        List<QuUserNum> deptByCompany = new ArrayList<>();
+
+        if (quUserNumDto.getQuMarks().equals(QuMarks.COMPANY_MARK.getCode())) {
+            // 根据公司和用户ID列表查询用户数量统计信息
+            deptByCompany = sysUserMapper.getUserByCompany(quUserNumDto);
+            // 获取公司主订单待核保订单数量
+            List<QuUserNum> mainWaitAuditSums = sysUserMapper.getComMainWaitAuditSum(quUserNumDto);
+            // 获取公司主订单已核保待缴费订单数量
+            List<QuUserNum> mainWaitPaySums = sysUserMapper.getComMainWaitPaySum(quUserNumDto);
+            // 获取公司主订单已承包订单数量
+            List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getComMainAcceptInsuranceSum(quUserNumDto);
+
+            for (QuUserNum quUserNum : deptByCompany) {
+                for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
+                    if (quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
+                        quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
+                    }
+                }
+                for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
+                    if (quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
+                        quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
+                    }
+                }
+                for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
+                    if (quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
+                        quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
+                    }
+                }
+            }
+
+        } else if (quUserNumDto.getQuMarks().equals(QuMarks.USER_MARK.getCode())) {
+            // 根据公司和用户ID列表查询用户数量统计信息
+            deptByCompany = sysUserMapper.getUserDetail(quUserNumDto);
+
+            // 获取用户主订单待核保订单数量
+            List<QuUserNum> mainWaitAuditSums = sysUserMapper.getUserMainWaitAuditSum(quUserNumDto);
+            // 获取用户主订单已核保待缴费订单数量
+            List<QuUserNum> mainWaitPaySums = sysUserMapper.getUserMainWaitPaySum(quUserNumDto);
+            // 获取用户主订单已承包订单数量
+            List<QuUserNum> mainAcceptInsuranceSums = sysUserMapper.getUserMainAcceptInsuranceSum(quUserNumDto);
+
+            for (QuUserNum quUserNum : deptByCompany) {
+                for (QuUserNum mainWaitAuditSum : mainWaitAuditSums) {
+                    if (quUserNum.getUserId().equals(mainWaitAuditSum.getUserId()) && quUserNum.getCompanyId().equals(mainWaitAuditSum.getCompanyId())) {
+                        quUserNum.setMainWaitAuditSum(mainWaitAuditSum.getMainWaitAuditSum());
+                    }
+                }
+                for (QuUserNum mainWaitPaySum : mainWaitPaySums) {
+                    if (quUserNum.getUserId().equals(mainWaitPaySum.getUserId()) && quUserNum.getCompanyId().equals(mainWaitPaySum.getCompanyId())) {
+                        quUserNum.setMainWaitPaySum(mainWaitPaySum.getMainWaitPaySum());
+                    }
+                }
+                for (QuUserNum mainAcceptInsuranceSum : mainAcceptInsuranceSums) {
+                    if (quUserNum.getUserId().equals(mainAcceptInsuranceSum.getUserId()) && quUserNum.getCompanyId().equals(mainAcceptInsuranceSum.getCompanyId())) {
+                        quUserNum.setMainAcceptInsuranceSum(mainAcceptInsuranceSum.getMainAcceptInsuranceSum());
+                    }
+                }
+            }
+        }
 
         List<QuUserNum> paginate = paginate(deptByCompany, quUserNumDto.getPageNum(), quUserNumDto.getPageSize());
 
@@ -990,9 +1047,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
      */
     @Override
     public List<SysUserBaseVO> getAllUsersByHospitality(SysUserVOExt sysUserVOExt) {
-        if(StringUtils.isNotEmpty(sysUserVOExt.getUserId()) || StringUtils.isNotEmpty(sysUserVOExt.getIdentity()) ||
-                StringUtils.isNotEmpty(sysUserVOExt.getMobile()) || StringUtils.isNotEmpty(sysUserVOExt.getName())){
-            return  super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
+        if (StringUtils.isNotEmpty(sysUserVOExt.getUserId()) || StringUtils.isNotEmpty(sysUserVOExt.getIdentity()) ||
+                StringUtils.isNotEmpty(sysUserVOExt.getMobile()) || StringUtils.isNotEmpty(sysUserVOExt.getName())) {
+            return super.baseMapper.getAllUsersByHospitality(sysUserVOExt);
         }
         return new ArrayList<SysUserBaseVO>();
     }

+ 224 - 2
src/main/resources/mapper/modules/admin/SysUserMapper.xml

@@ -388,6 +388,9 @@
         COUNT(*) AS quoteNum,
         SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END + CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS submitNum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS hasInsuredNum,
+        SUM(CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS subWaitAuditSum,
+        SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END) AS subWaitPaySum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS subAcceptInsuranceSum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.jqpremium ELSE 0 END) AS jqpremiumsum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.sypremium ELSE 0 END) AS sypremiumsum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.taxamount ELSE 0 END) AS taxamountsum,
@@ -396,7 +399,7 @@
         ins_orders io
         RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
         WHERE
-        iac.orderstatus IN ( 1, 2, 3 )
+        iac.orderstatus IN ( 0 ,1, 2, 3, 4 )
         <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
             and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
         </if>
@@ -410,6 +413,29 @@
         SUBSTRING(io.userid, 3, #{quUserNumDto.grouping})
     </select>
 
+    <select id="getMainOrderDetails" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+            SUBSTRING(io.userid, 3, 4) AS areacode,
+            SUM(CASE WHEN io.orderstatus = 1 THEN 1 ELSE 0 END) AS mainWaitAuditSum,
+            SUM(CASE WHEN io.orderstatus = 2 THEN 1 ELSE 0 END) AS mainWaitPaySum,
+            SUM(CASE WHEN io.orderstatus = 3 THEN 1 ELSE 0 END) AS mainAcceptInsuranceSum
+        FROM
+            ins_orders io
+        WHERE
+            io.orderstatus IN (1,2,3)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+            SUBSTRING(io.userid, 3, 4)
+    </select>
+
     <select id="getUserByCompany" resultType="com.ydtech.modules.admin.model.QuUserNum">
         SELECT
         iac.company_id as companyId,
@@ -417,6 +443,9 @@
         COUNT(*) AS quoteNum,
         SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END + CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS submitNum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS hasInsuredNum,
+        SUM(CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS subWaitAuditSum,
+        SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END) AS subWaitPaySum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS subAcceptInsuranceSum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.jqpremium ELSE 0 END) AS jqpremiumsum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.sypremium ELSE 0 END) AS sypremiumsum,
         SUM(CASE WHEN iac.orderstatus = 3 THEN iac.taxamount ELSE 0 END) AS taxamountsum,
@@ -425,7 +454,80 @@
         ins_orders io
         RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
         WHERE
-        iac.orderstatus IN ( 1, 2, 3 )
+        iac.orderstatus IN ( 0, 1, 2, 3, 4 )
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+    <select id="getComMainWaitAuditSum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        SUM(CASE WHEN io.orderstatus = 1 THEN 1 ELSE 0 END) AS mainWaitAuditSum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (1)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+    <select id="getComMainWaitPaySum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        SUM(CASE WHEN io.orderstatus = 2 THEN 1 ELSE 0 END) AS mainWaitPaySum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (2)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+
+    <select id="getComMainAcceptInsuranceSum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        SUM(CASE WHEN io.orderstatus = 3 THEN 1 ELSE 0 END) AS mainAcceptInsuranceSum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (3)
         <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
             and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
         </if>
@@ -440,6 +542,126 @@
         iac.inscompany
     </select>
 
+    <select id="getUserDetail" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        io.userid,
+        io.username,
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        COUNT(*) AS quoteNum,
+        SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END + CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS submitNum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS hasInsuredNum,
+        SUM(CASE WHEN iac.orderstatus = 1 THEN 1 ELSE 0 END) AS subWaitAuditSum,
+        SUM(CASE WHEN iac.orderstatus = 2 THEN 1 ELSE 0 END) AS subWaitPaySum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN 1 ELSE 0 END) AS subAcceptInsuranceSum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN iac.jqpremium ELSE 0 END) AS jqpremiumsum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN iac.sypremium ELSE 0 END) AS sypremiumsum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN iac.taxamount ELSE 0 END) AS taxamountsum,
+        SUM(CASE WHEN iac.orderstatus = 3 THEN iac.jqpremium ELSE 0 END + CASE WHEN iac.orderstatus = 3 THEN iac.sypremium ELSE 0 END) AS totalSumpremium
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN ( 0 ,1, 2, 3, 4 )
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        io.userid,
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+    <select id="getUserMainWaitAuditSum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        io.userid,
+        io.username,
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        COUNT(*) AS quoteNum,
+        SUM(CASE WHEN io.orderstatus = 1 THEN 1 ELSE 0 END) AS mainWaitAuditSum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (1)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        io.userid,
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+    <select id="getUserMainWaitPaySum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        io.userid,
+        io.username,
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        COUNT(*) AS quoteNum,
+        SUM(CASE WHEN io.orderstatus = 2 THEN 1 ELSE 0 END) AS mainWaitPaySum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (2)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        io.userid,
+        iac.company_id,
+        iac.inscompany
+    </select>
+
+
+    <select id="getUserMainAcceptInsuranceSum" resultType="com.ydtech.modules.admin.model.QuUserNum">
+        SELECT
+        io.userid,
+        io.username,
+        iac.company_id as companyId,
+        iac.inscompany as insCompany,
+        COUNT(*) AS quoteNum,
+        SUM(CASE WHEN io.orderstatus = 3 THEN 1 ELSE 0 END) AS mainAcceptInsuranceSum
+        FROM
+        ins_orders io
+        RIGHT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        WHERE
+        iac.orderstatus IN (3)
+        <if test="quUserNumDto.createTimeStart != null and quUserNumDto.createTimeEnd != null">
+            and io.createtime BETWEEN #{quUserNumDto.createTimeStart} AND #{quUserNumDto.createTimeEnd}
+        </if>
+        <if test="quUserNumDto.userIds != null">
+            and io.userid IN
+            <foreach collection="quUserNumDto.userIds" item="id" index="index" open="(" close=")" separator=",">
+                #{id}
+            </foreach>
+        </if>
+        GROUP BY
+        io.userid,
+        iac.company_id,
+        iac.inscompany
+    </select>
 
     <select id="getAllUsersByHospitality" resultType="com.ydtech.modules.admin.model.vo.SysUserBaseVO">
         SELECT