Sfoglia il codice sorgente

1.控制台大订单

wuhp 2 anni fa
parent
commit
d4b9550d8b

+ 35 - 4
src/main/java/com/ydtech/modules/admin/controller/CompanyDataReportConroller.java

@@ -1,10 +1,8 @@
 package com.ydtech.modules.admin.controller;
 
 import com.ydtech.core.page.HttpResult;
-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.company.*;
+import com.ydtech.modules.admin.model.vo.OrdersDataVo;
 import com.ydtech.modules.admin.service.CompanyDataReportService;
 import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
@@ -61,4 +59,37 @@ public class CompanyDataReportConroller {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订单
+     */
+    @PostMapping("querOrdersDataPage")
+    @ApiOperation(value = "查询控制台大订单")
+    public HttpResult<BasePageResult<OrdersDataDto>> querOrdersDataPage(@RequestBody OrdersDataVo ordersDataVo) {
+        try{
+            BasePageResult<OrdersDataDto> result = companyDataReportService.querOrdersDataPage(ordersDataVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订合计
+     */
+    @PostMapping("querOrdersamountTo")
+    @ApiOperation(value = "查询控制台大订单合计")
+    public HttpResult<OrdersDataDto> querOrdersamountTo(@RequestBody OrdersDataVo ordersDataVo) {
+        try{
+            OrdersDataDto result = companyDataReportService.querOrdersamountTo(ordersDataVo);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
 }

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

@@ -0,0 +1,32 @@
+package com.ydtech.modules.admin.model.report.company;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.baomidou.mybatisplus.annotation.TableField;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@Data
+@ApiModel("控制台大订单")
+
+public class OrdersDataDto  implements Serializable {
+
+
+    @ApiModelProperty("车牌号")
+    private String licenseno;
+
+    @ApiModelProperty("车架号")
+    private String frameno;
+
+    @ApiModelProperty("订单数")
+    private String orderNumber;
+
+    @ApiModelProperty("成交率")
+    private String closeRate;
+
+    @ApiModelProperty("合作公司")
+    private String namesimple;
+
+}

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

@@ -0,0 +1,59 @@
+package com.ydtech.modules.admin.model.vo;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: whp
+ *  @Date: 2024/8/31
+ *  @Description:  查询控制台大订单
+ */
+@Data
+@ApiModel("查询控制台大订单查询对象")
+
+public class OrdersDataVo {
+
+    /***
+     *  开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private String  beginDate;
+    /***
+     *  结束时间
+     */
+    @ApiModelProperty("结束时间")
+    private String endDate;
+
+    @ApiModelProperty("页码")
+    private int pageNum;
+
+    @ApiModelProperty("页数")
+    private int pageSize;
+
+    /***
+     *  时间类型  1.近1月 2.近3月  3.近半年
+     */
+    @ApiModelProperty("时间类型  1.近1月 2.近3月  3.近半年")
+    private String  dateType;
+
+
+    @ApiModelProperty("车牌号")
+    private String licenseno;
+
+    @ApiModelProperty("业务员工号")
+    private String userId;
+
+    @ApiModelProperty("业务员名称")
+    private String userName;
+
+    @ApiModelProperty("手机号")
+    private String mobile;
+
+    @ApiModelProperty("车架号")
+    private String frameno;
+    @ApiModelProperty("所属机构")
+    private String deptId;
+}

+ 17 - 4
src/main/java/com/ydtech/modules/admin/service/CompanyDataReportService.java

@@ -1,10 +1,8 @@
 package com.ydtech.modules.admin.service;
 
 
-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.company.*;
+import com.ydtech.modules.admin.model.vo.OrdersDataVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 /**
@@ -29,6 +27,21 @@ public interface CompanyDataReportService {
      *  @Description: 查询报价次数对象
      */
     BasePageResult<CompanyQutationCountDataDto> queryCompanyQutationCountDataPage(CompanyQutationCountDataQueryDto companyQutationCountDataQueryDto);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订单
+     */
+    BasePageResult<OrdersDataDto> querOrdersDataPage(OrdersDataVo ordersDataVo);
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订合计
+     */
+    OrdersDataDto querOrdersamountTo(OrdersDataVo ordersDataVo);
 }
 
 

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

@@ -1,15 +1,14 @@
 package com.ydtech.modules.admin.service.impl;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-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.company.*;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountDataDto;
+import com.ydtech.modules.admin.model.vo.OrdersDataVo;
 import com.ydtech.modules.admin.service.CompanyDataReportService;
 import com.ydtech.modules.admin.utils.SliceUpDateUtil;
 import com.ydtech.modules.order.dao.InsAreaCompanyMapper;
 import com.ydtech.modules.order.entity.BasePageResult;
+import org.apache.commons.lang3.ObjectUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -96,6 +95,53 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
         map.put("endDate",endDateStr);
         return map;
     }
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订单
+     */
+    @Override
+    public BasePageResult<OrdersDataDto> querOrdersDataPage(OrdersDataVo ordersDataVo) {
+        Page<OrdersDataDto> page = new Page<>(ordersDataVo.getPageNum(), ordersDataVo.getPageSize());
+
+
+        //判断开始时间和结束时间是否为空,如果为空的走时间类型逻辑
+        HashMap<String, String> dateMapByType = getDateMapByType(ordersDataVo.getDateType(), ordersDataVo.getBeginDate(), ordersDataVo.getEndDate());
+
+        ordersDataVo.setBeginDate(dateMapByType.get("startDate"));
+        ordersDataVo.setEndDate(dateMapByType.get("endDate"));
+        Page<OrdersDataDto> resultSubOrder = insAreaCompanyMapper.querOrdersDataPage(ordersDataVo, page);
+        return new BasePageResult<>(ordersDataVo.getPageNum(), page.getSize(), resultSubOrder.getTotal(), page.getPages(),
+                resultSubOrder.getRecords());
+    }
+
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订合计
+     */
+    @Override
+    public OrdersDataDto querOrdersamountTo(OrdersDataVo ordersDataVo) {
+        OrdersDataDto ordersDataDto = new OrdersDataDto();
+        //判断开始时间和结束时间是否为空,如果为空的走时间类型逻辑
+        HashMap<String, String> dateMapByType = getDateMapByType(ordersDataVo.getDateType(), ordersDataVo.getBeginDate(), ordersDataVo.getEndDate());
+        ordersDataVo.setBeginDate(dateMapByType.get("startDate"));
+        ordersDataVo.setEndDate(dateMapByType.get("endDate"));
+        OrdersDataDto resultSubOrder = insAreaCompanyMapper.querOrdersamountTo(ordersDataVo);
+        if(ObjectUtils.isNotEmpty(resultSubOrder) && StringUtils.isNotEmpty(resultSubOrder.getFrameno())){
+            ordersDataDto.setFrameno(resultSubOrder.getFrameno());
+        }
+        OrdersDataDto resultOrderNumber = insAreaCompanyMapper.querResultOrderNumber(ordersDataVo);
+
+        if(ObjectUtils.isNotEmpty(resultOrderNumber) && StringUtils.isNotEmpty(resultOrderNumber.getOrderNumber()) &&   StringUtils.isNotEmpty(resultOrderNumber.getCloseRate())){
+            ordersDataDto.setOrderNumber(resultOrderNumber.getOrderNumber());
+            ordersDataDto.setCloseRate(resultOrderNumber.getCloseRate());
+        }
+        return ordersDataDto;
+    }
 }
 
 

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

@@ -7,14 +7,12 @@ import com.ydtech.modules.admin.model.dto.AllpremiumDto;
 import com.ydtech.modules.admin.model.dto.PremiumReportDto;
 import com.ydtech.modules.admin.model.dto.QxFrontlineAgentDto;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
-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.company.*;
 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;
 import com.ydtech.modules.admin.model.report.opetationData.QuotationCountQueryDto;
+import com.ydtech.modules.admin.model.vo.OrdersDataVo;
 import com.ydtech.modules.admin.model.vo.SubOrder;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.InsAreaCompany;
@@ -248,6 +246,20 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      *  @Description:  通过用户id查询金额数据
      */
     Double  getOrderPremiumByUserIds(@Param("ids") List<String>  ids);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订单
+     */
+    Page<OrdersDataDto> querOrdersDataPage(@Param("vo") OrdersDataVo ordersDataVo,@Param("page") Page<OrdersDataDto> page);
+    /**
+     *  @version
+     *  @author: whp
+     *  @Date: 2024/8/31 15:35
+     *  @Description:   查询控制台大订合计
+     */
+    OrdersDataDto querOrdersamountTo( @Param("vo") OrdersDataVo ordersDataVo);
 
     /**
      *  @version
@@ -257,6 +269,7 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      */
     TaskStatisticsDto numberQuotationsByUserIds(@Param("ids") List<String>  ids,@Param("month") String month);
 
+    OrdersDataDto querResultOrderNumber(@Param("vo") OrdersDataVo ordersDataVo);
 }
 
 

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

@@ -1569,6 +1569,139 @@
             </if>
         </where>
     </select>
+    <select id="querOrdersDataPage"  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"
+        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
+        <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>
+        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  (
+
+        SELECT
+        io.frameno AS "frameno"
+        FROM
+        ins_orders io
+        LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+        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>
+        GROUP BY
+        io.frameno
+                       ) a
+    </select>
+
+    <select id="querResultOrderNumber" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        SELECT
+            count( io.orderno ) AS "orderNumber",
+        IFNULL(count(CASE WHEN io.orderstatus = '3' THEN 1 ELSE 0 END),0) / (IFNULL(count(CASE WHEN io.orderstatus = '2' THEN 1 ELSE 0 END),0) +  IFNULL(count(CASE WHEN io.orderstatus = '3' THEN 1 ELSE 0 END),0))  AS "closeRate"
+        FROM
+            ins_orders io
+                LEFT JOIN ins_area_company iac ON iac.orderno = io.orderno
+                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>
+
+    </select>
     <select id="numberQuotationsByUserIds"  resultType="com.ydtech.modules.admin.model.dto.TaskStatisticsDto">
         SELECT
         count(iac.id) as "orderNumber",