Ver Fonte

解决批量修改比例没有进入轨迹的问题

lipf há 2 meses atrás
pai
commit
58c9dfc0aa

+ 4 - 1
commons/src/main/java/com/jzg/commons/entity/orders/po/InsOrdersCarInfo.java

@@ -7,14 +7,16 @@ import com.jzg.commons.core.base.BaseModel;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
+import java.io.Serial;
 import java.math.BigDecimal;
-import java.time.LocalDate;
 import java.time.LocalDateTime;
 
 @Data
 @Schema(description = "订单车辆信息表")
 public class InsOrdersCarInfo extends BaseModel {
 
+    @Serial
+    private static final long serialVersionUID = -5390516460360192897L;
     @TableId(value = "order_no")
     @Schema(description = "订单号")
     private String orderNo;
@@ -112,6 +114,7 @@ public class InsOrdersCarInfo extends BaseModel {
 
     @Schema(description = "发证日期")
     @DiffProperty(name = "发证日期")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private LocalDateTime issueDate;
 
     @Schema(description = "过户日期")

+ 25 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersController.java

@@ -12,6 +12,8 @@ import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.InsOrdersParam;
 import com.jzg.commons.entity.dto.InsOrdersParamVO;
 import com.jzg.commons.entity.finance.vo.BatchModifyVo;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
 import com.jzg.commons.entity.orders.vo.HistoryQuoteQueryVo;
 import com.jzg.commons.entity.orders.vo.HistoryQuoteResultVo;
 import com.jzg.commons.entity.po.InsFeeOrders;
@@ -281,4 +283,27 @@ public class InsOrdersController extends BaseController {
         return HttpResult.ok(jsonArray);
     }
 
+    /**
+     * 根据订单号获取订单信息
+     *
+     * @author lipf
+     * @date 2026/7/18 16:55
+     */
+    @GetMapping("getById")
+    public InsOrders getById(@RequestParam("orderNo") String orderNo){
+        return insOrdersService.getById(orderNo);
+    }
+
+    /**
+     * 根据订单号获取订单的车辆信息
+     *
+     * @param orderNo 订单号
+     * @author lipf
+     * @date 2026/7/18 17:02
+     */
+    @GetMapping("getByOrderId")
+    public InsOrdersCarInfo getByOrderId(@RequestParam("orderNo") String orderNo){
+        return insOrdersService.getByOrderId(orderNo);
+    }
+
 }

+ 13 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/controller/InsOrdersTrackController.java

@@ -3,6 +3,7 @@ package com.jzg.quotation.summary.controller;
 
 import com.jzg.commons.core.page.HttpResult;
 import com.jzg.commons.entity.dto.OrdersTrackParam;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.vo.OrdersTrackVo;
 import com.jzg.quotation.summary.service.InsOrdersTrackService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -36,5 +37,17 @@ public class InsOrdersTrackController {
         return HttpResult.ok(result);
     }
 
+    /**
+     * 保存订单轨迹信息
+     *
+     * @param track
+     * @author lipf
+     * @date 2026/7/18 16:58
+     */
+    @PostMapping("/save")
+    public void save(@RequestBody InsOrdersTrack track){
+        ordersTrackService.save(track);
+    }
+
 
 }

+ 10 - 0
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/InsOrdersService.java

@@ -298,4 +298,14 @@ public interface InsOrdersService extends IService<InsOrders> {
     BigDecimal obtainTaxRate(String orderNo);
 
     HttpResult<InsFeeCalculateResponse> cvalculateFees(InsFeeCalculateRequest request);
+
+    /**
+     * 根据订单号获取订单的车辆信息
+     *
+     * @param orderNo 订单号
+     * @author lipf
+     * @date 2026/7/18 17:02
+     */
+    InsOrdersCarInfo getByOrderId(String orderNo);
+
 }

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

@@ -2332,4 +2332,16 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         log.info("hasSuperviseOrOtherCosts=[{}]",hasSuperviseOrOtherCosts);
         return hasSuperviseOrOtherCosts;
     }
+
+    /**
+     * 根据订单号获取订单的车辆信息
+     *
+     * @param orderNo 订单号
+     * @author lipf
+     * @date 2026/7/18 17:02
+     */
+    @Override
+    public InsOrdersCarInfo getByOrderId(String orderNo){
+        return ordersCarInfoService.getByOrderId(orderNo);
+    }
 }

+ 194 - 0
tenant/organization/src/main/java/com/jzg/organization/aop/OrderOperationLogAspect.java

