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

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

jiakai 5 месяцев назад
Родитель
Сommit
5b1cd67904
21 измененных файлов с 325 добавлено и 190 удалено
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParamVO.java
  2. 10 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  3. 6 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  4. 3 1
      commons/src/main/java/com/jzg/commons/util/BuildDescUtils.java
  5. 5 5
      commons/src/main/java/com/jzg/commons/util/EasyExcelUtils.java
  6. 23 11
      commons/src/main/java/com/jzg/commons/util/MinioUtils.java
  7. 1 1
      gateway/src/main/java/com/jzg/filter/AuthFilter.java
  8. 6 2
      partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java
  9. 4 19
      partner/src/main/resources/mapper/PartnerUserMapper.xml
  10. 17 9
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java
  11. 0 1
      tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java
  12. 27 3
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java
  13. 1 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/UnifyOrderManager.java
  14. 6 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java
  15. 17 17
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/ExportBaseServiceImpl.java
  16. 21 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  17. 121 115
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  18. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/SysOrganizationController.java
  19. 37 0
      tenant/organization/src/main/java/com/jzg/organization/controller/SysUserJzgInfoController.java
  20. 7 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationService.java
  21. 8 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationServiceImpl.java

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

@@ -13,6 +13,9 @@ import java.util.Date;
 public class InsOrdersParamVO extends PageRequest {
 
     // --------------- 你原有字段 ---------------
+    @Schema(description = "sys_user_jzg_info表的序号")
+    private String jzgInfoId;
+
     @Schema(description = "订单号")
     private String orderNo;
 

+ 10 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java

@@ -53,12 +53,22 @@ public class QuoteEchoVo extends QuoteVo {
      */
     @Data
     private static class OrderBaseVo extends OrderBase{
+        @Serial
+        private static final long serialVersionUID = -9184896455541993138L;
         private String orderStatus;
         private String companyName;
         private String productsName;
+        /**
+         * 协议id
+         */
+        private String agreementId;
         private String agreementName;
         private String agreementType;
         private String createBy;
+        /**
+         * 保司id
+         */
+        private String insuranceCompanyCode;
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
         private LocalDateTime createTime;
         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")

+ 6 - 0
commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java

@@ -10,6 +10,7 @@ import com.jzg.commons.entity.vo.InsTaskImagesVo;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
 import java.time.LocalDateTime;
 import java.util.List;
 
@@ -17,6 +18,8 @@ import java.util.List;
 @Schema(description = "订单录入VO")
 public class InsOrdersVo extends QuoteVo {
 
+    @Serial
+    private static final long serialVersionUID = -4348215455728063063L;
     @Schema(description = "id")
     private String id;
 
@@ -41,6 +44,9 @@ public class InsOrdersVo extends QuoteVo {
     @Schema(description = "协议类型")
     private String agreementType;
 
+    @Schema(description = "协议id")
+    private String agreementId;
+
     @Schema(description = "审核状态")
     private byte auditStatus;
 

+ 3 - 1
commons/src/main/java/com/jzg/commons/util/BuildDescUtils.java

@@ -3,6 +3,7 @@ package com.jzg.commons.util;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesAttr;
 import com.jzg.commons.entity.po.PtlAgreementUndwrtRulesDictLabal;
 
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -34,7 +35,8 @@ public class BuildDescUtils {
                 if(link.getMinArray() != null && link.getMinArray().length > 0){
                     desc.append(ptlAgreementUndwrtRulesAttr.getAttrName()).append("包含");
                     for (int k=0 ; k<link.getMinArray().length; k++){
-                        desc.append(link.getMinArray()[k]).append(",");
+                        PtlAgreementUndwrtRulesDictLabal ptlAgreementUndwrtRulesDictLabal = ptlAgreementUndwrtRulesAttr.getDictLabal().stream().filter(x -> Arrays.asList(link.getMinArray()).contains(x.getCode())).findFirst().orElse(null);
+                        desc.append(ptlAgreementUndwrtRulesDictLabal.getName()).append(",");
                     }
 
                 }else {

+ 5 - 5
commons/src/main/java/com/jzg/commons/util/EasyExcelUtils.java

@@ -1,16 +1,14 @@
 package com.jzg.commons.util;
 
 import com.alibaba.excel.EasyExcel;
-import com.jzg.commons.entity.finance.dto.ExportSuperviseExcelDto;
-import com.jzg.commons.entity.finance.po.InsPlyIncome;
 import jakarta.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
 
 import java.io.IOException;
 import java.net.URLEncoder;
 import java.util.List;
-import java.util.Random;
-
 /**
  * @author quchen
  * @date 2025/7/21 16:32
@@ -19,6 +17,8 @@ import java.util.Random;
 @Component
 public class EasyExcelUtils {
 
+    private static final Logger log = LoggerFactory.getLogger(EasyExcelUtils.class);
+
     public static <T> void exportForWeb(HttpServletResponse response, Class<T> clazz, List<T> datas, String fileName) {
         try {
             response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
@@ -27,7 +27,7 @@ public class EasyExcelUtils {
             response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileEName + ".xlsx");
             EasyExcel.write(response.getOutputStream(), clazz).sheet(fileName).doWrite(datas);
         } catch (IOException e) {
-            e.printStackTrace();
+            log.error("导出文件异常",e);
         }
     }
 

+ 23 - 11
commons/src/main/java/com/jzg/commons/util/MinioUtils.java

@@ -20,13 +20,13 @@ import java.io.*;
 import java.lang.reflect.Field;
 import java.net.URLDecoder;
 import java.util.*;
+import java.util.concurrent.TimeUnit;
 
 /**
- * @program: xxkfz-minio
- * @ClassName MinioUtils.java
- * @author: 公众号:小小开发者
- * @create: 2024-03-13 10:55
- * @description: MinIO操作工具类
+ * MinIO操作工具类
+ *
+ * @author 公众号:小小开发者
+ * @date 2024-03-13 10:55
  **/
 @Slf4j
 @Component
@@ -445,29 +445,41 @@ public class MinioUtils {
      * 上传字节数组到MinIO
      */
     private static String uploadToMinIO(byte[] data, String originalFileName, String bucketName, String minioUrl) throws Exception {
+        log.info("上传文件到minio。 originFileName=[{}],bucketName=[{}],minioUrl=[{}]", originalFileName, bucketName, minioUrl);
         // 检查存储桶是否存在,不存在则创建
         if (!minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build())) {
             minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());
         }
 
         // 生成存储在MinIO中的文件名
-        String objectName = "excel-exports/" + System.currentTimeMillis() + "_" +
+//        String objectName = "excel-exports/" + System.currentTimeMillis() + "_" +
+//                UUID.randomUUID().toString().substring(0, 8) + "_" +
+//                originalFileName + ".xlsx";
+
+        String objectName = System.currentTimeMillis() + "_" +
                 UUID.randomUUID().toString().substring(0, 8) + "_" +
                 originalFileName + ".xlsx";
 
         // 使用字节流上传
         try (ByteArrayInputStream inputStream = new ByteArrayInputStream(data)) {
-            minioClient.putObject(
+            ObjectWriteResponse resp = minioClient.putObject(
                     PutObjectArgs.builder()
                             .bucket(bucketName)
                             .object(objectName)
                             .stream(inputStream, data.length, -1)
                             .contentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
-                            .build()
-            );
+                            .build());
+            log.info("上传文件到minio. resp.etag=[{}],resp.versionId()=[{}]", resp.etag(), resp.versionId());
         }
-        String baseUrl = minioUrl.endsWith("/") ? minioUrl.substring(0, minioUrl.length() - 1) : minioUrl;
-        return baseUrl + "/" + bucketName + "/" + objectName;
+        String fileUrl = minioClient.getPresignedObjectUrl(
+                GetPresignedObjectUrlArgs.builder()
+                        .method(Method.GET)
+                        .bucket(bucketName)
+                        .object(objectName)
+                        .expiry(7, TimeUnit.DAYS)
+                        .build());
+        log.info("fileUrl=[{}]", fileUrl);
+        return fileUrl;
     }
 
     // ===================== 【动态列导出】 =====================

+ 1 - 1
gateway/src/main/java/com/jzg/filter/AuthFilter.java

@@ -51,7 +51,7 @@ public class AuthFilter implements GlobalFilter {
                     long beginTime = beginTimeObj != null ? beginTimeObj : System.currentTimeMillis();
                     long cost = System.currentTimeMillis() - beginTime;
                     log.info("e.msg=[{}]", e.getMessage());
-                    log.error("【Gateway请求异常】 请求地址:{} , 耗时: {}ms, 异常信息",path,cost, e);
+                    log.error("【Gateway请求异常】 请求地址:{} , 耗时: {}ms, 异常信息。 请检查对应的服务是否启动",path,cost, e);
                 });
     }
 }

+ 6 - 2
partner/src/main/java/com/jzg/service/Impl/PartnerUserServiceImpl.java

@@ -702,7 +702,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
             level.setLockingState("1");
             if (null != partnerUser.getUpgradeTime()) {
                 PartnerRuleEntity ruleEntity = ruleService.selectByGrade(String.valueOf(partnerUser.getGrade()));
-                level.setExpiryDate(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(), Integer.valueOf(ruleEntity.getKhDays()))));
+                if (Objects.nonNull(partnerUser.getUpgradeTime())){
+                    level.setExpiryDate(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(), Integer.valueOf(ruleEntity.getKhDays()))));
+                }
             }
             level.setProportional(proportional(String.valueOf(partnerUser.getGrade()), partnerUser.getUserId()));
         }
