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

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

czh 2 лет назад
Родитель
Сommit
d19a6da8e5

+ 25 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/config/JacksonConfig.java

@@ -0,0 +1,25 @@
+package com.sckw.core.config;
+
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.math.BigInteger;
+
+/**
+ * @desc: Jackson全局转化long类型为String,解决jackson序列化时传入前端Long类型缺失精度问题(js解析只能解析到16位)
+ * @author: yzc
+ * @date: 2023-07-17 11:19
+ */
+@Configuration
+public class JacksonConfig {
+    @Bean
+    public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
+        return jacksonObjectMapperBuilder -> {
+            jacksonObjectMapperBuilder.serializerByType(BigInteger.class, ToStringSerializer.instance);
+            jacksonObjectMapperBuilder.serializerByType(Long.class, ToStringSerializer.instance);
+            jacksonObjectMapperBuilder.serializerByType(Long.TYPE, ToStringSerializer.instance);
+        };
+    }
+}

+ 2 - 1
sckw-common/sckw-common-core/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -3,4 +3,5 @@ com.sckw.core.exception.GlobalSystemExceptionHandler
 com.sckw.core.web.config.CustomConfig
 com.sckw.core.filter.LoginFilter
 #com.sckw.core.filter.ExceptionFilterConfig
-com.sckw.core.config.MybatisPlusConfig
+com.sckw.core.config.MybatisPlusConfig
+com.sckw.core.config.JacksonConfig

+ 206 - 0
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/TradeOrderUpdateParam.java

@@ -0,0 +1,206 @@
+package com.sckw.mongo.model;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import lombok.experimental.Accessors;
+import org.springframework.util.StringUtils;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Date;
+import java.util.Objects;
+
+/**
+ * @author zk
+ * @desc MongoDB-交易订单信息
+ * @date 2023/7/8
+ */
+
+@Getter
+@Setter
+@ToString
+@Accessors(chain = true)
+public class TradeOrderUpdateParam {
+
+    /**
+     * 订单主键
+     */
+    private Long tOrderId;
+
+    /**
+     * 订单成交数量
+     */
+    private BigDecimal amount;
+
+    /**
+     * 订单成交单价
+     */
+    private BigDecimal unitPrice;
+
+    /**
+     * 订单金额
+     */
+    private BigDecimal price;
+
+    /**
+     * 订单开始日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate startTime;
+
+    /**
+     * 订单结束日期
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private LocalDate endTime;
+
+    /**
+     * 订单交易方式(预付款、货到付款)
+     */
+    private String trading;
+
+    /**
+     * 订单提货方式(采方自提、供应配送)
+     */
+    private String pickupType;
+
+    /**
+     * 订单交付类型(签发交付、签收交付)
+     */
+    private String deliveryType;
+
+    /**
+     * 订单已委托量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 订单实际交付量
+     */
+    private BigDecimal actualAmount;
+
+    /**
+     * 状态
+     */
+    private Integer status;
+
+    /**
+     * 订单备注
+     */
+    private String remark;
+
+    /**
+     * 合同主键
+     */
+    private Long contractId;
+
+    /**
+     * 合同编号
+     */
+    private String contractNo;
+
+    /**
+     * 合同mc
+     */
+    private String contractName;
+
+    /**
+     * 合同签约方式
+     */
+    private String contractSigningWay;
+
+    /**
+     * 更新人主键id
+     */
+    private Long updateBy;
+
+    /**
+     * 更新人姓名
+     */
+    private String updateByName;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+    /**
+     * 是否删除(0未删除,1删除)
+     */
+    private Integer delFlag;
+
+    /**
+     * @desc: 参数转换
+     * @author: yzc
+     * @date: 2023-07-17 9:16
+     * @Param param:
+     * @Param order:
+     * @return: com.sckw.mongo.model.SckwTradeOrder
+     */
+    public void convertSckwTradeOrder(TradeOrderUpdateParam param, SckwTradeOrder order) {
+        if (Objects.nonNull(param.getAmount())) {
+            order.setAmount(param.getAmount());
+        }
+        if (Objects.nonNull(param.getUnitPrice())) {
+            order.setUnitPrice(param.getUnitPrice());
+        }
+        if (Objects.nonNull(param.getPrice())) {
+            order.setPrice(param.getPrice());
+        }
+        if (Objects.nonNull(param.getStartTime())) {
+            order.setStartTime(param.getStartTime());
+        }
+        if (Objects.nonNull(param.getEndTime())) {
+            order.setEndTime(param.getEndTime());
+        }
+        if (StringUtils.hasText(param.getTrading())) {
+            order.setTrading(param.getTrading());
+        }
+        if (StringUtils.hasText(param.getPickupType())) {
+            order.setPickupType(param.getPickupType());
+        }
+        if (StringUtils.hasText(param.getDeliveryType())) {
+            order.setDeliveryType(param.getDeliveryType());
+        }
+        if (Objects.nonNull(param.getEntrustAmount())) {
+            order.setEntrustAmount(param.getEntrustAmount());
+        }
+        if (Objects.nonNull(param.getActualAmount())) {
+            order.setActualAmount(param.getActualAmount());
+        }
+        if (Objects.nonNull(param.getStatus())) {
+            order.setStatus(param.getStatus());
+        }
+        if (StringUtils.hasText(param.getRemark())) {
+            order.setRemark(param.getRemark());
+        }
+        if (Objects.nonNull(param.getContractId())) {
+            order.setContractId(param.getContractId());
+        }
+        if (StringUtils.hasText(param.getContractNo())) {
+            order.setContractNo(param.getContractNo());
+        }
+        if (StringUtils.hasText(param.getContractName())) {
+            order.setContractName(param.getContractName());
+        }
+        if (StringUtils.hasText(param.getContractSigningWay())) {
+            order.setContractSigningWay(param.getContractSigningWay());
+        }
+        if (Objects.nonNull(param.getUpdateBy())) {
+            order.setUpdateBy(param.getUpdateBy());
+        }
+        if (StringUtils.hasText(param.getUpdateByName())) {
+            order.setUpdateByName(param.getUpdateByName());
+        }
+        if (Objects.nonNull(param.getUpdateTime())) {
+            order.setUpdateTime(param.getUpdateTime());
+        }
+        if (Objects.nonNull(param.getDelFlag())) {
+            order.setDelFlag(param.getDelFlag());
+        }
+    }
+
+}

