Przeglądaj źródła

提交保险公司的保险公司-签单保费
保险公司-报价次数
后续处理 日平台、目标保费、完成进度、毛利润率 这些

hxl13994548489 2 lat temu
rodzic
commit
f86a10f867

+ 18 - 0
src/main/java/com/ydtech/modules/order/dao/InsAreaCompanyMapper.java

@@ -4,6 +4,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.dto.AllpremiumDto;
 import com.ydtech.modules.admin.model.dto.PremiumReportDto;
+import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataDto;
+import com.ydtech.modules.admin.model.report.company.CompanyPremiumDataQueryDto;
+import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataDto;
+import com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataQueryDto;
 import com.ydtech.modules.admin.model.report.opetationData.BusinessDataDto;
 import com.ydtech.modules.admin.model.report.opetationData.BusinessDataQueryDto;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountDataDto;
@@ -154,6 +158,20 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      *  @Description: 查询报价次数小订单的数据
      */
     Page<QuotationCountDataDto> queryQuotationSubOrderCountDataPage(QuotationCountQueryDto quotationCountQueryDto, Page<QuotationCountDataDto> page, List<String> userIds, String flag);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 15:42
+     *  @Description:  查询保险公司的签单保费
+     */
+    Page<CompanyPremiumDataDto> queryCompanyPremiumDataPage(CompanyPremiumDataQueryDto companyPremiumDataQueryDto, Page<QuotationCountDataDto> page);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 16:04
+     *  @Description:  查询保险公司的报价次数
+     */
+    Page<CompanyQutationCountDataDto> queryCompanyQutationCountDataPage(CompanyQutationCountDataQueryDto companyQutationCountDataQueryDto, Page<QuotationCountDataDto> page);
 }
 
 

+ 60 - 0
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -729,4 +729,64 @@
             group by o.userid,o.username,o.orderstatus
         </if>
     </select>
+    <select id="queryCompanyPremiumDataPage"
+            resultType="com.ydtech.modules.admin.model.report.company.CompanyPremiumDataDto">
+        SELECT
+            agree.insurance_company_id AS companyId,
+            agree.insurance_company AS companyName,
+            agree.partner_companies_id AS parterCompanyId,
+            ins.NAME AS parterCompanyName,
+            sum( iac.sumpremium ) AS signeSumPremiumAmount
+        FROM
+            ins_area_company iac
+                LEFT JOIN ptl_agreement agree ON iac.agreement_id = agree.id
+                LEFT JOIN esm_ins_company ins ON agree.partner_companies_id = ins.id
+        WHERE
+            iac.orderstatus = 3
+          and
+            agree.id  is not null
+            <if test="vo.companyId  != null  and  vo.companyId!='' ">
+                agree.insurance_company_id = #{vo.companyId}
+            </if>
+            <if test="vo.parterCompanyId  != null  and  vo.parterCompanyId!='' ">
+                agree.insurance_company_id = #{vo.parterCompanyId}
+            </if>
+        GROUP BY
+            agree.insurance_company_id,
+            agree.insurance_company,
+            agree.partner_companies_id,
+            ins.NAME
+    </select>
+
+    <select id="queryCompanyQutationCountDataPage"
+            resultType="com.ydtech.modules.admin.model.report.company.CompanyQutationCountDataDto">
+        SELECT
+            agree.insurance_company_id AS companyId,
+            agree.insurance_company AS companyName,
+            agree.partner_companies_id AS parterCompanyId,
+            ins.NAME AS parterCompanyName,
+            COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END ) AS qutationCount,
+            COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+            COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
+            COUNT( CASE WHEN iac.orderstatus = 0 THEN 1 END )/ count(iac.orderstatus) AS passRate,
+            COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )/ count(iac.orderstatus) AS closeRate,
+            COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )/ COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS contributionRate
+        FROM
+            ins_area_company iac
+                LEFT JOIN ptl_agreement agree ON iac.agreement_id = agree.id
+                LEFT JOIN esm_ins_company ins ON agree.partner_companies_id = ins.id
+        WHERE
+            agree.id IS NOT NULL
+            <if test="vo.companyId  != null  and  vo.companyId!='' ">
+                agree.insurance_company_id = #{vo.companyId}
+            </if>
+            <if test="vo.parterCompanyId  != null  and  vo.parterCompanyId!='' ">
+                agree.insurance_company_id = #{vo.parterCompanyId}
+            </if>
+        GROUP BY
+            agree.insurance_company_id,
+            agree.insurance_company,
+            agree.partner_companies_id,
+            ins.NAME
+    </select>
 </mapper>