@@ -0,0 +1,194 @@
+package com.jzg.organization.aop;
+
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.json.JSONUtil;
+import com.jzg.commons.entity.finance.vo.BatchModifyVo;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
+import com.jzg.commons.entity.vo.PtlAgreementCostRatioVo;
+import com.jzg.commons.entity.vo.QuestionOrder;
+import com.jzg.organization.client.InsOrdersClient;
+import com.jzg.quotation.summary.aop.aspect.OrderOperationLog;
+import org.aspectj.lang.ProceedingJoinPoint;
+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;
+import org.springframework.expression.spel.standard.SpelExpressionParser;
+import org.springframework.expression.spel.support.StandardEvaluationContext;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+@Aspect
+@Component
+public class OrderOperationLogAspect {
+
+    private static final Logger logger = LoggerFactory.getLogger(OrderOperationLogAspect.class);
+
+    @Autowired
+    @Lazy
+    private InsOrdersClient insOrdersClient;
+
+
+
+    @Around("@annotation(log)")
+    public Object handleLog(ProceedingJoinPoint joinPoint, OrderOperationLog log) throws Throwable {
+        // 获取方法信息和参数
+        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
+        Object[] args = joinPoint.getArgs();
+        logger.info("订单相关的参数:args=[{}]", JSONUtil.toJsonStr(args));
+        String[] paramNames = signature.getParameterNames();
+        // 设置 SpEL 上下文
+        EvaluationContext context = new StandardEvaluationContext();
+        for (int i = 0; i < args.length; i++) {
+            context.setVariable(paramNames[i], args[i]); // 命名参数:#dto
+            context.setVariable("p" + i, args[i]); // 索引参数:#p0
+        }
+        ExpressionParser parser = new SpelExpressionParser();
+        Object result = null;
+        switch (log.optType().getCode()){
+            // 费用调整
+            case 15:
+                logger.info("费用调整log.orderSpEl()=[{}]",log.orderSpEl());
+                PtlAgreementCostRatioVo vo = parser.parseExpression(log.orderSpEl()).getValue(context, PtlAgreementCostRatioVo.class);
+                result = joinPoint.proceed();
+                this.saveCostInfo(result,log, vo);
+                break;
+            // 批量修改比例
+            case 16:
+                logger.info("批量修改比例.log.orderSpEl()=[{}]",log.orderSpEl());
+                BatchModifyVo batchModifyVo = parser.parseExpression(log.orderSpEl()).getValue(context, BatchModifyVo.class);
+                result = joinPoint.proceed();
+                this.batchModify(result,log, batchModifyVo);
+                break;
+            // 设为疑问订单
+            case 17:
+                logger.info("设置为疑问订单.log.orderSpEl()=[{}]",log.orderSpEl());
+                QuestionOrder questionOrder = parser.parseExpression(log.orderSpEl()).getValue(context, QuestionOrder.class);
+                result = joinPoint.proceed();
+                this.updateToQuestionOrder(result,log, questionOrder);
+                break;
+        }
+        return result;
+    }
+
+    /**
+     * 设置为疑问订单
+     *
+     * @author lipf
+     * @date 2026/7/16 16:35
+     */
+    private void updateToQuestionOrder(Object result, OrderOperationLog log, QuestionOrder questionOrder) {
+        logger.info("设置为疑问订单。questionOrder=[{}]", JSONUtil.toJsonStr(questionOrder));
+        InsOrdersTrack track = new InsOrdersTrack();
+        track.setModule(log.module());
+        track.setSubModule(log.subModule());
+        track.setOptType(log.optType().getCode());
+        track.setOptContent(log.description());
+        track.setChangeAfter(JSONUtil.toJsonStr(questionOrder));
+        track.setResult(JSONUtil.toJsonStr(result));
+        InsOrders insOrders = insOrdersClient.getById(questionOrder.getOrderNo());
+        if(insOrders != null){
+            InsOrdersCarInfo carInfo = insOrdersClient.getByOrderId(insOrders.getId());
+            track.setLicenseNo(carInfo.getLicenseNo());
+            track.setCompanyId(insOrders.getCompanyId());
+            // track.setResult(result.getMsg());
+        }else{
+            track.setResult("要设置位疑问订单的订单不存在");
+        }
+        track.setStatus(1);
+        track.setOrderNo(questionOrder.getOrderNo());
+        insOrdersClient.save(track);
+
+    }
+
+    /**
+     * 批量修改比例
+     *
+     * @author lipf
+     * @date 2026/7/8 15:29
+     */
+    private void batchModify(Object result, OrderOperationLog log, BatchModifyVo vo) {
+        List<String> orderNos = vo.getOrderNos();
+        if(CollUtil.isEmpty(orderNos)){
+            logger.info("批量修改没有传入订单号");
+            return;
+        }
+        for (String orderNo : orderNos) {
+            InsOrdersTrack track = new InsOrdersTrack();
+            track.setModule(log.module());
+            track.setSubModule(log.subModule());
+            track.setOptType(log.optType().getCode());
+            track.setOptContent(log.description());
+            track.setChangeAfter(JSONUtil.toJsonStr(vo));
+            track.setResult(JSONUtil.toJsonStr(result));
+            InsOrders insOrders = insOrdersClient.getById(orderNo);
+            if(insOrders != null){
+                InsOrdersCarInfo carInfo = insOrdersClient.getByOrderId(insOrders.getId());
+                track.setLicenseNo(carInfo.getLicenseNo());
+                track.setCompanyId(insOrders.getCompanyId());
+                // track.setResult(result.getMsg());
+            }else{
+                track.setResult("要修改的订单不存在");
+            }
+            track.setStatus(1);
+            track.setOrderNo(orderNo);
+            insOrdersClient.save(track);
+
+        }
+
+    }
+
+    /**
+     * 保存费用信息
+     * @author lipf
+     * @date 2026/7/8 15:28
+     */
+    private void saveCostInfo(Object result, OrderOperationLog log, PtlAgreementCostRatioVo vo) {
+        InsOrdersTrack track = new InsOrdersTrack();
+        String orderNo = vo.getOrderNo();
+        track.setModule(log.module());
+        track.setSubModule(log.subModule());
+        track.setOptType(log.optType().getCode());
+        track.setOptContent(log.description());
+        track.setResult(JSONUtil.toJsonStr(vo));
+        InsOrders insOrders = insOrdersClient.getById(orderNo);
+        if(insOrders != null){
+            InsOrdersCarInfo carInfo = insOrdersClient.getByOrderId(insOrders.getId());
+            track.setLicenseNo(carInfo.getLicenseNo());
+            track.setCompanyId(insOrders.getCompanyId());
+            // track.setResult(result.getMsg());
+        }else{
+            track.setResult("要进行费用调整的订单不存在");
+        }
+        track.setStatus(1);
+        track.setChangeBefore("");
+        track.setChangeAfter("费用调整完成");
+        track.setOrderNo(orderNo);
+        track.setResult(JSONUtil.toJsonStr(result));
+        insOrdersClient.save(track);
+    }
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   }

