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

Merge remote-tracking branch 'origin/master'

lixiaolong 3 месяцев назад
Родитель
Сommit
c2e1a43075
28 измененных файлов с 180 добавлено и 51 удалено
  1. 3 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjust.java
  2. 4 0
      commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersTrack.java
  3. 3 2
      commons/src/main/java/com/jzg/commons/entity/po/SysAmountAuditing.java
  4. 3 0
      commons/src/main/java/com/jzg/commons/entity/po/SysRelationPerson.java
  5. 0 4
      commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRights.java
  6. 0 3
      commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRightsPackage.java
  7. 2 2
      commons/src/main/java/com/jzg/commons/entity/rights/vo/InsOrderRightsPackageVo.java
  8. 2 2
      commons/src/main/java/com/jzg/commons/entity/rights/vo/InsOrderRightsVo.java
  9. 8 0
      commons/src/main/java/com/jzg/commons/entity/vo/AmountAuditVo.java
  10. 3 0
      commons/src/main/java/com/jzg/commons/entity/vo/SysUserWalletVo.java
  11. 1 1
      commons/src/main/java/com/jzg/commons/util/DateTimeUtils.java
  12. 4 2
      commons/src/main/java/com/jzg/commons/util/PDFUtil.java
  13. 1 0
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLog.java
  14. 57 4
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java
  15. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/constants/QuoteNumberConstant.java
  16. 16 6
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeAuditController.java
  17. 3 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeAuditService.java
  18. 32 13
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsFeeAuditServiceImpl.java
  19. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsPackageServiceImpl.java
  20. 1 1
      tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsServiceImpl.java
  21. 2 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderRightsMapper.xml
  22. 2 2
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrderRightsPackageMapper.xml
  23. 3 0
      tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml
  24. 6 2
      tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java
  25. 5 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserAccountServiceImpl.java
  26. 5 1
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserJzgAppServiceImpl.java
  27. 10 0
      tenant/organization/src/main/java/com/jzg/organization/service/impl/SysUserServiceImpl.java
  28. 2 0
      tenant/organization/src/main/resources/mapper/SysAmountAuditingMapper.xml

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrderAdjust.java

@@ -1,5 +1,6 @@
 package com.jzg.commons.entity.orders.po;
 
+import java.io.Serial;
 import java.io.Serializable;
 import java.math.BigDecimal;
 import java.util.Date;
@@ -21,6 +22,8 @@ import lombok.Data;
 @Schema(description = "订单批改表")
 public class InsOrderAdjust extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = -1135351989246912814L;
     @Schema(description = "主键ID")
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;

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

@@ -8,6 +8,8 @@ import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
+import java.io.Serial;
+
 /**
  * 订单轨迹表
  * @TableName ins_orders_track
@@ -17,6 +19,8 @@ import lombok.NoArgsConstructor;
 @NoArgsConstructor
 public class InsOrdersTrack extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = -6698449789374697351L;
     @Schema(description = "轨迹ID")
     @TableId(value = "id", type = IdType.ASSIGN_ID)
     private String id;

+ 3 - 2
commons/src/main/java/com/jzg/commons/entity/po/SysAmountAuditing.java

@@ -9,6 +9,7 @@ import com.fasterxml.jackson.annotation.JsonFormat;
 import com.jzg.commons.core.base.BaseModel;
 import com.jzg.commons.entity.dto.ApplyWithdrawParam;
 import com.jzg.commons.entity.dto.SysUserJzgInfoBankCardDto;
+import com.jzg.commons.util.BigDecimalUtil;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.AllArgsConstructor;
 import lombok.Data;
@@ -114,8 +115,8 @@ public class SysAmountAuditing extends BaseModel {
     ){
         // 提现金额
         this.setAmount(applyWithdrawParam.getWithdrawAmount());
-        // 当前账户金额 modify by lipf 2026年6月3日16:55:06 账户中剩余的金额。 该金额 是没有扣除当前提现金额的金额
-        this.setBalanceAmount(sysUserAccount.getSumAmountUnpaid());
+        // 当前账户金额 modify by lipf 2026年6月3日16:55:06 账户中剩余的金额。 该金额 是扣除当前提现金额的金额
+        this.setBalanceAmount(BigDecimalUtil.subtract(sysUserAccount.getSumAmountUnpaid(),applyWithdrawParam.getWithdrawAmount()));
         // 提现用户
         this.setUserId(userId);
         // 银行卡卡号

+ 3 - 0
commons/src/main/java/com/jzg/commons/entity/po/SysRelationPerson.java

@@ -39,4 +39,7 @@ public class SysRelationPerson extends BaseModel {
     @Schema(description = "推荐类型(0:合伙人  1:机构负责人 )")
     private Integer type;
 
+    @Schema(description = "租户代码")
+    private String systemCode;
+
 }

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

@@ -78,10 +78,6 @@ public class InsOrderRights {
     /**服务说明*/
     @Schema(description = "服务说明")
     private String description;
