Эх сурвалжийг харах

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

785834757 2 жил өмнө
parent
commit
34d36c3e9a
20 өөрчлөгдсөн 890 нэмэгдсэн , 82 устгасан
  1. 105 0
      src/main/java/com/ydtech/modules/admin/controller/FinanceDataReportConroller.java
  2. 68 20
      src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsDto.java
  3. 15 10
      src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsSZDto.java
  4. 2 0
      src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsTGDto.java
  5. 66 0
      src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDataDto.java
  6. 52 0
      src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDeptDataDto.java
  7. 56 0
      src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDeptQueryDto.java
  8. 68 0
      src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualQueryDto.java
  9. 34 0
      src/main/java/com/ydtech/modules/admin/service/FinanceDataReportService.java
  10. 57 0
      src/main/java/com/ydtech/modules/admin/service/impl/FinanceDataReportServiceImpl.java
  11. 3 0
      src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java
  12. 4 0
      src/main/java/com/ydtech/modules/fnc/vo/InsPlyIncomeVo.java
  13. 17 17
      src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java
  14. 30 13
      src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java
  15. 8 16
      src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java
  16. 18 0
      src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewMapper.java
  17. 111 0
      src/main/java/com/ydtech/utils/CustomCellWriteHandler.java
  18. 1 4
      src/main/java/com/ydtech/utils/ExcelUtils.java
  19. 29 0
      src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml
  20. 146 2
      src/main/resources/mapper/modules/ins/InsFeeOrderNewMapper.xml

+ 105 - 0
src/main/java/com/ydtech/modules/admin/controller/FinanceDataReportConroller.java

