Browse Source

需求ID1000318/ID1000317ID1000316

huihui 1 year ago
parent
commit
bec34111a2

+ 35 - 0
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -2,10 +2,12 @@ package com.ydtech.modules.admin.controller.taskStatistics;
 
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.pagehelper.PageInfo;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDtoNew;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.KztGetDeptUtilsDto;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
@@ -472,4 +474,37 @@ public class TaskStatisticsController {
         }
     }
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @PostMapping("getBusinessOrderDataDetails")
+    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-详情")
+    public HttpResult<PageInfo<BusinessOrderData>> getBusinessOrderDataDetails(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try {
+            PageInfo<BusinessOrderData> businessOrderDataDetails = taskStatisticsService.getBusinessOrderDataDetails(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", businessOrderDataDetails);
+        } catch (Exception e) {
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     * @description:   控制台-业务数据-渠道-订单详情-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @PostMapping("getBusinessOrderDataTotal")
+    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-合计")
+    public HttpResult<BusinessOrderData> getBusinessOrderDataTotal(@RequestBody TaskStatisticsVo taskStatisticsVo) {
+        try {
+            BusinessOrderData result = taskStatisticsService.getBusinessOrderDataTotal(taskStatisticsVo);
+            return HttpResult.ok("查询数据成功", result);
+        } catch (Exception e) {
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
 }

+ 16 - 0
src/main/java/com/ydtech/modules/admin/dao/TaskStatisticsMapper.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import org.apache.ibatis.annotations.Mapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
@@ -39,4 +40,19 @@ public interface TaskStatisticsMapper extends BaseMapper<TaskStatisticsDto> {
      */
     IPage<TaskStatisticsDto> channelAgentDetails(Page page, TaskStatisticsVo taskStatisticsVo);
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-订单详情
+     * @author: hh
+     * @date: 2024/09/10
+     **/
+    List<BusinessOrderData> getBusinessOrderDataDetails(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   任控制台-业务数据-渠道-订单详情总和
+     * @author: hh
+     * @date: 2024/09/10
+     **/
+    BusinessOrderData getBusinessOrderDataTotal(@Param("vo") TaskStatisticsVo taskStatisticsVo);
+
 }

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

@@ -87,6 +87,9 @@ public class BusinessAgentData {
     @ApiModelProperty(value = "毛利润占比")
     private BigDecimal distributionAmountRate;
 
+    @ApiModelProperty(value = "毛利润率")
+    private String grossMargin;
+
     @ApiModelProperty(value = "入口金额")
     private BigDecimal entranceAllFee;
 

+ 62 - 0
src/main/java/com/ydtech/modules/admin/model/vo/BusinessOrderData.java

@@ -0,0 +1,62 @@
+package com.ydtech.modules.admin.model.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+
+@Data
+@ApiModel("业务数据-渠道-详情")
+public class BusinessOrderData {
+
+
+    @ApiModelProperty(value = "姓名")
+    private String userName;
+
+    @ApiModelProperty(value = "工号")
+    private String userId;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "车牌号")
+    private String carNum;
+
+    @ApiModelProperty(value = "签单保费")
+    private BigDecimal sumPremium;
+
+    @ApiModelProperty(value = "交强险保费")
+    private BigDecimal jqPremium;
+
+    @ApiModelProperty(value = "车船税")
+    private BigDecimal taxAmount;
+
+    @ApiModelProperty(value = "商业险保费")
+    private BigDecimal syPremium;
+
+    @ApiModelProperty(value = "非车险保费")
+    private BigDecimal jyPremium;
+
+    @ApiModelProperty(value = "签单保费占比")
+    private BigDecimal sumPremiumProportion;
+
+    @ApiModelProperty(value = "总人数")
+    private String totalNumber;
+
+    @ApiModelProperty(value = "毛利润")
+    private BigDecimal distributionAmount;
+
+    @ApiModelProperty(value = "毛利润占比")
+    private BigDecimal distributionAmountRate;
+
+    @ApiModelProperty(value = "毛利润率")
+    private String grossMargin;
+
+    @ApiModelProperty(value = "入口金额")
+    private BigDecimal entranceAllFee;
+
+    @ApiModelProperty(value = "出口金额")
+    private BigDecimal exportAllFee;
+}

+ 11 - 0
src/main/java/com/ydtech/modules/admin/model/vo/TaskStatisticsVo.java

@@ -152,4 +152,15 @@ public class TaskStatisticsVo implements Serializable {
     @ApiModelProperty(value = "对接人")
     private String dockingPerson;
 
+    @ApiModelProperty(value = "筛选签单开始时间")
+    private String signingTimeStart;
+
+    @ApiModelProperty(value = "筛选签单结束时间")
+    private String signingTimeEnd;
+
+    @ApiModelProperty(value = "筛选录单开始时间")
+    private String enterTimeStart;
+
+    @ApiModelProperty(value = "筛选录单开始时间")
+    private String enterTimeEnd;
 }

+ 17 - 0
src/main/java/com/ydtech/modules/admin/service/TaskStatisticsService.java

@@ -1,10 +1,12 @@
 package com.ydtech.modules.admin.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.github.pagehelper.PageInfo;
 import com.ydtech.core.page.HttpResult;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDto;
 import com.ydtech.modules.admin.model.dto.TaskStatisticsDtoNew;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.order.entity.BasePageResult;
 
@@ -142,4 +144,19 @@ public interface TaskStatisticsService {
      **/
     HttpResult electricExcel(TaskStatisticsVo taskStatisticsVo);
 
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo);
+
+    /**
+     * @description:   控制台-业务数据-渠道-订单详情-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo);
+
 }

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

@@ -18,6 +18,7 @@ import com.ydtech.modules.admin.model.SysDept;
 import com.ydtech.modules.admin.model.SysUser;
 import com.ydtech.modules.admin.model.dto.*;
 import com.ydtech.modules.admin.model.vo.BusinessAgentData;
+import com.ydtech.modules.admin.model.vo.BusinessOrderData;
 import com.ydtech.modules.admin.model.vo.TaskStatisticsVo;
 import com.ydtech.modules.admin.service.SysDeptService;
 import com.ydtech.modules.admin.service.TaskStatisticsService;
@@ -40,6 +41,7 @@ import java.math.RoundingMode;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
@@ -691,11 +693,17 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
 
         IPage<BusinessAgentData> list = this.taskStatisticsMapper.getBusinessAgentData(page,taskStatisticsVo);
         List<BusinessAgentData> records = list.getRecords();
         for (BusinessAgentData record : records) {
             this.appendName(record);
+            //新增毛利润率   毛利润/成本(出口费用)
+            BigDecimal grossMarginBD = record.getDistributionAmount().divide(record.getExportAllFee(), 4, RoundingMode.HALF_UP); //毛利润率
+            DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+            String grossMargin = decimalFormat.format(grossMarginBD);
+            record.setGrossMargin(grossMargin);
         }
         Long  total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
         list.setTotal(total);
@@ -838,6 +846,7 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByTypeNew(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
 
 
         if(StringUtils.isNotEmpty(taskStatisticsVo.getTreeType()) || "3".equals(taskStatisticsVo.getManagementSource())){
@@ -958,6 +967,7 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         HashMap<String, String> dateMapByType = getDateMapByType(taskStatisticsVo.getDateType(), taskStatisticsVo.getCreatetimeStart(), taskStatisticsVo.getCreatetimeEnd());
         taskStatisticsVo.setCreatetimeStart(dateMapByType.get("startDate"));
         taskStatisticsVo.setCreatetimeEnd(dateMapByType.get("endDate"));
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
         PageVo<TaskStatisticsVo> pageVo = new PageVo<>();
         Page page = new Page(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
         page.setSearchCount(false).setOptimizeCountSql(false);//关闭count查询
@@ -1049,4 +1059,101 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
             }
         }
     }
+
+    /**
+     * @description:   任控制台-业务数据-渠道-详情
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @Override
+    public PageInfo<BusinessOrderData> getBusinessOrderDataDetails(TaskStatisticsVo taskStatisticsVo) {
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+
+        PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
+        List<BusinessOrderData> businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo);
+        for (BusinessOrderData businessOrderData : businessOrderList) {
+            BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ? businessOrderData.getEntranceAllFee() : BigDecimal.ZERO;
+            BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
+            BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
+            businessOrderData.setDistributionAmount(distributionAmount); //毛利润
+            if (distributionAmount.compareTo(BigDecimal.ZERO) > 0) {
+                //新增毛利润率   毛利润/成本(出口费用)
+                BigDecimal grossMarginBD = distributionAmount.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
+                DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+                String grossMargin = decimalFormat.format(grossMarginBD);
+                businessOrderData.setGrossMargin(grossMargin);
+            } else {
+                businessOrderData.setGrossMargin("0.00%");
+            }
+        }
+        return new PageInfo<>(businessOrderList);
+    }
+
+
+    /**
+     * @description:   任控制台-业务数据-渠道-合计
+     * @author: hh
+     * @date: 2024/11/19
+     **/
+    @Override
+    public BusinessOrderData getBusinessOrderDataTotal(TaskStatisticsVo taskStatisticsVo) {
+        getDateByType(taskStatisticsVo.getDateType(), taskStatisticsVo);
+
+        BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo);
+
+        BigDecimal sumPremium = result.getSumPremium();
+        BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
+        if (ObjectUtils.isNotEmpty(sumPremium)) {
+            BigDecimal allSumPremium = allsumPremium.getSumPremium();
+            if (sumPremium.compareTo(BigDecimal.ZERO) == 1) {
+                BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN);
+                result.setSumPremiumProportion(multiply);
+            }
+        } else {
+            result.setSumPremiumProportion(BigDecimal.ZERO);
+        }
+
+        BigDecimal entranceAllFee = result.getEntranceAllFee() != null ? result.getEntranceAllFee() : BigDecimal.ZERO;
+        BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
+        BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
+        result.setDistributionAmount(subtract); //毛利润
+        if (subtract.compareTo(BigDecimal.ZERO) > 0) {
+            //新增毛利润率   毛利润/成本(出口费用)
+            BigDecimal grossMarginBD = subtract.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
+            DecimalFormat decimalFormat = new DecimalFormat("0.00%");
+            String grossMargin = decimalFormat.format(grossMarginBD);
+            result.setGrossMargin(grossMargin);
+        } else {
+            result.setGrossMargin(BigDecimal.ZERO.toString());
+        }
+        return result;
+    }
+
+    /**
+     *  @version
+     *  @author: hh
+     *  @Date: 2024/11/19
+     *  @Description:  通过时间类型判断
+     */
+    private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) {
+        String  startDateStr= new String();
+        String  endDateStr= new String();
+        if (StringUtils.isNotEmpty(type)) {
+            switch (type) {
+                case "1" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+                case "2" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+                case "3" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                           break;
+            }
+            taskStatisticsVo.setSigningTimeStart(startDateStr);
+            taskStatisticsVo.setSigningTimeEnd(endDateStr);
+            taskStatisticsVo.setEnterTimeStart(startDateStr);
+            taskStatisticsVo.setEnterTimeEnd(endDateStr);
+        }
+    }
 }

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

@@ -870,6 +870,8 @@
         info.sex,
         info.live_address,
         su.mobile,
+        su.leader_id,
+        su.leader_name,
         su.status,
         su.identity,
         sd.id as deptId,

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

@@ -20,6 +20,7 @@
         IFNULL(a.riskCodeJshang,0) as "riskCodeJshang",
         IFNULL(a.riskCodeDs,0) as "riskCodeDs",
         IFNULL(a.riskCodeDsan,0) as "riskCodeDsan",
+        IFNULL(a.exportAllFee,0) as "exportAllFee",
         sd.management_source as "managementSource",
         IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)  as  "distributionAmount",
         (IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)) / a.sumpremium as "distributionAmountRate"