+ 1 - 1
sckw-common/sckw-common-stream/src/main/java/com/sckw/stream/model/SckwBusSum.java

@@ -22,7 +22,7 @@ public class SckwBusSum {
     private String busSumType;
 
     /**
-     * 操作对象(1新增/2修改
+     * 操作对象(1新增/2全量更新/3部分更新
      */
     private Integer method;
 

+ 2 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -101,6 +101,7 @@ public class KwoTradeOrderController {
      * @Param acceptanceOrderParam:
      * @return: com.sckw.core.web.response.HttpResult
      */
+    @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/acceptanceOrder", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult acceptanceOrder(@RequestBody @Validated AcceptanceOrderParam acceptanceOrderParam) {
         kwoTradeOrderService.acceptanceOrder(acceptanceOrderParam);
@@ -114,6 +115,7 @@ public class KwoTradeOrderController {
      * @Param rejectOrderParam:
      * @return: com.sckw.core.web.response.HttpResult
      */
+    @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/rejectOrder", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult rejectOrder(@RequestBody @Validated RejectOrderParam rejectOrderParam) {
         kwoTradeOrderService.rejectOrder(rejectOrderParam);

+ 4 - 3
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/CompleteOrderParam.java

@@ -1,6 +1,6 @@
 package com.sckw.order.model.vo.req;
 
-import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotNull;
 import lombok.Getter;
 import lombok.Setter;
@@ -22,10 +22,11 @@ public class CompleteOrderParam {
     @NotNull(message = "订单id不能为为空")
     private Long id;
 
-    @NotBlank(message = "实际交付量不能为空")
+    @NotNull(message = "实际交付量不能为空")
+    @Min(value = 0, message = "实际交付量不能为负数")
     private BigDecimal actualAmount;
 
-    @Length(min = 1, max = 200, message = "驳回原因不能为空且最多200字")
+    @Length(max = 200, message = "备注最多200字")
     private String remark;
 
 }

+ 25 - 4
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -12,6 +12,7 @@ import com.sckw.core.utils.OrderGenerateUtils;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.mongo.model.SckwTradeOrder;
+import com.sckw.mongo.model.TradeOrderUpdateParam;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.model.*;
 import com.sckw.order.model.vo.req.*;
@@ -30,6 +31,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Objects;
 
@@ -170,7 +172,15 @@ public class KwoTradeOrderService {
         saveMongoDb(method, order);
     }
 
-    private void saveMongoDb(Integer method, SckwTradeOrder order) {
+    /**
+     * @desc: mq保存mongodb
+     * @author: yzc
+     * @date: 2023-07-17 8:43
+     * @Param method:
+     * @Param order:
+     * @return: void
+     */
+    private void saveMongoDb(Integer method, Object order) {
         SckwBusSum busSum = new SckwBusSum();
         busSum.setBusSumType("tradeOrder");
         busSum.setMethod(method);
@@ -521,8 +531,13 @@ public class KwoTradeOrderService {
         KwoTradeOrderTrack track = new KwoTradeOrderTrack();
         track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo());
         kwoTradeOrderTrackService.insert(track);
-        //todo:更新mongodb
-
+        //更新mongodb
+        TradeOrderUpdateParam updateParam = BeanUtils.copyProperties(param, TradeOrderUpdateParam.class);
+        updateParam.setTOrderId(param.getId()).setStatus(order.getStatus()).setContractId(contractInfo.getContractId())
+                .setContractNo(contractInfo.getContractNo()).setContractName(contractInfo.getContractName())
+                .setContractSigningWay(contractInfo.getContractSigningWay()).setUpdateBy(LoginUserHolder.getUserId())
+                .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+        saveMongoDb(3, updateParam);
 
     }
 
@@ -550,8 +565,14 @@ public class KwoTradeOrderService {
         KwoTradeOrderTrack track = new KwoTradeOrderTrack();
         track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark());
         kwoTradeOrderTrackService.insert(track);
+        //释放商品库存
+        KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(order.getId());
+        goodsInfoService.updateGoodsAmount(goods.getGoodsId(),order.getAmount());
         //mongodb更新订单状态
-
+        TradeOrderUpdateParam updateParam = new TradeOrderUpdateParam();
+        updateParam.setTOrderId(order.getId()).setStatus(order.getStatus()).setUpdateBy(LoginUserHolder.getUserId())
+                .setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+        saveMongoDb(3, updateParam);
     }
 
     /**

+ 16 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/consumer/SckwBusSumConsumer.java

@@ -2,10 +2,12 @@ package com.sckw.report.consumer;
 
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
+import com.sckw.core.exception.BusinessException;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
+import com.sckw.mongo.model.TradeOrderUpdateParam;
 import com.sckw.report.dao.SckwLogisticsOrderRepository;
 import com.sckw.report.dao.SckwTradeOrderRepository;
 import com.sckw.report.dao.SckwWaybillOrderRepository;
@@ -15,6 +17,8 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
+
+import java.util.Optional;
 import java.util.function.Consumer;
 
 /**
@@ -57,7 +61,7 @@ public class SckwBusSumConsumer {
      **/
     public void addMongodb(SckwBusSum busSum) {
         /**初级校验**/
-            if (busSum.getObject() == null || StringUtils.isBlank(busSum.getBusSumType()) || busSum.getMethod() == 0) {
+        if (busSum.getObject() == null || StringUtils.isBlank(busSum.getBusSumType()) || busSum.getMethod() == 0) {
             return;
         }
 
@@ -67,8 +71,18 @@ public class SckwBusSumConsumer {
             order.set_id(order.getTOrderId());
             if (busSum.getMethod() == 1) {
                 tradeOrderRepository.insert(order);
-            } else {
+            } else if (busSum.getMethod() == 2) {
                 tradeOrderRepository.save(order);
+            } else {
+                Optional<SckwTradeOrder> sckwTradeOrder = tradeOrderRepository.findById(order.getTOrderId());
+                if (sckwTradeOrder.isPresent()) {
+                    SckwTradeOrder tradeOrder = sckwTradeOrder.get();
+                    TradeOrderUpdateParam updateParam = JSONObject.parseObject(JSON.toJSONString(busSum.getObject()), TradeOrderUpdateParam.class);
+                    updateParam.convertSckwTradeOrder(updateParam, tradeOrder);
+                    tradeOrderRepository.save(tradeOrder);
+                } else {
+                    throw new BusinessException("更新交易订单失败,订单:" + order.getTOrderId() + "不存在");
+                }
             }
         }