Explorar o código

Merge branch 'dev_jzg_lipf_v20260506'

# Conflicts:
#	tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
jiakai hai 5 meses
pai
achega
23637dcf8c
Modificáronse 15 ficheiros con 166 adicións e 57 borrados
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java
  2. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/SysDeptParam.java
  3. 5 2
      commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoiceSettlement.java
  4. 31 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  5. 13 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  6. 13 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  7. 14 3
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/build/ZiJinAPIQuoteResultsVoBuild.java
  8. 4 0
      tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/CalculatePremiumResponse.java
  9. 4 5
      tenant/organization/src/main/java/com/jzg/organization/controller/ReceivableController.java
  10. 1 1
      tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java
  11. 9 2
      tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java
  12. 16 4
      tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java
  13. 39 12
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java
  14. 3 14
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml
  15. 8 8
      tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParam.java

@@ -11,6 +11,9 @@ import lombok.Data;
 public class InsOrdersParam extends PageRequest {
 
     @Schema(description = "订单号")
+    private String orderId;
+
+    @Schema(description = "报价号")
     private String orderNo;
 
     @Schema(description = "车牌号")

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/dto/SysDeptParam.java

@@ -13,4 +13,7 @@ public class SysDeptParam {
 
     @Schema(description = "搜索名称")
     private String name;
+
+    @Schema(description = "机构下用户的信息")
+    private String userInfo;
 }

+ 5 - 2
commons/src/main/java/com/jzg/commons/entity/finance/po/InsPlyIncomeInvoiceSettlement.java

@@ -1,19 +1,22 @@
 package com.jzg.commons.entity.finance.po;
 
-//import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.util.idgen.IdGenerate;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
 
-import java.math.BigDecimal;
+import java.io.Serial;
 import java.util.Date;
 import java.util.List;
 
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Schema(description = "财务应收开票结算表")
 public class InsPlyIncomeInvoiceSettlement extends BaseModel {
+    @Serial
+    private static final long serialVersionUID = -2019053289601744522L;
     private String id;
 
     @Schema(description = "票据iD")

+ 31 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java

@@ -65,6 +65,7 @@ import org.springframework.web.context.request.ServletRequestAttributes;
 
 import java.io.IOException;
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.util.*;
@@ -271,6 +272,15 @@ public class UnifyOrderManager {
                 QuoteInfoConverter.converterKindInfoVo(quoteVo.getKindInfoVo(), quoteKindMappingMap.get(QuoteRuleCategory.KIND.getCode()), quoteVo.getCarInfoVo());
             }
             quoteResultsVo = quoteService.quote(quoteVo);
+            // 格式化保费为两位小数
+            QuoteResultsVo.CostsVo costs = quoteResultsVo.getCosts();
+            if (costs != null) {
+                costs.setCiPremium(formatPremium(costs.getCiPremium()));       // 交强险
+                costs.setBiPremium(formatPremium(costs.getBiPremium()));       // 商业险
+                costs.setNiPremium(formatPremium(costs.getNiPremium()));       // 非车险
+                costs.setVvTax(formatPremium(costs.getVvTax()));               // 车船税
+                costs.setSumPremium(formatPremium(costs.getSumPremium()));     // 总保费
+            }
             quoteResultsVo.setCiRiskInfoVo(quoteVo.getCiRiskInfoVo());
             quoteResultsVo.setBiRiskInfoVo(quoteVo.getBiRiskInfoVo());
             quoteResultsVo.setQuoteStatus(quoteResultsVo.getQuoteStatusEnum().getCode());
@@ -931,4 +941,25 @@ public class UnifyOrderManager {
             }
         }
     }