-
-    /**是否删除(0,:否 1:是)*/
-    @Schema(description = "是否删除(0,:否 1:是)")
-    private Integer delFlag;
     /**创建者*/
     @Schema(description = "创建者")
     private String createBy;

+ 0 - 3
commons/src/main/java/com/jzg/commons/entity/rights/po/InsOrderRightsPackage.java

@@ -60,9 +60,6 @@ public class InsOrderRightsPackage {
     /**行业id*/
     @Schema(description = "行业id")
     private String industryId;
-    /**是否删除(0,:否 1:是)*/
-    @Schema(description = "是否删除(0,:否 1:是)")
-    private Integer delFlag;
     /**创建者*/
     @Schema(description = "创建者")
     private String createBy;

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/rights/vo/InsOrderRightsPackageVo.java

@@ -61,7 +61,7 @@ public class InsOrderRightsPackageVo {
     private String industryId;
     /**是否删除(0,:否 1:是)*/
     @Schema(description = "是否删除(0,:否 1:是)")
-    private Integer delFlag;
+    private Integer isDelete;
     /**创建者*/
     @Schema(description = "创建者")
     private String createBy;
@@ -144,7 +144,7 @@ public class InsOrderRightsPackageVo {
 
             this.packagePrice = rightsPackage.getPackagePrice();
             this.industryId = rightsPackage.getIndustryId();
-            this.delFlag = rightsPackage.getDelFlag();
+            this.isDelete = rightsPackage.getIsDelete();
             this.createBy = rightsPackage.getCreateBy();
             this.createTime = rightsPackage.getCreateTime();
             this.updateBy = rightsPackage.getUpdateBy();

+ 2 - 2
commons/src/main/java/com/jzg/commons/entity/rights/vo/InsOrderRightsVo.java

@@ -78,7 +78,7 @@ public class InsOrderRightsVo {
 
     /**是否删除(0,:否 1:是)*/
     @Schema(description = "是否删除(0,:否 1:是)")
-    private Integer delFlag;
+    private Integer isDelete;
     /**创建者*/
     @Schema(description = "创建者")
     private String createBy;
@@ -139,7 +139,6 @@ public class InsOrderRightsVo {
         this.contractRate = rights.getContractRate();
         this.settlePrice = rights.getSettlePrice();
         this.description = rights.getDescription();
-        this.delFlag = rights.getDelFlag();
         this.createBy = rights.getCreateBy();
         this.createTime = rights.getCreateTime();
         this.updateBy = rights.getUpdateBy();
@@ -150,6 +149,7 @@ public class InsOrderRightsVo {
         this.receiverType = rights.getReceiverType();
         this.receiverName = rights.getReceiverName();
         this.receiverMobile = rights.getReceiverMobile();
+        this.isDelete = rights.getIsDelete();
         //该订单下该权益券总价
         BigDecimal price = rights.getAmount();
         Integer count = rights.getRightsCount();

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

@@ -27,6 +27,14 @@ public class AmountAuditVo  extends BaseModel {
     @Schema(description = "sys_user_jzg_info的主键")
     private String userJzgInfoId;
 
+    @ExcelProperty("用户信息userId")
+    @Schema(description = "sys_user表的主键")
+    private String userId;
+
+    @ExcelProperty("租户代码")
+    @Schema(description = "租户代码")
+    private String systemCode;
+
     @ExcelProperty("业务员姓名")
     @Schema(description = "业务员姓名")
     private String name;

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

@@ -24,6 +24,9 @@ public class SysUserWalletVo {
     @Schema(description = "钱包余额")
     private BigDecimal walletBalance;
 
+    @Schema(description = "钱包余额(扣除冻结)")
+    private BigDecimal walletBalanceRemoveWithdraw;
+
     @Schema(description = "提现中金额")
     private BigDecimal withdrawingBalance;
 

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

@@ -78,7 +78,7 @@ public class DateTimeUtils {
         int m = Integer.parseInt(minute);
 
         LocalDateTime dateTime;
-        if (h == 24 && m == 0) {
+        if (h == 24) {
             // 24:00 转换为当天 23:59:59
             dateTime = date.atTime(23, 59, 59);
         } else {

+ 4 - 2
commons/src/main/java/com/jzg/commons/util/PDFUtil.java

@@ -177,7 +177,8 @@ public class PDFUtil {
         } catch (IOException e) {
             throw new RuntimeException(e);
         }
-       return text;
+        log.info("解析pdf。pdfFilePath=[{}].解析得到的内容是:[{}]",pdfFilePath,text);
+        return text;
     }
 
     public static String getPdfContentStr(String pdfText, String beginStr,String endStr,String dateType) {
@@ -437,6 +438,7 @@ public class PDFUtil {
         return null;
     }
     private static LocalDateTime getStringTranferDate(String payDate) {
+        String payDateBefore = payDate;
         if(StringUtils.isNotBlank(payDate)){
             payDate=payDate.replaceAll(" ", "");
             payDate=payDate.replaceAll("\\n+", "");
@@ -444,7 +446,7 @@ public class PDFUtil {
             payDate=payDate.replaceAll("\\r+", "");
             payDate = payDate.replaceAll("\\s+", "");
             payDate = payDate.replaceAll("[\u4e00-\u9fa5]", "");
-            System.out.println(payDate.length());
+            log.info("getStringTranferDate. 处理前。payDateBefore=[{}] payDate=[{}]. len=[{}]",payDateBefore, payDate, payDate.length());
             if(payDate.length() == 18){
                 payDate = payDate.substring(0,10)+" "+ payDate.substring(10,18);
             }else if(payDate.length() == 15){

+ 1 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLog.java

@@ -16,4 +16,5 @@ public @interface OrderOperationLog {
     String description() default "";   // 说明
     String feedbackSpEl() default ""; // 使用 SpEL 表达式提取返回字段(可选)
     String orderSpEl() default "";  // NEW: 用 SpEL 指定 入参 提取路径
+
 }

+ 57 - 4
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/OrderOperationLogAspect.java

@@ -1,8 +1,9 @@
 package com.jzg.quotation.summary.aop;
 
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson2.JSON;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.jzg.commons.constants.dict.InsOrderStatusEnum;
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.VerifyAdjustParam;
 import com.jzg.commons.entity.orders.po.InsOrderAdjust;
 import com.jzg.commons.entity.orders.po.InsOrders;
@@ -11,7 +12,6 @@ import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.quote.vo.QuoteVo;
 import com.jzg.commons.entity.quote.vo.aggregated.*;
 import com.jzg.commons.entity.vo.AdjustAllRefundVo;
-import com.jzg.commons.exception.SystemException;
 import com.jzg.quotation.commons.constant.SpElMapping;
 import com.jzg.quotation.commons.utils.SpElFieldExtractor;
 import com.jzg.quotation.summary.constants.QuoteNumberConstant;
@@ -24,6 +24,8 @@ import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
 import org.aspectj.lang.reflect.MethodSignature;
 import org.hibernate.validator.internal.util.stereotypes.Lazy;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.expression.EvaluationContext;
 import org.springframework.expression.ExpressionParser;
@@ -31,7 +33,6 @@ import org.springframework.expression.spel.standard.SpelExpressionParser;
 import org.springframework.expression.spel.support.StandardEvaluationContext;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -40,6 +41,8 @@ import java.util.Objects;
 @Component
 public class OrderOperationLogAspect {
 
+    private static final Logger logger = LoggerFactory.getLogger(OrderOperationLogAspect.class);
+
     @Autowired
     @Lazy
     private InsOrdersService orderService;
@@ -141,10 +144,59 @@ public class OrderOperationLogAspect {
                 result = joinPoint.proceed();
                 this.adjustSubmitLog(orderNo,result,log);
                 break;
+            // 订单审核
+            case 14:
+                // 通过 SpEL 提取 入参
+                //orderNo = parser.parseExpression(log.orderSpEl()).getValue(context, String.class);
+                result = joinPoint.proceed();
+                HttpResult<String> res = (HttpResult)result;
+                this.dealApproveOrders(res.getData(),res,log);
+                break;
         }
         return result;
     }
 
+    /**
+     * 订单审核(通过/驳回)
+     *
+     * @author lipf
+     * @date 2026/6/13 14:27
+     */
+    void dealApproveOrders(String orderNo, HttpResult<String> result, OrderOperationLog log){
+        logger.info("订单审核通过或驳回时记录。orderNo=[{}],result=[{}]", orderNo, JSONUtil.toJsonStr(result));
+        // 定义要提取的字段
+        List<SpElMapping> mappings = List.of(
+                new SpElMapping("msg", "#ret.msg"),
+                new SpElMapping("code", "#ret.code"),
+                new SpElMapping("data", "#ret.data")
+        );
+        // 执行提取
+        Map<String, Object> extracted = fieldExtractor.extractFields(result, mappings);
+        logger.info("extracted=[{}]", JSONUtil.toJsonStr(extracted));
+        InsOrdersTrack track = new InsOrdersTrack();
+        InsOrders insOrders = orderService.getById(orderNo);
+        if(insOrders != null){
+            InsOrdersCarInfo carInfo = carInfoService.getByOrderId(insOrders.getId());
+            track.setLicenseNo(carInfo.getLicenseNo());
+            track.setCompanyId(insOrders.getCompanyId());
+            track.setResult(result.getMsg());
+        }else{
+            track.setResult("要审核的订单不存在");
+        }
+        track.setOrderNo(orderNo);
+        track.setModule(log.module());
+        track.setSubModule(log.subModule());
+        track.setOptType(log.optType().getCode());
+        track.setOptContent(log.description());
+        if(extracted.get("code").equals(200)){
+            track.setStatus(1);
+        }else{
+            track.setStatus(0);
+        }
+        traceService.save(track);
+    }
+
+
     /**
      * 审核批改订单
      * @param param
@@ -152,6 +204,7 @@ public class OrderOperationLogAspect {
      * @param log
      */
     private void adjustVerifyLog(VerifyAdjustParam param, Object result, OrderOperationLog log) {
+        logger.info("adjustVerifyLog. param=[{}], result=[{}],log=[{}]", JSONUtil.toJsonStr(param), JSONUtil.toJsonStr(result), JSONUtil.toJsonStr(log));
 
         // 定义要提取的字段
         List<SpElMapping> mappings = List.of(
@@ -215,7 +268,7 @@ public class OrderOperationLogAspect {
         track.setOptContent(log.description());
         track.setCompanyId(insOrders.getCompanyId());
         track.setLicenseNo(carInfo.getLicenseNo());
-
+        //track.setResult(JSONUtil.toJsonStr(result));
         if(extracted.get("code").equals(200)){
             track.setStatus(QuoteNumberConstant.QuoteResult.SUCCESS.getCode());
             traceService.save(track);

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/constants/QuoteNumberConstant.java

@@ -92,7 +92,7 @@ public class QuoteNumberConstant {
         OPT_TYPE_11(11,"提交批改申请"),
         OPT_TYPE_12(12,"批改审核"),
         OPT_TYPE_13(13,"撤销批改"),
-
+        OPT_TYPE_14(14,"订单审核"),
         ;
         private Integer code;
         private String desc;

+ 16 - 6
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsFeeAuditController.java

@@ -12,6 +12,8 @@ import com.jzg.commons.entity.orders.vo.AuditCostInfoVo;
 import com.jzg.commons.entity.orders.vo.FeeAuditVo;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
+import com.jzg.quotation.summary.aop.OrderOperationLog;
+import com.jzg.quotation.summary.constants.QuoteNumberConstant;
 import com.jzg.quotation.summary.service.InsFeeAuditService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -117,8 +119,7 @@ public class InsFeeAuditController {
     @Operation(summary = "更新签单时间")
     public HttpResult<String> updateSigningTime(@RequestParam("orderNo") String orderNo){
         String userName = baseController.getUserName();
-        insFeeAuditService.updateSigningTime(orderNo, userName);
-        return HttpResult.ok();
+        return insFeeAuditService.updateSigningTime(orderNo, userName);
     }
 
     /**
@@ -126,6 +127,14 @@ public class InsFeeAuditController {
      *
      * @return HttpResult<String>
      */
+    @OrderOperationLog(
+            module = "订单审核",
+            subModule = "我的审核",
+            optType = QuoteNumberConstant.QuoteOptType.OPT_TYPE_14,
+            description = "订单审核",
+            orderSpEl = "#quoteVo",
+            feedbackSpEl = "#ret.code + ' - ' + #ret.msg+ ' - ' + #ret.data"
+    )
     @PostMapping("/verifyOrder")
     @Operation(summary = "审核订单")
     public HttpResult<String> verifyOrder(@RequestBody VerifyOrderParam param){
@@ -133,14 +142,15 @@ public class InsFeeAuditController {
             insFeeAuditService.verifyOrder(param);
         }catch (Exception e){
             log.info("审核订单发生异常:param=[{}], e", JSONUtil.toJsonStr(param), e);
-            return HttpResult.ok(e.getMessage());
+            return HttpResult.error(e.getMessage(),param.getOrderNo());
         }
+        // add by lipf ,2026年6月13日14:50:24 这里将orderNo 作为result的data传回去。 在记录订单轨迹的时候使用
         if("1".equals(Objects.toString(param.getAuditStatus(),"") )){
-            return HttpResult.ok("订单审核成功");
+            return HttpResult.ok("订单审核成功",param.getOrderNo());
         }else if("2".equals(Objects.toString(param.getAuditStatus(),""))){
-            return HttpResult.ok("订单审核驳回成功");
+            return HttpResult.ok("订单审核驳回成功",param.getOrderNo());
         }else{
-            return HttpResult.ok("订单审核状态不支持。"+param.getAuditStatus());
+            return HttpResult.ok("订单审核状态不支持。"+param.getAuditStatus(),param.getOrderNo());
         }
     }
 

+ 3 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsFeeAuditService.java

@@ -2,6 +2,7 @@ package com.jzg.quotation.summary.service;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.CostCalculateRespVO;
 import com.jzg.commons.entity.dto.FeeAuditParam;
 import com.jzg.commons.entity.dto.VerifyOrderParam;
@@ -70,8 +71,9 @@ public interface InsFeeAuditService extends IService<InsFeeAudit> {
      *
      * @param orderNo  订单号(jzg系统内部的车险订单号)
      * @param userName 操作用户
+     * @return HttpResult<String>
      */
-    void updateSigningTime(String orderNo, String userName);
+    HttpResult<String> updateSigningTime(String orderNo, String userName);
 
     /**
      * 审核订单

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

@@ -17,10 +17,7 @@ import com.jzg.commons.entity.dto.VerifyOrderParam;
 import com.jzg.commons.entity.orders.po.*;
 import com.jzg.commons.entity.orders.vo.AuditCostInfoVo;
 import com.jzg.commons.entity.orders.vo.FeeAuditVo;
-import com.jzg.commons.entity.po.InsFeeOrders;
-import com.jzg.commons.entity.po.SysUser;
-import com.jzg.commons.entity.po.SysUserAccount;
-import com.jzg.commons.entity.po.SysUserJzgInfo;
+import com.jzg.commons.entity.po.*;
 import com.jzg.commons.entity.quote.vo.aggregated.QuoteEchoVo;
 import com.jzg.commons.entity.rights.po.InsOrderRights;
 import com.jzg.commons.entity.rights.po.InsOrderRightsPackage;
@@ -333,14 +330,14 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
      *
      * @param orderNo  订单号(jzg系统内部的车险订单号)
      * @param userName 操作用户
+     * @return HttpResult<String>
      */
     @Override
-    public void updateSigningTime(String orderNo, String userName) {
+    public HttpResult<String> updateSigningTime(String orderNo, String userName) {
         log.info("用户[{}]更新订单[{}]的签单时间",userName,orderNo);
-        InsOrders orders = insOrdersService.getById(orderNo);
+        InsOrders order = insOrdersService.getById(orderNo);
         // 查询电子保单路径
         InsOrdersPdfUrl pdfUrl = ordersPdfUrlService.getById(orderNo);
-        log.info("订单[{}]没有生成电子表单",orderNo);
         AssertionUtils.isFail(Objects.isNull(pdfUrl), "未生成电子保单!");
         String url = null;
         int type = 0;
@@ -355,11 +352,23 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
 
         // 转为本地路径
         String localUrl = PDFUtil.trafferHttpToLocalPath(url);
+        log.info("url[{}]转换为本地路径为[{}]",url,localUrl);
+
+        String companyId = order.getCompanyId();
+        HttpResult<EsmInsCompany> companyHttpResult = esmInsCompanyClient.findById(companyId);
+        EsmInsCompany insCompany = companyHttpResult.getData();
+        if(insCompany == null){
+            return HttpResult.error("订单关联的保险公司不存在");
+        }
         //通过保险公司配置读取截取的前缀和后缀
         LambdaQueryWrapper<InsOrderReadPdf> qws = new LambdaQueryWrapper<>();
-        qws.eq(InsOrderReadPdf::getCompanyId, orders.getCompanyId());
+        qws.eq(InsOrderReadPdf::getCompanyId, insCompany.getCompanyCode());
         qws.eq(InsOrderReadPdf::getType, type);
         List<InsOrderReadPdf> list = ordersReadPdfService.list(qws);
+        if(CollUtil.isEmpty(list)){
+            log.error("保险公司发票读取规则未配置. companyId=[{}]",order.getCompanyId());
+            return HttpResult.error("保险公司发票读取规则未配置");
+        }
 
         HashMap<String, LocalDateTime> map = new HashMap<>();
         String pdfText = PDFUtil.getPdfText(localUrl);
@@ -370,6 +379,7 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
                     map.put(insOrderReadPdf.getOrderMsg(), pdfContentDate);
                 }
             }
+            log.info("ins_order_read_pdf配置转换得到的map是[{}]", JSONUtil.toJsonStr(map));
         }
 
         //刪除临时文件
@@ -378,13 +388,22 @@ public class InsFeeAuditServiceImpl extends ServiceImpl<InsFeeAuditMapper, InsFe
             file.delete();
         }
         if (map.get("payDate") != null) {
-            orders.setPayTime(map.get("payDate"));
+            order.setPayTime(map.get("payDate"));
         }
         if (map.get("signingTime") != null) {
-            orders.setSigningTime(map.get("signingTime"));
-        }
-        //更新时间表
-        insOrdersService.updateById(orders);
+            order.setSigningTime(map.get("signingTime"));
+        }
+        //更新时间表 modify by lipf, 只更新指定的字段 2026年6月15日16:41:32
+        // insOrdersService.updateById(order);
+        LambdaUpdateWrapper<InsOrders> updateWrapper = new LambdaUpdateWrapper<>();
+        updateWrapper.eq(InsOrders::getId,order.getId());
+        updateWrapper.set(InsOrders::getPayTime,order.getPayTime());
+        updateWrapper.set(InsOrders::getSigningTime,order.getSigningTime());
+        updateWrapper.set(InsOrders::getUpdateTime, LocalDateTime.now());
+        updateWrapper.set(InsOrders::getUpdateBy, baseController.getUserName());
+
+        insOrdersService.update(null, updateWrapper);
+        return HttpResult.ok("更新成功");
     }
 
     /**

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsPackageServiceImpl.java

@@ -45,7 +45,7 @@ public class InsOrderRightsPackageServiceImpl extends ServiceImpl<InsOrderRights
         // 定义查询条件
         LambdaQueryWrapper<InsOrderRightsPackage> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(InsOrderRightsPackage::getOrderId, orderNo)
-                .eq(InsOrderRightsPackage::getDelFlag, 0);
+                .eq(InsOrderRightsPackage::getIsDelete, 0);
 
         // 执行删除操作,返回受影响的行数
         return insOrderRightsPackageMapper.delete(lambdaQueryWrapper);

+ 1 - 1
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrderRightsServiceImpl.java

@@ -43,7 +43,7 @@ public class InsOrderRightsServiceImpl extends ServiceImpl<InsOrderRightsMapper,
         // 定义查询条件
         LambdaQueryWrapper<InsOrderRights> lambdaQueryWrapper = new LambdaQueryWrapper<>();
         lambdaQueryWrapper.eq(InsOrderRights::getOrderId, orderNo)
-                .eq(InsOrderRights::getDelFlag, 0);
+                .eq(InsOrderRights::getIsDelete, 0);
         // 执行删除操作,返回受影响的行数
         return insOrderRightsMapper.delete(lambdaQueryWrapper);
     }

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

@@ -38,14 +38,14 @@
     <sql id="Base_Column_List">
             id,order_id,rights_id,
             rights_name,classify,rebate,amount,rights_picture,use_condition,day_num,start_time,end_time,
-               market_price,contract_rate,settle_price,description,del_flag,create_by,
+               market_price,contract_rate,settle_price,description,is_delete,create_by,
                 create_time,update_by,update_time,rights_status,rights_count,rights_type,receiver_type,receiver_name,receiver_mobile
     </sql>
     <select id="queryByOrderNo" resultType="com.jzg.commons.entity.rights.po.InsOrderRights">
         SELECT <include refid="Base_Column_List"/>
         FROM ins_order_rights
         <where>
-            and del_flag = 0
+            and is_delete = 0
             <if test="orderNo != null and orderNo != ''">
                 and order_id = #{orderNo}
             </if>

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

@@ -31,14 +31,14 @@
     <sql id="Base_Column_List">
             id,order_id,rights_id,equity_package_name,cost_price_max,cost_price_min,
             market_price,agreement_price,three_settlement_price,
-                package_price,industry_id,del_flag,create_by,create_time,update_by,
+                package_price,industry_id,is_delete,create_by,create_time,update_by,
                 update_time,status,rights_type,rights_count,receiver_type,receiver_name,receiver_mobile
     </sql>
     <select id="queryByOrderNo" resultType="com.jzg.commons.entity.rights.po.InsOrderRightsPackage">
         SELECT <include refid="Base_Column_List"/>
         FROM ins_order_rights_package
         <where>
-            and del_flag = 0
+            and is_delete = 0
             <if test="orderNo != null and orderNo != ''">
                 and order_id = #{orderNo}
             </if>

+ 3 - 0
tenant/insurance/quotation-summary/src/main/resources/mapper/InsOrdersMapper.xml

@@ -578,6 +578,9 @@
         ) ioa1 ON o.id = ioa1.order_no
         <where>
             and o.is_delete = 0 and o.parent_id != 0
+            <if test="insOrdersParam.systemCode != null and insOrdersParam.systemCode != ''">
+                AND o.system_code = #{insOrdersParam.systemCode}
+            </if>
             <if test="insOrdersParam.orderNo != null and insOrdersParam.orderNo != ''">
                 AND o.quote_no = #{insOrdersParam.orderNo}
             </if>

+ 6 - 2
tenant/insurance/quotation-taikang/src/main/java/com/jzg/quotation/taikang/crawler/build/TkCrawlerQuoteResultsBuild.java

@@ -23,6 +23,7 @@ import org.springframework.stereotype.Component;
 
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -77,7 +78,7 @@ public class TkCrawlerQuoteResultsBuild {
         // 交强险
         RiskInfoVo riskInfoVo1 = new RiskInfoVo();
         LocalDateTime jyStart = DateTimeUtil.parseLocalDateTime(date.getInitStartDateBZ(), DateTimeUtil.DATETIME_PATTERN_EXT1);
-        riskInfoVo1.setStartDate(DateTimeUtil.getStartTimeOfDayStr(jyStart, DateTimeUtil.DATETIME_PATTERN));
+        riskInfoVo1.setStartDate(jyStart.format(DateTimeFormatter.ofPattern(DateTimeUtil.DATETIME_PATTERN)));
         riskInfoVo1.setEndDate(DateTimeUtils.convertToDateTime(date.getJqEndDate(), date.getJqEndHour(), date.getJqEndMinute()));
         quoteResultsVo.setCiRiskInfoVo(riskInfoVo1);
 
@@ -85,7 +86,7 @@ public class TkCrawlerQuoteResultsBuild {
         if (commonQuoteVo.getBiRiskInfoVo() != null) {
             RiskInfoVo riskInfoVo2 = new RiskInfoVo();
             LocalDateTime syStart = DateTimeUtil.parseLocalDateTime(date.getInitStartDateCI(), DateTimeUtil.DATETIME_PATTERN_EXT1);
-            riskInfoVo2.setStartDate(DateTimeUtil.getStartTimeOfDayStr(syStart, DateTimeUtil.DATETIME_PATTERN));
+            riskInfoVo2.setStartDate(syStart.format(DateTimeFormatter.ofPattern(DateTimeUtil.DATETIME_PATTERN)));
             riskInfoVo2.setEndDate(DateTimeUtils.convertToDateTime(date.getSyEndDate(), date.getSyEndHour(), date.getSyEndMinute()));
             quoteResultsVo.setBiRiskInfoVo(riskInfoVo2);
         }
@@ -135,6 +136,9 @@ public class TkCrawlerQuoteResultsBuild {
         BigDecimal vv = preciseInitResult.getCarTax().getSumPayment() == null ? BigDecimal.ZERO : preciseInitResult.getCarTax().getSumPayment();
         BigDecimal total = ci.add(bi).add(vv);
         quoteResultsVo.getCosts().setSumPremium(total.toPlainString());
+        // 折扣
+        quoteResultsVo.getScoreVo().setJqAdjustRate(preciseInitResult.getCiDisCount() != null ? preciseInitResult.getCiDisCount().toString() : null);
+        quoteResultsVo.getScoreVo().setSyAdjustRate(preciseInitResult.getBzDisCount() != null ? preciseInitResult.getBzDisCount().toString() : null);
         // 设置订单状态
         quoteResultsVo.setQuoteStatusEnum(InsOrderStatusEnum.WAIT_AUDIT);
         // 缓存报价书据数据

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

@@ -13,6 +13,7 @@ import com.jzg.commons.entity.vo.IncomeAndExpenseVo;
 import com.jzg.commons.entity.vo.SysUserAccountVo;
 import com.jzg.commons.entity.vo.SysUserWalletVo;
 import com.jzg.commons.entity.vo.UserAccountStatisVo;
+import com.jzg.commons.util.BigDecimalUtil;
 import com.jzg.organization.client.QuoteClient;
 import com.jzg.organization.mapper.SysUserAccountMapper;
 import com.jzg.organization.service.*;
@@ -128,12 +129,15 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
         sysUserWalletVo.setWalletBalance(sysUserAccount.getSumAmountUnpaid());
         List<SysAmountAuditing> sysAmountAuditingList = sysAmountAuditingService
                 .list(new LambdaQueryWrapper<SysAmountAuditing>()
-                        .eq(SysAmountAuditing::getUserId, sysUser.getId()).eq(SysAmountAuditing::getAuditingStatus, 0));
+                        .eq(SysAmountAuditing::getUserId, sysUser.getId())
+                        .eq(SysAmountAuditing::getSystemCode,sysUserJzgInfo.getSystemCode())
+                        .eq(SysAmountAuditing::getAuditingStatus, 0));
         BigDecimal withdrawingBalance = BigDecimal.ZERO;
         for (SysAmountAuditing sysAmountAuditing : sysAmountAuditingList) {
             withdrawingBalance = withdrawingBalance.add(sysAmountAuditing.getAmount());
         }
         sysUserWalletVo.setWithdrawingBalance(withdrawingBalance);
+        sysUserWalletVo.setWalletBalanceRemoveWithdraw(BigDecimalUtil.subtract(sysUserAccount.getSumAmountUnpaid(),withdrawingBalance));
         sysUserWalletVo.setIntegral(sysUserAccount.getIntegral());
         InsFeeOrdersParam param = new InsFeeOrdersParam();
         param.setUserId(sysUserJzgInfo.getUserId());

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

@@ -96,6 +96,9 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
     @Override
     public UserInfoVo userInfoGet(String userName) {
         String systemCode = baseController.getSystemCode();
+        if (StrUtil.isBlank(userName) || StrUtil.isBlank(systemCode)) {
+            throw new SystemException("用户名、租户编码不能为空");
+        }
         log.info("获取用户信息:systemCode=[{}],userName=[{}]", systemCode, userName);
         UserInfoVo infoVo = sysUserJzgAppMapper.userInfoGet(userName,systemCode);
         infoVo.setHeadSculpture(MinioUtils.getPresignedObjectUrl("jzg", infoVo.getHeadSculpture()));
@@ -298,7 +301,6 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
                 }
                 sysUserId = user.getId();
             }
-            // add by lipf 2026年6月9日15:16:39 向 sys_user_jzg_info_salesman 表中插入一条记录 
             // add by lipf 2026年6月9日15:16:39 向 sys_user_jzg_info_salesman 表中插入一条记录
             Map<String, String> stringStringMap = sysUserJzgInfoSalesmanService.queryAllTypeAttrMap();
             String typeAttrs = stringStringMap.getOrDefault(yqrInfo.getId(), "");
@@ -595,6 +597,7 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
      * @param appUser
      */
     private void addRelationPerson(SysUserJzgApp sourceAppUser, SysUserJzgApp appUser) {
+        log.info("添加推荐人关系:sourceAppUser=[{}], appUser=[{}]", JSONUtil.toJsonStr(sourceAppUser), JSONUtil.toJsonStr(appUser));
         // 查询推荐人关系
         LambdaQueryWrapper<SysRelationPerson> wrapper = new LambdaQueryWrapper<>();
         wrapper.eq(SysRelationPerson::getSuggestId, sourceAppUser.getId())
@@ -605,6 +608,7 @@ public class SysUserJzgAppServiceImpl extends ServiceImpl<SysUserJzgAppMapper, S
         relationPerson.setSuggestId(appUser.getId());
         relationPerson.setSource(0);
         relationPerson.setType(0);
+        relationPerson.setSystemCode(sourceAppUser.getSystemCode());
         if (Objects.isNull(person)) {
             relationPerson.setSuggestLevel(1);
         } else {

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

@@ -1,5 +1,6 @@
 package com.jzg.organization.service.impl;
 
+import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollectionUtil;
 import cn.hutool.core.util.StrUtil;
@@ -79,6 +80,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
     @Resource
     private SysUserJzgInfoMapper sysUserJzgInfoMapper;
 
+    @Resource
+    private SysUserJzgAppMapper sysUserJzgAppMapper;
+
     @Autowired
     private SysAreaService sysAreaService;
 
@@ -564,6 +568,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
         sysUserJzgInfoSalesman1.setTypeAttr(sysUserVo.getTypeAttr());  // 业务员类型
         sysUserJzgInfoSalesmanList.add(sysUserJzgInfoSalesman1);
 
+        // app内也要新增一条数据
+        SysUserJzgApp sysUserJzgApp = BeanUtil.copyProperties(sysUserJzgInfo, SysUserJzgApp.class);
+        sysUserJzgApp.setId(IdGenerate.nextId());
+        sysUserJzgApp.setSystemCode(baseController.getAppSystemCode());
+
+        sysUserJzgAppMapper.insert(sysUserJzgApp);
         sysUserJzgInfoSalesmanService.saveBatch(sysUserJzgInfoSalesmanList);
     }
 

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

@@ -162,6 +162,8 @@
         saa.bank_card_num AS bankCardNum,
         saa.bank_name AS bankName,
         saa.bank_num AS bankNum,
+        saa.user_id,
+        saa.system_code,
         saa.auditing_time
         FROM sys_amount_auditing saa
         LEFT JOIN sys_user_jzg_info suji on saa.user_id = suji.user_id AND suji.is_delete = 0