Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

lixiaolong 3 недель назад
Родитель
Сommit
a275dd827b
31 измененных файлов с 492 добавлено и 159 удалено
  1. 1 1
      commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java
  2. 4 1
      commons/src/main/java/com/jzg/commons/entity/dto/SysUserAccountPageParam.java
  3. 16 0
      commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementDetailExcelDto.java
  4. 20 0
      commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncome.java
  5. 30 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/InsPlyIncomeModify.java
  6. 20 0
      commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java
  7. 9 1
      commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java
  8. 6 6
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeExportVo.java
  9. 3 3
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4Platform.java
  10. 3 3
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateFollow.java
  11. 2 2
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseCar.java
  12. 1 1
      commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseNoCar.java
  13. 2 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java
  14. 2 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersOther.java
  15. 4 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPolicy.java
  16. 2 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersRisk.java
  17. 2 1
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersTax.java
  18. 5 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserJzgInfoBankCardVo.java
  19. 6 0
      commons/src/main/java/com/jzg/commons/util/DateTimeUtils.java
  20. 64 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  21. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java
  22. 2 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  23. 77 67
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  24. 20 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  25. 9 0
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  26. 8 0
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  27. 1 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java
  28. 45 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  29. 56 13
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml
  30. 63 54
      tenant/organization/src/main/resources/mapper/SysDistributionSettingMapper.xml
  31. 3 0
      tenant/organization/src/main/resources/mapper/SysUserAccountMapper.xml

+ 1 - 1
commons/src/main/java/com/jzg/commons/config/DataPermissionInterceptor.java