+
+    /**
+     * 格式化保费字符串:非空判断 + 保留两位小数
+     * @param premium 原始保费字符串
+     * @return 格式化后两位小数的字符串
+     */
+    public static String formatPremium(String premium) {
+        // 1. 空值直接返回空
+        if (premium == null || premium.isBlank()) {
+            return premium;
+        }
+        try {
+            // 2. 转BigDecimal,保留两位小数(HALF_UP 四舍五入)
+            return new BigDecimal(premium.trim())
+                    .setScale(2, RoundingMode.HALF_UP)
+                    .toPlainString();
+        } catch (Exception e) {
+            // 格式错误直接返回原值,防止报错
+            return premium;
+        }
+    }
 }

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

@@ -163,12 +163,12 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     public HttpResult saveOrders(InsOrdersAdd ordersAdd) {
         // 检查输入参数是否为空,如果为空则返回错误信息
         try {
-
             // 获取订单对象并设置引用编号
             InsOrders insOrders = ordersAdd.getInsOrders();
-            insOrders.setRealQuoteUserId(baseController.getUserName());
+            String realQuoteUserId = StrUtil.isNotBlank(insOrders.getRealQuoteUserId()) ? insOrders.getRealQuoteUserId() : baseController.getUserName();
+            insOrders.setRealQuoteUserId(realQuoteUserId);
             InsOrdersAdd insOrdersAdd = BeanCopyUtil.deepCopy(ordersAdd, InsOrdersAdd.class);
-            InsOrders parentOrders = insOrdersMapper.selectMainOrderNumber(ordersAdd.getCarInfoVo().getLicenseNo(),ordersAdd.getInsOrders().getRealQuoteUserId());
+            InsOrders parentOrders = insOrdersMapper.selectMainOrderNumber(ordersAdd.getCarInfoVo().getLicenseNo(), realQuoteUserId);
             boolean nullOrders = ObjectUtil.isNull(parentOrders);
             if (nullOrders){
                 insOrders.setQuoteNo(SnowFlakeUtil.getSnowFlakeId());
@@ -427,6 +427,15 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
             insOrdersParam.setStartDate(insOrdersParam.getRecordingTime()[0]);
             insOrdersParam.setEndDate(insOrdersParam.getRecordingTime()[1]);
         }
+        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);
         IPage<OrdersListVo> ordersListVoIPage = insOrdersMapper.pageList(insOrdersParam.getPage(), insOrdersParam);
         return ordersListVoIPage;
     }
@@ -468,7 +477,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         }
 
         // 业务员信息
