Bläddra i källkod

Merge remote-tracking branch 'origin/test' into test

helixiao 2 år sedan
förälder
incheckning
c582759ec8

+ 12 - 0
src/main/java/com/ydtech/modules/admin/controller/CompanyDataReportConroller.java

@@ -3,6 +3,7 @@ package com.ydtech.modules.admin.controller;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.report.company.*;
 import com.ydtech.modules.admin.model.vo.OrdersDataVo;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.CompanyDataReportService;
 import com.ydtech.modules.order.entity.BasePageResult;
 import io.swagger.annotations.Api;
@@ -92,4 +93,15 @@ public class CompanyDataReportConroller {
             return HttpResult.error("查询错误"+e.getMessage());
         }
     }
+
+    /**
+     * @description:   大订单导出
+     * @author: whp
+     * @date: 2024/9/13
+     **/
+    @PostMapping("/largeOrdersExcel")
+    @ApiOperation(value = "大订单导出")
+    public HttpResult largeOrdersExcel(@RequestBody OrdersDataVo ordersDataVo) {
+        return this.companyDataReportService.largeOrdersExcel(ordersDataVo);
+    }
 }

+ 20 - 0
src/main/java/com/ydtech/modules/admin/dao/CompanyDataReportMapper.java

@@ -0,0 +1,20 @@
+package com.ydtech.modules.admin.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ydtech.modules.admin.model.report.company.OrdersDataDto;
+import com.ydtech.modules.admin.model.vo.OrdersDataVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface CompanyDataReportMapper extends BaseMapper<OrdersDataDto> {
+    List<OrdersDataDto> querOrders(@Param("vo") OrdersDataVo ordersDataVo);
+
+    OrdersDataDto querOrdersTotal(@Param("vo")  OrdersDataVo ordersDataVo);
+
+    OrdersDataDto smallQuerOrders(@Param("vo") OrdersDataVo ordersDataVo);
+
+
+}

+ 46 - 0
src/main/java/com/ydtech/modules/admin/model/dto/OrdersDataExcel.java

@@ -0,0 +1,46 @@
+package com.ydtech.modules.admin.model.dto;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+@Data
+public class OrdersDataExcel {
+    @ExcelProperty(value = "发动机号",index = 0)
+    private String modelCode;
+
+    @ExcelProperty(value = "车型",index = 1)
+    private String modelcname;
+    @ApiModelProperty("车牌号")
+
+    @ExcelProperty(value = "车牌号",index = 2)
+    private String licenseno;
+
+    @ExcelProperty(value = "车架号",index = 3)
+    private String frameno;
+
+    @ExcelProperty(value = "订单数",index = 4)
+    private String orderNumber;
+
+    @ExcelProperty(value = "成交率",index = 5)
+    private String closeRate;
+
+    @ExcelProperty(value = "承保公司",index = 6)
+    private String namesimple;
+
+
+    /**
+     * 被保人信息
+     */
+    @ExcelIgnore
+    private String insureinfo;
+
+    /**
+     * 车辆信息
+     */
+    @ExcelIgnore
+    private String carinfo;
+
+
+}

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

@@ -1,7 +1,9 @@
 package com.ydtech.modules.admin.model.report.company;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -48,4 +50,31 @@ public class OrdersDataDto  implements Serializable {
      */
     @ApiModelProperty("结束时间")
     private String endDate;
+
+    @ApiModelProperty("年度")
+    private String year;
+
+    /**
+     * 被保人信息
+     */
+    @ApiModelProperty("被保人信息")
+    private String insureinfo;
+
+    /**
+     * 车辆信息
+     */
+    @ApiModelProperty("车辆信息")
+    private String carinfo;
+
+    @ApiModelProperty("被保人姓名")
+    private String insureinfoName;
+
+    @ApiModelProperty("被保人电话")
+    private String insureinfoMobile;
+
+    @ApiModelProperty("发动机号")
+    private String modelCode;
+
+    @ApiModelProperty("车型")
+    private String modelcname;
 }

+ 3 - 0
src/main/java/com/ydtech/modules/admin/model/vo/BusinessAgentData.java

@@ -1,5 +1,8 @@
 package com.ydtech.modules.admin.model.vo;
 
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;

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

@@ -63,4 +63,8 @@ public class OrdersDataVo {
 
     @ApiModelProperty("订单号")
     private String orderno;
+
+
+    @ApiModelProperty("年份")
+    private String year;
 }

+ 9 - 0
src/main/java/com/ydtech/modules/admin/service/CompanyDataReportService.java