+ 0 - 1
tenant/organization/src/main/java/com/jzg/organization/client/InsFeeOrdersClient.java

@@ -9,7 +9,6 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
-import java.math.BigDecimal;
 import java.util.List;
 
 /**

+ 33 - 4
tenant/organization/src/main/java/com/jzg/organization/client/InsOrdersClient.java

@@ -1,12 +1,12 @@
 package com.jzg.organization.client;
 
 import com.jzg.commons.core.page.HttpResult;
+import com.jzg.commons.entity.orders.po.InsOrders;
+import com.jzg.commons.entity.orders.po.InsOrdersCarInfo;
+import com.jzg.commons.entity.orders.po.InsOrdersTrack;
 import com.jzg.commons.entity.quote.vo.orders.InsOrdersVo;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.*;
 
 import java.math.BigDecimal;
 
@@ -33,4 +33,33 @@ public interface InsOrdersClient {
      */
     @GetMapping("/supplementOrder/obtainTaxRate")
     HttpResult<BigDecimal> obtainTaxRate(@RequestParam("orderNo") String orderNo);
+
+    /**
+     * 根据订单号获取订单信息
+     *
+     * @author lipf
+     * @date 2026/7/18 16:55
+     */
+    @GetMapping("/supplementOrder/getById")
+    InsOrders getById(@RequestParam("orderNo") String orderNo);
+
+    /**
+     * 保存订单轨迹信息
+     *
+     * @param track
+     * @author lipf
+     * @date 2026/7/18 16:58
+     */
+    @PostMapping("/orderTrack/save")
+    void save(@RequestBody InsOrdersTrack track);
+
+    /**
+     * 根据订单号获取订单的车辆信息
+     *
+     * @param orderNo 订单号
+     * @author lipf
+     * @date 2026/7/18 17:02
+     */
+    @GetMapping("/supplementOrder/getByOrderId")
+    InsOrdersCarInfo getByOrderId(@RequestParam("orderNo") String orderNo);
 }