@@ -729,7 +731,9 @@ public class PartnerUserServiceImpl extends ServiceImpl<PartnerUserMapper, Partn
             level.setZeroDays("99");
         }
         PartnerRuleEntity rule = ruleService.selectByGrade(String.valueOf(partnerUser.getGrade() + 1));
-        level.setUnlockDeadline(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(), Integer.valueOf(rule.getCycle().getFixedDays()))));
+        if (Objects.nonNull(partnerUser.getUpgradeTime())){
+            level.setUnlockDeadline(new SimpleDateFormat("yyyy-MM-dd").format(PartnerDateUtils.addDays(partnerUser.getUpgradeTime(), Integer.valueOf(rule.getCycle().getFixedDays()))));
+        }
         Integer grade = partnerUser.getGrade();
         // 检查升级条件
         boolean verified = ruleService.verifyUpgradeConditions(partnerUser.getUserId(), String.valueOf(grade));

+ 4 - 19
partner/src/main/resources/mapper/PartnerUserMapper.xml

@@ -957,29 +957,14 @@ SELECT
 
 
     <select id="assessment" resultType="java.lang.Integer">
-        WITH target_user AS (
         SELECT
-        info.id AS jzg_info_id,
-        sa.partner_review_time
-        FROM sys_user_jzg_info info
-        INNER JOIN sys_user_jzg_info_salesman sa
-        ON sa.sys_user_jzg_info_id = info.id
-        WHERE
-        sa.type_attr = 3
-        AND sa.partner_status = 3
-        AND info.id = #{userId}
-        )
-        SELECT
-        COUNT(1) AS total_count
+        COUNT( 1 ) AS total_count
         FROM
         partner_user u