@@ -1,8 +1,10 @@
 package com.ydtech.modules.admin.service;
 
 
+import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.report.company.*;
 import com.ydtech.modules.admin.model.vo.OrdersDataVo;
+import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
 /**
@@ -42,6 +44,13 @@ public interface CompanyDataReportService {
      *  @Description:   查询控制台大订合计
      */
     OrdersDataDto querOrdersamountTo(OrdersDataVo ordersDataVo);
+    /**
+     * @description:   大订单导出
+     * @author: whp
+     * @date: 2024/9/13
+     **/
+    HttpResult largeOrdersExcel(OrdersDataVo ordersDataVo);
+
 }
 
 

+ 63 - 7
src/main/java/com/ydtech/modules/admin/service/impl/CompanyDataReportServiceImpl.java

@@ -1,20 +1,34 @@
 package com.ydtech.modules.admin.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.fasterxml.jackson.annotation.JsonManagedReference;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.dao.CompanyDataReportMapper;
+import com.ydtech.modules.admin.model.dto.OrdersDataExcel;
+import com.ydtech.modules.admin.model.dto.TaskStatisticsExcel;
 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.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.CompanyDataReportService;
 import com.ydtech.modules.admin.utils.SliceUpDateUtil;
+import com.ydtech.modules.inv.utils.EasyExcelUtils;
 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.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
+import java.io.IOException;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -30,6 +44,14 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
 
     @Autowired
     private InsAreaCompanyMapper   insAreaCompanyMapper;
+    @Autowired
+    private CompanyDataReportMapper companyDataReportMapper;
+
+    @Value("${upload.file.path}")
+    private String uploadPath;
+
+    @Value("${upload.file.url}")
+    private String uploadUrl;
 
     /**
      *  @version
@@ -130,11 +152,8 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
     @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);
@@ -157,8 +176,6 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
                 record.setNamesimple(dto.getNamesimple());
 
             }
-
-
         }
         return new BasePageResult<>(ordersDataVo.getPageNum(), page.getSize(), resultSubOrder.getTotal(), page.getPages(),
                 resultSubOrder.getRecords());
@@ -176,9 +193,20 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
         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);
+        OrdersDataDto  bigOrderNo=companyDataReportMapper.querOrdersTotal(ordersDataVo);
+        OrdersDataDto smallOrderNo  = companyDataReportMapper.smallQuerOrders(ordersDataVo);
+        if(ObjectUtils.isNotEmpty(smallOrderNo) && ObjectUtils.isNotEmpty(bigOrderNo)){
+            String smallorderNumber = smallOrderNo.getOrderNumber();
+            String bigOrderNumber = bigOrderNo.getOrderNumber();
+            BigDecimal smallBigDecimal = new BigDecimal(smallorderNumber);
+            BigDecimal bigBigDecimal = new BigDecimal(bigOrderNumber);
+            BigDecimal result = smallBigDecimal.divide(bigBigDecimal, 2, RoundingMode.HALF_UP);
+            bigOrderNo.setCloseRate(result.toString());
+        }
 
-        return resultSubOrder;
+
+
+        return bigOrderNo;
     }
     private BigDecimal calculateTotal(BigDecimal value1, BigDecimal value2, BigDecimal value3) {
         BigDecimal total = BigDecimal.ZERO;
@@ -196,6 +224,34 @@ public class CompanyDataReportServiceImpl implements CompanyDataReportService {
 
         return total;
     }
+
+    /**
+     * @description:   大订单导出
+     * @author: whp
+     * @date: 2024/9/13
+     **/
+    @Override
+    public HttpResult largeOrdersExcel(OrdersDataVo ordersDataVo) {
+
+        //判断开始时间和结束时间是否为空,如果为空的走时间类型逻辑
+        HashMap<String, String> dateMapByType = getDateMapByType(ordersDataVo.getDateType(), ordersDataVo.getBeginDate(), ordersDataVo.getEndDate());
+        ordersDataVo.setBeginDate(dateMapByType.get("startDate"));
+        ordersDataVo.setEndDate(dateMapByType.get("endDate"));
+
+        List<OrdersDataExcel> resultSubOrder = insAreaCompanyMapper.querOrdersDataListExcel(ordersDataVo);
+        String uploadPath = this.uploadPath + "/excel/";
+        Path path = Paths.get(uploadPath);
+        if (!Files.exists(path)) {
+            try {
+                Files.createDirectories(path);
+            } catch (IOException e) {
+                e.printStackTrace();
+            }
+        }
+        String fileName = EasyExcelUtils.downExcel(uploadPath, "控制台大订单导出", OrdersDataExcel.class, resultSubOrder);
+        return HttpResult.ok("", uploadUrl + "excel/" + fileName);
+    }
+
 }
 
 