@@ -0,0 +1,105 @@
+package com.ydtech.modules.admin.controller;
+
+import com.ydtech.core.page.HttpResult;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptQueryDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualQueryDto;
+import com.ydtech.modules.admin.model.report.opetationData.OperationsPersonnelDataDto;
+import com.ydtech.modules.admin.model.report.opetationData.QuotationCountDataDto;
+import com.ydtech.modules.admin.model.report.opetationData.QuotationCountQueryDto;
+import com.ydtech.modules.admin.service.FinanceDataReportService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/1 11:31
+ *  @Description:  控制台  运营数据统计
+ */
+@Api(tags = "财务数据统计")
+@RequestMapping("/financeDataReport")
+@RestController
+public class FinanceDataReportConroller {
+
+    @Autowired
+    private FinanceDataReportService financeDataReportService;
+
+   /**
+    *  @version 
+    *  @author: hxl
+    *  @Date: 2024/7/3 14:54
+    *  @Description: 财务数据 - 渠道/代理人 - 预收、实收数据
+    */ 
+    @PostMapping("queryAdvanceAndActualDataPage")
+    @ApiOperation(value = "财务数据 - 渠道/代理人 - 预收、实收数据")
+    public HttpResult<BasePageResult<AdvanceAndActualDataDto>> queryAdvanceAndActualDataPage(@RequestBody AdvanceAndActualQueryDto advanceAndActualQueryDto) {
+        try{
+            BasePageResult<AdvanceAndActualDataDto> result = financeDataReportService.queryAdvanceAndActualDataPage(advanceAndActualQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 14:54
+     *  @Description: 财务数据 -机构的 -预收、实收数据
+     */
+    @PostMapping("queryAdvanceAndActualDeptDataPage")
+    @ApiOperation(value = "财务数据 -机构的 -预收、实收数据")
+    public HttpResult<BasePageResult<AdvanceAndActualDeptDataDto>> queryAdvanceAndActualDeptDataPage(@RequestBody AdvanceAndActualDeptQueryDto advanceAndActualDeptQueryDto) {
+        try{
+            BasePageResult<AdvanceAndActualDeptDataDto> result = financeDataReportService.queryAdvanceAndActualDeptDataPage(advanceAndActualDeptQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 11:17
+     *  @Description:   财务数据 -渠道/代理人 - 已提现/提现中/驳回的金额
+     */
+    @PostMapping("queryQuotationCountDataPage11")
+    @ApiOperation(value = "查询报价次数数据")
+    public HttpResult<BasePageResult<QuotationCountDataDto>> queryQuotationCountDataPage(@RequestBody QuotationCountQueryDto quotationCountQueryDto) {
+        try{
+            BasePageResult<QuotationCountDataDto> result = null;
+                   // financeDataReportService.queryQuotationCountDataPage(quotationCountQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 11:17
+     *  @Description: 财务数据 -机构 - 已提现/提现中/驳回的金额
+     */
+    @PostMapping("queryOperationsPersonnelDataPage22")
+    @ApiOperation(value = "查询运营人员数据")
+    public HttpResult<BasePageResult<OperationsPersonnelDataDto>> queryOperationsPersonnelDataPage(@RequestBody QuotationCountQueryDto quotationCountQueryDto) {
+        try{
+            BasePageResult<OperationsPersonnelDataDto> result = null;
+                    //financeDataReportService.queryOperationsPersonnelDataPage(quotationCountQueryDto);
+            return HttpResult.ok("查询数据成功", result);
+        }catch (Exception e){
+            return HttpResult.error("查询错误"+e.getMessage());
+        }
+    }
+}

+ 68 - 20
src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsDto.java

@@ -1,6 +1,8 @@
 package com.ydtech.modules.admin.model.dto;
 
+import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -15,62 +17,76 @@ import java.math.BigDecimal;
  */
 @Data
 @ApiModel("预收车险导出对象")
+@ColumnWidth(15)
 public class ExportExpenditureTypeDetalsDto {
 
     /***
-     * 订单
+     * 任务
      */
-    @ExcelProperty("任务号")
+    //@ExcelProperty("任务号")
+    @ExcelIgnore
     @ApiModelProperty(value = "任务号")
     private String  orderNo;
 
     /***
      * 订单号
      */
-    @ExcelProperty("订单号")
+    //@ExcelProperty("订单号")
+    @ExcelIgnore
     @ApiModelProperty(value = "订单号")
     private String  subOrderNo;
 
     /***
-     * 承保时间
+     * 签单时间
      */
-    @ExcelProperty("签单时间")
+    //@ExcelProperty("签单时间")
+    @ExcelIgnore
     @ApiModelProperty(value = "签单时间")
     private String  signingTime;
 
+    /***
+     * 承保时间
+     */
+    @ExcelProperty(value="签单日期",index = 1)
+    //@ExcelProperty("签单时间")
+    private String  signingTimeDay;
     /***
      * 代理人工号
      */
-    @ExcelProperty("代理人工号")
+    //@ExcelProperty("代理人工号")
+    @ExcelIgnore
     @ApiModelProperty(value = "代理人工号")
     private String  userId;
     /***
      * 承保时间
      */
-    @ExcelProperty("代理人姓名")
+    @ExcelProperty(value="业务员",index = 0)
     @ApiModelProperty(value = "代理人姓名")
     private String  userName;
 
     /***
      * 车牌
      */
-    @ExcelProperty("车牌")
+    @ExcelProperty(value="车牌",index=2)
     @ApiModelProperty(value = "车牌")
     private String licenseNo;
 
-    @ExcelProperty("交强保单号")
+    //@ExcelProperty("交强保单号")
+    @ExcelIgnore
     @ApiModelProperty(value = "交强保单号")
     private String jqapplyno;
 
 
-    @ExcelProperty("商业保单号")
+    //@ExcelProperty("商业保单号")
+    @ExcelIgnore
     @ApiModelProperty(value = "商业保单号")
     private String syapplyno;
 
     /***
      * 车架号
      */
-    @ExcelProperty("车架号")
+    //@ExcelProperty("车架号")
+    @ExcelIgnore
     @ApiModelProperty(value = "车架号")
     private String frameNo;
 
@@ -78,40 +94,72 @@ public class ExportExpenditureTypeDetalsDto {
     /***
      * 发动机号
      */
-    @ExcelProperty("发动机号")
+    //@ExcelProperty("发动机号")
+    @ExcelIgnore
     @ApiModelProperty(value = "发动机号")
     private String engineNo;
 
-    @ExcelProperty("投保险种")
+    @ExcelProperty(value="投保险种",index=5)
     @ApiModelProperty(value = "投保险种")
     private String productId;
 
 
-    @ExcelProperty("投保人姓名")
-    @ApiModelProperty(value = "投保人姓名")
+    @ExcelProperty(value="被保险人",index=3)
+    @ApiModelProperty(value = "被保险人")
     private String insuredName;
 
-    @ExcelProperty("保险公司")
+    @ExcelProperty(value="保险公司",index=4)
     @ApiModelProperty(value = "保险公司")
     private String companyName;
 
+    @ExcelProperty(value="交强保费",index=6)
+    @ApiModelProperty(value = "交强保费")
+    private BigDecimal jqPremium;
+
+    @ExcelProperty(value="车船税",index=7)
+    @ApiModelProperty(value = "车船税")
+    private BigDecimal taxamount;
+
+    @ExcelProperty(value="商业保费",index=8)
+    @ApiModelProperty(value = "商业保费")
+    private BigDecimal syPremium;
+
+    @ExcelProperty(value="非车保费",index=9)
+    @ApiModelProperty(value = "非车保费")
+    private BigDecimal jypremium;
+
+    @ExcelProperty(value="交强比例",index=10)
+    @ApiModelProperty(value = "交强比例")
+    private BigDecimal jqExportProportion;
+
+    @ExcelProperty(value="商业比例",index=11)
+    @ApiModelProperty(value = "商业比例")
+    private BigDecimal syExportProportion;
+
+    @ExcelProperty(value="非车比例",index=12)
+    @ApiModelProperty(value = "非车比例")
+    private BigDecimal noExportProportion;
     /***
      * 金额
      */
-    @ExcelProperty("交易金额")
-    @ApiModelProperty(value = "交易金额")
+    @ExcelProperty(value="结算金额",index=13)
+    @ApiModelProperty(value = "结算金额")
     private BigDecimal amount;
 
     /***
      *   未审核 0 已审核 1
      */
-    @ExcelProperty("审核状态")
+    @ExcelProperty(value="审核状态",index=14)
     @ApiModelProperty(value = "审核状态")
     private String auditstatus;
 
-    @ExcelProperty("审核时间")
+    @ExcelIgnore
+    //@ExcelProperty(value="审核时间",index=15)
     @ApiModelProperty(value = "审核时间")
     private String auditTime;
 
+    @ExcelProperty(value="审核时间",index=15)
+    private String auditTimeDay;
+
 
 }

+ 15 - 10
src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsSZDto.java

@@ -2,6 +2,7 @@ package com.ydtech.modules.admin.model.dto;
 
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -16,38 +17,42 @@ import java.math.BigDecimal;
  */
 @Data
 @ApiModel("收支导出对象")
+@ColumnWidth(15)
 public class ExportExpenditureTypeDetalsSZDto {
 
     /***
      * 订单号
      */
-    @ExcelProperty("订单号")
+    @ExcelIgnore
+    //@ExcelProperty("订单号")
     @ApiModelProperty(value = "订单号")
     private String  subOrderNo;
 
     /***
      * 创建时间
      */
-    @ExcelProperty("交易时间")
+    @ColumnWidth(20)
+    @ExcelProperty(value="交易时间",index=0)
     @ApiModelProperty(value = "交易时间")
     private String   createTime;
 
     /***
      * 交易号
      */
-    @ExcelProperty("交易号")
+    @ExcelIgnore
+    //@ExcelProperty("交易号")
     @ApiModelProperty(value = "交易号")
     private String  auditiingId;
 
-    @ExcelProperty("车牌")
-    @ApiModelProperty(value = "车牌")
+    @ExcelProperty(value="车牌",index=1)
+    @ApiModelProperty(value = "车牌")
     private String licenseNo;
 
-    @ExcelProperty("业务板块")
+    @ExcelProperty(value="业务板块",index=2)
     @ApiModelProperty(value = "业务板块")
     private String businessSegmentsType;
 
-    @ExcelProperty(value = "交易类型")
+    @ExcelProperty(value = "交易类型",index=4)
     @ApiModelProperty(value = "交易类型")
     private String  transactionType;
 
@@ -55,17 +60,17 @@ public class ExportExpenditureTypeDetalsSZDto {
     /***
      * 金额
      */
-    @ExcelProperty("交易金额")
+    @ExcelProperty(value="交易金额",index=5)
     @ApiModelProperty(value = "交易金额")
     private BigDecimal amount;
 
 
 
-    @ExcelProperty("提现状态")
+    @ExcelProperty(value="提现状态",index=6)
     @ApiModelProperty(value = "提现状态  1 提现申请  2.处理中 3.提现失败  4.提现成功")
     private String auditingStatus;
 
-    @ExcelProperty("收支类型")
+    @ExcelProperty(value="收支类型",index=3)
     @ApiModelProperty(value = "收支类型")
     private String  incomeAndExpensesType;
     /***

+ 2 - 0
src/main/java/com/ydtech/modules/admin/model/dto/ExportExpenditureTypeDetalsTGDto.java

@@ -1,6 +1,7 @@
 package com.ydtech.modules.admin.model.dto;
 
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -15,6 +16,7 @@ import java.math.BigDecimal;
  */
 @Data
 @ApiModel("推广导出对象")
+@ColumnWidth(20)
 public class ExportExpenditureTypeDetalsTGDto {
 
     /***

+ 66 - 0
src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDataDto.java

@@ -0,0 +1,66 @@
+package com.ydtech.modules.admin.model.report.financeData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/3 16:44
+ *  @Description: 预收、实收数据
+ */
+@Data
+@ApiModel("预收、实收渠道/代理人数据对象")
+public class AdvanceAndActualDataDto {
+
+    /***
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private String userId;
+    /***
+     * 用户名称
+     */
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+    /***
+     * 渠道、代理人
+     */
+    @ApiModelProperty("机构类型")
+    private  String deptType;
+    /***
+     * 渠道、代理人
+     */
+    @ApiModelProperty("签单日期")
+    private String signingTime;
+
+    @ApiModelProperty("车牌号")
+    private String licenseNo;
+
+    @ApiModelProperty(value = "总金额")
+    private BigDecimal  sumAmount;
+
+    @ApiModelProperty(value = "手续费金额")
+    private BigDecimal  haldingAmount;
+
+    @ApiModelProperty(value = "跟单金额")
+    private BigDecimal documentaryAmount;
+
+    @ApiModelProperty(value = "推广费金额")
+    private BigDecimal promotionAmount;
+    /***
+     *   未审核 0 已审核 1
+     */
+    @ApiModelProperty(value = "未审核 0 已审核 1")
+    private String auditstatus;
+
+    /***
+     *   子订单号
+     */
+    @ApiModelProperty(value = "子订单号")
+    private String subOrderNo;
+}

+ 52 - 0
src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDeptDataDto.java

@@ -0,0 +1,52 @@
+package com.ydtech.modules.admin.model.report.financeData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/3 16:44
+ *  @Description: 预收、实收数据
+ */
+@Data
+@ApiModel("预收、实收机构数据对象")
+public class AdvanceAndActualDeptDataDto {
+
+    /***
+     * 机构id
+     */
+    @ApiModelProperty("机构id")
+    private String deptId;
+    /***
+     * 机构名称
+     */
+    @ApiModelProperty("机构名称")
+    private String deptName;
+    /***
+     * 签单日期
+     */
+    @ApiModelProperty("签单日期")
+    private String signingTime;
+
+    @ApiModelProperty("车牌号")
+    private String licenseNo;
+
+    @ApiModelProperty(value = "总金额")
+    private BigDecimal  sumAmount;
+
+    /*
+     *   未审核 0 已审核 1
+     */
+    @ApiModelProperty(value = "未审核 0 已审核 1")
+    private String auditstatus;
+
+    /***
+     *   子订单号
+     */
+    @ApiModelProperty(value = "子订单号")
+    private String subOrderNo;
+}

+ 56 - 0
src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualDeptQueryDto.java

@@ -0,0 +1,56 @@
+package com.ydtech.modules.admin.model.report.financeData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/3 16:44
+ *  @Description: 预收、实收数据
+ */
+@Data
+@ApiModel("预收、实收机构数据对象")
+public class AdvanceAndActualDeptQueryDto {
+
+    /***
+     * 用户id
+     */
+    @ApiModelProperty("机构id")
+    private String deptId;
+
+    @ApiModelProperty("车牌号")
+    private String licenseNo;
+
+    /***
+     *   未审核 0 已审核 1
+     */
+    @ApiModelProperty(value = "未审核 0 已审核 1")
+    private String auditstatus;
+
+    /***
+     *   子订单号
+     */
+    @ApiModelProperty(value = "子订单号")
+    private String subOrderNo;
+
+    @ApiModelProperty("页码")
+    private int pageNum;
+
+    @ApiModelProperty("页数")
+    private int pageSize;
+
+
+    /***
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private String startDate;
+
+    /***
+     *  结束时间
+     */
+    @ApiModelProperty("endData")
+    private String endData;
+}

+ 68 - 0
src/main/java/com/ydtech/modules/admin/model/report/financeData/AdvanceAndActualQueryDto.java

@@ -0,0 +1,68 @@
+package com.ydtech.modules.admin.model.report.financeData;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/3 16:44
+ *  @Description: 预收、实收数据
+ */
+@Data
+@ApiModel("预收、实收数据对象")
+public class AdvanceAndActualQueryDto {
+
+    /***
+     * 用户id
+     */
+    @ApiModelProperty("用户id")
+    private String deptId;
+    /***
+     * 用户名称
+     */
+    @ApiModelProperty("用户名称")
+    private String userName;
+
+    /***
+     * 渠道、代理人
+     */
+    @ApiModelProperty("机构类型")
+    private  String deptType;
+
+
+    @ApiModelProperty("车牌号")
+    private String licenseNo;
+
+    /***
+     *   未审核 0 已审核 1
+     */
+    @ApiModelProperty(value = "未审核 0 已审核 1")
+    private String auditstatus;
+
+    /***
+     *   子订单号
+     */
+    @ApiModelProperty(value = "子订单号")
+    private String subOrderNo;
+
+    @ApiModelProperty("页码")
+    private int pageNum;
+
+    @ApiModelProperty("页数")
+    private int pageSize;
+
+
+    /***
+     * 开始时间
+     */
+    @ApiModelProperty("开始时间")
+    private String startDate;
+
+    /***
+     *  结束时间
+     */
+    @ApiModelProperty("endData")
+    private String endData;
+}

+ 34 - 0
src/main/java/com/ydtech/modules/admin/service/FinanceDataReportService.java

@@ -0,0 +1,34 @@
+package com.ydtech.modules.admin.service;
+
+
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptQueryDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualQueryDto;
+import com.ydtech.modules.order.entity.BasePageResult;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/1 11:35
+ *  @Description:  控制台之运营数据
+ */
+public interface FinanceDataReportService {
+    /**
+     *  @version 
+     *  @author: hxl
+     *  @Date: 2024/7/3 18:02
+     *  @Description: 财务数据 - 渠道/代理人 - 预收、实收数据
+     */ 
+    BasePageResult<AdvanceAndActualDataDto> queryAdvanceAndActualDataPage(AdvanceAndActualQueryDto advanceAndActualQueryDto);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/4 9:23
+     *  @Description:   财务数据 - 五级机构 - 预收、实收数据
+     */
+    BasePageResult<AdvanceAndActualDeptDataDto> queryAdvanceAndActualDeptDataPage(AdvanceAndActualDeptQueryDto advanceAndActualDeptQueryDto);
+}
+
+
+

+ 57 - 0
src/main/java/com/ydtech/modules/admin/service/impl/FinanceDataReportServiceImpl.java

@@ -0,0 +1,57 @@
+package com.ydtech.modules.admin.service.impl;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptQueryDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualQueryDto;
+import com.ydtech.modules.admin.service.FinanceDataReportService;
+import com.ydtech.modules.order.entity.BasePageResult;
+import com.ydtech.modules.protocols.dao.InsFeeOrderNewMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/1 11:36
+ *  @Description: 控制台-运营数据
+ */
+@Service
+public class FinanceDataReportServiceImpl implements FinanceDataReportService {
+
+
+
+    @Autowired
+    private InsFeeOrderNewMapper insFeeOrderNewMapper;
+
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 18:05
+     *  @Description:  财务数据 - 渠道/代理人 - 预收、实收数据
+     */
+    @Override
+    public BasePageResult<AdvanceAndActualDataDto> queryAdvanceAndActualDataPage(AdvanceAndActualQueryDto advanceAndActualQueryDto) {
+        Page<AdvanceAndActualDataDto> page = new Page<>(advanceAndActualQueryDto.getPageNum(), advanceAndActualQueryDto.getPageSize());
+        Page<AdvanceAndActualDataDto> result = insFeeOrderNewMapper.queryAdvanceAndActualDataPage(advanceAndActualQueryDto, page);
+        return new BasePageResult<>(advanceAndActualQueryDto.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
+                result.getRecords());
+    }
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/4 9:25
+     *  @Description:   财务数据 - 五级机构 - 预收、实收数据
+     */
+    @Override
+    public BasePageResult<AdvanceAndActualDeptDataDto> queryAdvanceAndActualDeptDataPage(AdvanceAndActualDeptQueryDto advanceAndActualDeptQueryDto) {
+        Page<AdvanceAndActualDeptDataDto> page = new Page<>(advanceAndActualDeptQueryDto.getPageNum(), advanceAndActualDeptQueryDto.getPageSize());
+        Page<AdvanceAndActualDeptDataDto> result = insFeeOrderNewMapper.queryAdvanceAndActualDeptDataPage(advanceAndActualDeptQueryDto, page);
+        return new BasePageResult<>(advanceAndActualDeptQueryDto.getPageNum(), page.getSize(), result.getTotal(), page.getPages(),
+                result.getRecords());
+    }
+}
+
+
+

+ 3 - 0
src/main/java/com/ydtech/modules/fnc/service/impl/InsPlyIncomeServiceImpl.java

@@ -750,6 +750,9 @@ handlingProportion,
         if(StringUtils.isNotEmpty(insPlyIncomeVo.getSettlementDate())){
             params.put("settlementDate", insPlyIncomeVo.getSettlementDate());
         }
+        if(StringUtils.isNotEmpty(insPlyIncomeVo.getIsExternal())){
+            params.put("isExternal", insPlyIncomeVo.getIsExternal());
+        }
 
         return params;
     }

+ 4 - 0
src/main/java/com/ydtech/modules/fnc/vo/InsPlyIncomeVo.java

@@ -394,4 +394,8 @@ public class InsPlyIncomeVo implements Serializable {
     @ApiModelProperty(value = "平台导入结算IdList")
     private List<String> settIdList;
 
+
+    @ApiModelProperty("是否外部订单")
+    private String isExternal;
+
 }

+ 17 - 17
src/main/java/com/ydtech/modules/protocol/controller/PtlAgreementController.java

@@ -52,7 +52,7 @@ public class PtlAgreementController extends BaseController {
     private final PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService;
 
     public PtlAgreementController(PtlAgreementService ptlAgreementService, PtlAgreementUndwrtRulesService ptlAgreementUndwrtRulesService,
-                                  PtlAgreementProductCostsService ptlAgreementProductCostsService,PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService) {
+                                  PtlAgreementProductCostsService ptlAgreementProductCostsService, PtlAgreementNonCarProductCostsService ptlAgreementNonCarProductCostsService) {
         this.ptlAgreementService = ptlAgreementService;
         this.ptlAgreementProductCostsService = ptlAgreementProductCostsService;
         this.ptlAgreementUndwrtRulesService = ptlAgreementUndwrtRulesService;
@@ -67,10 +67,10 @@ public class PtlAgreementController extends BaseController {
         return HttpResult.ok(buildPageResponse(pageResultHttpResult));
     }
 
-    @GetMapping("getAllAgreement")
-    @ApiOperation("获取所有协议")
-    public HttpResult<List<PtlAgreement>>  getAllAgreement(){
-        return HttpResult.ok(ptlAgreementService.getAllAgreement());
+    @GetMapping("/getAllAgreement")
+    @ApiOperation("复制费用查询同保险公司协议")
+    public HttpResult<List<PtlAgreement>> getAllAgreement(@RequestParam String agreementId) {
+        return HttpResult.ok(ptlAgreementService.getAllAgreement(agreementId));
     }
 
     @PostMapping("/list")
@@ -125,7 +125,7 @@ public class PtlAgreementController extends BaseController {
     @ApiOperation("查询协议产品费用")
     public PageResult getProductSav(@RequestBody PtlAgreementProductQueryVo ptlAgreementProductQueryVo) {
         Page<T> page = buildPageRequest(ptlAgreementProductQueryVo.getPageDto());
-        Page<PtlAgreementProductCosts> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(page,ptlAgreementProductQueryVo);
+        Page<PtlAgreementProductCosts> schemeQueryDto = ptlAgreementProductCostsService.getByAgreementId(page, ptlAgreementProductQueryVo);
         return buildPageResponse(schemeQueryDto);
     }
 
@@ -145,9 +145,9 @@ public class PtlAgreementController extends BaseController {
 
     @GetMapping("productDelete")
     @ApiOperation("删除协议产品费用")
-    public HttpResult<Object> productDelete(String id){
+    public HttpResult<Object> productDelete(String id) {
         String userName = getUserName();
-        return ptlAgreementService.deleteAgreementProduct(id,userName);
+        return ptlAgreementService.deleteAgreementProduct(id, userName);
     }
 
 
@@ -169,7 +169,7 @@ public class PtlAgreementController extends BaseController {
     @ApiOperation("查询承保规则")
     public PageResult getUndwrtRules(@RequestBody PtlAgreementUndwrtRulesQueryVo ptlAgreementUndwrtRulesQueryVo) {
         Page<T> page = buildPageRequest(ptlAgreementUndwrtRulesQueryVo.getPageDto());
-        Page<PtlAgreementUndwrtRules> underwritingRules = ptlAgreementUndwrtRulesService.getByAgreementId(page,ptlAgreementUndwrtRulesQueryVo.getAgreementId());
+        Page<PtlAgreementUndwrtRules> underwritingRules = ptlAgreementUndwrtRulesService.getByAgreementId(page, ptlAgreementUndwrtRulesQueryVo.getAgreementId());
         return buildPageResponse(underwritingRules);
     }
 
@@ -189,13 +189,12 @@ public class PtlAgreementController extends BaseController {
 
     @GetMapping("undwrtRulesDelete")
     @ApiModelProperty("删除承保规则")
-    public HttpResult<Object> underwritingRulesDelete(String id){
+    public HttpResult<Object> underwritingRulesDelete(String id) {
         String userName = getUserName();
-        return ptlAgreementService.deleteAgreementUndwrtRules(id,userName);
+        return ptlAgreementService.deleteAgreementUndwrtRules(id, userName);
     }
 
 
-
     @PostMapping("/audit/{agreementId}")
     @ApiOperation("审核协议")
     public HttpResult<Object> audit(@PathVariable String agreementId, @RequestBody PtlAgreementAuditVo ptlAgreementAuditVo) {
@@ -210,19 +209,20 @@ public class PtlAgreementController extends BaseController {
 
     @PostMapping("/noncarcost")
     @ApiOperation("获取非车险费用配置列表")
-    public HttpResult<List<PtlAgreementNonCarProductCostsVo>> getAgreementNonCarCosts(@RequestBody PtlAgreement ptlAgreement){
-        return ptlAgreementService.getNonCarCostsInfo(ptlAgreement.getAgreementCode(),ptlAgreement.getAssociationCompaniesId());
+    public HttpResult<List<PtlAgreementNonCarProductCostsVo>> getAgreementNonCarCosts(@RequestBody PtlAgreement ptlAgreement) {
+        return ptlAgreementService.getNonCarCostsInfo(ptlAgreement.getAgreementCode(), ptlAgreement.getAssociationCompaniesId());
     }
 
     @PostMapping("/findrelationagree")
     @ApiOperation("获取可同步协议列表")
-    public HttpResult<List<PtlAgreement>> findRelationAgreement(@RequestBody PtlAgreement ptlAgreement){
+    public HttpResult<List<PtlAgreement>> findRelationAgreement(@RequestBody PtlAgreement ptlAgreement) {
         return ptlAgreementService.findRelationAgreement(ptlAgreement.getAssociationCompaniesId());
     }
+
     @GetMapping("getDockingPersonList")
     @ApiOperation("获取对接人列表")
-    public HttpResult getDockingPersonList(){
-        List<HashMap<String,Object>>list = ptlAgreementService.getDockingPersonList();
+    public HttpResult getDockingPersonList() {
+        List<HashMap<String, Object>> list = ptlAgreementService.getDockingPersonList();
         return HttpResult.ok(list);
     }
 

+ 30 - 13
src/main/java/com/ydtech/modules/protocol/service/PtlAgreementService.java

@@ -32,12 +32,13 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 获取可以报价的 可录入外部订单的协议
+     *
      * @param deptId
      * @return
      */
     List<PtlAgreementInsCompanyDto> getAgreementCompanyExternal(String deptId);
 
-    PtlAgreementInsCompanyDto getAgreementCompany(String deptId,String companyId);
+    PtlAgreementInsCompanyDto getAgreementCompany(String deptId, String companyId);
 
 
     /**
@@ -59,6 +60,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 添加协议产品费用
+     *
      * @param agreement
      * @param userName
      * @return
@@ -68,6 +70,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 修改协议产品费用
+     *
      * @param agreement
      * @param userName
      * @return
@@ -76,7 +79,6 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
 
     /**
-     *
      * @param id
      * @return
      */
@@ -84,6 +86,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 添加非车产品协议
+     *
      * @param agreement
      * @param userName
      * @return
@@ -92,6 +95,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 添加承保规则
+     *
      * @param ptlAgreementUndwrtRules
      * @param userName
      * @return
@@ -100,6 +104,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 修改承保规则
+     *
      * @param ptlAgreementUndwrtRules
      * @param userName
      * @return
@@ -108,25 +113,28 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 删除承保规则
+     *
      * @param id
      * @param userName
      * @return
      */
     HttpResult<Object> deleteAgreementUndwrtRules(String id, String userName);
+
     /**
      * 分页查询协议
      *
      * @param ptlAgreementPageVo 分页查询参数
      * @return HttpResult
      */
-    Page<PtlAgreement> pageAgreement(Page page,PtlAgreementPageVo ptlAgreementPageVo);
+    Page<PtlAgreement> pageAgreement(Page page, PtlAgreementPageVo ptlAgreementPageVo);
 
     /**
      * 根据保险公司查询协议
+     *
      * @param ptlAgreementPageVo
      * @return
      */
-    HttpResult<List<PtlAgreement>> listAgreement( PtlAgreementPageVo ptlAgreementPageVo);
+    HttpResult<List<PtlAgreement>> listAgreement(PtlAgreementPageVo ptlAgreementPageVo);
 
     /**
      * 通过协议id查询
@@ -142,7 +150,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
      * @param agreementId 协议id
      * @return HttpResult
      */
-    HttpResult<Object> deleteAgreement(String agreementId,String userName);
+    HttpResult<Object> deleteAgreement(String agreementId, String userName);
 
     /**
      * 修改协议
@@ -186,15 +194,16 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
     /**
      * 校验登录
      *
-     * @param ptlAgreement     协议信息
-     * @param agreementSaveDto 协议添加实体
-     * @param attribution      协议归属添加实体
+     * @param ptlAgreement      协议信息
+     * @param agreementSaveDto  协议添加实体
+     * @param attribution       协议归属添加实体
      * @param verificationLogin 验证登录
      */
     EsmInsCompany verifyLogin(PtlAgreement ptlAgreement, PtlAgreementSaveDto agreementSaveDto, PtlAgreementAttributionDto attribution, boolean verificationLogin);
 
     /**
      * 根据协议编码,归属保险公司获取非车险费用配置信息
+     *
      * @param agreementId
      * @param companyId
      * @return
@@ -203,6 +212,7 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     /**
      * 根据归属保司,查询上级以及本级相关协议集合
+     *
      * @param associationCompaniesId
      * @return
      */
@@ -210,15 +220,16 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
 
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2024/4/15 18:04
-     *  @Description: 查询所有审核的协议
+     * @version
+     * @author: hxl
+     * @Date: 2024/4/15 18:04
+     * @Description: 查询所有审核的协议
      */
     List<PtlAgreement> findCheckAgreementList(PtlAgreement ptlAgreement);
 
     /**
      * 获取当前费用的保险公司所有协议
+     *
      * @param agreementId
      * @return
      */
@@ -239,6 +250,12 @@ public interface PtlAgreementService extends IService<PtlAgreement> {
 
     List<PtlAgreementInsCompanyDto> getExternalAgreement();
 
-    List<PtlAgreement> getAllAgreement();
+    /**
+     * 复制费用协议查询
+     *
+     * @param agreementId
+     * @return
+     */
+    List<PtlAgreement> getAllAgreement(String agreementId);
 
 }

+ 8 - 16
src/main/java/com/ydtech/modules/protocol/service/impl/PtlAgreementServiceImpl.java

@@ -832,7 +832,7 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
         List<PtlAgreementInsCompanyDto> result = new ArrayList<>();
 
 
-        companyList.forEach(item->{
+        companyList.forEach(item -> {
             PtlAgreementInsCompanyDto ptlAgreementInsCompanyDto = new PtlAgreementInsCompanyDto();
             ptlAgreementInsCompanyDto.setId(item.getId());
             ptlAgreementInsCompanyDto.setCnName(item.getCnName());
@@ -841,9 +841,9 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
             ptlAgreementInsCompanyDto.setNamesimple(item.getNamesimple());
             List<PtlAgreement> collect = list.stream().filter(x -> x.getInsuranceCompanyId().equals(item.getId())).collect(Collectors.toList());
             List<PtlAgreementDto> agreementDtos = new ArrayList<>();
-            collect.forEach(x->{
+            collect.forEach(x -> {
                 PtlAgreementDto ptlAgreementDto = new PtlAgreementDto();
-                BeanUtils.copyProperties(x,ptlAgreementDto);
+                BeanUtils.copyProperties(x, ptlAgreementDto);
                 agreementDtos.add(ptlAgreementDto);
             });
             ptlAgreementInsCompanyDto.setAgreement(agreementDtos);
@@ -853,18 +853,10 @@ public class PtlAgreementServiceImpl extends ServiceImpl<PtlAgreementMapper, Ptl
     }
 
     @Override
-    public List<PtlAgreement> getAllAgreement() {
-        LocalDateTime now = LocalDateTime.now();
-        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
-        String currentTime = now.format(formatter);
-
-        List<PtlAgreement> ptlAgreements = baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()                // 协议起期
-                .le(PtlAgreement::getStartDate, currentTime)
-                // 协议止期
-                .ge(PtlAgreement::getEndDate, currentTime)
-                .eq(PtlAgreement::getValidStatus, "1"));
-        return ptlAgreements;
+    public List<PtlAgreement> getAllAgreement(String agreementId) {
+        PtlAgreement ptlAgreement = getById(agreementId);
+        return baseMapper.selectList(new LambdaQueryWrapper<PtlAgreement>()
+                .eq(PtlAgreement::getAssociationCompaniesId, ptlAgreement.getAssociationCompaniesId()));
     }
 
-
-}
+}

+ 18 - 0
src/main/java/com/ydtech/modules/protocols/dao/InsFeeOrderNewMapper.java

@@ -3,6 +3,10 @@ package com.ydtech.modules.protocols.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ydtech.modules.admin.model.dto.*;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptDataDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptQueryDto;
+import com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualQueryDto;
 import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
 import org.apache.ibatis.annotations.Param;
 
@@ -144,6 +148,20 @@ public interface InsFeeOrderNewMapper extends BaseMapper<InsFeeOrderNew> {
      *  @Description:  查询可提现的金额
      */
     BigDecimal findMyAmountYTXmount(@Param("userId") String userId,@Param("status") String status);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/3 18:09
+     *  @Description: 查询渠道、代理人的预收、实收数据
+     */
+    Page<AdvanceAndActualDataDto> queryAdvanceAndActualDataPage(@Param("vo") AdvanceAndActualQueryDto advanceAndActualQueryDto, @Param("page") Page<AdvanceAndActualDataDto> page);
+    /**
+     *  @version
+     *  @author: hxl
+     *  @Date: 2024/7/4 9:26
+     *  @Description: 五级机构
+     */
+    Page<AdvanceAndActualDeptDataDto> queryAdvanceAndActualDeptDataPage(@Param("vo") AdvanceAndActualDeptQueryDto advanceAndActualDeptQueryDto, @Param("page") Page<AdvanceAndActualDeptDataDto> page);
 }
 
 

+ 111 - 0
src/main/java/com/ydtech/utils/CustomCellWriteHandler.java

@@ -0,0 +1,111 @@
+package com.ydtech.utils;
+
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.Head;
+import com.alibaba.excel.metadata.data.CellData;
+import com.alibaba.excel.metadata.data.WriteCellData;
+import com.alibaba.excel.write.metadata.holder.WriteSheetHolder;
+import com.alibaba.excel.write.style.column.AbstractColumnWidthStyleStrategy;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import org.apache.poi.ss.usermodel.Cell;
+
+import java.nio.ByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ *  @version
+ *  @author: hxl
+ *  @Date: 2024/7/4 10:44
+ *  @Description:  excel 自适应列宽
+ */
+public class CustomCellWriteHandler extends AbstractColumnWidthStyleStrategy {
+    private static final int MAX_COLUMN_WIDTH = 255;
+    private static final int COLUMN_WIDTH_BASE = 255;
+    private final Map<Integer, Map<Integer, Double>> cache = new HashMap<>(8);
+    private Integer relativeRowIndex = -1;
+
+    public CustomCellWriteHandler() {
+    }
+
+    public CustomCellWriteHandler(Integer relativeRowIndex) {
+        //这里是指定从第几行开始自适应。0是第一行,1是第二行,以此类推
+         this.relativeRowIndex = relativeRowIndex;
+    }
+    @Override
+    protected void setColumnWidth(WriteSheetHolder writeSheetHolder, List<WriteCellData<?>> cellDataList, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) {
+        boolean needSetWidth = isHead || !CollectionUtils.isEmpty(cellDataList);
+        if (needSetWidth) {
+            if (this.relativeRowIndex == -1 || relativeRowIndex >= this.relativeRowIndex) {
+                Map<Integer, Double> maxColumnWidthMap = cache.computeIfAbsent(writeSheetHolder.getSheetNo(), k -> new HashMap<>(16));
+                double columnWidth = this.dataLength(cellDataList, cell, isHead);
+                if (columnWidth >= 0) {
+                    if (columnWidth > MAX_COLUMN_WIDTH) {
+                        columnWidth = MAX_COLUMN_WIDTH;
+                    }
+                    Double maxColumnWidth = maxColumnWidthMap.get(cell.getColumnIndex());
+                    if (maxColumnWidth == null || columnWidth > maxColumnWidth) {
+                        maxColumnWidthMap.put(cell.getColumnIndex(), columnWidth);
+                        writeSheetHolder.getSheet().setColumnWidth(cell.getColumnIndex(), (int) (maxColumnWidthMap.get(cell.getColumnIndex()) * COLUMN_WIDTH_BASE));
+                    }
+                }
+            }
+        }
+    }
+    private double dataLength(List<WriteCellData<?>> cellDataList, Cell cell, Boolean isHead) {
+          if (isHead) {
+              return cell.getStringCellValue().getBytes().length;
+          } else {
+              CellData<?> cellData = cellDataList.get(0);
+              CellDataTypeEnum type = cellData.getType();
+              //禁止这行
+              cell.getCellStyle().setWrapText(false);
+              if (type == null) {
+                  return -1;
+              } else {
+                  switch (type) {
+                      case STRING:
+                          return getExcelWidth(cellData.getStringValue());
+                      case BOOLEAN:
+                      return getExcelWidth(cellData.getBooleanValue().toString());
+                      case NUMBER:
+                          return getExcelWidth(cellData.getNumberValue().toString());
+                       default:
+                           return -1;
+                  }
+              }
+          }
+    }
+      /**     * 调整单元格字符字节宽度,easyExcel默认直接用的UTF-8的byte长度,导致一旦三字节的字符过多就会变得很宽,一字节的字符过多就会不够宽     */
+      private double getExcelWidth(String str){
+          double length = 0.0;
+          char[] chars = str.toCharArray();
+          for(char c : chars){
+              byte[] bytes = this.getUtf8Bytes(c);
+              if(bytes.length == 1){
+                  length += 1.05;
+              }
+              if(bytes.length == 2){
+                  length += 1.5;
+              }
+              if(bytes.length == 3){
+                  length += 1.85;
+              }
+              if(bytes.length == 4){
+                  length += 2.2;
+              }
+          }
+          return length;
+      }
+      private byte[] getUtf8Bytes(char c) {
+          char[] chars = {c};
+          CharBuffer charBuffer = CharBuffer.allocate(chars.length);
+          charBuffer.put(chars);
+          charBuffer.flip();
+          ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(charBuffer);
+          return byteBuffer.array();
+      }
+    }

+ 1 - 4
src/main/java/com/ydtech/utils/ExcelUtils.java

@@ -1,10 +1,7 @@
 package com.ydtech.utils;
 
 import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.write.metadata.WriteSheet;
 
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
 import java.util.List;
 
 /**
@@ -43,7 +40,7 @@ public class ExcelUtils<T> {
      */
     public boolean writeExcel(String saveFileName, String sheetName,List<T> data) {
         try {
-            EasyExcel.write(saveFileName, clazz).sheet(sheetName).doWrite(data);
+            EasyExcel.write(saveFileName, clazz).sheet(sheetName).registerWriteHandler(new CustomCellWriteHandler()).doWrite(data);
             return true;
         }catch(Exception e){
             return false;

+ 29 - 0
src/main/resources/mapper/modules/fnc/InsPlyIncomeMapper.xml

@@ -351,6 +351,10 @@
             <if test="yearStrat  !=null  and  yearStrat  != ''  and  yearEnd   != null  and  yearEnd   !=''">
                 AND DATE(a.signdate) BETWEEN #{yearStrat} AND #{yearEnd}
             </if>
+
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
         </where>
         ORDER  BY  a.create_time  desc
 
@@ -399,6 +403,10 @@
             <if test="year !=null  and  year  !=''">
                 and YEAR(a.signdate) =#{year}
             </if>
+
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
             group by  MONTH(a.signdate)
         </where>
     </select>
@@ -1013,6 +1021,10 @@
                     and a.handling_fees_status =#{handlingFeesStatus}
                 </if>
 
+                <if test="isExternal  !=null  and  isExternal  != ''">
+                    AND pa.is_external =#{isExternal}
+                </if>
+
                 <if test="documentaryFeesStatus !=null  and  documentaryFeesStatus  !=''">
                     and a.documentary_fees_status =#{documentaryFeesStatus}
                 </if>
@@ -1242,6 +1254,7 @@
             <if test="month !=null  and  month !=''">
                 AND month(a.signdate) =#{month}
             </if>
+
             <if test="day !=null  and  day !=''">
                 AND day(a.signdate) =#{day}
             </if>
@@ -1308,6 +1321,10 @@
                 and a.company_id =#{companyName}
             </if>
 
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
+
             <if test="policyno !=null  and  policyno  !=''">
                 and a.policyno =#{policyno}
             </if>
@@ -1437,6 +1454,9 @@
             <if test="year !=null  and  year  !=''">
                 AND YEAR(a.signdate) =#{year}
             </if>
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
             <if test="isOther !=null  and  isOther  !=''">
                 and a.is_not_documentary   =#{isOther}
             </if>
@@ -1686,6 +1706,9 @@
                 and a.is_not_car =#{isNotCar}
             </if>
 
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
 
             <if test="handlingFeesStatus !=null  and  handlingFeesStatus  !=''">
                 and a.handling_fees_status =#{handlingFeesStatus}
@@ -1951,6 +1974,9 @@
                 and pa.agreement_type =#{agreementType}
             </if>
 
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
             <if test="signDateEnd !=null  and  signDateEnd!='' and  signDateStart !=null and signDateStart !=''">
                 and a.signdate   between #{signDateStart} and #{signDateEnd}
             </if>
@@ -2204,6 +2230,9 @@
             <if test="companyName !=null  and  companyName  !=''">
                 and a.company_id =#{companyName}
             </if>
+            <if test="isExternal  !=null  and  isExternal  != ''">
+                AND pa.is_external =#{isExternal}
+            </if>
 
             <if test="policyno !=null  and  policyno  !=''">
                 and a.policyno =#{policyno}

+ 146 - 2
src/main/resources/mapper/modules/ins/InsFeeOrderNewMapper.xml

@@ -843,7 +843,9 @@
         SELECT
         a.ins_order_no AS "subOrderNo",
         DATE_FORMAT(iac.signing_time, '%Y-%m-%d %H:%i:%s')  AS "signingTime",
+        DATE_FORMAT(iac.signing_time, '%Y-%m-%d')  AS "signingTimeDay",
         DATE_FORMAT(iff.audittime, '%Y-%m-%d %H:%i:%s')   AS "auditTime",
+        DATE_FORMAT(iff.audittime, '%Y-%m-%d')   AS "auditTimeDay",
         CASE iff.auditstatus WHEN '0' THEN '未审核' WHEN '1' THEN '已审核' ELSE '' END AS auditstatus,
         o.licenseno AS "licenseno",
         (
@@ -853,13 +855,20 @@
         iac.jqapplyno AS jqapplyno,
         iac.syapplyno AS syapplyno,
         iac.inscompany AS companyName,
-        o.insuredname AS insuredName,
+        JSON_UNQUOTE(json_extract(o.applyinfo, '$.name')) as insuredName,
         ins.NAME AS partnerCompaniesName,
         o.username as userName,
         o.orderno as orderno,
         o.frameno as frameNo,
         JSON_EXTRACT( o.carinfo, '$.engineNo' ) as engineNo,
-        iac.product as productId
+        iac.product as productId,
+        iac.jqpremium,
+        iac.sypremium,
+        iac.jypremium,
+        iac.taxamount,
+        a.jq_costs_export_proportion+a.jq_export_other_costs_proportion as jq_export_proportion,
+        a.sy_costs_export_proportion+a.sy_export_other_costs_proportion as sy_export_proportion,
+        a.no_costs_export_proportion+a.no_export_other_costs_proportion as no_export_proportion
         FROM
         ins_fee_audit iff
         LEFT JOIN ins_fee_order_new a ON a.ins_order_no = iff.ins_order_no
@@ -1163,4 +1172,139 @@
             au.user_id = #{userId}
           AND auditing_status = #{status}
     </select>
+
+    <select id="queryAdvanceAndActualDataPage"
+            resultType="com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDataDto">
+        SELECT
+            a.ins_order_no AS subOrderNo,
+            iac.signing_time AS signingTime,
+            o.licenseno AS licenseNo,
+            CASE
+                iff.auditstatus
+                WHEN '0' THEN
+                    '未审核'
+                WHEN '1' THEN
+                    '已审核' ELSE ''
+                END AS auditstatus,
+            o.username AS userName,
+            o.userid AS userId,
+            ifnull( a.jq_export_supervise_costs_premiums, 0 )+ ifnull( a.sy_export_supervise_costs_premiums, 0 )+ ifnull( a.no_export_supervise_costs_premiums, 0 ) AS haldingAmount,
+            ifnull( a.jq_export_other_costs_premiums, 0 )+ ifnull( a.sy_export_other_costs_premiums, 0 )+ ifnull( a.no_export_other_costs_premiums, 0 ) AS documentaryAmount,
+            ifnull( a.first_detail_premiums, 0 )+ ifnull( a.second_detail_premiums, 0 )+ ifnull( a.third_detail_premiums, 0 ) AS promotionAmount,
+            ifnull( a.jq_export_supervise_costs_premiums, 0 )+ ifnull( a.sy_export_supervise_costs_premiums, 0 )+ ifnull( a.no_export_supervise_costs_premiums, 0 ) + ifnull( a.jq_export_other_costs_premiums, 0 )+ ifnull( a.sy_export_other_costs_premiums, 0 )+ ifnull( a.no_export_other_costs_premiums, 0 ) + ifnull( a.first_detail_premiums, 0 )+ ifnull( a.second_detail_premiums, 0 )+ ifnull( a.third_detail_premiums, 0 ) AS sumAmount,
+            CASE
+                dept.management_source
+                WHEN '1' THEN
+                    '渠道'
+                WHEN '2' THEN
+                    '代理人' ELSE ''
+                END deptType
+        FROM
+            ins_fee_audit iff
+                LEFT JOIN ins_fee_order_new a ON a.ins_order_no = iff.ins_order_no
+                LEFT JOIN ins_area_company iac ON iac.id = a.ins_order_no
+                LEFT JOIN ins_orders o ON o.orderno = iac.orderno
+                LEFT JOIN sys_dept dept ON o.deptid = dept.id
+        WHERE
+            iac.orderstatus = '3'
+          AND (
+            dept.management_source = 1
+                OR dept.management_source = 2)
+        <if test="vo.subOrderNo!=null and  vo.subOrderNo!= ''">
+            AND iac.id =  #{vo.subOrderNo}
+        </if>
+        <if test="vo.userId!=null and  vo.userId!= ''">
+            AND  o.userid =  #{vo.userId}
+        </if>
+        <if test="vo.userName!=null and  vo.userName!= ''">
+            AND  o.username=  #{vo.userName}
+        </if>
+        <if test="vo.licenseNo!=null and  vo.licenseNo!= ''">
+            AND o.licenseno =  #{vo.licenseNo}
+        </if>
+        <if test="vo.startDate!=null and  vo.startDate!= '' and vo.endDate!=null and  vo.endDate!= ''">
+            AND iac.signing_time  BETWEEN #{vo.startDate} AND #{vo.endDate}
+        </if>
+        <if test="vo.auditstatus!=null and  vo.auditstatus!= ''">
+            AND iff.auditstatus =  #{vo.auditstatus}
+        </if>
+        <if test="vo.deptType!=null and  vo.deptType!= ''">
+            AND dept.management_source =  #{vo.deptType}
+        </if>
+           order by  iac.signing_time desc
+    </select>
+    <select id="queryAdvanceAndActualDeptDataPage"
+            resultType="com.ydtech.modules.admin.model.report.financeData.AdvanceAndActualDeptDataDto">
+        SELECT
+            b.suborder AS subOrderNo,
+            iac.signing_time AS signingTime,
+            o.licenseno AS licenseNo,
+            CASE
+                iff.auditstatus
+                WHEN '0' THEN
+                    '未审核'
+                WHEN '1' THEN
+                    '已审核' ELSE ''
+                END AS auditstatus,
+            o.username AS userName,
+            o.userid AS userId,
+            b.deptId AS deptId,
+            b.sumAmount AS sumAmount,
+            dept.NAME AS deptName
+        FROM
+            ins_fee_audit iff
+                LEFT JOIN (
+                SELECT
+                    ins_order_no AS suborder,
+                    LEFT ( dept_id, 2 ) AS deptId,
+                    ( jq_dept_premiums_level_1 + sy_dept_premiums_level_1 + no_dept_premiums_level_1 ) AS sumAmount
+                FROM
+                    ins_fee_order_new UNION ALL
+                SELECT
+                    ins_order_no AS suborder,
+                    LEFT ( dept_id, 4 ) AS deptId,
+                    ( jq_dept_premiums_level_2 + sy_dept_premiums_level_2 + no_dept_premiums_level_2 ) AS sumAmount
+                FROM
+                    ins_fee_order_new UNION ALL
+                SELECT
+                    ins_order_no AS suborder,
+                    LEFT ( dept_id, 6 ) AS deptId,
+                    ( jq_dept_premiums_level_3 + sy_dept_premiums_level_3 + no_dept_premiums_level_3 ) AS sumAmount
+                FROM
+                    ins_fee_order_new UNION ALL
+                SELECT
+                    ins_order_no AS suborder,
+                    LEFT ( dept_id, 8 ) AS deptId,
+                    ( jq_dept_premiums_level_4 + sy_dept_premiums_level_4 + no_dept_premiums_level_4 ) AS sumAmount
+                FROM
+                    ins_fee_order_new UNION ALL
+                SELECT
+                    ins_order_no AS suborder,
+                    LEFT ( dept_id, 11 ) AS deptId,
+                    ( jq_dept_premiums_level_5 + sy_dept_premiums_level_5 + no_dept_premiums_level_5 ) AS sumAmount
+                FROM
+                    ins_fee_order_new
+            ) b ON iff.ins_order_no = b.suborder
+                LEFT JOIN ins_area_company iac ON iac.id = b.suborder
+                LEFT JOIN ins_orders o ON o.orderno = iac.orderno
+                LEFT JOIN sys_dept dept ON b.deptid = dept.id
+        WHERE
+            iac.orderstatus = '3'
+        <if test="vo.subOrderNo!=null and  vo.subOrderNo!= ''">
+            AND iac.id =  #{vo.subOrderNo}
+        </if>
+        <if test="vo.licenseNo!=null and  vo.licenseNo!= ''">
+            AND o.licenseno =  #{vo.licenseNo}
+        </if>
+        <if test="vo.startDate!=null and  vo.startDate!= '' and vo.endDate!=null and  vo.endDate!= ''">
+            AND iac.signing_time  BETWEEN #{vo.startDate} AND #{vo.endDate}
+        </if>
+        <if test="vo.auditstatus!=null and  vo.auditstatus!= ''">
+            AND iff.auditstatus =  #{vo.auditstatus}
+        </if>
+        <if test="vo.deptId!=null and  vo.deptId!= ''">
+            AND  dept.id =  #{vo.deptId}
+        </if>
+        order by  iac.signing_time desc
+    </select>
 </mapper>