Przeglądaj źródła

Merge branch 'dev_jzb_lipf_v20260427'

解决报价的一些问题
lipf 5 miesięcy temu
rodzic
commit
4322ecc9a9
26 zmienionych plików z 319 dodań i 164 usunięć
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/dto/InsOrdersParamVO.java
  2. 5 4
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsFeeOrderRecord.java
  3. 4 0
      commons/src/main/java/com/jzg/commons/entity/po/SysAmountAuditing.java
  4. 10 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/aggregated/QuoteEchoVo.java
  5. 6 0
      commons/src/main/java/com/jzg/commons/entity/quote/vo/orders/InsOrdersVo.java
  6. 4 0
      commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java
  7. 5 5
      commons/src/main/java/com/jzg/commons/util/EasyExcelUtils.java
  8. 3 1
      commons/src/main/java/com/jzg/commons/util/MinioUtils.java
  9. 1 1
      gateway/src/main/java/com/jzg/filter/AuthFilter.java
  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. 3 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  17. 21 2
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java
  18. 121 115
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  19. 5 0
      tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/AuditRequest.java
  20. 2 2
      tenant/organization/src/main/java/com/jzg/organization/controller/SysOrganizationController.java
  21. 37 0
      tenant/organization/src/main/java/com/jzg/organization/controller/SysUserJzgInfoController.java
  22. 7 1
      tenant/organization/src/main/java/com/jzg/organization/service/SysOrganizationService.java
  23. 8 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysOrganizationServiceImpl.java
  24. 3 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  25. 1 1
      tenant/organization/src/main/resources/mapper/ReceivableMapper.xml
  26. 2 1
      tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

+ 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;
 

+ 5 - 4
commons/src/main/java/com/jzg/commons/entity/orders/po/InsFeeOrderRecord.java

@@ -18,11 +18,12 @@ import lombok.NoArgsConstructor;
 @Schema(description = "订单费用调整记录表")
 @NoArgsConstructor
 public class InsFeeOrderRecord extends BaseModel {
-    @TableId(value = "id", type = IdType.AUTO)
-    @Schema(description = "主键")
-    private Long id;
+//    @TableId(value = "id", type = IdType.AUTO)
+//    @Schema(description = "主键")
+//    private Long id;
 
-    @Schema(description = "订单号")
+    @TableId(value = "order_no", type = IdType.INPUT)
+    @Schema(description = "订单号(主键)")
     private String orderNo;
 
     @Schema(description = "交强入口比例")

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

@@ -49,6 +49,10 @@ public class SysAmountAuditing extends BaseModel {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     private LocalDateTime auditingTime;
 
+    @Schema(description = "支付时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime paymentTime;
+
     @Schema(description = "审核人id")
     private String auditingUserId;
 

+ 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;
 

+ 4 - 0
commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java

@@ -39,6 +39,10 @@ public class AmountAuditVo  extends BaseModel {
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime createTime;
 
+    @Schema(description = "支付时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private LocalDateTime paymentTime;
+
     @Schema(description = "提现金额")
     private BigDecimal amount;
 

+ 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);
         }
     }
 

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

@@ -445,6 +445,7 @@ 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());
@@ -457,7 +458,7 @@ public class MinioUtils {
 
         // 使用字节流上传
         try (ByteArrayInputStream inputStream = new ByteArrayInputStream(data)) {
-            minioClient.putObject(
+            ObjectWriteResponse resp = minioClient.putObject(
                     PutObjectArgs.builder()
                             .bucket(bucketName)
                             .object(objectName)
@@ -465,6 +466,7 @@ public class MinioUtils {
                             .contentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
                             .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;

+ 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);
                 });
     }
 }

+ 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 "";
     }

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

@@ -621,6 +621,9 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
         // 获取订单关联协议的相关比例
         InsFeeOrders feeOrders = feeOrdersService.getById(orderNo);
+        if (null == feeOrders){
+            return CollUtil.newArrayList();
+        }
         List<PtlAgreementCostTypeVo> costTypeVos = orgClient.queryByCostId(feeOrders.getCostId());
         List<AuditCostInfoVo> auditCostInfoVos = new ArrayList<>();
         if(CollUtil.isNotEmpty(records)){

+ 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>
 

+ 5 - 0
tenant/insurance/quotation-yongcheng/src/main/java/com/jzg/quotation/yongcheng/api/entity/request/AuditRequest.java

@@ -158,6 +158,9 @@ public class AuditRequest {
         @JacksonXmlProperty(localName = "ywFlag")
         private String ywFlag;
 
+        @JacksonXmlProperty(localName = "CBodyColor")
+        private String cBodyColor;
+
 
         @Data
         @NoArgsConstructor
@@ -384,6 +387,8 @@ public class AuditRequest {
         condition.setCProdNoSY(condition.getSyFlag().equals("1") ? "0364" : "");
         condition.setCProdNoJQ(condition.getJqFlag().equals("1") ? "0326" : "");
         condition.setQuerySequenceNoSy(underwritingVo.getPolicy().getSyApplyNo());
+        // 设置默认车身颜色为02(黑色)
+        condition.setCBodyColor("02");
         condition.setQuerySequenceNoJq(underwritingVo.getPolicy().getJqApplyNo());
         condition.setCommissionPercentage("0");
         condition.setPaymode("002018");

+ 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());

+ 3 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java

@@ -965,6 +965,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
             }else{
                 originSysUser.setIdentityTimeEnd(LocalDate.parse(sysUserVo.getIdentityTimeEnd(), DateTimeFormatter.ISO_DATE));
             }
+            if (StrUtil.isNotBlank(sysUserVo.getMobile())) {
+                originSysUser.setMobile(sysUserVo.getMobile());
+            }
             sysUserService.updateById(originSysUser);
         }
         sysUserJzgInfoService.updateById(sysUserJzgInfo);

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

@@ -208,7 +208,7 @@
             io.product_name,
             CASE io.entry_status
             WHEN 1 THEN '车险出单'
-            WHEN 2 THEN '待客录单'
+            WHEN 2 THEN '代客录单'
             WHEN 3 THEN '补录订单'
             ELSE '未知状态'
             END AS order_type,

+ 2 - 1
tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

@@ -46,7 +46,8 @@
         saa.id,suji.name as name, su.mobile as mobile,suji.type_attr as attrType,
         sujim.name as managerName,sum.mobile as managerMobile,saa.create_time as createTime,
         saa.amount, saa.balance_amount as balanceAmount,saa.account_name AS accountName,
-        saa.bank_card_num as bankCardNum, saa.bank_name as bankName, saa.bank_num as bankNum, suji.id as userJzgInfoId
+        saa.bank_card_num as bankCardNum, saa.bank_name as bankName, saa.bank_num as bankNum, suji.id as userJzgInfoId,
+        saa.payment_time as paymentTime
         FROM sys_amount_auditing saa
         LEFT JOIN sys_user_jzg_info suji on saa.user_id = suji.user_id
         LEFT JOIN sys_user su on su.id = saa.user_id