Explorar o código

1.控制台大订单

wuhp %!s(int64=2) %!d(string=hai) anos
pai
achega
49342cd5df

+ 9 - 0
src/main/java/com/ydtech/modules/admin/model/report/company/OrdersDataDto.java

@@ -7,6 +7,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 
 @Data
 @ApiModel("控制台大订单")
@@ -29,4 +30,12 @@ public class OrdersDataDto  implements Serializable {
     @ApiModelProperty("合作公司")
     private String namesimple;
 
+    @ApiModelProperty("订单号")
+    private String orderno;
+
+    @ApiModelProperty("承保数")
+    private Integer underwriting;
+
+    @ApiModelProperty("分组code")
+    private String groupByCode;
 }

+ 7 - 0
src/main/java/com/ydtech/modules/admin/model/vo/OrdersDataVo.java

@@ -56,4 +56,11 @@ public class OrdersDataVo {
     private String frameno;
     @ApiModelProperty("所属机构")
     private String deptId;
+
+    @ApiModelProperty("订单状态")
+    private String orderstatus;
+
+
+    @ApiModelProperty("订单号")
+    private String orderno;
 }

+ 2 - 4
src/main/java/com/ydtech/modules/admin/service/impl/CompanyDataReportServiceImpl.java

@@ -14,10 +14,8 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  *  @version

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

@@ -284,6 +284,10 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
     CompanyQutationCountDataDto getInsAreaCompanyError(@Param("vo") CompanyQutationCountDataQueryDto companyQutationCountDataQueryDto);
 
 
+    List<OrdersDataDto> getOrdersGroupByLicenseno(@Param("vo") OrdersDataVo ordersDataVo);
+
+
+    List<OrdersDataDto> selectByOrdersDataVo(@Param("vo") OrdersDataVo dtoParams);
 }
 
 

+ 95 - 18
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -858,10 +858,10 @@
         iac.company_id as "companId",
         count( iac.orderstatus ) AS qutationCount,
         count( iac.id ) AS orderSuccessNumberRate,
-        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) AS underwritingCount,
+        COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) +  COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )  AS underwritingCount,
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) AS qutationInsureCount,
-        COUNT( CASE WHEN iac.orderstatus = 2 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 = 2 THEN 1 END ) +  COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )) / count( iac.orderstatus ) AS passRate,
+        COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END ) /   (COUNT( CASE WHEN iac.orderstatus = 2 THEN 1 END ) +  COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )) AS closeRate,
         COUNT( CASE WHEN iac.orderstatus = 3 THEN 1 END )/ count( iac.orderstatus ) AS contributionRate,
         COUNT(CASE WHEN  agree.audit_type =1 and ifa.auditstatus =1 and iac.orderstatus =3 THEN 1 END) as "numberManual"
         FROM
@@ -1693,21 +1693,84 @@
         </where>
     </select>
     <select id="querOrdersDataPage"  resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        SELECT
+        count( 0 ) AS "orderNumber",
+        SUM( CASE WHEN orderstatus = '3' THEN 1 ELSE 0 END ) / count( 0 )  AS "closeRate",
+        b.licenseno as "licenseno",
+        b.frameno as "frameno",
+        b.inscompany as "namesimple"
+        FROM
+        (
+        SELECT
+        io.orderstatus AS orderstatus,
+        io.frameno AS frameno,
+        ifnull(io.licenseno, '') AS licenseno,
+        ifnull(
+        (
+        SELECT
+        ifnull( inscompany, '' )
+        FROM
+        ins_area_company
+        WHERE
+        orderno = io.orderno
+        AND io.orderstatus = 3
+        AND orderstatus = 3
+        ORDER BY
+        createtime DESC
+        LIMIT 1
+        ), ''
+        ) AS inscompany
+        FROM
+        ins_orders io
+        LEFT JOIN sys_user  su  on io.userid=su.id
+        <where>
+            1=1
+            <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
+                AND io.createtime BETWEEN #{vo.beginDate} AND #{vo.endDate}
+            </if>
+
+            <if test="vo.licenseno  != null  and  vo.licenseno!=''  ">
+                AND io.licenseno =#{vo.licenseno}
+            </if>
+
+            <if test="vo.userId  != null  and  vo.userId!=''  ">
+                AND io.userId =#{vo.userId}
+            </if>
+
+            <if test="vo.userName  != null  and  vo.userName!=''  ">
+                AND su.name =#{vo.userName}
+            </if>
+
+            <if test="vo.mobile  != null  and  vo.mobile!=''  ">
+                AND su.mobile =#{vo.mobile}
+            </if>
+
+            <if test="vo.frameno  != null  and  vo.frameno!=''  ">
+                AND su.frameno =#{vo.frameno}
+            </if>
+            <if test="vo.deptId  != null  and  vo.deptId!=''  ">
+                and io.deptid like concat('%', #{vo.deptId}, '%')
+            </if>
+        </where>
+        ) b
+        GROUP  BY
+        b.licenseno,
+        b.frameno,
+        b.inscompany,
+        b.orderstatus
+    </select>
+
+    <select id="getOrdersGroupByLicenseno"  resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
         SELECT
             io.licenseno AS "licenseno",
             io.frameno AS "frameno",
-            pa.partner_companies_id  as 'partnerCompaniesId',
-            count(io.orderno) as "orderNumber",
-            eic.namesimple as "namesimple",
-            IFNULL(count(CASE WHEN iac.orderstatus = '3' THEN 1 ELSE 0 END),0) / (IFNULL(count(CASE WHEN iac.orderstatus = '2' THEN 1 ELSE 0 END),0) +  IFNULL(count(CASE WHEN iac.orderstatus = '3' THEN 1 ELSE 0 END),0))  AS "closeRate"
+            io.orderstatus as "orderstatus",
+            io.orderno as "orderno"
         FROM
-        ins_area_company iac
-                LEFT JOIN ins_orders io ON iac.orderno = io.orderno
-                LEFT JOIN ptl_agreement pa ON pa.id = iac.agreement_id
-                LEFT JOIN esm_ins_company eic ON eic.id = pa.insurance_company_id
-                LEFT JOIN sys_user  su  on io.userid=su.id
+            ins_orders io
+            LEFT JOIN sys_user  su  on io.userid=su.id
         <where>
-            1=1
+            io.licenseno  is not  null
             <if test="vo.beginDate  != null  and  vo.beginDate!=''  and vo.endDate  != null  and  vo.endDate!=''">
                 AND io.createtime BETWEEN #{vo.beginDate} AND #{vo.endDate}
             </if>
@@ -1735,13 +1798,11 @@
                 and io.deptid like concat('%', #{vo.deptId}, '%')
             </if>
         </where>
-        GROUP BY
-            io.licenseno,
-            io.frameno,
-            pa.partner_companies_id,
-            eic.namesimple
+
+
 
     </select>
+
     <select id="querOrdersamountTo" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
        select count(a.frameno)   as "frameno" from  (
 
@@ -1846,4 +1907,20 @@
             </if>
         </where>
     </select>
+
+    <select id="selectByOrdersDataVo" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        select
+        iac.inscompany   as "namesimple"
+        from
+        ins_area_company iac
+        <where>
+            1=1
+            <if test="vo.orderstatus != null  and vo.orderstatus != '' ">
+                AND iac.orderstatus =#{vo.orderstatus}
+            </if>
+           <if test="vo.orderno  !=null  and  vo.orderno  !='' ">
+                AND iac.orderno =#{vo.orderno}
+            </if>
+        </where>
+    </select>
 </mapper>