@@ -139,7 +139,7 @@ public class DataPermissionInterceptor implements MultiDataPermissionHandler {
             List<String> deptIds = new ArrayList<>();
             if (dataScope.getString("dataMark").equals("2")) {
                 additionalSql.append(tableName).append(".").append(fieldName).append(" in (");
-                additionalSql.append("select id from sys_dept where route like '").append(currentUserDeptId).append("%'");
+                additionalSql.append("select id from sys_dept where route like '%").append(currentUserDeptId).append("%'");
                 additionalSql.append(")");
             } else {
                 deptIds = dataScope.getObject("deptIds", List.class);

+ 4 - 1
commons/src/main/java/com/jzg/commons/entity/dto/SysUserAccountPageParam.java

@@ -14,9 +14,12 @@ import java.time.LocalDate;
 @Data
 public class SysUserAccountPageParam extends PageRequest {
 
-    @Schema(description = "业务员")
+    @Schema(description = "业务员手机号")
     private String salesman;
 
+    @Schema(description = "业务员姓名")
+    private String salesmanName;
+
     @Schema(description = "业务员类型1.前线人员 2:后线人员 3:合伙人 4:工作室管理员 5:团队 6:个代 7:电销 8 渠道")
     private String attrType;
 

+ 16 - 0
commons/src/main/java/com/jzg/commons/entity/finance/dto/ExportSuperviseSettlementDetailExcelDto.java

@@ -132,4 +132,20 @@ public class ExportSuperviseSettlementDetailExcelDto {
     @Schema(description = "对接人手机号")
     @ExcelProperty(value = "对接人手机号")
     private  String contactPersonPhone;
+
+    @Schema(description = "订单号")
+    @ExcelProperty(value = "订单号")
+    private String orderNo;
+
+    @Schema(description = "订单状态(编码)")
+    @ExcelProperty(value = "订单状态(编码)")
+    private String orderStatus;
+
+    @Schema(description = "订单状态(转义)")
+    @ExcelProperty(value = "订单状态(转义)")
+    private String orderStatusName;
+
+    @Schema(description = "发票号")
+    @ExcelProperty(value = "发票号")
+    private String invoiceNo;
 }

+ 20 - 0
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncome.java

@@ -411,4 +411,24 @@ public class InsPlyIncome extends BaseModel {
     @Schema(description = "禁用标志:1-已对账(禁用),0-未对账(可用)")
     @ExcelIgnore
     private String disableFlag;
+
+    @TableField(exist = false)
+    @Schema(description = "投保人")
+    @ExcelIgnore
+    private String policyholder;
+
+    @TableField(exist = false)
+    @Schema(description = "支付时间")
+    @ExcelIgnore
+    private String payTime;
+
+    @TableField(exist = false)
+    @Schema(description = "报价时间")
+    @ExcelIgnore
+    private String reportTime;
+
+    @TableField(exist = false)
+    @Schema(description = "发票号")
+    @ExcelIgnore
+    private String invoiceNo;
 }

+ 30 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/InsPlyIncomeModify.java

@@ -0,0 +1,30 @@
+package com.jzg.commons.entity.finance.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.io.Serial;
+import java.io.Serializable;
+
+@Data
+public class InsPlyIncomeModify implements Serializable {
+    @Serial
+    private static final long serialVersionUID = 3370738510742999157L;
+
+    @Schema(description = "序号")
+    private String incomeId;
+    @Schema(description = "订单号")
+    private String orderNo;
+
+    @Schema(description = "交强保单号")
+    private String jqPolicyNo;
+
+    @Schema(description = "商业保单号")
+    private String syPolicyNo;
+
+    @Schema(description = "驾意保单号")
+    private String jyPolicyNo;
+
+    @Schema(description = "修改用户")
+    private String updateBy;
+}

+ 20 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/ReceivableQueryVo.java

@@ -130,4 +130,24 @@ public class ReceivableQueryVo extends PageRequest {
      */
     private String invoiceType;
 
+    @Schema(description = "支付开始时间")
+    private String payTimeBegin;
+
+    @Schema(description = "支付结束时间")
+    private String payTimeEnd;
+
+    @Schema(description = "报价开始时间")
+    private String reportTimeBegin;
+
+    @Schema(description = "报价结束时间")
+    private String reportTimeEnd;
+
+    @Schema(description = "保险机构")
+    private String partnerCompanyId;
+
+    @Schema(description = "修改人")
+    private String updateBy;
+
+
+
 }

+ 9 - 1
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java

@@ -86,10 +86,18 @@ public class SettlementQueryVo extends PageRequest {
     @Schema(description = "租户代码")
     private String systemCode;
 
-
     /**
      * 签署月份,格式:2026-07
      */
     @Schema(description = "签署月份")
     private String signMonth;
+
+    @Schema(description = "回款时间-起")
+    private String receivePaymentDateBegin;
+
+    @Schema(description = "回款时间-止")
+    private String receivePaymentDateEnd;
+
+    @Schema(description = "发票号")
+    private String invoiceNo;
 }

+ 6 - 6
commons/src/main/java/com/jzg/commons/entity/finance/vo/importbatchmodify/InsPlyIncomeExportVo.java

@@ -32,27 +32,27 @@ public class InsPlyIncomeExportVo implements Serializable {
     private String jyPolicyNo;
 
     @Schema(description = "交强手续费比例")
-    @ExcelProperty(value ="交强手续费比例", index = 4)
+    @ExcelProperty(value ="交强手续费比例,单位:百分比(%)", index = 4)
     private BigDecimal jqSuperviseCostsProportion;
 
     @Schema(description = "交强跟单费比例")
-    @ExcelProperty(value = "交强跟单费比例", index = 5)
+    @ExcelProperty(value = "交强跟单费比例,单位:百分比(%)", index = 5)
     private BigDecimal jqOtherCostsProportion;
 
     @Schema(description = "商业手续费比例")
-    @ExcelProperty(value = "商业手续费比例", index = 6)
+    @ExcelProperty(value = "商业手续费比例,单位:百分比(%)", index = 6)
     private BigDecimal sySuperviseCostsProportion;
 
     @Schema(description = "商业跟单费比例")
-    @ExcelProperty(value = "商业跟单费比例", index = 7)
+    @ExcelProperty(value = "商业跟单费比例,单位:百分比(%)", index = 7)
     private BigDecimal syOtherCostsProportion;
 
     @Schema(description = "驾意手续费比例")
-    @ExcelProperty(value = "驾意手续费比例", index = 8)
+    @ExcelProperty(value = "驾意手续费比例,单位:百分比(%)", index = 8)
     private BigDecimal jySuperviseCostsProportion;
 
     @Schema(description = "驾意跟单费比例")
-    @ExcelProperty(value = "驾意跟单费比例", index = 9)
+    @ExcelProperty(value = "驾意跟单费比例,单位:百分比(%)", index = 9)
     private BigDecimal jyOtherCostsProportion;
 
 }

+ 3 - 3
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4Platform.java

@@ -37,15 +37,15 @@ public class ExcelContent4Platform implements InsuranceData {
     private String jyPolicyNo;
 
     @Schema(description = "交强险入口比例")
-    @ExcelProperty(value = "交强险入口比例", index = 4)
+    @ExcelProperty(value = "交强险入口比例,单位:百分比(%)", index = 4)
     private String jqInletRatio;
 
     @Schema(description = "商业险入口比例")
-    @ExcelProperty(value = "商业险入口比例", index = 5)
+    @ExcelProperty(value = "商业险入口比例,单位:百分比(%)", index = 5)
     private String syInletRatio;
 
     @Schema(description = "非车险入口比例")
-    @ExcelProperty(value = "非车险入口比例", index = 6)
+    @ExcelProperty(value = "非车险入口比例,单位:百分比(%)", index = 6)
     private String jyInletRatio;
 
 }

+ 3 - 3
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateFollow.java

@@ -39,15 +39,15 @@ public class ExcelContent4PrivateFollow implements Serializable {
     private String jyPolicyNo;
 
     @Schema(description = "交强险跟单费比例")
-    @ExcelProperty(value = "交强险跟单费比例", index = 4)
+    @ExcelProperty(value = "交强险跟单费比例,单位:百分比(%)", index = 4)
     private String jqOtherCostsProportion;
 
     @Schema(description = "商业险跟单费比例")
-    @ExcelProperty(value = "商业险跟单费比例", index = 5)
+    @ExcelProperty(value = "商业险跟单费比例,单位:百分比(%)", index = 5)
     private String syOtherCostsProportion;
 
     @Schema(description = "非车险跟单费比例")
-    @ExcelProperty(value = "非车险跟单费比例", index = 6)
+    @ExcelProperty(value = "非车险跟单费比例,单位:百分比(%)", index = 6)
     private String jyOtherCostsProportion;
 
 }

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseCar.java

@@ -34,12 +34,12 @@ public class ExcelContent4PrivateSuperviseCar implements InsuranceData {
     private String syPolicyNo;
 
     @Schema(description = "交强险手续费比例")
-    @ExcelProperty(value = "交强险手续费比例", index = 3)
+    @ExcelProperty(value = "交强险手续费比例,单位:百分比(%)", index = 3)
     private String jqSuperviseCostsProportion;
 
 
     @Schema(description = "商业险手续费比例")
-    @ExcelProperty(value = "商业险手续费比例", index = 4)
+    @ExcelProperty(value = "商业险手续费比例,单位:百分比(%)", index = 4)
     private String sySuperviseCostsProportion;
 
 

+ 1 - 1
commons/src/main/java/com/jzg/commons/entity/finance/vo/importimcome/ExcelContent4PrivateSuperviseNoCar.java

@@ -31,7 +31,7 @@ public class ExcelContent4PrivateSuperviseNoCar implements InsuranceData {
 
 
     @Schema(description = "非车险手续费比例")
-    @ExcelProperty(value = "非车险手续费比例", index = 2)
+    @ExcelProperty(value = "非车险手续费比例,单位:百分比(%)", index = 2)
     private String jySuperviseCostsProportion;
 
 }

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCosts.java

@@ -1,6 +1,7 @@
 package com.jzg.commons.entity.orders.po;
 
 import com.baomidou.mybatisplus.annotation.TableId;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import org.springframework.data.annotation.Id;
@@ -9,7 +10,7 @@ import java.math.BigDecimal;
 
 @Data
 @Schema(description = "保险订单保费信息")
-public class InsOrdersCosts {
+public class InsOrdersCosts extends BaseModel {
 
     @TableId
     @Schema(description = "订单号")

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersOther.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -15,7 +16,7 @@ import java.math.BigDecimal;
 @Data
 @Schema(description = "保险订单其他信息")
 @TableName(value = "ins_orders_other", autoResultMap = true)
-public class InsOrdersOther {
+public class InsOrdersOther extends BaseModel {
 
     @TableId
     @Schema(description = "订单号")

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersPolicy.java

@@ -5,10 +5,14 @@ import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
+
 @Data
 @Schema(description = "保险订单保单信息")
 public class InsOrdersPolicy extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = 6443063736847279808L;
     @TableId
     @Schema(description = "订单号")
     private String orderNo;

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersRisk.java

@@ -4,6 +4,7 @@ package com.jzg.commons.entity.orders.po;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -12,7 +13,7 @@ import java.time.LocalDateTime;
 
 @Data
 @Schema(description = "保险订单险种信息")
-public class InsOrdersRisk {
+public class InsOrdersRisk extends BaseModel {
 
     @TableId(type = IdType.ASSIGN_ID)
     private String id;

+ 2 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersTax.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.orders.po;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.aop.aspect.DiffProperty;
+import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
@@ -11,7 +12,7 @@ import java.time.LocalDateTime;
 
 @Data
 @Schema(description = "保险订单税务信息")
-public class InsOrdersTax {
+public class InsOrdersTax extends BaseModel {
 
     @Schema(description = "订单号")
     @TableId(value = "order_no")

+ 5 - 0
commons/src/main/java/com/jzg/commons/entity/vo/SysUserJzgInfoBankCardVo.java

@@ -20,6 +20,9 @@ public class SysUserJzgInfoBankCardVo extends PageRequest {
     @Schema(description = "业务员")
     private String salesman;
 
+    @Schema(description = "业务员姓名")
+    private String salesmanName;
+
     @Schema(description = "业务员id")
     private String userJzgInfoId;
 
@@ -68,4 +71,6 @@ public class SysUserJzgInfoBankCardVo extends PageRequest {
     @Schema(description = "备注")
     private String remark;
 
+    @Schema(description = "管理人")
+    private String managerName;
 }

+ 6 - 0
commons/src/main/java/com/jzg/commons/util/DateTimeUtils.java

@@ -25,6 +25,9 @@ public class DateTimeUtils {
      * @date 2026/8/27 15:10
      */
     public static String obtainStartTime(String beginDate){
+        if(StrUtil.isEmpty(beginDate)){
+            return null;
+        }
         LocalDate localDate = LocalDate.parse(beginDate, DATE_FORMATTER);
         return localDate.atStartOfDay().format(DateTimeFormatter.ofPattern(pattern));
     }
@@ -38,6 +41,9 @@ public class DateTimeUtils {
      * @date 2026/8/27 15:10
      */
     public static String obtainNextDayStartTime(String endDate){
+        if(StrUtil.isEmpty(endDate)){
+            return null;
+        }
         LocalDate localDate= LocalDate.parse(endDate, DATE_FORMATTER);
         LocalDateTime nextLocalDateTime = localDate.plusDays(1).atStartOfDay();
         return nextLocalDateTime.format(DateTimeFormatter.ofPattern(pattern));

+ 64 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -6,6 +6,7 @@ import cn.hutool.core.util.NumberUtil;
 import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.jzg.commons.aop.OperatorTrajectory;
 import com.jzg.commons.core.base.BaseController;
@@ -17,6 +18,8 @@ import com.jzg.commons.entity.finance.vo.BatchModifyVo;
 import com.jzg.commons.entity.finance.vo.UpdateCompanyBatchVo;
 import com.jzg.commons.entity.orders.po.InsOrders;
 import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersExternalPolicy;
+import com.jzg.commons.entity.orders.po.InsOrdersPolicy;
 import com.jzg.commons.entity.orders.vo.HistoryQuoteQueryVo;
 import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.po.InsFeeOrders;
@@ -29,6 +32,7 @@ import com.jzg.commons.request.RequestSingleParam;
 import com.jzg.quotation.summary.mapper.InsOrdersMapper;
 import com.jzg.quotation.summary.service.InsFeeOrdersService;
 import com.jzg.quotation.summary.service.InsOrdersCarInfoService;
+import com.jzg.quotation.summary.service.InsOrdersPolicyService;
 import com.jzg.quotation.summary.service.InsOrdersService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -65,6 +69,8 @@ public class InsOrdersController extends BaseController {
 
     @Autowired
     private BaseController baseController;
+    @Autowired
+    private InsOrdersPolicyService insOrdersPolicyService;
 
     @Resource
     private InsFeeOrdersService insFeeOrdersService;
@@ -75,6 +81,37 @@ public class InsOrdersController extends BaseController {
     @PostMapping("saveOrders")
     public HttpResult saveOrUpdate(@RequestBody InsOrdersAdd ordersAdd) {
         log.info("补录订单。 saveOrUpdate=[{}]", JSONUtil.toJsonStr(ordersAdd));
+
+        // 检查输入参数是否为空,如果为空则返回错误信息
+
+        if(ordersAdd.getInsOrders().getCompanyId().isEmpty()){
+            return HttpResult.error("请填写报价公司信息!");
+        }
+        if(ordersAdd.getInsOrders().getAgreementId().isEmpty()){
+            return HttpResult.error("请填写报价协议信息");
+        }
+        if(ordersAdd.getIsTemporarily() ==0){
+            InsOrdersExternalPolicy insOrdersExternalPolicy = ordersAdd.getInsOrdersExternalPolicy();
+            if(insOrdersExternalPolicy == null || (insOrdersExternalPolicy.getJqPolicy().isEmpty() && insOrdersExternalPolicy.getSyPolicy().isEmpty()) ){
+                return HttpResult.error("商业险保单和交强险保单不能都为空!");
+            }
+            if(!insOrdersExternalPolicy.getJqPolicy().isEmpty()){
+                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(InsOrdersPolicy::getJqPolicyNo, insOrdersExternalPolicy.getJqPolicy());
+                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
+                if(list != null && !list.isEmpty()){
+                    return HttpResult.error("该交强险保单号信息已存在!");
+                }
+            }
+            if(!insOrdersExternalPolicy.getSyPolicy().isEmpty()){
+                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(InsOrdersPolicy::getSyPolicyNo, insOrdersExternalPolicy.getSyPolicy());
+                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
+                if(list != null && !list.isEmpty()){
+                    return HttpResult.error("该商业保单号信息已存在!");
+                }
+            }
+        }
         ordersAdd.setSystemCode(getSystemCode());
         return insOrdersService.saveOrders(ordersAdd);
     }
@@ -91,6 +128,33 @@ public class InsOrdersController extends BaseController {
     @PostMapping("updateOrders")
     public HttpResult updateOrders(@RequestBody InsOrdersEnd ordersEnd) {
         ordersEnd.setSystemCode(getSystemCode());
+        if(ordersEnd.getIsTemporarily() ==0){
+            InsOrdersExternalPolicy insOrdersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
+            if(insOrdersExternalPolicy == null || (insOrdersExternalPolicy.getJqPolicy().isEmpty() && insOrdersExternalPolicy.getSyPolicy().isEmpty()) ){
+                return HttpResult.error("商业险保单和交强险保单不能都为空!");
+            }
+            if(!insOrdersExternalPolicy.getJqPolicy().isEmpty()){
+                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(InsOrdersPolicy::getJqPolicyNo, insOrdersExternalPolicy.getJqPolicy());
+                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
+                if(list != null && !list.isEmpty()){
+                    // 修改订单时,排除原订单的问题
+                    if(!list.get(0).getOrderNo().equals(ordersEnd.getInsOrders().getId())){
+                        return HttpResult.error("该交强险保单号信息已存在!");
+                    }
+                }
+            }
+            if(!insOrdersExternalPolicy.getSyPolicy().isEmpty()){
+                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
+                wrapper.eq(InsOrdersPolicy::getSyPolicyNo, insOrdersExternalPolicy.getSyPolicy());
+                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
+                if(list != null && !list.isEmpty()){
+                    if(!list.get(0).getOrderNo().equals(ordersEnd.getInsOrders().getId())){
+                        return HttpResult.error("该商业保单号信息已存在!");
+                    }
+                }
+            }
+        }
         return insOrdersService.updateOrders(ordersEnd);
     }
 

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -339,4 +339,10 @@ public interface InsOrdersService extends IService<InsOrders> {
      */
     InsOrdersCarInfo getByOrderId(String orderNo);
 
+    /**
+     * 根据订单号删除所有订单主表,关联表的信息
+     * @param orderNo
+     */
+    void deleteOrderAllByOrderNo(String orderNo);
+
 }

+ 2 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java

@@ -779,12 +779,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             }
 
             // 调用权益发放接口
+            log.info("开始调用三方权益发放接口");
             ChannelRightsApiGrantRecordDTO grantRequest = new ChannelRightsApiGrantRecordDTO();
             grantRequest.setBusinessId(feeOrders.getOrderNo());
             grantRequest.setReceiverDTO(receiverDTO);
             grantRequest.setRightsList(rightsRequest);
             grantRequest.setRemark("订单号:" + feeOrders.getOrderNo() + "权益赠送");
             Result<String> grantResult = localLivingClient.distribution(grantRequest);
+            log.info("三方返回:" + JSONObject.toJSONString(grantResult));
             // 处理响应结果
             if (grantResult != null  && grantResult.getCode() == 200) {
                 // 发放成功后扣除订单总应收保费

+ 77 - 67
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -382,39 +382,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
         log.info("补录订单:ordersAdd=[{}]", JSONUtil.toJsonStr(ordersAdd));
         ordersAdd.getFeeOrdersVo().setIsrecordByLeader(ordersAdd.getInsOrdersOtherInfo().isIsrecordByLeader());
-
-        // 检查输入参数是否为空,如果为空则返回错误信息
-
-        if(ordersAdd.getInsOrders().getCompanyId().isEmpty()){
-            return HttpResult.error("请填写报价公司信息!");
-        }
-        if(ordersAdd.getInsOrders().getAgreementId().isEmpty()){
-            return HttpResult.error("请填写报价协议信息");
-        }
-        if(ordersAdd.getIsTemporarily() ==0){
-            InsOrdersExternalPolicy insOrdersExternalPolicy = ordersAdd.getInsOrdersExternalPolicy();
-            if(insOrdersExternalPolicy == null || (insOrdersExternalPolicy.getJqPolicy().isEmpty() && insOrdersExternalPolicy.getSyPolicy().isEmpty()) ){
-                return HttpResult.error("商业险保单和交强险保单不能都为空!");
-            }
-            if(!insOrdersExternalPolicy.getJqPolicy().isEmpty()){
-                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(InsOrdersPolicy::getJqPolicyNo, insOrdersExternalPolicy.getJqPolicy());
-                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
-                if(list != null && !list.isEmpty()){
-                    return HttpResult.error("该交强险保单号信息已存在!");
-                }
-            }
-            if(!insOrdersExternalPolicy.getSyPolicy().isEmpty()){
-                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(InsOrdersPolicy::getSyPolicyNo, insOrdersExternalPolicy.getSyPolicy());
-                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
-                if(list != null && !list.isEmpty()){
-                    return HttpResult.error("该商业保单号信息已存在!");
-                }
-            }
-        }
-
-
         try {
             // 获取订单对象并设置引用编号
             InsOrders insOrders = ordersAdd.getInsOrders();
@@ -543,6 +510,8 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
             // 发送订单状态变更消息
             this.orderStatusMessage(insOrders, insOrdersCarInfo, insOrdersCosts, baseController.getToken(), MessageCodeEnum.TEMPLATE_9);
+
+            // 生成子订单
             if (nullOrders) {
                 InsOrders orders = insOrdersAdd.getInsOrders();
                 orders.setQuoteNo(insOrders.getQuoteNo());
@@ -712,34 +681,6 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Transactional(rollbackFor = Exception.class)
     public HttpResult updateOrders(InsOrdersEnd ordersEnd) {
 
-        if(ordersEnd.getIsTemporarily() ==0){
-            InsOrdersExternalPolicy insOrdersExternalPolicy = ordersEnd.getInsOrdersExternalPolicy();
-            if(insOrdersExternalPolicy == null || (insOrdersExternalPolicy.getJqPolicy().isEmpty() && insOrdersExternalPolicy.getSyPolicy().isEmpty()) ){
-                return HttpResult.error("商业险保单和交强险保单不能都为空!");
-            }
-            if(!insOrdersExternalPolicy.getJqPolicy().isEmpty()){
-                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(InsOrdersPolicy::getJqPolicyNo, insOrdersExternalPolicy.getJqPolicy());
-                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
-                if(list != null && !list.isEmpty()){
-                    // 修改订单时,排除原订单的问题
-                    if(!list.get(0).getOrderNo().equals(ordersEnd.getInsOrders().getId())){
-                        return HttpResult.error("该交强险保单号信息已存在!");
-                    }
-                }
-            }
-            if(!insOrdersExternalPolicy.getSyPolicy().isEmpty()){
-                LambdaQueryWrapper<InsOrdersPolicy> wrapper = new LambdaQueryWrapper<>();
-                wrapper.eq(InsOrdersPolicy::getSyPolicyNo, insOrdersExternalPolicy.getSyPolicy());
-                List<InsOrdersPolicy> list = insOrdersPolicyService.list(wrapper);
-                if(list != null && !list.isEmpty()){
-                    if(!list.get(0).getOrderNo().equals(ordersEnd.getInsOrders().getId())){
-                        return HttpResult.error("该商业保单号信息已存在!");
-                    }
-                }
-            }
-        }
-
         try {
             // 获取订单对象并设置引用编号
             InsOrders insOrders = ordersEnd.getInsOrders();
@@ -1169,15 +1110,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         Page<OrderListVo> orderListVoPage;
         if (baseController.getUserSystemCode().equals("APP")) {
-            // 手动分页:以主订单为主,按车牌+状态分组去重,先统计总数再取当前页(避免 MP 自动 count 解析窗口函数报错)
+            // APP 端统一走手动分页:按车牌+状态分组去重(避免 MP 自动 count 解析窗口函数报错)。
+            // SQL 中根据 isLargeOrder 动态切换 parent_id 条件:大订单查主订单(parent_id='0'),否则只查从订单(parent_id!='0')
             Page<OrderListVo> page = insOrdersParam.getPage();
             long current = page.getCurrent();
             long size = page.getSize();
             long offset = (current - 1) * size;
             long total = insOrdersMapper.countOrderListDistinct(insOrdersParam);
             List<OrderListVo> records = insOrdersMapper.queryOrderListDistinct(insOrdersParam, offset, size);
-            // 以主订单为主:查询主订单下的从订单并挂载
-            if (CollUtil.isNotEmpty(records)) {
+            // 大订单:以主订单为主,查询主订单下的从订单并挂载
+            if (StringUtils.equals("1", insOrdersParam.getIsLargeOrder()) && CollUtil.isNotEmpty(records)) {
                 List<String> parentIds = records.stream().map(OrderListVo::getOrderNo).collect(Collectors.toList());
                 List<OrderListVo> childOrders = insOrdersMapper.queryChildOrderListByParentIds(parentIds, insOrdersParam);
                 if (CollUtil.isNotEmpty(childOrders)) {
@@ -1189,7 +1131,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             orderListVoPage = new Page<>(current, size, total);
             orderListVoPage.setRecords(records != null ? records : java.util.Collections.emptyList());
         } else {
-            // 非 APP 走原 MP 自动分页查询
+            // 非 APP 走原 MP 自动分页查询(queryOrderList 仅查询从订单 parent_id != '0',不查主订单)
             orderListVoPage = insOrdersMapper.queryOrderList(insOrdersParam.getPage(), insOrdersParam);
         }
         // modify by lipf, 2026年4月29日11:06:02 解决业务员类型缺失的问题
@@ -1566,8 +1508,24 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     @Override
     public String exportDynamicFields(InsOrdersParamVO insOrdersParam) {
         log.info("导出订单列表。支持动态选择要导出的字段:导出车险订单=[{}]", JSONUtil.toJsonStr(insOrdersParam));
-        insOrdersParam.setSystemCode(baseController.getSystemCode());
-        List<OrderListVo> orderListVos = insOrdersMapper.queryOrderListAll(insOrdersParam);
+        // 分页无限大
+        insOrdersParam.getPage().setPages(1);
+        insOrdersParam.getPage().setSize(Integer.MAX_VALUE);
+        insOrdersParam.setPages(1);
+        insOrdersParam.setSize(Integer.MAX_VALUE);
+
+        String systemCode = "";
+        //如果是APP登录的话 则传递SystemCode的头部字段
+        if (baseController.getUserSystemCode().equals("APP")) {
+            HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
+            systemCode = request.getHeader("system_code");
+        } else {
+            systemCode = baseController.getUserSystemCode();
+        }
+        insOrdersParam.setSystemCode(systemCode);
+        Page<OrderListVo> orderListVoPage = queryMainOrderList(insOrdersParam);
+        List<OrderListVo> orderListVos = orderListVoPage.getRecords();
+
         log.info("导出订单列表,导出[{}]条记录", CollUtil.size(orderListVos));
         // 动态设置要导出的字段
         String exportDynamicFields = insOrdersParam.getExportDynamicFields();
@@ -2819,4 +2777,56 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public InsOrdersCarInfo getByOrderId(String orderNo) {
         return ordersCarInfoService.getByOrderId(orderNo);
     }
+
+    @Override
+    @Transactional
+    public void deleteOrderAllByOrderNo(String orderNo) {
+        // 订单信息删除
+        insOrdersMapper.deleteById(orderNo);
+        // 订单车辆信息表删除
+        LambdaUpdateWrapper<InsOrdersCarInfo> iciWrapper = new LambdaUpdateWrapper<>();
+        iciWrapper.eq(InsOrdersCarInfo::getOrderNo,orderNo);
+        iciWrapper.set(InsOrdersCarInfo::getIsDelete,1);
+        ordersCarInfoService.update(iciWrapper);
+        // 订单车辆人员信息表删除
+        LambdaUpdateWrapper<InsOrdersCarUserInfo> icuiWrapper = new LambdaUpdateWrapper<>();
+        icuiWrapper.eq(InsOrdersCarUserInfo::getOrderNo,orderNo);
+        icuiWrapper.set(InsOrdersCarUserInfo::getIsDelete,1);
+        ordersCarUserInfoService.update(icuiWrapper);
+        // 订单其他属性表删除
+        LambdaUpdateWrapper<InsOrdersOther> iooWrapper = new LambdaUpdateWrapper<>();
+        iooWrapper.eq(InsOrdersOther::getOrderNo,orderNo);
+        iooWrapper.set(InsOrdersOther::getIsDelete,1);
+        insOrdersOtherService.update(iooWrapper);
+        // 订单费用表删除
+        LambdaUpdateWrapper<InsOrdersCosts> iocWrapper = new LambdaUpdateWrapper<>();
+        iocWrapper.eq(InsOrdersCosts::getOrderNo,orderNo);
+        iocWrapper.set(InsOrdersCosts::getIsDelete,1);
+        insOrdersCostsService.update(iocWrapper);
+        //订单保单号关联删除
+        LambdaUpdateWrapper<InsOrdersPolicy> iopWrapper = new LambdaUpdateWrapper<>();
+        iopWrapper.eq(InsOrdersPolicy::getOrderNo,orderNo);
+        iopWrapper.set(InsOrdersPolicy::getIsDelete,1);
+        insOrdersPolicyService.update(iopWrapper);
+        // 订单费用表删除
+        LambdaUpdateWrapper<InsFeeOrders> ifoWrapper = new LambdaUpdateWrapper<>();
+        ifoWrapper.eq(InsFeeOrders::getOrderNo,orderNo);
+        ifoWrapper.set(InsFeeOrders::getIsDelete,1);
+        insFeeOrdersMapper.update(ifoWrapper);
+        // 保险种类信息删除
+        LambdaUpdateWrapper<InsOrdersKind> iokWrapper = new LambdaUpdateWrapper<>();
+        iokWrapper.eq(InsOrdersKind::getOrderNo,orderNo);
+        iokWrapper.set(InsOrdersKind::getIsDelete,1);
+        insOrdersKindService.update(iokWrapper);
+        // 税费信息删除
+        LambdaUpdateWrapper<InsOrdersTax> iotWrapper = new LambdaUpdateWrapper<>();
+        iotWrapper.eq(InsOrdersTax::getOrderNo,orderNo);
+        iotWrapper.set(InsOrdersTax::getIsDelete,1);
+        insOrdersTaxService.update(iotWrapper);
+        // 订单险种信息删除
+        LambdaUpdateWrapper<InsOrdersRisk> iorWrapper = new LambdaUpdateWrapper<>();
+        iorWrapper.eq(InsOrdersRisk::getOrderNo,orderNo);
+        iorWrapper.set(InsOrdersRisk::getIsDelete,1);
+        insOrdersRiskService.update(iorWrapper);
+    }
 }

+ 20 - 2
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -1428,7 +1428,16 @@
         ) x WHERE x.rn = 1
         ) ioa1 ON io.id = ioa1.order_no
         <where>
-            and io.is_delete = 0 and io.parent_id = '0' and sujis.type_attr NOT IN (1,2,3,4)
+            and io.is_delete = 0
+            <choose>
+                <when test="insOrdersParam.isLargeOrder != null and insOrdersParam.isLargeOrder == '1'">
+                    and io.parent_id = '0'
+                </when>
+                <otherwise>
+                    and io.parent_id != '0'
+                </otherwise>
+            </choose>
+            and sujis.type_attr NOT IN (1,2,3,4)
             <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
                 and io.real_quote_user_id in (select bbb.mobile from sys_user bbb where bbb.id in ( select ss.user_id
                 from sys_user_jzg_info ss where 1 =1 and (ss.leader_id = #{insOrdersParam.jzgInfoId} or ss.id
@@ -1641,7 +1650,16 @@
             ) x WHERE x.rn = 1
             ) ioa1 ON io.id = ioa1.order_no
             <where>
-                and io.is_delete = 0 and io.parent_id = '0' and sujis.type_attr NOT IN (1,2,3,4)
+                and io.is_delete = 0
+                <choose>
+                    <when test="insOrdersParam.isLargeOrder != null and insOrdersParam.isLargeOrder == '1'">
+                        and io.parent_id = '0'
+                    </when>
+                    <otherwise>
+                        and io.parent_id != '0'
+                    </otherwise>
+                </choose>
+                and sujis.type_attr NOT IN (1,2,3,4)
                 <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
                     and io.real_quote_user_id in (select bbb.mobile from sys_user bbb where bbb.id in ( select ss.user_id
                     from sys_user_jzg_info ss where 1 =1 and (ss.leader_id = #{insOrdersParam.jzgInfoId} or ss.id

+ 9 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java

@@ -195,6 +195,15 @@ public class ReceivableController {
         return receivableService.queryIncomeDatas(incomeDataVO);
     }
 
+    @PostMapping("updateInsPlyIncome")
+    @Operation(summary = "应收记录的修改")
+    public HttpResult<String> updateInsPlyIncome(@RequestBody InsPlyIncomeModify modifyParam){
+        String userName = baseController.getUserName();
+        log.info("应收记录的修改.useName=[{}],modifyParam=[{}]", userName, modifyParam);
+        modifyParam.setUpdateBy(userName);
+        return receivableService.updateInsPlyIncome(modifyParam);
+    }
+
     @PostMapping("getOtherReceivableList")
     @Operation(summary = "获取私有协议跟单费列表")
     public HttpResult<InsPlyIncomeVO> getOtherReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){

+ 8 - 0
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -534,4 +534,12 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     void setDisableFlagForOtherReceivable(List<InsPlyIncome> records, String systemCode);
 
 
+    /**
+     * 应收记录的修改
+     *
+     * @param modifyParam 修改参数
+     * @author lipf
+     * @date 2026/8/28 9:34
+     */
+    HttpResult<String> updateInsPlyIncome(InsPlyIncomeModify modifyParam);
 }

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/service/impl/PtlAgreementCostServiceImpl.java

@@ -447,7 +447,7 @@ public class PtlAgreementCostServiceImpl extends ServiceImpl<PtlAgreementCostMap
                 ptlAgreementCost.setId(costId);
                 ptlAgreementCost.setCoverRuleId(costCopyParam.getCoverRuleId());
                 ptlAgreementCost.setPtlAgreementId(costCopyParam.getAgreementId());
-                ptlAgreementCost.setCostDescribe("复制的费用:" + ptlAgreementCost.getCostDescribe());
+                ptlAgreementCost.setCostDescribe(ptlAgreementCost.getCostDescribe());
                 ptlAgreementCost.setCreateTime(LocalDateTime.now());
                 ptlAgreementCost.setUpdateTime(LocalDateTime.now());
                 if(costCopyParam.getProductId() != null && !costCopyParam.getProductId().isEmpty()){

+ 45 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -311,6 +311,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo) {
         log.info("获取私有协议手续费应收列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
+
+//        if(StrUtil.isNotEmpty(receivableQueryVo.getUpdateBy())){
+//            insFeeOrdersClient.getUserNameByMobile();
+//        }
+
+
         Page<InsPlyIncome> page = baseMapper.getReceivablePage(receivableQueryVo.getPage(), receivableQueryVo);
         List<InsPlyIncome> records = page.getRecords();
         records = records.stream().filter(action->{
@@ -5363,6 +5369,9 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         log.info("查询结算手续费结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         // 设置空条件
         setNoneCondition(settlementQueryVo);
+        settlementQueryVo.setReceivePaymentDateBegin(DateTimeUtils.obtainStartTime(settlementQueryVo.getReceivePaymentDateBegin()));
+        settlementQueryVo.setReceivePaymentDateEnd(DateTimeUtils.obtainNextDayStartTime(settlementQueryVo.getReceivePaymentDateEnd()));
+
         // 设置租户
         settlementQueryVo.setSystemCode(baseController.getSystemCode());
         Page<ExportSuperviseSettlementExcelDto> exportSuperviseSettlementExcelDtos = baseMapper.superviseSettlementExcelDtos(page, settlementQueryVo);
@@ -6973,5 +6982,41 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         }
         return result;
     }
+
+    /**
+     * 应收记录的修改
+     *
+     * @param modifyParam 修改参数
+     * @author lipf
+     * @date 2026/8/28 9:34
+     */
+    @Override
+    public HttpResult<String> updateInsPlyIncome(InsPlyIncomeModify modifyParam) {
+        String systemCode = baseController.getSystemCode();
+        if(StrUtil.isEmpty(modifyParam.getIncomeId())){
+            return HttpResult.error("应收订单序号为空");
+        }
+        InsPlyIncome insPlyIncome = baseMapper.selectById(modifyParam.getIncomeId());
+        if(insPlyIncome == null){
+            log.info("要修改的应收订单不存在。 incomeId=[{}]",modifyParam.getIncomeId());
+            return HttpResult.error("要修改的应收数据不存在");
+        }
+        InsOrdersPolicy insOrdersPolicy = insOrdersPolicyMapper.selectById(insPlyIncome.getOrderNo());
+        if(insOrdersPolicy == null){
+            String msg = String.format("编号为[%s]的订单不存在。数据异常", modifyParam.getIncomeId());
+            log.info(msg);
+            return HttpResult.error(msg);
+        }
+        InsOrdersPolicy policy = new InsOrdersPolicy();
+        policy.setOrderNo(insOrdersPolicy.getOrderNo());
+        policy.setJqPolicyNo(modifyParam.getJqPolicyNo());
+        policy.setSyPolicyNo(modifyParam.getSyPolicyNo());
+        policy.setJyPolicyNo(modifyParam.getJyPolicyNo());
+        policy.setUpdateBy(modifyParam.getUpdateBy());
+        policy.setUpdateTime(LocalDateTime.now());
+        insOrdersPolicyMapper.updateById(policy);
+        log.info("保险单号修改成功");
+        return HttpResult.ok("修改成功");
+    }
 }
 

+ 56 - 13
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -208,9 +208,9 @@
         io.real_quote_user_id,
         io.real_quote_user_id as real_quote_user_name,
         io.signing_time,
-        date(io.signing_time ) as sign_date,
+        date(io.signing_time) as sign_date,
         year(io.signing_time) as sign_year,
-        DATE_FORMAT(io.signing_time,'%Y-%m') AS sign_month,
+        DATE_FORMAT(io.signing_time, '%Y-%m') AS sign_month,
         ipi.id,
         io.id as 'orderNo',
         eic.name_simple as companyName,
@@ -247,9 +247,10 @@
         ipi.jq_other_costs_premiums,
         ipi.sy_other_costs_premiums,
         ipi.jy_other_costs_premiums,
-        COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums,0) as jyTotalPremiums,
+        COALESCE(ipi.jy_supervise_costs_premiums, 0) + COALESCE(ipi.jy_other_costs_premiums, 0) as jyTotalPremiums,
         io.product_name,
         iocui.name AS insuredPerson,
+        iocui2.name as policyholder,
         ipi.jq_premium,
         ipi.sy_premium,
         ipi.jy_premium,
@@ -279,18 +280,42 @@
         ipi.update_time,
         ipi.update_by,
         io.docking_person,
-        eic.name_simple as companyNameSimple, ipi.contact_person , ipi.contact_person_phone
+        eic.name_simple as companyNameSimple,
+        ipi.contact_person ,
+        ipi.contact_person_phone,
+        io.pay_time,
+        io.create_time as report_time
         FROM
         ins_ply_income ipi
-        LEFT JOIN ins_orders io ON ipi.order_no = io.id AND io.is_delete = 0
-        LEFT JOIN ins_orders_car_user_info iocui ON ipi.order_no = iocui.order_no and iocui.policy_person_type = '3' AND iocui.is_delete = 0
-        LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507' AND ior1.is_delete = 0
-        LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510' AND ior2.is_delete = 0
-        LEFT JOIN ins_orders_policy iop ON ipi.order_no = iop.order_no AND iop.is_delete = 0
-        LEFT JOIN esm_ins_company eic on ipi.company_id = eic.id AND eic.is_delete = 0
-        left join ptl_agreement pa on pa.id = io.agreement_id
+        LEFT JOIN ins_orders io ON
+        ipi.order_no = io.id
+        AND io.is_delete = 0
+        LEFT JOIN ins_orders_car_user_info iocui ON
+        ipi.order_no = iocui.order_no
+        and iocui.policy_person_type = '3'
+        AND iocui.is_delete = 0
+        LEFT JOIN ins_orders_car_user_info iocui2 ON
+        ipi.order_no = iocui2.order_no
+        and iocui2.policy_person_type = '2'
+        AND iocui2.is_delete = 0
+        LEFT JOIN ins_orders_risk ior1 ON
+        ipi.order_no = ior1.order_no
+        and ior1.risk_code = '0507'
+        AND ior1.is_delete = 0
+        LEFT JOIN ins_orders_risk ior2 ON
+        ipi.order_no = ior2.order_no
+        and ior2.risk_code = '0510'
+        AND ior2.is_delete = 0
+        LEFT JOIN ins_orders_policy iop ON
+        ipi.order_no = iop.order_no
+        AND iop.is_delete = 0
+        LEFT JOIN esm_ins_company eic on
+        ipi.company_id = eic.id
+        AND eic.is_delete = 0
+        left join ptl_agreement pa on
+        pa.id = io.agreement_id
         where
-            ipi.is_delete  = 0
+        ipi.is_delete = 0
     </sql>
     <!-- 查询应收订单总额 lipf 2026年6月4日10:22:57 -->
     <select id="queryAllTotalReceivablePremiumByOrderNo" resultType="java.math.BigDecimal">
@@ -331,6 +356,18 @@
     <select id="getReceivablePage" resultType="com.jzg.commons.entity.finance.po.InsPlyIncome">
         <include refid="query"/>
         and ipi.system_code = #{receivableQueryVo.systemCode}
+        <if test="receivableQueryVo.payTimeBegin != null and receivableQueryVo.payTimeEnd != null">
+            and io.pay_time between #{receivableQueryVo.payTimeBegin} and #{receivableQueryVo.payTimeEnd}
+        </if>
+        <if test="receivableQueryVo.reportTimeBegin != null and receivableQueryVo.reportTimeEnd != null">
+            and io.create_time between #{receivableQueryVo.reportTimeBegin} and #{receivableQueryVo.reportTimeEnd}
+        </if>
+        <if test="receivableQueryVo.updateBy != null and receivableQueryVo.updateBy !='' ">
+            and ipi.update_by = #{receivableQueryVo.updateBy}
+        </if>
+        <if test="receivableQueryVo.partnerCompanyId != null">
+            and ipi.partner_company_id = #{receivableQueryVo.partnerCompanyId}
+        </if>
         <if test="receivableQueryVo.riskCode != null and receivableQueryVo.riskCode != '' ">
             and io.product_name = #{receivableQueryVo.riskCode}
         </if>
@@ -628,7 +665,7 @@
         ipiis.create_by ,
         ipiis.create_time,
         ipiis.settlement_payment_difference ,
-        ipiis.settlement_payment_reason
+        ipiis.settlement_payment_reason,ipii.invoice_no
         FROM
         ins_ply_income_invoice_settlement ipiis
         LEFT JOIN ins_ply_income_invoice ipii ON ipii.id = ipiis.invoice_id AND ipii.is_delete = 0
@@ -639,6 +676,12 @@
         <where>
             ipiis.is_delete = 0
             AND ipiis.system_code = #{settlementQueryVo.systemCode}
+            <if test="settlementQueryVo.receivePaymentDateBegin != null and settlementQueryVo.receivePaymentDateBegin != '' and settlementQueryVo.receivePaymentDateEnd != null and settlementQueryVo.receivePaymentDateEnd != '' ">
+                and ipiis.receive_payment_date between #{settlementQueryVo.receivePaymentDateBegin} and #{settlementQueryVo.receivePaymentDateEnd}
+            </if>
+            <if test="settlementQueryVo.invoiceNo != null and settlementQueryVo.invoiceNo != '' ">
+                and ipii.invoice_no = #{settlementQueryVo.invoiceNo}
+            </if>
             <if test="settlementQueryVo.settlementIds != null and settlementQueryVo.settlementIds != ''">
                 AND ipiis.id IN
                 <foreach collection="settlementQueryVo.settlementIds" item="settlementId" open="(" separator="," close=")">

+ 63 - 54
tenant/organization/src/main/resources/mapper/SysDistributionSettingMapper.xml

@@ -86,95 +86,104 @@
     </select>
 
     <select id="commissionDetails" resultType="com.jzg.commons.entity.vo.DistributionCommissionDetailVo">
+        SELECT
+        t.orderNo,
+        t.premium,
+        t.salesman,
+        su_sales.mobile AS salesmanMobile,
+        t.signingTime,
+        t.distributor,
+        t.distributorMobile,
+        t.commission,
+        t.distributionRatio,
+        t.distributionLevel
+        FROM (
+        -- 一级分销
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
         io.real_quote_user_id AS salesman,
-        io.real_quote_user_id AS salesmanMobile,
         io.signing_time AS signingTime,
-        suji.name as distributor,
-        su.mobile as distributorMobile,
-        ifo.first_distribution_fee as commission,
+        suji.name AS distributor,
+        su.mobile AS distributorMobile,
+        ifo.first_distribution_fee AS commission,
         ifo.first_distribution_ratio AS distributionRatio,
-        '1' AS distributionLevel -- 标识为一级分销
-        FROM
-        ins_fee_orders ifo
-        LEFT JOIN ins_orders io ON ifo.order_no = io.id
+        '1' AS distributionLevel,
+        ifo.first_distributor_id AS distributor_id
+        FROM ins_fee_orders ifo
+        INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.first_distributor_id = suji.id AND suji.is_delete = 0
-        left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
-        WHERE
-        ifo.is_delete = 0
-        and ifo.first_distributor_id IS NOT NULL
+        LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        WHERE ifo.is_delete = 0
+        AND ifo.first_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
-            and suji.name = #{distributionCommissionDetailVo.distributor}
+            AND suji.name = #{distributionCommissionDetailVo.distributor}
         </if>
         <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
-            and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
-        </if>
-        <if test="distributionCommissionDetailVo.signingTimeStart != null">
-            and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
+            AND su.mobile = #{distributionCommissionDetailVo.distributorMobile}
         </if>
+
         UNION ALL
+
+        -- 二级分销
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
         io.real_quote_user_id AS salesman,
-        io.real_quote_user_id AS salesmanMobile,
         io.signing_time AS signingTime,
-        suji.name as distributor,
-        su.mobile as distributorMobile,
-        ifo.second_distribution_fee as commission,
+        suji.name AS distributor,
+        su.mobile AS distributorMobile,
+        ifo.second_distribution_fee AS commission,
         ifo.second_distribution_ratio AS distributionRatio,
-        '2' AS distributionLevel -- 标识为二级分销
-        FROM
-        ins_fee_orders ifo
-        LEFT JOIN ins_orders io ON ifo.order_no = io.id
+        '2' AS distributionLevel,
+        ifo.second_distributor_id AS distributor_id
+        FROM ins_fee_orders ifo
+        INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.second_distributor_id = suji.id AND suji.is_delete = 0
-        left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
-        WHERE
-        ifo.is_delete = 0
-        and ifo.second_distributor_id IS NOT NULL
-        <if test="distributionCommissionDetailVo.signingTimeStart != null">
-            and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
-        </if>
+        LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        WHERE ifo.is_delete = 0
+        AND ifo.second_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
-            and suji.name = #{distributionCommissionDetailVo.distributor}
+            AND suji.name = #{distributionCommissionDetailVo.distributor}
         </if>
         <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
-            and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
+            AND su.mobile = #{distributionCommissionDetailVo.distributorMobile}
         </if>
+
         UNION ALL
+
+        -- 三级分销
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
         io.real_quote_user_id AS salesman,
-        io.real_quote_user_id AS salesmanMobile,
         io.signing_time AS signingTime,
-        suji.name  AS distributor,
-        su.mobile as distributorMobile,
-        ifo.third_distribution_fee as commission,
+        suji.name AS distributor,
+        su.mobile AS distributorMobile,
+        ifo.third_distribution_fee AS commission,
         ifo.third_distribution_ratio AS distributionRatio,
-        '3' AS distributionLevel
-        FROM
-        ins_fee_orders ifo
-        LEFT JOIN ins_orders io ON ifo.order_no = io.id
+        '3' AS distributionLevel,
+        ifo.third_distributor_id AS distributor_id
+        FROM ins_fee_orders ifo
+        INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.third_distributor_id = suji.id AND suji.is_delete = 0
-        left join sys_user su on su.id = suji.user_id AND su.is_delete = 0
-        WHERE
-        ifo.is_delete = 0
-        and ifo.third_distributor_id IS NOT NULL
-        <if test="distributionCommissionDetailVo.signingTimeStart != null">
-            and io.signing_time between #{distributionCommissionDetailVo.signingTimeStart} and #{distributionCommissionDetailVo.signingTimeEnd}
-        </if>
+        LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        WHERE ifo.is_delete = 0
+        AND ifo.third_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
-            and suji.name = #{distributionCommissionDetailVo.distributor}
+            AND suji.name = #{distributionCommissionDetailVo.distributor}
         </if>
         <if test="distributionCommissionDetailVo.distributorMobile != null and distributionCommissionDetailVo.distributorMobile != ''">
-            and su.mobile = #{distributionCommissionDetailVo.distributorMobile}
+            AND su.mobile = #{distributionCommissionDetailVo.distributorMobile}
+        </if>
+        ) t
+        LEFT JOIN sys_user su_sales ON su_sales.id = t.salesman AND su_sales.is_delete = 0
+        WHERE 1 = 1
+        <if test="distributionCommissionDetailVo.signingTimeStart != null and distributionCommissionDetailVo.signingTimeEnd != null">
+            AND t.signingTime BETWEEN #{distributionCommissionDetailVo.signingTimeStart}
+            AND #{distributionCommissionDetailVo.signingTimeEnd}
         </if>
-        ORDER BY
-        orderNo,
-        distributionLevel
+        ORDER BY t.orderNo, t.distributionLevel
     </select>
 
     <select id="distributionTeam" resultType="com.jzg.commons.entity.vo.DistributionTeamVo">

+ 3 - 0
tenant/organization/src/main/resources/mapper/SysUserAccountMapper.xml

@@ -65,6 +65,9 @@
             <if test="param.salesman != null and param.salesman != ''">
                 and (su.username = #{param.salesman} or su.mobile = #{param.salesman})
             </if>
+            <if test="param.salesmanName != null and param.salesmanName != null">
+                and suji.name = #{param.salesmanName}
+            </if>
             <if test="param.attrType != null ">
                 and suji.type_attr = #{param.attrType}
             </if>