-        SalesmanVo salesmanInfo = orgClient.getUserByMobile(insOrdersVo.getCreateBy());
+        SalesmanVo salesmanInfo = orgClient.getUserByMobile(insOrdersVo.getInsOrders().getRealQuoteUserId());
         if (Objects.nonNull(salesmanInfo)) {
             InsOrdersVo.Salesman salesman = new InsOrdersVo.Salesman();
             salesman.setName(salesmanInfo.getName());

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

@@ -24,6 +24,7 @@
         <result property="insOrderNo" column="ins_order_no" jdbcType="VARCHAR"/>
         <result property="signingTime" column="signing_time" jdbcType="VARCHAR"/>
         <result property="isTemporarily" column="is_temporarily" jdbcType="VARCHAR"/>
+        <result property="realQuoteUserId" column="real_quote_user_id" jdbcType="VARCHAR"/>
     </resultMap>
     <!--    订单 车辆信息-->
     <resultMap id="carInfoMap" type="com.jzg.commons.entity.quote.vo.CarInfoVo">
@@ -512,7 +513,7 @@
         LEFT JOIN ins_orders_car_info c ON c.order_no = o.id
         LEFT JOIN ins_orders_costs s ON o.id = s.order_no
         LEFT JOIN sys_user su ON su.mobile = o.real_quote_user_id
-        LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id
+        LEFT JOIN sys_user_jzg_info suji ON suji.user_id = su.id AND suji.system_code = #{insOrdersParam.systemCode}
         LEFT JOIN esm_ins_company eic on o.company_id = eic.id
         left join sys_dept sd on sd.id = suji.dept_id
         left join
@@ -538,6 +539,9 @@
             <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
                 AND o.quote_no = #{insOrdersParam.orderNo}
             </if>
+            <if test="insOrdersParam.orderId != null and insOrdersParam.orderId != ''">
+                AND o.id = #{insOrdersParam.orderId}
+            </if>
             <if test="insOrdersParam.parentId == 0 ">
                 AND o.parent_id = 0
             </if>
@@ -550,11 +554,14 @@
             <if test="insOrdersParam.companyName != null and insOrdersParam.companyName != ''">
                 AND o.company_name = #{insOrdersParam.companyName}
             </if>
+            <if test="insOrdersParam.companyId != null and insOrdersParam.companyId != ''">
+                AND o.company_id = #{insOrdersParam.companyId}
+            </if>
             <if test="insOrdersParam.salesman != null and insOrdersParam.salesman != ''">
                 AND suji.name = #{insOrdersParam.salesman}
             </if>
             <if test="insOrdersParam.salesmanCompany != null and insOrdersParam.salesmanCompany != ''">
-                AND o.salesman_company = #{insOrdersParam.salesmanCompany}
+                AND sd.name = #{insOrdersParam.salesmanCompany}
             </if>
             <if test="insOrdersParam.auditStatus != null and insOrdersParam.auditStatus != ''">
                 AND o.audit_status = #{insOrdersParam.auditStatus}
@@ -584,6 +591,7 @@
                order_status,
                company_id,
                company_name,
+               real_quote_user_id,
                product_id,
                product_name,
                entry_status,
@@ -701,6 +709,7 @@
                company_name,
                product_id,
                product_name,
+               real_quote_user_id,
                audit_status,
                audit_comments,
                create_by,
@@ -1452,6 +1461,8 @@
         FROM ins_orders o
                  LEFT JOIN ins_orders_car_info c ON o.id = c.order_no
         WHERE o.parent_id = 0 AND o.entry_status = 3 AND c.license_no = #{licenseNo} AND o.real_quote_user_id = #{realQuoteUserId}
+        ORDER BY o.create_time DESC
+        LIMIT 1
     </select>
 
 

+ 14 - 3
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/build/ZiJinAPIQuoteResultsVoBuild.java

@@ -65,7 +65,7 @@ public final class ZiJinAPIQuoteResultsVoBuild {
 //        List<ExpenseFactor> expenseFactors = buildExpenseFactor(calculatePremiumResponse.getPriceInfoList());
 //        quoteResultsVo.setExpenseFactors(expenseFactors);
         // 交强保费 车船税 商业保费
-        buildPremium(quoteResultsVo, calculatePremiumResponse.getPlanList());
+        buildPremium(quoteResultsVo, calculatePremiumResponse);
 
         CalculatePremiumResponse.BasePartDTO basePart = calculatePremiumResponse.getBasePart();
         if (null != basePart){
@@ -107,21 +107,32 @@ public final class ZiJinAPIQuoteResultsVoBuild {
         return kindInfoVo;
     }
 
-    private static void buildPremium(QuoteResultsVo quoteResultsVo, List<CalculatePremiumResponse.PlanListDTO> planList) {
+    private static void buildPremium(QuoteResultsVo quoteResultsVo, CalculatePremiumResponse response) {
+        List<CalculatePremiumResponse.PlanListDTO> planList = response.getPlanList();
         Map<String, String> planMap = planList
                 .stream()
                 .collect(Collectors.toMap(CalculatePremiumResponse.PlanListDTO::getRiskCode, CalculatePremiumResponse.PlanListDTO::getPlanFee));
         String ciPremiumStr = planMap.get(RiskCodeEnum.TRAFFIC_CODE);
         String biPremiumStr = planMap.get(RiskCodeEnum.BUSINESS_CODE);
+        // 计算驾意险总保费金额
+        BigDecimal niPremiumStr = new BigDecimal("0");
+        for (CalculatePremiumResponse.CarPolicySubInfoListDTO carPolicySubInfoListDTO : response.getCarPolicySubInfoList()) {
+            if (StrUtil.isNotBlank(carPolicySubInfoListDTO.getActualPremium())){
+                niPremiumStr = niPremiumStr.add(new BigDecimal(carPolicySubInfoListDTO.getActualPremium()));
+            }else if (StrUtil.isNotBlank(carPolicySubInfoListDTO.getSumPremium())){
+                niPremiumStr = niPremiumStr.add(new BigDecimal(carPolicySubInfoListDTO.getSumPremium()));
+            }
+        }
         String vvTaxStr = planMap.get(RiskCodeEnum.ACCIDENT_CODE);
         BigDecimal ciPremium = StringUtil.isNotEmpty(ciPremiumStr)? new BigDecimal(ciPremiumStr) : new BigDecimal(0);
         BigDecimal biPremium = StringUtil.isNotEmpty(biPremiumStr)? new BigDecimal(biPremiumStr) : new BigDecimal(0);
         BigDecimal vvTax = StringUtil.isNotEmpty(vvTaxStr)? new BigDecimal(vvTaxStr) : new BigDecimal(0);
         quoteResultsVo.getCosts().setCiPremium(ciPremiumStr);
         quoteResultsVo.getCosts().setBiPremium(biPremiumStr);
+        quoteResultsVo.getCosts().setNiPremium(String.valueOf(niPremiumStr));
         quoteResultsVo.getCosts().setVvTax(vvTaxStr);
         quoteResultsVo.getCosts().setSumPremium(String.valueOf(
-                ciPremium.add(biPremium).add(vvTax)
+                ciPremium.add(biPremium).add(vvTax).add(niPremiumStr)
         ));
     }
 

+ 4 - 0
tenant/insurance/quotation-zijin/src/main/java/com/jzg/quotation/zijin/api/entity/response/CalculatePremiumResponse.java

@@ -92,6 +92,10 @@ public class CalculatePremiumResponse extends BaseResponse implements Serializab
         private String isUseInsured;
         @JsonProperty("actualPremium")
         private String actualPremium;
+        @JsonProperty("sumPremium")
+        private String sumPremium;
+        @JsonProperty("sumAmount")
+        private String sumAmount;
         @JsonProperty("commi")
         private String commi;
         @JsonProperty("commi2")

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

@@ -2,8 +2,8 @@ package com.jzg.organization.controller;
 
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.jzg.commons.constants.dict.InsOrderStatusEnum;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.finance.dto.CompanySuperviseSettlementReportDto;
 import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import com.jzg.commons.entity.finance.po.InsPlyIncomeInvoiceSettlement;
 import com.jzg.commons.entity.finance.vo.*;
@@ -53,8 +53,7 @@ public class ReceivableController {
     @PostMapping("getUnauditedOrder")
     @Operation(summary = "获取未审核的订单")
     public HttpResult getUnauditedOrder(@RequestBody ReceivableQueryVo receivableQueryVo){
-        if (Objects.isNull(receivableQueryVo.getAgreementType()) || receivableQueryVo.getAgreementType().equals(""))
-        {
+        if (Objects.isNull(receivableQueryVo.getAgreementType()) || receivableQueryVo.getAgreementType().equals("")) {
             receivableQueryVo.setAgreementType("1");
         }
         InsPlyIncome auditedOrder  = receivableService.getUnauditedOrder(receivableQueryVo);
@@ -74,7 +73,7 @@ public class ReceivableController {
 
     @PostMapping("getCommissionReceivableList")
     @Operation(summary = "获取私有协议手续费列表")
-    public HttpResult getCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
+    public HttpResult<Page<InsPlyIncome>> getCommissionReceivableList(@RequestBody ReceivableQueryVo receivableQueryVo){
         receivableQueryVo.setQueryType("2");
         receivableQueryVo.setAgreementType("2");
         return HttpResult.ok(receivableService.getReceivablePage(receivableQueryVo));
@@ -349,7 +348,7 @@ public class ReceivableController {
 
     @PostMapping("companySuperviseSettlementReport")
     @Operation(summary = "保险公司结算报表")
-    public HttpResult companySuperviseSettlementReport(@RequestBody SettlementReportQueryVo settlementReportQueryVo) {
+    public HttpResult<List<CompanySuperviseSettlementReportDto>> companySuperviseSettlementReport(@RequestBody SettlementReportQueryVo settlementReportQueryVo) {
         return HttpResult.ok(receivableService.companySuperviseSettlementReport(settlementReportQueryVo));
     }
 

+ 1 - 1
tenant/organization/src/main/java/com/jzg/organization/mapper/ReceivableMapper.java

@@ -42,7 +42,7 @@ public interface ReceivableMapper extends BaseMapper<InsPlyIncome> {
     /**
      * 获取车险应收列表
      * @param receivableQueryVo
-     * @return
+     * @return Page<InsPlyIncome>
      */
     Page<InsPlyIncome> getReceivablePage(Page page,@Param("receivableQueryVo") ReceivableQueryVo receivableQueryVo);
 

+ 9 - 2
tenant/organization/src/main/java/com/jzg/organization/service/ReceivableService.java

@@ -47,9 +47,10 @@ public interface ReceivableService extends IService<InsPlyIncome> {
     List<EsmInsCompany> getReceivableCompany(InvoicingVo invoicingVo);
 
     /**
-     * 获取手续费应收列表
+     * 获取私有协议手续费列表
+     *
      * @param receivableQueryVo
-     * @return
+     * @return Page<InsPlyIncome>
      */
     Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo);
 
@@ -265,6 +266,12 @@ public interface ReceivableService extends IService<InsPlyIncome> {
      */
     void exportOtherSettlementDetailJyExcel(Page page,SettlementQueryVo settlementQueryVo) throws IOException;
 
+    /**
+     * 查询保险公司结算报表
+     *
+     * @author lipf
+     * @date 2026/4/30 14:48
+     */
     List<CompanySuperviseSettlementReportDto> companySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo);
 
     Page<ReceiverSettlementReportDto> receiverSettlementReport(Page page,SettlementReportQueryVo settlementReportQueryVo);

+ 16 - 4
tenant/organization/src/main/java/com/jzg/organization/service/impl/ReceivableServiceImpl.java

@@ -162,6 +162,12 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         return baseMapper.getReceivableCompany(invoicingVo);
     }
 
+    /**
+     * 获取私有协议手续费列表
+     *
+     * @param receivableQueryVo
+     * @return Page<InsPlyIncome>
+     */
     @Override
     public Page<InsPlyIncome> getReceivablePage(ReceivableQueryVo receivableQueryVo) {
         log.info("获取私有协议手续费列表。receivableQueryVo=[{}]", JSONUtil.toJsonStr(receivableQueryVo));
@@ -333,11 +339,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
             AssertionUtils.isFail(Objects.isNull(insPlyIncomeInvoice), "发票数据不存在");
 
             // 实际已经收的了金额
-            BigDecimal ctualReceivedAmount = getInvoicingAmount(settlementVo.getInvoicingId());
+            BigDecimal ctualReceivedAmount = this.getInvoicingAmount(settlementVo.getInvoicingId());
 
             // 剩余的金额
             BigDecimal surplusPremium = insPlyIncomeInvoice.getReceivableSupervisePremium().subtract(ctualReceivedAmount);
-
+            log.info("invoiceId=[{}],一共需要结算的金额[{}],实际已经结算的金额[{}],本次计划结算的金额[{}]",settlementVo.getInvoicingId(), insPlyIncomeInvoice.getReceivableSupervisePremium(),ctualReceivedAmount.toString(),settlementVo.getActualReceivedAmount());
             // 校验是否超出了剩余的金额
             AssertionUtils.isFail(surplusPremium.compareTo(settlementVo.getActualReceivedAmount()) < 0, "已超出应收金额,请核对!");
 
@@ -371,11 +377,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
                         .forEach(item -> {
                             incomeIds.add(item.getIncomeId());
                         });
-
                 // 判断是需要更新哪个字段
                 this.updateIncomeSettlementStatus(insPlyIncomeInvoice.getInvoiceType(), incomeIds);
+            }else{
+                log.info("invoiceId=[{}], 还剩[{}]钱没有结算",settlementVo.getInvoicingId(), surplusPremium.subtract(settlementVo.getActualReceivedAmount()));
             }
-
             return true;
         } catch (Exception e) {
             log.error("结算异常. settlementVo=[{}]",JSONUtil.toJsonStr(settlementVo), e);
@@ -1087,6 +1093,7 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
 
     @Override
     public Page<ExportSuperviseSettlementDetailExcelDto> superviseSettlementDetailExcel(Page page, SettlementQueryVo settlementQueryVo) {
+        log.info("superviseSettlementDetailExcel:settlementQueryVo=[{}]", JSONUtil.toJsonStr(settlementQueryVo));
         Page<ExportSuperviseSettlementDetailExcelDto> exportSuperviseSettlementDetailExcelDtos = baseMapper.getSuperviseSettlementDetailExcelDtos(page, settlementQueryVo);
         exportSuperviseSettlementDetailExcelDtos.getRecords().forEach(dto -> {
             if (dto.getInvoiceParty().equals("1")) {
@@ -1304,6 +1311,11 @@ public class ReceivableServiceImpl extends ServiceImpl<ReceivableMapper, InsPlyI
         EasyExcelUtils.exportForWeb(ServletUtils.getResponse(), ExportOtherSettlementDetailJyExcelDto.class, list, "非车险跟单费结算明细");
     }
 
+    /**
+     * 查询保险公司结算报表
+     *
+     * @date 2026/4/30 14:48
+     */
     @Override
     public List<CompanySuperviseSettlementReportDto> companySuperviseSettlementReport(SettlementReportQueryVo settlementReportQueryVo) {
         log.info("私有协议查询结算报表:settlementReportQueryVo=[{}]", JSONUtil.toJsonStr(settlementReportQueryVo));

+ 39 - 12
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDeptServiceImpl.java

@@ -1,20 +1,20 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.collection.CollUtil;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.jzg.commons.core.base.BaseController;
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.dto.SysUserJzgInfoDto;
 import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.dto.SysDeptParam;
-import com.jzg.commons.entity.vo.ChangeDeptVo;
-import com.jzg.commons.entity.vo.DeptLeaderVo;
-import com.jzg.commons.entity.vo.SysUserVo;
+import com.jzg.commons.entity.vo.*;
 import com.jzg.commons.exception.SystemException;
 import com.jzg.commons.util.AssertionUtils;
 import com.jzg.commons.util.StringUtils;
 import com.jzg.commons.util.idgen.IdGenerate;
-import com.jzg.commons.entity.vo.SysDeptVo;
 import com.jzg.organization.mapper.SysDeptMapper;
 import com.jzg.organization.service.*;
 import org.slf4j.Logger;
@@ -147,7 +147,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     @Transactional
-    public HttpResult deleteDept(SysDeptVo sysDeptVo) {
+    public HttpResult<String> deleteDept(SysDeptVo sysDeptVo) {
         SysDept sysDept = getById(sysDeptVo.getId());
         if (sysDept == null) {
             throw new SystemException("机构不存在");
@@ -159,7 +159,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysUserVo vo = new SysUserVo();
         vo.setDeptId(sysDept.getId());
         List<SysUserVo> userInfo = userService.getUserInfo(vo);
-        if (userInfo.stream().count() > 0) {
+        if ((long) userInfo.size() > 0) {
             throw new SystemException(sysDept.getName() + "机构下还有其他用户请将这些用户删除后,再进行删除");
         }
         sysDeptMapper.deleteById(sysDeptVo.getId());
@@ -168,7 +168,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     @Transactional
-    public HttpResult batchDeleteDept(SysDeptVo sysDeptVo) {
+    public HttpResult<String> batchDeleteDept(SysDeptVo sysDeptVo) {
         sysDeptVo.getDeptIds().forEach(id->{
             SysDeptVo vo = new SysDeptVo();
             vo.setId(id);
@@ -179,6 +179,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
     @Override
     public List<SysDeptVo> getDeptTree(String deptId, SysDeptParam param) {
+        log.info("查询部门信息:deptTid=[{}],param=[{}]",deptId, JSONUtil.toJsonStr(param));
         deptId = Objects.toString(deptId, "");
 
         String userSystemCode = Optional.ofNullable(param.getSysCode())
@@ -189,9 +190,15 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         SysSystem bySysCode = sysSystemService.getBySysCode(userSystemCode);
         SysDept sysDept = getById(deptId);
 
+        List<String> deptTids = this.obatinDeptTids(param.getUserInfo());
         List<SysDeptVo> voDept = baseMapper.selectDeptVoList(deptId, userSystemCode, param.getName())
                 .stream()
-                .map(item -> {
+                .filter(action->{
+                    if(CollUtil.isEmpty(deptTids)){
+                        return true;
+                    }
+                    return deptTids.contains(action.getId());
+                }).map(item -> {
                     SysDeptVo sysDeptVo = new SysDeptVo(item);
 
                     // 获取区域信息
@@ -212,7 +219,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
                     return sysDeptVo;
                 })
-                .collect(Collectors.toList());
+                .toList();
 
         // 按父ID分组
         Map<String, List<SysDeptVo>> deptMap = voDept.stream()
@@ -231,6 +238,28 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         return sysDeptVos;
     }
 
+    /**
+     * 根据用户信息查询用户关联的机构的序号
+     *
+     * @author lipf
+     * @date 2026/5/6 15:48
+     */
+    private List<String> obatinDeptTids(String userInfo) {
+        List<String> deptTids = new ArrayList<>();
+        if(StringUtils.isNotEmpty(userInfo)){
+            Page page = new Page();
+            SysUserInfoListVo sysUserInfoListVo =  new SysUserInfoListVo();
+            sysUserInfoListVo.setIsMember("1");
+            sysUserInfoListVo.setSalesman(userInfo);
+            Page<SysUserJzgInfoDto> userInfoList = userService.getUserInfoList(page, sysUserInfoListVo);
+            List<SysUserJzgInfoDto> records = userInfoList.getRecords();
+            if(CollUtil.isNotEmpty(records)){
+                deptTids = records.stream().map(SysUserJzgInfoDto::getDeptId).toList();
+                log.info("查询出的用户信息所在部门:[{}]", JSONUtil.toJsonStr(deptTids));
+            }
+        }
+        return deptTids;
+    }
 
 
     @Override
@@ -241,9 +270,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
         if(Objects.isNull(user)){
             throw new SystemException("用户不存在");
         }
-        depts.forEach(item->{
-            item.setLeaderId(deptLeaderVo.getLeaderId());
-        });
+        depts.forEach(item-> item.setLeaderId(deptLeaderVo.getLeaderId()));
         return this.updateBatchById(depts);
     }
 

+ 3 - 14
tenant/organization/src/main/resources/mapper/ReceivableMapper.xml

@@ -248,8 +248,7 @@
             LEFT JOIN ins_orders_risk ior1 ON ipi.order_no = ior1.order_no and ior1.risk_code = '0507'
             LEFT JOIN ins_orders_risk ior2 ON ipi.order_no = ior2.order_no and ior2.risk_code = '0510'
             LEFT JOIN ins_orders_policy iop ON ipi.order_no = iop.order_no
-        WHERE
-            1=1
+        WHERE 1=1
         AND NOT EXISTS ( SELECT 1 FROM ins_ply_income_invoice_link ipil WHERE ipil.income_id = ipi.id )
         <if test = "receivableQueryVo.agreementType != null and receivableQueryVo.agreementType == 1">
             AND ipi.agreement_type = #{receivableQueryVo.agreementType}
@@ -304,40 +303,30 @@
         <if test="receivableQueryVo.insuredName != null and receivableQueryVo.insuredName != ''">
             AND iocui.name = #{receivableQueryVo.insuredName}
         </if>
-
         <if test="receivableQueryVo.orderType != null and receivableQueryVo.orderType != ''">
             AND io.entry_status = #{receivableQueryVo.orderType}
         </if>
-
         <if test="receivableQueryVo.productName != null and receivableQueryVo.productName != ''">
             AND io.product_name = #{receivableQueryVo.productName}
         </if>
-
         <if test="receivableQueryVo.jqPolicyNo != null and receivableQueryVo.jqPolicyNo != ''">
             AND iop.jq_policy_no = #{receivableQueryVo.jqPolicyNo}
         </if>
-
         <if test="receivableQueryVo.syPolicyNo != null and receivableQueryVo.syPolicyNo != ''">
             AND iop.sy_policy_no = #{receivableQueryVo.syPolicyNo}
         </if>
-
         <if test="receivableQueryVo.jyPolicyNo != null and receivableQueryVo.jyPolicyNo != ''">
             AND iop.jy_policy_no = #{receivableQueryVo.jyPolicyNo}
         </if>
-
         <if test="receivableQueryVo.dockingPerson != null and receivableQueryVo.dockingPerson != ''">
             AND io.docking_person = #{receivableQueryVo.dockingPerson}
         </if>
-
         <if test="receivableQueryVo.jqStartDate != null and receivableQueryVo.jqStartDate != ''">
             AND ior1.start_date between #{receivableQueryVo.jqStartDate} and  #{receivableQueryVo.jqEndDate}
         </if>
-
         <if test="receivableQueryVo.syStartDate != null and receivableQueryVo.syStartDate != ''">
             AND ior2.start_date between #{receivableQueryVo.syStartDate} and  #{receivableQueryVo.syStartDate}
         </if>
-
-
     </select>
 
 
@@ -581,7 +570,7 @@
         ipiis.create_time as settlementTime -- 结算时间
         FROM
         ins_ply_income_invoice ipii
-        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipiis.id
+        LEFT JOIN ins_ply_income_invoice_settlement ipiis ON ipiis.invoice_id = ipii.id
         LEFT JOIN ins_ply_income_invoice_link ipil ON ipil.invoice_id = ipiis.invoice_id
         LEFT JOIN ins_ply_income ipi ON ipi.id = ipil.income_id
         LEFT JOIN ins_orders io ON ipi.order_no = io.id
@@ -615,7 +604,7 @@
             AND ipiis.create_time between #{settlementQueryVo.signingTimeStart} and #{settlementQueryVo.signingTimeEnd}
         </if>
         <if test="settlementQueryVo.agreementType != null and settlementQueryVo.agreementType != ''">
-            AND ipii.agreement_type = #{settlementQueryVo.agreementType}
+            AND ipi.agreement_type = #{settlementQueryVo.agreementType}
         </if>
     </select>
 

+ 8 - 8
tenant/organization/src/main/resources/mapper/SysUserJzgInfoMapper.xml

@@ -62,19 +62,19 @@
         suji.user_id,
         suji.work_number,
         su.username,
-        su.mobile,
+        su.mobile ,
         suji.name,
         suji.dept_id,
-        sd.name as dept_name,
+        sd.name AS dept_name,
         suji.status,
         suji.is_enable,
-        lsu.user_id as leader_id,
         lsu.name AS leader_name,
-        suji.referrer_id,
-        su.username as referrer_name,
-        -- soul.organization_id as organization_id,
-        suji.create_time as createTime,
-        suji.create_by as createBy
+        ( select  aa.mobile from sys_user aa
+        where aa.id = lsu.user_id ) AS leader_id,
+        suji.name AS referrer_name,
+        su.username as referrer_id,
+        suji.create_time AS createTime,
+        suji.create_by AS createBy
         from
         sys_user_jzg_info suji
         left join sys_user su on su.id = suji.user_id