فهرست منبع

Merge branch 'dev_jzg_lipf_v20260622'

lipf 1 ماه پیش
والد
کامیت
e9f5bcedd9

+ 36 - 0
commons/src/main/java/com/jzg/commons/entity/dto/FeeAuditParam.java

@@ -27,6 +27,9 @@ public class FeeAuditParam extends PageRequest {
     @Schema(description = "业务员")
     private String salesman;
 
+    @Schema(description = "业务员手机号")
+    private String phone;
+
     @Schema(description = "订单状态  1 车险录入 2 待客录单 3 外部订单")
     private String orderStatus;
 
@@ -39,6 +42,9 @@ public class FeeAuditParam extends PageRequest {
     @Schema(description = "保险公司id列表")
     private List<String> companyIdList;
 
+    @Schema(description = "保险机构ID")
+    private String partnerCompanyId;
+
     @Schema(description = "出单机构id")
     private String deptId;
 
@@ -78,6 +84,9 @@ public class FeeAuditParam extends PageRequest {
     @JsonFormat(pattern = "yyyy-MM-dd")
     private LocalDateTime payTimeEnd;
 
+    private String payingTimeBegin;
+    private String payingTimeEnd;
+
     @Schema(description = "交强保单号")
     private String ciPolicyNumber;
 
@@ -131,4 +140,31 @@ public class FeeAuditParam extends PageRequest {
     @Schema(description = "订单来源 0 pc  1 app")
     private String orderSource;
 
+    @Schema(description = "支付时间")
+    private String[] payingTime;
+
+    @Schema(description = "对接人姓名")
+    private String contact;
+
+    @Schema(description = "交强保单号")
+    private String jqPolicyNo;
+    @Schema(description = "非车保单号")
+    private String jyPolicyNo;
+    @Schema(description = "商业保单号")
+    private String syPolicyNo;
+
+    @Schema(description = "交强起保时间-起")
+    private String jqRiskStartDateBegin;
+    @Schema(description = "商业起保时间-起")
+    private String syRiskStartDateBegin;
+    @Schema(description = "非车起保时间-起")
+    private String jyRiskStartDateBegin;
+
+    @Schema(description = "交强起保时间-止")
+    private String jqRiskStartDateEnd;
+    @Schema(description = "商业起保时间-止")
+    private String syRiskStartDateEnd;
+    @Schema(description = "非车起保时间-止")
+    private String jyRiskStartDateEnd;
+
 }

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/finance/vo/SettlementQueryVo.java

@@ -68,6 +68,9 @@ public class SettlementQueryVo extends PageRequest {
     @Schema(description = "结算时间结束")
     private String settlementTimeEnd;
 
+    @Schema(description = "结算时间")
+    private String[] settlementTime;
+
     @Schema(description = "结算记录编号集合")
     private List<String> settlementIds;
 

+ 28 - 0
commons/src/main/java/com/jzg/commons/entity/orders/vo/FeeAuditVo.java

@@ -423,4 +423,32 @@ public class FeeAuditVo extends BaseModel {
     @ExcelProperty("三级分销比例")
     @TableField(exist = false)
     private BigDecimal thirdDistributionRatio;
+
+    private String payingTime;
+
+    private String partnerCompanyId;
+
+    @Schema(description = "保险机构名称")
+    private String partnerCompanyName;
+    @Schema(description = "保险机构名称")
+    private String partnerCompanySimplyName;
+
+    @Schema(description = "对接人姓名")
+    private String contact;
+
+    @Schema(description = "交强保单号")
+    private String jqPolicyNo;
+    @Schema(description = "非车保单号")
+    private String jyPolicyNo;
+    @Schema(description = "商业保单号")
+    private String syPolicyNo;
+
+    @Schema(description = "起保时间")
+    private String jqRiskStartDate;
+    private String jqRiskEndDate;
+    private String syRiskStartDate;
+    private String syRiskEndDate;
+    private String jyRiskStartDate;
+    private String jyRiskEndDate;
+
 }

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

@@ -172,6 +172,8 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
         for (FeeAuditVo feeAuditVo : page.getRecords()) {
             String allCompany =  allCompanyHierarchyPaths.get(Objects.toString(feeAuditVo.getCompanyId(),""));
             feeAuditVo.setCompanyALlName(allCompany);
+            feeAuditVo.setPartnerCompanyName(allCompanyHierarchyPaths.get(Objects.toString(feeAuditVo.getPartnerCompanyId(),"")));
+            feeAuditVo.setPartnerCompanySimplyName(allCompanyHierarchyPaths.get(Objects.toString(feeAuditVo.getPartnerCompanyId(),"")));
             // 循环每条数据,查询 ins_fee_orders 并计算权益金额
             // 查询订单的 ins_fee_orders 数据
             InsFeeOrders insFeeOrders = feeOrdersService.getById(feeAuditVo.getOrderNo());

+ 47 - 2
tenant/insurance/quotation-summary/src/main/resources/mapper/InsFeeAuditMapper.xml

@@ -32,6 +32,7 @@
     </select>
 
     <select id="queryPage" resultType="com.jzg.commons.entity.orders.vo.FeeAuditVo">
+        select a.* from (
         SELECT
         qsu.username ,    -- 业务员登录账号
         ifa.order_no as orderNo,
@@ -74,7 +75,14 @@
         END AS isProblem,
         io.order_source,
         ioci.vin_no,
-        ifo.*
+        ifo.*,
+        pa.partner_company_id,iop.jq_policy_no , iop.sy_policy_no , iop.jy_policy_no,
+        (select ior.start_date  from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '交强险' )  as jq_risk_start_date,
+        (select ior.end_date from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '交强险' )  as jq_risk_end_date,
+        (select ior.start_date  from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '商业险' )  as sy_risk_start_date,
+        (select ior.end_date from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '商业险' )  as sy_risk_end_date,
+        (select ior.start_date  from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '驾意险' )  as jy_risk_start_date,
+        (select ior.end_date from ins_orders_risk ior where ior.order_no = io.id and ior.risk_name = '驾意险' )  as jy_risk_end_date
         FROM ins_fee_audit ifa
         LEFT JOIN ins_orders io on ifa.order_no = io.id AND io.is_delete=0
         LEFT JOIN ins_orders_car_info ioci on io.id = ioci.order_no AND ioci.is_delete=0
@@ -87,6 +95,7 @@
         LEFT JOIN ins_orders_costs ioc on ioc.order_no = io.id AND ioc.is_delete=0
         LEFT JOIN ins_orders_external_policy ioep on ioep.order_no = io.id AND ioep.is_delete=0
         LEFT JOIN ins_fee_orders ifo on ifo.order_no  = ifa.order_no  and ifo.is_delete = 0
+        LEFT JOIN ins_orders_policy iop on iop.order_no = io.id and iop.is_delete = 0
         <where>
             and ifa.is_delete=0 and ifa.system_code = #{param.systemCode}
             <if test="param.vinNo != null and param.vinNo !=''">
@@ -122,6 +131,30 @@
             <if test="param.salesman != null and param.salesman != ''">
                 and (qsu.username = #{param.salesman} or qsu.mobile = #{param.salesman})
             </if>
+            <if test="param.phone != null and param.phone != ''">
+                and (qsu.username = #{param.phone} or qsu.mobile = #{param.phone})
+            </if>
+            <if test="param.contact != null and param.contact != ''">
+                and (io.docking_person  like #{param.contact} or io.docking_person_phone  like #{param.contact} )
+            </if>
+            <if test="param.partnerCompanyId != null">
+                and pa.partner_company_id = #{param.partnerCompanyId}
+            </if>
+            <if test="param.payingTimeBegin != null and param.payingTimeEnd != null">
+                and DATE_FORMAT(io.pay_time, '%Y-%m-%d') between #{param.payingTimeBegin} AND #{param.payingTimeEnd}
+            </if>
+            <if test="param.quotationTimeStart != null and param.quotationTimeEnd != null">
+                and DATE_FORMAT(io.create_time, '%Y-%m-%d') between #{param.quotationTimeStart} AND #{param.quotationTimeEnd}
+            </if>
+            <if test="param.jqPolicyNo != null and param.jqPolicyNo != ''">
+                and iop.jq_policy_no = #{param.jqPolicyNo}
+            </if>
+            <if test="param.syPolicyNo != null and param.syPolicyNo != ''">
+                and iop.sy_policy_no = #{param.syPolicyNo}
+            </if>
+            <if test="param.jyPolicyNo != null and param.jyPolicyNo != ''">
+                and iop.jy_policy_no = #{param.jyPolicyNo}
+            </if>
             <if test="param.orderStatus != null ">
                 and io.order_status = #{param.orderStatus}
             </if>
@@ -177,7 +210,19 @@
                 and ifa.audit_status = #{param.auditStatus}
             </if>
         </where>
-        ORDER BY io.create_time desc
+        ) a
+        <where>
+            <if test="param.jqRiskStartDateBegin != null and param.jqRiskStartDateEnd != null">
+                and a.jq_risk_start_date &gt;= #{param.jqRiskStartDateBegin} and a.jq_risk_start_date &lt; #{param.jqRiskStartDateEnd}
+            </if>
+            <if test="param.syRiskStartDateBegin != null and param.syRiskStartDateEnd != null">
+                and a.sy_risk_start_date &gt;= #{param.syRiskStartDateBegin} and a.sy_risk_start_date &lt; #{param.syRiskStartDateEnd}
+            </if>
+            <if test="param.jyRiskStartDateBegin != null and param.jyRiskStartDateEnd != null">
+                and a.jy_risk_start_date &gt;= #{param.jyRiskStartDateBegin} and a.jy_risk_start_date &lt; #{param.jyRiskStartDateEnd}
+            </if>
+        </where>
+        ORDER BY a.createTime desc
     </select>
     <select id="queryList" resultType="com.jzg.commons.entity.orders.vo.FeeAuditVo">
         SELECT

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

@@ -482,7 +482,7 @@ public class ReceivableController {
                 receivableQueryVo.getSigningTime() != null &&
                 receivableQueryVo.getSigningTime().length == 2){
             receivableQueryVo.setSigningTimeStart(DateUtil.format(LocalDate.parse(receivableQueryVo.getSigningTime()[0], DateTimeFormatter.ISO_DATE).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
-            receivableQueryVo.setSigningTimeEnd(DateUtil.format(LocalDate.parse(receivableQueryVo.getSigningTime()[0], DateTimeFormatter.ISO_DATE).plusDays(1).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+            receivableQueryVo.setSigningTimeEnd(DateUtil.format(LocalDate.parse(receivableQueryVo.getSigningTime()[1], DateTimeFormatter.ISO_DATE).plusDays(1).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
         }
 
         receivableQueryVo.setSystemCode(baseController.getSystemCode());

+ 63 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -917,8 +917,8 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
         // 批量查询跟单订单
         Map<String, InsFeeFollowOrder> followOrderMap = batchQueryFollowOrder(allFollowIds);
-        // 批量查询未结算的开票信息
-        Map<String, InsPlyIncomeInvoice> invoiceMap = batchQueryInvoice(allInvoiceIds);
+        // 批量查询未结算的结算信息
+        Map<String, BigDecimal> invoiceNoSettlementDecimalMap = batchQueryInvoice(allInvoiceIds);
         // 批量查询结算单
         Map<String, InsPlyIncomeInvoiceSettlement> settlementMap = batchQuerySettlement(allSettlementIds);
 
@@ -989,12 +989,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                 vo.setTotalUnSettlementAmount(BigDecimal.ZERO);
             }else{
                 // 和wwq讨论过了,这个就是统计已开票未结算的数据
-                BigDecimal invoiceNoSettlement = invoiceIds.stream()
-                        .map(invoiceMap::get)
+                BigDecimal reduce = invoiceIds.stream()
+                        .map(invoiceNoSettlementDecimalMap::get)
                         .filter(Objects::nonNull)
-                        .map(InsPlyIncomeInvoice::getReceivableSupervisePremium)
                         .reduce(BigDecimal.ZERO, BigDecimal::add);
-                vo.setTotalUnSettlementAmount(invoiceNoSettlement);
+                vo.setTotalUnSettlementAmount(reduce);
             }
 
             aggResult.add(vo);
@@ -1017,18 +1016,56 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     }
 
     /**
-     * 批量查询未结算的开票信息
+     * 批量查询未结算的结算信息
      */
-    private Map<String, InsPlyIncomeInvoice> batchQueryInvoice(Set<String> invoiceIdSet) {
+    private Map<String, BigDecimal> batchQueryInvoice(Set<String> invoiceIdSet) {
+        Map<String, BigDecimal> resultMap = new HashMap<>(0);
         if (CollUtil.isEmpty(invoiceIdSet)) {
-            return new HashMap<>(0);
+            return resultMap;
         }
+
+        // 1、查询有效发票主记录 status = "0"
         LambdaQueryWrapper<InsPlyIncomeInvoice> wrapper = new LambdaQueryWrapper<>();
         wrapper.in(InsPlyIncomeInvoice::getId, invoiceIdSet);
         wrapper.eq(InsPlyIncomeInvoice::getStatus, "0");
-        List<InsPlyIncomeInvoice> insPlyIncomeInvoices = insPlyIncomeInvoiceMapper.selectList(wrapper);
-        return insPlyIncomeInvoices.stream()
-                .collect(Collectors.toMap(InsPlyIncomeInvoice::getId, Function.identity(), (k1, k2) -> k1));
+        List<InsPlyIncomeInvoice> invoiceList = insPlyIncomeInvoiceMapper.selectList(wrapper);
+        if (CollUtil.isEmpty(invoiceList)) {
+            return resultMap;
+        }
+
+        // 取出有效发票id集合
+        Set<String> validInvoiceIds = invoiceList.stream()
+                .map(InsPlyIncomeInvoice::getId)
+                .collect(Collectors.toSet());
+
+        // 2、批量查询所有对应的结算明细
+        LambdaQueryWrapper<InsPlyIncomeInvoiceSettlement> settleWrapper = new LambdaQueryWrapper<>();
+        settleWrapper.in(InsPlyIncomeInvoiceSettlement::getInvoiceId, validInvoiceIds);
+        List<InsPlyIncomeInvoiceSettlement> settlementList = insPlyIncomeInvoiceSettlementMapper.selectList(settleWrapper);
+
+        // 3、按invoiceId分组,累加 actualReceivedAmount
+        Map<String, BigDecimal> sumSettleMap = settlementList.stream()
+                .collect(Collectors.groupingBy(
+                        InsPlyIncomeInvoiceSettlement::getInvoiceId,
+                        Collectors.reducing(
+                                BigDecimal.ZERO,
+                                InsPlyIncomeInvoiceSettlement::getActualReceivedAmount,
+                                BigDecimal::add
+                        )
+                ));
+
+        // 4、应收监管保费 - 已实收总额
+        for (InsPlyIncomeInvoice invoice : invoiceList) {
+            String invoiceId = invoice.getId();
+            BigDecimal receivablePremium = invoice.getReceivableSupervisePremium() == null
+                    ? BigDecimal.ZERO
+                    : invoice.getReceivableSupervisePremium();
+            BigDecimal sumActual = sumSettleMap.getOrDefault(invoiceId, BigDecimal.ZERO);
+            BigDecimal surplus = receivablePremium.subtract(sumActual);
+            resultMap.put(invoiceId, surplus);
+        }
+
+        return resultMap;
     }
 
     /**
@@ -1806,6 +1843,10 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Transactional
     public InvoiceingResult addInvoicing(InsPlyIncomeInvoiceVO invoicingVo) {
         log.info("开票:invoicingVo=[{}]", JSONUtil.toJsonStr(invoicingVo));
+        // add by lipf, 如果是保司开票, 设置发票号为空
+        if("2".equals(invoicingVo.getInvoiceType())){
+            invoicingVo.setInvoiceNo(null);
+        }
         try {
             this.valide4Invoicing(invoicingVo);
             InvoiceingResult result = new InvoiceingResult();
@@ -5115,6 +5156,16 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
     @Override
     public Page<ExportSuperviseSettlementExcelDto> platformSettlementExcel(Page page, SettlementQueryVo settlementQueryVo) {
         log.info("查询平台结算记录:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
+
+        if(StrUtil.isEmpty(settlementQueryVo.getSettlementDateStart())
+            && StrUtil.isEmpty(settlementQueryVo.getSettlementDateEnd())
+            && settlementQueryVo.getSettlementTime() != null &&
+                settlementQueryVo.getSettlementTime().length ==2){
+            DateUtil.parse(settlementQueryVo.getSettlementDateStart());
+            settlementQueryVo.setSettlementDateStart(DateUtil.format(LocalDate.parse(settlementQueryVo.getSettlementTime()[0], DateTimeFormatter.ISO_DATE).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+            settlementQueryVo.setSettlementDateEnd(DateUtil.format(LocalDate.parse(settlementQueryVo.getSettlementTime()[1], DateTimeFormatter.ISO_DATE).plusDays(1).atStartOfDay(), "yyyy-MM-dd HH:mm:ss"));
+        }
+
         // 设置空条件
         setNoneCondition(settlementQueryVo);
         settlementQueryVo.setSystemCode(baseController.getSystemCode());