@@ -50,9 +51,11 @@
         LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
         <where>
             iac.orderstatus = '3'
-            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d')
-                AND DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.userIds  !=null  and vo.userIds!=''  and vo.userIds.size()>0">
@@ -179,9 +182,11 @@
                  LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
         <where>
         iac.orderstatus = '3'
-            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
-                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.days !=null  and vo.days !=''  and vo.days != 0 ">
@@ -230,9 +235,11 @@
         <where>
              1=1
            and  iac.orderstatus ='3'
-            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
-                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.userName !=null  and vo.userName!=''">
@@ -306,9 +313,11 @@
                 and su.id=#{vo.userId}
             </if>
 
-            <if test="vo.createtimeStart  != null  and  vo.createtimeStart!=''  and vo.createtimeEnd  != null  and  vo.createtimeEnd!=''">
-                AND DATE_FORMAT( iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT( #{vo.createtimeStart}, '%Y-%m-%d') AND
-                DATE_FORMAT( #{vo.createtimeEnd}, '%Y-%m-%d')
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d') AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
             </if>
 
             <if test="vo.managementSource !=null  and vo.managementSource!=''">
@@ -416,6 +425,93 @@
         iac.inscompany
     </select>
 
+    <resultMap id="OrderDataMap" type="com.ydtech.modules.admin.model.vo.BusinessOrderData">
+        <result property="totalNumber" column="total"/>
+        <result property="orderNo"     column="order_no"/>
+        <result property="carNum"      column="car_num"/>
+        <result property="sumPremium"  column="sum_premium"/>
+        <result property="jqPremium"   column="jq_premium"/>
+        <result property="syPremium"   column="sy_premium"/>
+        <result property="taxAmount"   column="tax_amount"/>
+        <result property="jyPremium"   column="jy_premium"/>
+        <result property="userId"      column="user_id"/>
+        <result property="userName"    column="user_name"/>
+    </resultMap>
+
+    <sql id="BusinessOrderDataSQL">
+        SELECT
+            io.orderno AS "order_no",
+            io.licenseno AS "car_num",
+            su.id AS "user_id",
+            su.name AS "user_name",
+            IFNULL(sum(jqpremium), 0) AS "jq_premium",
+            IFNULL(sum(sypremium), 0) AS "sy_premium",
+            IFNULL(sum(taxamount), 0) AS "tax_amount",
+            IFNULL(sum(jypremium), 0) AS "jy_premium",
+            (IFNULL(sum(jqpremium), 0) + IFNULL(sum(sypremium), 0) + IFNULL(sum(jypremium), 0)) AS "sum_premium",
+            ROUND(sum(IFNULL(ifon.jq_costs_premiums, 0) + IFNULL(ifon.sy_costs_premiums, 0)
+                + IFNULL(ifon.no_costs_premiums, 0)), 2) AS "entrance_all_fee",
+            ROUND(sum(IFNULL(jq_export_other_costs_premiums, 0) + IFNULL(jq_export_supervise_costs_premiums, 0)
+                + IFNULL(sy_export_other_costs_premiums, 0) + IFNULL(sy_export_supervise_costs_premiums, 0)
+                + IFNULL(no_export_other_costs_premiums, 0) + IFNULL(no_export_supervise_costs_premiums, 0)), 2) AS "export_all_fee"
+        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
+                 LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
+    </sql>
 
+    <select id="getBusinessOrderDataDetails" resultMap="OrderDataMap">
+        <include refid="BusinessOrderDataSQL"/>
+        <where>
+            iac.orderstatus = '3'
+            AND io.orderstatus = '3'
+            <if test="vo.userId != null and vo.userId!=''">
+                AND su.id = #{vo.userId}
+            </if>
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+            </if>
+        </where>
+        GROUP BY
+            io.orderno
+    </select>
+
+    <select id="getBusinessOrderDataTotal" resultMap="OrderDataMap">
+        SELECT
+            count(*) AS `total`,
+            IFNULL(SUM(a.jq_premium), 0) AS `jq_premium`,
+            IFNULL(SUM(a.sy_premium), 0) AS `sy_premium`,
+            IFNULL(SUM(a.tax_amount), 0) AS `tax_amount`,
+            IFNULL(SUM(a.jy_premium), 0) AS `jy_premium`,
+            sum(IFNULL(a.jq_premium, 0) + IFNULL(a.sy_premium, 0) + IFNULL(a.jy_premium, 0)) as `sum_premium`,
+            IFNULL(SUM(a.entrance_all_fee), 0) AS `entrance_all_fee`,
+            IFNULL(SUM(a.export_all_fee), 0) AS `export_all_fee`
+        FROM (
+        <include refid="BusinessOrderDataSQL"/>
+        <where>
+                iac.orderstatus = '3'
+                AND io.orderstatus = '3'
+                <if test="vo.userId != null and vo.userId!=''">
+                    AND su.id = #{vo.userId}
+                </if>
+                <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                    AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
+                    AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+                </if>
+                <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                    AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
+                    AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+                </if>
+            </where>
+            GROUP BY
+                io.orderno) a
+        GROUP BY
+            a.user_id
+    </select>
 
 </mapper>