-        INNER JOIN target_user tu
-        ON u.referrer_id = tu.jzg_info_id
-        WHERE
-        u.grade = #{grade}
---         AND u.user_id != tu.jzg_info_id
+        LEFT JOIN sys_user_jzg_info_salesman sa ON sa.sys_user_jzg_info_id = u.user_id
+        WHERE sa.type_attr = 3 AND sa.partner_status = 3 AND u.grade = #{grade} AND u.referrer_id = #{userId}
         <if test="period.startDate != null and period.endDate != null">
-            AND tu.partner_review_time BETWEEN #{period.startDate} AND #{period.endDate}
+            AND sa.partner_review_time BETWEEN #{period.startDate} AND #{period.endDate}
         </if>
     </select>
 

+ 17 - 9
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/OrgClient.java

@@ -21,6 +21,18 @@ import java.util.Map;
 @FeignClient(name = "jzg-organization")
 public interface OrgClient {
 
+    /**
+     * 根据用户userId序号查找指定租户下的用户信息
+     *
+     * @param userId 用户序号
+     * @param systemCode 租户代码
+     * @author lipf
+     * @date 2026/4/28 9:37
+     */
+    @GetMapping("/api/v1/organization/queryUserByUserId")
+    HttpResult<SysUserJzgInfo> queryUserByUserId(@RequestParam("userId") String userId,
+                                                 @RequestParam("systemCode") String systemCode);
+
     /**
      * 查找人员信息地区
      *
@@ -50,8 +62,7 @@ public interface OrgClient {
      * 根据id获取费用信息
      *
      * @param id
-     * @param authToken
-     * @return
+     * @return HttpResult<PtlAgreementCostVo>
      */
     @GetMapping(value = "/ptlAgreementCost/queryById")
     HttpResult<PtlAgreementCostVo> queryCostById(@RequestParam Long id);
@@ -75,8 +86,7 @@ public interface OrgClient {
      * 获取用户唯一id
      *
      * @param mobile
-     * @param authToken
-     * @return
+     * @return HttpResult<SysUser>
      */
     @GetMapping(value = "/userInfo/getUserOnlyIdByMobile")
     HttpResult<SysUser> getUserOnlyIdByMobile(@RequestParam String mobile);
@@ -85,8 +95,7 @@ public interface OrgClient {
      * 用户账户信息查询
      *
      * @param userId
-     * @param authToken
-     * @return
+     * @return HttpResult<SysUserAccount>
      */
     @GetMapping(value = "/userAccount/accountGet")
     HttpResult<SysUserAccount> accountGet(@RequestParam String userId);
@@ -94,9 +103,8 @@ public interface OrgClient {
     /**
      * 用户账户信息保存
      *
-     * @param userAccount
-     * @param authToken
-     * @return
+     * @param userAccount 用户账号
+     * @return HttpResult
      */
     @PostMapping(value = "/userAccount/saveOrUpdate")
     HttpResult saveOrUpdate(@RequestBody SysUserAccount userAccount);

+ 0 - 1
tenant/insurance/quotation-commons/src/main/java/com/jzg/quotation/commons/client/PlatformClient.java

@@ -35,7 +35,6 @@ public interface PlatformClient {
      * 根据保司ID查询保险公司信息
      *
      * @param id        保险公司id
-     * @param authToken
      * @return HttpResult<EsmInsCompany>
      */
     @GetMapping("/esmInsCompany/findById")

+ 27 - 3
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -14,6 +14,7 @@ import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.po.InsFeeOrders;
 import com.jzg.commons.entity.quote.vo.KindInfoVo;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
+import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersAdd;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersEnd;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
@@ -28,6 +29,8 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import jakarta.annotation.Resource;
 import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -45,6 +48,8 @@ import java.util.stream.Collectors;
 @RequiredArgsConstructor
 public class InsOrdersController extends BaseController {
 
+    private static final Logger log = LoggerFactory.getLogger(InsOrdersController.class);
+
     @Resource
     private InsOrdersService insOrdersService;
 
@@ -72,10 +77,17 @@ public class InsOrdersController extends BaseController {
         return insOrdersService.updateOrders(ordersEnd);
     }
 
+    /**
+     * 删除车险订单/补录订单
+     *
+     * @author lipf
+     * @date 2026/4/28 11:24
+     */
     @OperatorTrajectory(moduleName = "车险订单/补录订单删除)",mapperClass = InsOrdersMapper.class,entityClass = InsOrdersAdd.class,type = "D")
     @GetMapping("deleteById")
     @Operation(summary = "删除订单")
-    public HttpResult deleteById(@RequestParam("id") Long id) {
+    public HttpResult<String> deleteById(@RequestParam("id") Long id) {
+        log.info("删除车险订单:id=[{}]",id);
         return insOrdersService.removeById(id) ? HttpResult.ok("删除成功") : HttpResult.error("删除失败");
     }
 
@@ -106,15 +118,27 @@ public class InsOrdersController extends BaseController {
         return HttpResult.ok(insOrdersService.queryList(insOrdersParam));
     }
 
+    /**
+     * 导出车险订单
+     *      支持动态选择字段
+     * @author lipf
+     * @date 2026/4/28 15:21
+     */
     @PostMapping("exportDynamicFields")
     @Operation(summary = "动态导出订单列表字段")
-    public HttpResult exportDynamicFields(@RequestBody InsOrdersParamVO insOrdersParam) {
+    public HttpResult<String> exportDynamicFields(@RequestBody InsOrdersParamVO insOrdersParam) {
         return HttpResult.ok(insOrdersService.exportDynamicFields(insOrdersParam));
     }
 
+    /**
+     * 获取订单详情
+     *
+     * @author lipf
+     * @date 2026/4/28 16:00
+     */
     @GetMapping("getOrderDetail")
     @Operation(summary = "获取订单详情")
-    public HttpResult getOrderDetail(String ordersNo) {
+    public HttpResult<QuoteEchoVo> getOrderDetail(String ordersNo) {
         return HttpResult.ok(insOrdersService.getOrderDetail(ordersNo));
     }
 

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

@@ -207,6 +207,7 @@ public class UnifyOrderManager {
     public HttpResult<QuoteResultsVo> quote(@RequestBody QuoteVo quoteVo) throws Exception {
         log.info("进行车险报价:quoteVo=[{}]", JSONUtil.toJsonStr(quoteVo));
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findById(quoteVo.getOrder().getInsuranceCompanyCode());
+        log.info("车险报价:esmInsCompanyHttpResult=[{}]", JSONUtil.toJsonStr(esmInsCompanyHttpResult));
         AssertionUtils.isFail(esmInsCompanyHttpResult.getCode() != 200, esmInsCompanyHttpResult.getMsg());
         String systemCode = getSystemCode();
         String companyName = CompanyConstants.getCompanyNameByCode(esmInsCompanyHttpResult.getData().getCompanyCode());

+ 6 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/mapper/InsOrdersMapper.java

@@ -31,6 +31,12 @@ public interface InsOrdersMapper extends BaseMapper<InsOrders> {
 
     Page<InsOrdersVo> queryList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParam insOrdersParam);
 
+    /**
+     * 查询车险报价订单
+     *
+     * @author lipf
+     * @date 2026/4/28 9:22
+     */
     Page<OrderListVo> queryOrderList(@Param("page") Page page, @Param("insOrdersParam") InsOrdersParamVO insOrdersParam);
 
     List<OrderListVo> queryOrderListAll(@Param("insOrdersParam") InsOrdersParamVO insOrdersParam);

+ 17 - 17
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/ExportBaseServiceImpl.java

@@ -1,5 +1,6 @@
 package com.jzg.quotation.summary.service.impl;
 
+import cn.hutool.json.JSONUtil;
 import com.jzg.commons.entity.report.vo.ReportSearchCommonVo;
 import com.jzg.commons.util.MinioUtils;
 import lombok.extern.slf4j.Slf4j;
@@ -10,10 +11,10 @@ import java.util.List;
 import java.util.Set;
 
 /**
- *  @version 
- *  @author: hxl
- *  @Date: 2025/9/22 16:43
- *  @Description:  基础的实现类处理导出excel逻辑
+ * 基础的实现类处理导出excel逻辑
+ *
+ * @author hxl
+ * @Date 2025/9/22 16:43
  */
 @Slf4j
 @Service
@@ -26,10 +27,10 @@ public class ExportBaseServiceImpl {
     @Value("${minio.bucket-name:excel-files}")
     private String bucketName;
     /**
-     *  @version
-     *  @author: hxl
-     *  @Date: 2025/9/24 10:28
-     *  @Description:  通用上传文件
+     * 通用上传文件
+     *
+     * @author hxl
+     * @date 2025/9/24 10:28
      */
     public <T> void upLoadFile(ReportSearchCommonVo reportSearchCommonVo, Class<T> clazz, List<T> list, String upLoadName) {
         //打印导入数据的时间
@@ -40,14 +41,13 @@ public class ExportBaseServiceImpl {
             endTime = System.currentTimeMillis();
             long duration = endTime - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
-            log.debug("方法执行时间: " + minutes + " 分钟");
+            log.info("方法执行时间[{}]分钟",minutes);
         }catch (Exception e){
+            log.error("upLoadFile方法执行异常",e);
             endTime = System.currentTimeMillis();
             long duration = endTime - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
-            log.debug("方法执行时间: " + minutes + " 分钟");
+            log.info("方法执行异常,耗时[{}]分钟",minutes);
         }
     }
 
@@ -59,8 +59,8 @@ public class ExportBaseServiceImpl {
             Class<T> clazz,
             List<T> list,
             Set<String> includeFields,
-            String upLoadName
-    ) {
+            String upLoadName) {
+        log.info("动态字段导出:upLoadName=[{}],includeFields=[{}]",upLoadName, JSONUtil.toJsonStr(includeFields));
         long startTime = System.currentTimeMillis();
         try {
             // 调用动态导出
@@ -69,13 +69,13 @@ public class ExportBaseServiceImpl {
             );
             long duration = System.currentTimeMillis() - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
+            log.info("方法执行耗时[{}]分钟。fileName=[{}]", minutes,fileName);
             return fileName;
         } catch (Exception e) {
-            e.printStackTrace();
+            log.error("动态字段导出。",e);
             long duration = System.currentTimeMillis() - startTime;
             double minutes = (double) duration / (1000 * 60);
-            log.info("方法执行时间: " + minutes + " 分钟");
+            log.info("动态字段导出,方法执行异常,执行了[{}]分钟", minutes);
         }
         return "";
     }

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

@@ -1142,10 +1142,24 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
     }
 
 
+    /**
+     * 查询车险报价订单
+     *
+     * @author lipf
+     * @date 2026/4/28 9:21
+     */
     @Override
     public Page<OrderListVo> queryList(InsOrdersParamVO insOrdersParam) {
         String userName = baseController.getUserName();
-        insOrdersParam.setSalesman(userName);
+        log.info("订单管理查询车险报价订单:insOrdersParam=[{}]. userName=[{}]", JSONUtil.toJsonStr(insOrdersParam), userName);
+        HttpResult<SysUserJzgInfo> sysUserJzgInfoHttpResult = orgClient.queryUserByUserId(baseController.getUserId(), baseController.getSystemCode());
+        SysUserJzgInfo sysUserJzgInfo = sysUserJzgInfoHttpResult.getData();
+        // modify by lipf, 为了支持能查询成员下面所有业务员的数据添加jzgInfoId这个字段 2026年4月28日11:54:43
+        String jzgInfoId = null;
+        if(sysUserJzgInfo != null){
+            jzgInfoId = sysUserJzgInfo.getId();
+            insOrdersParam.setJzgInfoId(jzgInfoId);
+        }
         Page<OrderListVo> orderListVoPage = insOrdersMapper.queryOrderList(insOrdersParam.getPage(), insOrdersParam);
         if (StringUtils.equals("1",insOrdersParam.getIsLargeOrder())){
             processMainOrder(orderListVoPage);
@@ -1236,12 +1250,15 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public QuoteEchoVo getOrderDetail(String ordersNo) {
+        log.info("获取订单详情.ordersNo=[{}]",ordersNo);
         InsOrdersVo insOrdersVo = selectById(Long.parseLong(ordersNo));
+        log.info("根据orderNo=[{}]查询到的订单明细[{}]", ordersNo, JSONUtil.toJsonStr(insOrdersVo));
         AssertionUtils.isFail(Objects.isNull(insOrdersVo), "订单不存在");
         QuoteEchoVo resultVo = new QuoteEchoVo(insOrdersVo);
         //获取保司信息
         String companyId = insOrdersVo.getInsOrders().getCompanyId();
         HttpResult<EsmInsCompany> esmInsCompanyHttpResult = platformClient.findLogoById(companyId);
+        log.info("根据保司id=[{}]获取到的保司信息如下:[{}]",companyId, JSONUtil.toJsonStr(esmInsCompanyHttpResult));
         if (esmInsCompanyHttpResult.getCode() == 200) {
             resultVo.setInsCompanyVo(esmInsCompanyHttpResult.getData());
         }
@@ -1307,6 +1324,7 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         //权益信息
         InsOrderRightsInfoVo insOrderRightsInfoVo = insOrderRightsInfoService.queryByOrderNo(ordersNo);
         resultVo.setInsOrderRightsInfoVo(insOrderRightsInfoVo);
+        log.info("根据订单ordersNo=[{}]获取到订单的详细信息resultVo=[{}]",ordersNo, JSONUtil.toJsonStr(resultVo));
         return resultVo;
     }
 
@@ -1528,8 +1546,9 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
     @Override
     public String exportDynamicFields(InsOrdersParamVO insOrdersParam) {
+        log.info("导出订单列表。支持动态选择要导出的字段:导出车险订单=[{}]", JSONUtil.toJsonStr(insOrdersParam));
         List<OrderListVo> orderListVos = insOrdersMapper.queryOrderListAll(insOrdersParam);
-
+        log.info("导出订单列表,导出[{}]条记录",CollUtil.size(orderListVos));
         // 动态设置要导出的字段
         String exportDynamicFields = insOrdersParam.getExportDynamicFields();
         Set<String> exportFields = new LinkedHashSet<>(Arrays.asList(exportDynamicFields.split(";")));

+ 121 - 115
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -192,6 +192,8 @@
     <resultMap id="InsOrdersVoMap" type="com.jzg.commons.entity.quote.vo.orders.InsOrdersVo">
         <result property="id" column="id" jdbcType="VARCHAR"/>
         <result property="quoteNo" column="quote_no" jdbcType="VARCHAR"/>
+        <result property="agreementId" column="agreement_id" jdbcType="VARCHAR"/>
+        <result property="companyId" column="company_id" jdbcType="VARCHAR"/>
         <result property="companyName" column="company_name" jdbcType="VARCHAR"/>
         <result property="productId" column="product_id" jdbcType="VARCHAR"/>
         <result property="productName" column="product_name" jdbcType="VARCHAR"/>
@@ -694,6 +696,8 @@
     <select id="getById" resultMap="InsOrdersVoMap">
         select id,
                quote_no,
+               agreement_id,
+               company_id,
                company_name,
                product_id,
                product_name,
@@ -736,6 +740,7 @@
         order by create_time desc
     </select>
 
+    <!--查询车险报价订单 modify by lipf 2026年4月28日09:22:46 -->
     <select id="queryOrderList" resultType="com.jzg.commons.entity.orders.vo.OrderListVo">
         SELECT
         io.id as order_no,
@@ -811,122 +816,123 @@
         FROM ins_order_adjust t where t.status = 2 and t.is_delete = 0
         ) x WHERE x.rn = 1
         ) ioa1 ON io.id = ioa1.order_no
-        where
-        1=1
-
-        <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
-            AND io.id = #{insOrdersParam.orderNo}
-        </if>
-        <if test="insOrdersParam.parentId == 0 ">
-            AND io.parent_id = 0
-        </if>
-        <if test="insOrdersParam.parentId == 1 ">
-            AND io.parent_id != 0
-        </if>
-        <if test="insOrdersParam.licenseNo != null and insOrdersParam.licenseNo != ''">
-            AND ioci.license_no = #{insOrdersParam.licenseNo}
-        </if>
-        <if test="insOrdersParam.orderStatus!= null and insOrdersParam.orderStatus!= ''">
-            AND io.order_status = #{insOrdersParam.orderStatus}
-        </if>
-        <if test="insOrdersParam.adjustStatus!= null and insOrdersParam.adjustStatus!= ''">
-            AND ioa.status = #{insOrdersParam.adjustStatus}
-        </if>
-        <if test="insOrdersParam.salesman!= null">
-            AND io.real_quote_user_id = #{insOrdersParam.salesman}
-        </if>
-        <if test="insOrdersParam.companyId != null and insOrdersParam.companyId != ''">
-            AND io.company_id = #{insOrdersParam.companyId}
-        </if>
-        <if test="insOrdersParam.startDate != null and insOrdersParam.startDate != ''and insOrdersParam.endDate != null and insOrdersParam.endDate != ''">
-            AND io.create_time BETWEEN #{insOrdersParam.startDate} and #{insOrdersParam.endDate}
-        </if>
-
-        <if test="insOrdersParam.companyName != null and insOrdersParam.companyName != ''">
-            AND io.company_name = #{insOrdersParam.companyName}
-        </if>
-        <if test="insOrdersParam.productCode != null and insOrdersParam.productCode != ''">
-            AND io.product_id = #{insOrdersParam.productCode}
-        </if>
-        <if test="insOrdersParam.productName != null and insOrdersParam.productName != ''">
-            AND io.product_name = #{insOrdersParam.productName}
-        </if>
-        <if test="insOrdersParam.vinNo != null and insOrdersParam.vinNo != ''">
-            AND ioci.vin_no = #{insOrdersParam.vinNo}
-        </if>
-        <if test="insOrdersParam.ownerName != null and insOrdersParam.ownerName != ''">
-            AND owner_u.name = #{insOrdersParam.ownerName}
-        </if>
-        <if test="insOrdersParam.ownerMobile != null and insOrdersParam.ownerMobile != ''">
-            AND owner_u.mobile = #{insOrdersParam.ownerMobile}
-        </if>
-        <if test="insOrdersParam.policyName != null and insOrdersParam.policyName != ''">
-            AND policy_u.name = #{insOrdersParam.policyName}
-        </if>
-        <if test="insOrdersParam.policyMobile != null and insOrdersParam.policyMobile != ''">
-            AND policy_u.mobile = #{insOrdersParam.policyMobile}
-        </if>
-        <if test="insOrdersParam.insurName != null and insOrdersParam.insurName != ''">
-            AND insur_u.name = #{insOrdersParam.insurName}
-        </if>
-        <if test="insOrdersParam.insurMobile != null and insOrdersParam.insurMobile != ''">
-            AND insur_u.mobile = #{insOrdersParam.insurMobile}
-        </if>
-        <if test="insOrdersParam.ciStartDate != null">
-            AND iorci.start_date = #{insOrdersParam.ciStartDate}
-        </if>
-        <if test="insOrdersParam.biStartDate != null">
-            AND iorbi.start_date = #{insOrdersParam.biStartDate}
-        </if>
-        <if test="insOrdersParam.sumPremium != null">
-            AND iorco.sum_premium = #{insOrdersParam.sumPremium}
-        </if>
-        <if test="insOrdersParam.ciPremium != null">
-            AND iorco.jq_premium = #{insOrdersParam.ciPremium}
-        </if>
-        <if test="insOrdersParam.biPremium != null">
-            AND iorco.sy_premium = #{insOrdersParam.biPremium}
-        </if>
-        <if test="insOrdersParam.niPremium != null">
-            AND iorco.jy_premium = #{insOrdersParam.niPremium}
-        </if>
-        <if test="insOrdersParam.vvTax != null">
-            AND iorco.tax_premium = #{insOrdersParam.vvTax}
-        </if>
-        <if test="insOrdersParam.recorder != null and insOrdersParam.recorder != ''">
-            AND su.username = #{insOrdersParam.recorder}
-        </if>
-        <if test="insOrdersParam.salesmanInfo != null and insOrdersParam.salesmanInfo != ''">
-            AND suji.name = #{insOrdersParam.salesmanInfo}
-        </if>
-        <if test="insOrdersParam.salesmanType != null and insOrdersParam.salesmanType != ''">
-            AND suji.type_attr = #{insOrdersParam.salesmanType}
-        </if>
-        <if test="insOrdersParam.agreementName != null and insOrdersParam.agreementName != ''">
-            AND pa.agreement_name = #{insOrdersParam.agreementName}
-        </if>
-        <if test="insOrdersParam.deptId != null and insOrdersParam.deptId != ''">
-            AND sd.id = #{insOrdersParam.deptId}
-        </if>
-        <if test="insOrdersParam.deptName != null and insOrdersParam.deptName != ''">
-            AND sd.name = #{insOrdersParam.deptName}
-        </if>
-        <if test="insOrdersParam.paymentLink != null and insOrdersParam.paymentLink != ''">
-            AND io.pay_link = #{insOrdersParam.paymentLink}
-        </if>
-        <if test="insOrdersParam.adjustId != null">
-            AND ioa.id = #{insOrdersParam.adjustId}
-        </if>
-        <if test="insOrdersParam.adjustPremium != null">
-            AND ioa1.after_premium = #{insOrdersParam.adjustPremium}
-        </if>
-        <if test="insOrdersParam.startSigningTime != null and insOrdersParam.startSigningTime != ''and insOrdersParam.endSigningTime != null and insOrdersParam.endSigningTime != ''">
-            AND io.signing_time BETWEEN #{insOrdersParam.startSigningTime} and #{insOrdersParam.endSigningTime}
-        </if>
-        <if test="insOrdersParam.startPayTime != null and insOrdersParam.startPayTime != ''and insOrdersParam.endPayTime != null and insOrdersParam.endPayTime != ''">
-            AND io.pay_time BETWEEN #{insOrdersParam.startPayTime} and #{insOrdersParam.endPayTime}
-        </if>
+        <where>
+            io.is_delete = 0
+            <if test="insOrdersParam.jzgInfoId != null and insOrdersParam.jzgInfoId != ''">
+                and io.real_quote_user_id in (select username from  sys_user bbb where bbb.id in (
+                select ss.user_id from sys_user_jzg_info ss where ss.leader_id = #{insOrdersParam.jzgInfoId}
+                ) )
+            </if>
+            <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
+                AND io.id = #{insOrdersParam.orderNo}
+            </if>
+            <if test="insOrdersParam.parentId == 0 ">
+                AND io.parent_id = 0
+            </if>
+            <if test="insOrdersParam.parentId == 1 ">
+                AND io.parent_id != 0
+            </if>
+            <if test="insOrdersParam.licenseNo != null and insOrdersParam.licenseNo != ''">
+                AND ioci.license_no = #{insOrdersParam.licenseNo}
+            </if>
+            <if test="insOrdersParam.orderStatus!= null and insOrdersParam.orderStatus!= ''">
+                AND io.order_status = #{insOrdersParam.orderStatus}
+            </if>
+            <if test="insOrdersParam.adjustStatus!= null and insOrdersParam.adjustStatus!= ''">
+                AND ioa.status = #{insOrdersParam.adjustStatus}
+            </if>
+            <if test="insOrdersParam.salesman!= null">
+                AND io.real_quote_user_id = #{insOrdersParam.salesman}
+            </if>
+            <if test="insOrdersParam.companyId != null and insOrdersParam.companyId != ''">
+                AND io.company_id = #{insOrdersParam.companyId}
+            </if>
+            <if test="insOrdersParam.startDate != null and insOrdersParam.startDate != ''and insOrdersParam.endDate != null and insOrdersParam.endDate != ''">
+                AND io.create_time BETWEEN #{insOrdersParam.startDate} and #{insOrdersParam.endDate}
+            </if>
 
+            <if test="insOrdersParam.companyName != null and insOrdersParam.companyName != ''">
+                AND io.company_name = #{insOrdersParam.companyName}
+            </if>
+            <if test="insOrdersParam.productCode != null and insOrdersParam.productCode != ''">
+                AND io.product_id = #{insOrdersParam.productCode}
+            </if>
+            <if test="insOrdersParam.productName != null and insOrdersParam.productName != ''">
+                AND io.product_name = #{insOrdersParam.productName}
+            </if>
+            <if test="insOrdersParam.vinNo != null and insOrdersParam.vinNo != ''">
+                AND ioci.vin_no = #{insOrdersParam.vinNo}
+            </if>
+            <if test="insOrdersParam.ownerName != null and insOrdersParam.ownerName != ''">
+                AND owner_u.name = #{insOrdersParam.ownerName}
+            </if>
+            <if test="insOrdersParam.ownerMobile != null and insOrdersParam.ownerMobile != ''">
+                AND owner_u.mobile = #{insOrdersParam.ownerMobile}
+            </if>
+            <if test="insOrdersParam.policyName != null and insOrdersParam.policyName != ''">
+                AND policy_u.name = #{insOrdersParam.policyName}
+            </if>
+            <if test="insOrdersParam.policyMobile != null and insOrdersParam.policyMobile != ''">
+                AND policy_u.mobile = #{insOrdersParam.policyMobile}
+            </if>
+            <if test="insOrdersParam.insurName != null and insOrdersParam.insurName != ''">
+                AND insur_u.name = #{insOrdersParam.insurName}
+            </if>
+            <if test="insOrdersParam.insurMobile != null and insOrdersParam.insurMobile != ''">
+                AND insur_u.mobile = #{insOrdersParam.insurMobile}
+            </if>
+            <if test="insOrdersParam.ciStartDate != null">
+                AND iorci.start_date = #{insOrdersParam.ciStartDate}
+            </if>
+            <if test="insOrdersParam.biStartDate != null">
+                AND iorbi.start_date = #{insOrdersParam.biStartDate}
+            </if>
+            <if test="insOrdersParam.sumPremium != null">
+                AND iorco.sum_premium = #{insOrdersParam.sumPremium}
+            </if>
+            <if test="insOrdersParam.ciPremium != null">
+                AND iorco.jq_premium = #{insOrdersParam.ciPremium}
+            </if>
+            <if test="insOrdersParam.biPremium != null">
+                AND iorco.sy_premium = #{insOrdersParam.biPremium}
+            </if>
+            <if test="insOrdersParam.niPremium != null">
+                AND iorco.jy_premium = #{insOrdersParam.niPremium}
+            </if>
+            <if test="insOrdersParam.vvTax != null">
+                AND iorco.tax_premium = #{insOrdersParam.vvTax}
+            </if>
+            <if test="insOrdersParam.salesmanInfo != null and insOrdersParam.salesmanInfo != ''">
+                AND su.username = #{insOrdersParam.salesmanInfo}
+            </if>
+            <if test="insOrdersParam.salesmanType != null and insOrdersParam.salesmanType != ''">
+                AND suji.type_attr = #{insOrdersParam.salesmanType}
+            </if>
+            <if test="insOrdersParam.agreementName != null and insOrdersParam.agreementName != ''">
+                AND pa.agreement_name = #{insOrdersParam.agreementName}
+            </if>
+            <if test="insOrdersParam.deptId != null and insOrdersParam.deptId != ''">
+                AND sd.id = #{insOrdersParam.deptId}
+            </if>
+            <if test="insOrdersParam.deptName != null and insOrdersParam.deptName != ''">
+                AND sd.name = #{insOrdersParam.deptName}
+            </if>
+            <if test="insOrdersParam.paymentLink != null and insOrdersParam.paymentLink != ''">
+                AND io.pay_link = #{insOrdersParam.paymentLink}
+            </if>
+            <if test="insOrdersParam.adjustId != null">
+                AND ioa.id = #{insOrdersParam.adjustId}
+            </if>
+            <if test="insOrdersParam.adjustPremium != null">
+                AND ioa1.after_premium = #{insOrdersParam.adjustPremium}
+            </if>
+            <if test="insOrdersParam.startSigningTime != null and insOrdersParam.startSigningTime != ''and insOrdersParam.endSigningTime != null and insOrdersParam.endSigningTime != ''">
+                AND io.signing_time BETWEEN #{insOrdersParam.startSigningTime} and #{insOrdersParam.endSigningTime}
+            </if>
+            <if test="insOrdersParam.startPayTime != null and insOrdersParam.startPayTime != ''and insOrdersParam.endPayTime != null and insOrdersParam.endPayTime != ''">
+                AND io.pay_time BETWEEN #{insOrdersParam.startPayTime} and #{insOrdersParam.endPayTime}
+            </if>
+        </where>
         order by io.create_time desc
     </select>
 

+ 2 - 2
tenant/organization/src/main/java/com/jzg/organization/controller/SysOrganizationController.java

@@ -148,12 +148,12 @@ public class SysOrganizationController {
 
     /**
      * 新增团队、渠道、电销组用户
-     * @param
+     * @param setPerson
      * @return
      */
     @Operation(summary = "设置团队、渠道、电销组负责人")
     @PostMapping("setResponsiblePerson")
-    public HttpResult setResponsiblePerson(@Validated @RequestBody SysOrganizationSetPerson setPerson){
+    public HttpResult<String> setResponsiblePerson(@Validated @RequestBody SysOrganizationSetPerson setPerson){
         return sysOrganizationService.setResponsiblePerson(setPerson);
     }
 

+ 37 - 0
tenant/organization/src/main/java/com/jzg/organization/controller/SysUserJzgInfoController.java

@@ -0,0 +1,37 @@
+package com.jzg.organization.controller;
+
+import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.po.SysUserJzgInfo;
+
+import com.jzg.organization.service.SysUserJzgInfoService;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@RestController
+public class SysUserJzgInfoController {
+
+    private static final Logger log = LoggerFactory.getLogger(SysUserJzgInfoController.class);
+
+    @Autowired
+    private SysUserJzgInfoService sysUserJzgInfoService;
+
+    /**
+     * 根据用户userId序号查找指定租户下的用户信息
+     *
+     * @param userId 用户序号
+     * @param systemCode 租户代码
+     * @author lipf
+     * @date 2026/4/28 9:37
+     */
+    @GetMapping("/api/v1/organization/queryUserByUserId")
+    public HttpResult<SysUserJzgInfo> queryUserByUserId(String userId, String systemCode){
+        log.info("根据用户userId序号查找指定租户下的用户信息. userId=[{}], systemCode=[{}]", userId, systemCode);
+        SysUserJzgInfo jzgInfo = sysUserJzgInfoService.getUserByUserId(userId);
+        return  HttpResult.ok(jzgInfo);
+    }
+}

+ 7 - 1
tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationService.java

@@ -30,7 +30,13 @@ public interface SysOrganizationService extends IService<SysOrganization> {
 
     HttpResult addTeamUsers(SysOrganizationUserLinkAdd organizationUserLinkAdd);
 
-    HttpResult setResponsiblePerson(SysOrganizationSetPerson setPerson);
+    /**
+     * 设置团队负责人
+     *
+     * @author lipf
+     * @date 2026/4/28 9:09
+     */
+    HttpResult<String> setResponsiblePerson(SysOrganizationSetPerson setPerson);
 
     /**
      * 删除团队、电销、渠道关联的用户

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

@@ -120,8 +120,15 @@ public class SysOrganizationServiceImpl extends ServiceImpl<SysOrganizationMappe
         return sysOrganizationUserLinkService.save(organizationUserLink) ? HttpResult.ok("添加成功") : HttpResult.error("添加失败");
     }
 
+    /**
+     * 设置团队负责人
+     *
+     * @param setPerson 要设置的团队负责人
+     * @author lipf
+     * @date 2026/4/28 9:08
+     */
     @Override
-    public HttpResult setResponsiblePerson(SysOrganizationSetPerson setPerson) {
+    public HttpResult<String> setResponsiblePerson(SysOrganizationSetPerson setPerson) {
         SysOrganization sysOrganization = sysOrganizationMapper.selectById(setPerson.getId());
         if (ObjectUtil.isNotEmpty(sysOrganization)){
             sysOrganization.setManagerId(setPerson.getManagerId());