+ 1 - 0
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -1,5 +1,6 @@
 package com.ydtech.modules.admin.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;

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

@@ -308,6 +308,12 @@ public interface InsAreaCompanyMapper extends BaseMapper<InsAreaCompany> {
      * @return
      */
     OrdersDataDto getSumBigOrderCount(@Param("vo") OrdersDataDto ordersDataDto);
+    /**
+     *  大订单导出查询
+     * @param ordersDataDto
+     * @return
+     */
+    List<OrdersDataExcel> querOrdersDataListExcel( @Param("vo") OrdersDataVo ordersDataVo);
 }
 
 

+ 155 - 0
src/main/resources/mapper/modules/admin/CompanyDataReport.xml

@@ -0,0 +1,155 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ydtech.modules.admin.dao.CompanyDataReportMapper">
+
+    <select id="querOrders" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        SELECT
+        count( 0 ) AS "orderNumber",
+        b.licenseno as "licenseno",
+        b.frameno as "frameno"
+        FROM
+        (
+        SELECT
+        io.orderstatus AS orderstatus,
+        io.frameno AS frameno,
+        ifnull(io.licenseno, '') AS licenseno
+        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 io.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
+    </select>
+
+    <select id="querOrdersTotal" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        select sum(a.orderNumber) as "orderNumber",
+        count(a.frameno) as "frameno"
+        from (
+        SELECT
+        count( 0 ) AS "orderNumber",
+        b.licenseno as "licenseno",
+        b.frameno as "frameno"
+        FROM
+        (
+        SELECT
+        io.orderstatus AS orderstatus,
+        io.frameno AS frameno,
+        ifnull(io.licenseno, '') AS licenseno
+        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.year  != null  and  vo.year!='' ">
+                AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+            </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 io.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 ) a
+
+    </select>
+    <select id="smallQuerOrders" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
+        select count(0) as "orderNumber"
+        from ins_area_company iac
+        left join ins_orders io on io.orderno = iac.orderno
+        LEFT JOIN sys_user su on io.userid=su.id
+            <where>
+                io.orderstatus = '3'
+                and iac.orderstatus = '3'
+                and 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>
+
+                <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 io.frameno =#{vo.frameno}
+                </if>
+                <if test="vo.deptId  != null  and  vo.deptId!=''  ">
+                    and io.deptid like concat('%', #{vo.deptId}, '%')
+                </if>
+                <if test="vo.year  != null  and  vo.year!='' ">
+                    AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+                </if>
+            </where>
+
+    </select>
+
+
+</mapper>

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

@@ -108,6 +108,7 @@
                  left join sys_dept sd on sd.id =su.dept_id
         <where>
             iac.orderstatus = '3'
+            and io.orderstatus = '3'
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
                 AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
                 DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
@@ -148,13 +149,12 @@
                  left join sys_user su on io.userid =su.id
                  left join sys_dept sd on sd.id =su.dept_id
         <where>
-            iac.orderstatus = '3'
+             1=1
             <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
                 AND DATE_FORMAT( iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
                 DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
             </if>
 
-
             <if test="vo.userName !=null  and vo.userName!=''">
                 and su.name=#{vo.userName}
             </if>

+ 109 - 28
src/main/resources/mapper/modules/order/InsAreaCompanyMapper.xml

@@ -1749,12 +1749,16 @@
         SELECT
         count( 0 ) AS "orderNumber",
         b.licenseno as "licenseno",
-        b.frameno as "frameno"
+        b.frameno as "frameno",
+        b.modelCode as "modelCode",
+        b.modelcname as "modelcname"
         FROM
         (
         SELECT
         io.orderstatus AS orderstatus,
         io.frameno AS frameno,
+        REPLACE(JSON_EXTRACT(io.carinfo, '$.engineNo'), '"', '') as "modelCode",
+        REPLACE(JSON_EXTRACT(io.carinfo, '$.modelcname'), '"', '') as "modelcname",
         ifnull(io.licenseno, '') AS licenseno
         FROM
         ins_orders io
@@ -1787,11 +1791,16 @@
             <if test="vo.deptId  != null  and  vo.deptId!=''  ">
                 and io.deptid like concat('%', #{vo.deptId}, '%')
             </if>
+            <if test="vo.year  != null  and  vo.year!='' ">
+                AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+            </if>
         </where>
         ) b
         GROUP  BY
         b.licenseno,
-        b.frameno
+        b.frameno,
+        b.modelCode,
+        b.modelcname
     </select>
 
     <select id="getOrdersGroupByLicenseno"  resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
@@ -1838,38 +1847,22 @@
     </select>
 
     <select id="querOrdersamountTo" resultType="com.ydtech.modules.admin.model.report.company.OrdersDataDto">
-       select sum(a.orderNumber)   as "orderNumber",
-              sum(a.orderStatus3) / sum(a.orderNumber)  AS "closeRate",
-              count(a.frameno) as "frameno"
-       from  (
+        select sum(a.orderNumber)  as "orderNumber",
+               count(a.licenseno) as "b.frameno"
+        from (
         SELECT
         count( 0 ) AS "orderNumber",
-        SUM( CASE WHEN orderstatus = '3' THEN 1 ELSE 0 END )   AS "orderStatus3",
+        b.licenseno as "licenseno",
         b.frameno as "frameno"
         FROM
         (
         SELECT
         io.orderstatus AS orderstatus,
-        ifnull(io.licenseno, '') AS licenseno,
         io.frameno AS frameno,
-        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
+        ifnull(io.licenseno, '') AS licenseno
         FROM
         ins_orders io
-        LEFT JOIN sys_user  su  on io.userid=su.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!=''">
@@ -1900,11 +1893,9 @@
             </if>
         </where>
         ) b
-        GROUP  BY
-        b.frameno,
+        GROUP BY
         b.licenseno,
-        b.inscompany,
-        b.orderstatus
+        b.frameno
         ) a
     </select>
 
@@ -2138,6 +2129,9 @@
             <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.year  != null  and  vo.year!='' ">
+                AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+            </if>
         </where>
     </select>
     <select id="queryAgencyUserInsAreaPage" resultType="com.ydtech.modules.admin.model.vo.AgencyUserInsAreaVo">
@@ -2171,6 +2165,93 @@
 
     </select>
 
+    <select id="querOrdersDataListExcel" resultType="com.ydtech.modules.admin.model.dto.OrdersDataExcel">
+       select a.*,
+       IFNULL(b.orderNumber,0)/IFNULL(a.orderNumber  ,0)
+       from (
+        SELECT
+        count( 0 ) AS "orderNumber",
+        b.licenseno as "licenseno",
+        b.modelCode as "modelCode",
+        b.modelcname as "modelcname",
+        b.frameno as "frameno"
+        FROM
+        (
+        SELECT
+        io.orderstatus AS orderstatus,
+        io.frameno AS frameno,
+        REPLACE(JSON_EXTRACT(io.carinfo, '$.engineNo'), '"', '') as "modelCode",
+        REPLACE(JSON_EXTRACT(io.carinfo, '$.modelcname'), '"', '') as "modelcname",
+        ifnull(io.licenseno, '') AS licenseno
+        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 io.frameno =#{vo.frameno}
+            </if>
+            <if test="vo.deptId  != null  and  vo.deptId!=''  ">
+                and io.deptid like concat('%', #{vo.deptId}, '%')
+            </if>
+            <if test="vo.year  != null  and  vo.year!='' ">
+                AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+            </if>
+        </where>
+        ) b
+        GROUP  BY
+        b.licenseno,
+        b.frameno,
+        b.modelCode,
+        b.modelcname
+                     ) a
+       left  join (
+        select count(0) as "orderNumber",
+        GROUP_CONCAT(inscompany ORDER BY inscompany SEPARATOR ',') as "namesimple",
+        io.licenseno as "licenseno"
+        from ins_area_company iac
+        left join ins_orders io on io.orderno = iac.orderno
+        <where>
+            1=1
+            and  iac.orderstatus ='3'
+            and io.orderstatus ='3'
+            <if test="vo.licenseno !=null  and vo.licenseno!=''">
+                AND io.licenseno =#{vo.licenseno}
+            </if>
+            <if test="vo.frameno !=null  and vo.frameno!=''">
+                AND io.frameno =#{vo.frameno}
+            </if>
+            <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.year  != null  and  vo.year!='' ">
+                AND DATE_FORMAT( io.createtime, '%Y') =#{vo.year}
+            </if>
+        </where>
+        group  by
+        io.licenseno
+        )  b  on b.licenseno  =a.licenseno
+    </select>
 
 
 </mapper>