xucaiqin 1 месяц назад
Родитель
Сommit
dde6d4e525

+ 6 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/dubbo/TradeOrderInfoService.java

@@ -132,6 +132,7 @@ public interface TradeOrderInfoService {
 
 
     /**
     /**
      * 通交易订单id查询交易订单采购/销售企业信息     * @param tradeOrderId
      * 通交易订单id查询交易订单采购/销售企业信息     * @param tradeOrderId
+     *
      * @return
      * @return
      */
      */
     List<OrderUnitInfoDetailVO> queryOrderUnitInfByTOrderId(Set<Long> tradeOrderId);
     List<OrderUnitInfoDetailVO> queryOrderUnitInfByTOrderId(Set<Long> tradeOrderId);
@@ -153,5 +154,10 @@ public interface TradeOrderInfoService {
      */
      */
     List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end);
     List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end);
 
 
+    /**
+     * 订单结算,更改上游贸易订单累计装货量或累计卸货量
+     */
+    void orderSettle(TradeOrderSettlePara tradeOrderSettlePara);
+
 
 
 }
 }

+ 39 - 0
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/TradeOrderSettlePara.java

@@ -0,0 +1,39 @@
+package com.sckw.order.api.model;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.io.Serial;
+import java.io.Serializable;
+import java.math.BigDecimal;
+
+/**
+ * 贸易订单结算
+ */
+@Getter
+@Setter
+@ToString
+public class TradeOrderSettlePara implements Serializable {
+
+    @Serial
+    private static final long serialVersionUID = 6909518527687999256L;
+
+    /**
+     * 贸易订单id
+     */
+    @JsonProperty("tOrderId")
+    @NotNull(message = "贸易订单id不能为空")
+    private Long tOrderId;
+
+    /**
+     * 累计装货量
+     */
+    private BigDecimal loadAmount;
+    /**
+     * 累计卸货量
+     */
+    private BigDecimal unloadAmount;
+}

+ 9 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -125,7 +125,15 @@ public class KwoTradeOrderController {
     @GlobalTransactional(name = "default_tx_group")
     @GlobalTransactional(name = "default_tx_group")
     @RepeatSubmit(interval = 1000, message = "前方拥堵,请稍后尝试")
     @RepeatSubmit(interval = 1000, message = "前方拥堵,请稍后尝试")
     public HttpResult audit(@RequestBody @Validated TradeOrderAuditParam tradeOrderAuditParam) {
     public HttpResult audit(@RequestBody @Validated TradeOrderAuditParam tradeOrderAuditParam) {
-        return HttpResult.ok("贸易订单审核成功", kwoTradeOrderService.  auditOrder(tradeOrderAuditParam));
+        return HttpResult.ok("贸易订单审核成功", kwoTradeOrderService.auditOrder(tradeOrderAuditParam));
+    }
+
+    @PostMapping("/settle")
+    @Operation(summary = "贸易订单手动完结", description = "贸易订单手动完结")
+    @GlobalTransactional(name = "default_tx_group")
+    @RepeatSubmit(interval = 1000, message = "前方拥堵,请稍后尝试")
+    public HttpResult settle(@RequestBody @Validated TradeOrderSettleParam tradeOrderSettleParam) {
+        return HttpResult.ok("手动完结成功", kwoTradeOrderService.settleOrder(tradeOrderSettleParam));
     }
     }
 
 
     /**
     /**

+ 6 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/dubbo/TradeOrderInfoServiceImpl.java

@@ -586,6 +586,11 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
         return kwoTradeOrderService.querySignGoods(entId);
         return kwoTradeOrderService.querySignGoods(entId);
     }
     }
 
 
+    @Override
+    public void orderSettle(TradeOrderSettlePara tradeOrderSettlePara) {
+        kwoTradeOrderService.updateOrderAmount(tradeOrderSettlePara);
+    }
+
     @Override
     @Override
     public List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end) {
     public List<OrderSaleVo> queryRecentSale(LocalDateTime start, LocalDateTime end) {
         return kwoTradeOrderService.queryRecentSale(start, end);
         return kwoTradeOrderService.queryRecentSale(start, end);
@@ -609,7 +614,7 @@ public class TradeOrderInfoServiceImpl implements TradeOrderInfoService {
     @Override
     @Override
     public List<OrderUnitInfoDetailVO> queryOrderUnitInfByTOrderId(Set<Long> tradeOrderId) {
     public List<OrderUnitInfoDetailVO> queryOrderUnitInfByTOrderId(Set<Long> tradeOrderId) {
         List<KwoTradeOrderUnit> kwoTradeOrderUnits = kwoTradeOrderUnitRepository.queryByOrderIds(tradeOrderId);
         List<KwoTradeOrderUnit> kwoTradeOrderUnits = kwoTradeOrderUnitRepository.queryByOrderIds(tradeOrderId);
-        if (CollectionUtils.isEmpty(kwoTradeOrderUnits)){
+        if (CollectionUtils.isEmpty(kwoTradeOrderUnits)) {
             return Collections.emptyList();
             return Collections.emptyList();
         }
         }
         return kwoTradeOrderUnits.stream().map(unit -> {
         return kwoTradeOrderUnits.stream().map(unit -> {

+ 46 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/enums/TradeOrderStatusEnum.java

@@ -0,0 +1,46 @@
+package com.sckw.order.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * @desc: 订单状态枚举
+ * @author: yzc
+ * @date: 2023-09-18 15:32
+ */
+@Getter
+@AllArgsConstructor
+public enum TradeOrderStatusEnum {
+
+    /**
+     * 订单状态枚举
+     */
+    AUDIT(1, "待审核"),
+    ING(2, "进行中"),
+    DEAL(3, "结算中"),
+    SUCCESS(4, "已完成"),
+    BACK(5, "审核驳回"),
+    ;
+    private final Integer code;
+    private final String msg;
+
+    public static String getMsg(Integer code) {
+        for (TradeOrderStatusEnum ele : TradeOrderStatusEnum.values()) {
+            if (ele.getCode().equals(code)) {
+                return ele.getMsg();
+            }
+        }
+        return null;
+    }
+
+    public static List<TradeOrderStatusEnum> getSortList() {
+        TradeOrderStatusEnum[] enums = TradeOrderStatusEnum.values();
+        return Arrays.stream(enums).sorted(Comparator.comparingInt(TradeOrderStatusEnum::getCode)).collect(Collectors.toList());
+    }
+
+}

+ 22 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/req/TradeOrderSettleParam.java

@@ -0,0 +1,22 @@
+package com.sckw.order.model.vo.req;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @desc: 采购订单请求参数
+ * @author: yzc
+ * @date: 2023-07-07 14:19
+ */
+@Getter
+@Setter
+@ToString
+public class TradeOrderSettleParam {
+    @NotNull(message = "贸易订单id不能为空")
+    @Schema(description = "贸易订单id")
+    private Long id;
+
+}

+ 9 - 1
sckw-modules/sckw-order/src/main/java/com/sckw/order/model/vo/res/OrderDetailRes.java

@@ -127,6 +127,14 @@ public class OrderDetailRes implements Serializable {
      * 累计卸货量
      * 累计卸货量
      */
      */
     private BigDecimal unloadAmount;
     private BigDecimal unloadAmount;
+    /**
+     * 已履约量
+     */
+    private BigDecimal dealAmount;
+    /**
+     * 已履约金额
+     */
+    private BigDecimal dealMoney;
     /**
     /**
      * 已委托量
      * 已委托量
      */
      */
@@ -180,7 +188,7 @@ public class OrderDetailRes implements Serializable {
     /**
     /**
      * 创建时间
      * 创建时间
      */
      */
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
     private Date createTime;
 
 
     /**
     /**

+ 155 - 13
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -1,12 +1,12 @@
 package com.sckw.order.serivce;
 package com.sckw.order.serivce;
 
 
-import com.google.common.collect.Lists;
-
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.date.DateUtil;
+import cn.hutool.core.util.NumberUtil;
 import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageHelper;
@@ -36,6 +36,7 @@ import com.sckw.manage.api.model.dto.res.FindEntCooperateResVo;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.mongo.model.SckwTradeOrder;
 import com.sckw.order.api.model.OrderSaleVo;
 import com.sckw.order.api.model.OrderSaleVo;
 import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
 import com.sckw.order.api.model.TradeOrderCountStatisticsDTO;
+import com.sckw.order.api.model.TradeOrderSettlePara;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.dao.KwoTradeOrderMapper;
 import com.sckw.order.enums.ContractStatusEnum;
 import com.sckw.order.enums.ContractStatusEnum;
 import com.sckw.order.enums.*;
 import com.sckw.order.enums.*;
@@ -63,6 +64,8 @@ import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.system.api.model.dto.res.*;
 import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.dubbo.TransportRemoteService;
 import com.sckw.transport.api.model.param.AddLogisticOrderParam;
 import com.sckw.transport.api.model.param.AddLogisticOrderParam;
+import com.sckw.transport.api.model.param.OrderFinishParam;
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
 import lombok.RequiredArgsConstructor;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboReference;
@@ -73,6 +76,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.math.RoundingMode;
+import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -758,6 +762,11 @@ public class KwoTradeOrderService {
                 .setChargeTypeLabel(CollUtil.isNotEmpty(chargeTypeMap) ? chargeTypeMap.get(String.valueOf(detail.getChargeType())) : null)
                 .setChargeTypeLabel(CollUtil.isNotEmpty(chargeTypeMap) ? chargeTypeMap.get(String.valueOf(detail.getChargeType())) : null)
                 .setConsignmentWayLabel(CollUtil.isNotEmpty(consignmentWayMap) ? consignmentWayMap.get(String.valueOf(detail.getConsignmentWay())) : null)
                 .setConsignmentWayLabel(CollUtil.isNotEmpty(consignmentWayMap) ? consignmentWayMap.get(String.valueOf(detail.getConsignmentWay())) : null)
         ;
         ;
+        if (Objects.equals(detail.getChargeType(), 1)) {//按装货量
+            detail.setDealAmount(detail.getLoadAmount());
+        } else {
+            detail.setDealAmount(detail.getUnloadAmount());
+        }
         //商品信息
         //商品信息
         KwoTradeOrderGoods orderGoods = kwoTradeOrderGoodsService.getByOrderId(id);
         KwoTradeOrderGoods orderGoods = kwoTradeOrderGoodsService.getByOrderId(id);
         if (Objects.nonNull(orderGoods)) {
         if (Objects.nonNull(orderGoods)) {
@@ -776,6 +785,11 @@ public class KwoTradeOrderService {
                         .setPrepaidLimit(goods.getPrepaidLimit()).setAdvancePrice(goods.getAdvancePrice())
                         .setPrepaidLimit(goods.getPrepaidLimit()).setAdvancePrice(goods.getAdvancePrice())
                         .setCollectionUnit(Objects.isNull(entCache) ? null : entCache.getFirmName());
                         .setCollectionUnit(Objects.isNull(entCache) ? null : entCache.getFirmName());
                 detail.setGoodsInfo(goodsDetail);
                 detail.setGoodsInfo(goodsDetail);
+                if (Objects.equals(detail.getChargeType(), 1)) {//按装货量
+                    detail.setDealMoney(NumberUtil.mul(orderGoods.getUnitPrice(), detail.getLoadAmount()));
+                } else {
+                    detail.setDealMoney(NumberUtil.mul(orderGoods.getUnitPrice(), detail.getUnloadAmount()));
+                }
 
 
                 //商品辅助单位信息
                 //商品辅助单位信息
 //                List<GoodsUnitDetailRes> assistUnit = kwoTradeOrderGoodsUnitService.findGoodsUnitDetail(id);
 //                List<GoodsUnitDetailRes> assistUnit = kwoTradeOrderGoodsUnitService.findGoodsUnitDetail(id);
@@ -1585,7 +1599,7 @@ public class KwoTradeOrderService {
                 e.setLabel(finalUnitMap != null ? finalUnitMap.get(e.getValue()) : null);
                 e.setLabel(finalUnitMap != null ? finalUnitMap.get(e.getValue()) : null);
                 //组装合理损耗
                 //组装合理损耗
                 if (CollUtil.isNotEmpty(dicts)) {
                 if (CollUtil.isNotEmpty(dicts)) {
-                    for (SysDictResDto ee : dicts)
+                    for (SysDictResDto ee : dicts) {
                         if (ee.getParentId().equals((long) NumberConstant.ZERO)) {
                         if (ee.getParentId().equals((long) NumberConstant.ZERO)) {
                             if (ee.getValue().equals(e.getValue())) {
                             if (ee.getValue().equals(e.getValue())) {
                                 List<Map<String, Object>> lossUnit = new ArrayList();
                                 List<Map<String, Object>> lossUnit = new ArrayList();
@@ -1600,6 +1614,7 @@ public class KwoTradeOrderService {
                                 e.setLossUnit(lossUnit);
                                 e.setLossUnit(lossUnit);
                             }
                             }
                         }
                         }
+                    }
                 }
                 }
             });
             });
         }
         }
@@ -2229,7 +2244,7 @@ public class KwoTradeOrderService {
                 .setStartTime(DateUtils.localDateToDateStart(tradeOrderParam.getStartTime()))
                 .setStartTime(DateUtils.localDateToDateStart(tradeOrderParam.getStartTime()))
                 .setEndTime(DateUtils.localDateToDateEnd(tradeOrderParam.getEndTime()))
                 .setEndTime(DateUtils.localDateToDateEnd(tradeOrderParam.getEndTime()))
                 .setSource(OrderSourceEnum.PURCHASE.getType())
                 .setSource(OrderSourceEnum.PURCHASE.getType())
-                .setStatus(OrderStatusEnum.WAIT_ACCEPTED.getCode())
+                .setStatus(TradeOrderStatusEnum.AUDIT.getCode())
                 .setRemark(tradeOrderParam.getRemark());
                 .setRemark(tradeOrderParam.getRemark());
         return tradeContractResDto;
         return tradeContractResDto;
     }
     }
@@ -2274,6 +2289,9 @@ public class KwoTradeOrderService {
         if (Objects.equals(tradeContractResDto.getConsignment(), 2) && CollUtil.isEmpty(logisticsContractId)) {
         if (Objects.equals(tradeContractResDto.getConsignment(), 2) && CollUtil.isEmpty(logisticsContractId)) {
             throw new BusinessException("卖方托运时,物流合同不能为空");
             throw new BusinessException("卖方托运时,物流合同不能为空");
         }
         }
+        //更新贸易订单状态
+        kwoTradeOrder.setStatus(Objects.equals(tradeOrderAuditParam.getStatus(), 2) ? TradeOrderStatusEnum.BACK.getCode() : TradeOrderStatusEnum.ING.getCode());
+        kwoTradeOrderMapper.updateById(kwoTradeOrder);
         if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
         if (Objects.equals(tradeOrderAuditParam.getStatus(), 2)) {
             KwoTradeOrderTrack kwoTradeOrderTrack = new KwoTradeOrderTrack();
             KwoTradeOrderTrack kwoTradeOrderTrack = new KwoTradeOrderTrack();
             kwoTradeOrderTrack.setTOrderId(kwoTradeOrder.getId());
             kwoTradeOrderTrack.setTOrderId(kwoTradeOrder.getId());
@@ -2316,9 +2334,77 @@ public class KwoTradeOrderService {
             kwoTradeOrderTransport.setCreateTime(LocalDateTime.now());
             kwoTradeOrderTransport.setCreateTime(LocalDateTime.now());
             kwoTradeOrderTransportService.insert(kwoTradeOrderTransport);
             kwoTradeOrderTransportService.insert(kwoTradeOrderTransport);
         }
         }
-        //todo 通过后调用rpc
+        //下游新增物流订单
         AddLogisticOrderParam addLogisticOrderParam = new AddLogisticOrderParam();
         AddLogisticOrderParam addLogisticOrderParam = new AddLogisticOrderParam();
-        addLogisticOrderParam.setLogisticInfo(Lists.newArrayList());
+        if (Objects.equals(tradeContractResDto.getConsignment(), 2)) {
+            List<AddLogisticOrderParam.LogisticInfo> collect = logisticsContractId.stream().map(d -> {
+                AddLogisticOrderParam.LogisticInfo logisticInfo = new AddLogisticOrderParam.LogisticInfo();
+                logisticInfo.setContractId(d.getContractId());
+                logisticInfo.setContractNo(d.getContractNo());
+                logisticInfo.setContractName("");
+                logisticInfo.setAcceptCompanyId(d.getEntId());
+                logisticInfo.setAcceptContactPhone("");
+                logisticInfo.setAcceptContacts(d.getContacts());
+                logisticInfo.setAcceptContactsId(d.getContactsId());
+                logisticInfo.setAcceptCompany("");
+                logisticInfo.setPrice(d.getTransportPrice());
+                logisticInfo.setPriceType(0L);
+                logisticInfo.setEndTime(LocalDate.now());
+                logisticInfo.setStartTime(LocalDate.now());
+                logisticInfo.setUnloadContacts("");
+                logisticInfo.setUnloadPhone("");
+                logisticInfo.setUnloadDetailAddress("");
+                logisticInfo.setAmount(new BigDecimal("0"));
+                logisticInfo.setAmountUnit("");
+                logisticInfo.setLoss(new BigDecimal("0"));
+                logisticInfo.setPayment(0L);
+                logisticInfo.setSigningWay(0);
+                logisticInfo.setLossUnit("");
+                logisticInfo.setBillingMode("");
+                logisticInfo.setRemark("");
+                logisticInfo.setType(0);
+
+                return logisticInfo;
+            }).collect(Collectors.toList());
+            addLogisticOrderParam.setLogisticInfo(collect);
+        } else {
+            List<KwoTradeOrderTransport> list = kwoTradeOrderTransportService.queryList(kwoTradeOrder.getId());
+            if (CollUtil.isNotEmpty(list)) {
+                Map<Long, ContractCommonInfoResDto> contractMap = remoteContractService.queryContractBaseInfo(list.stream().map(KwoTradeOrderTransport::getContractId).collect(Collectors.toList()));
+                List<AddLogisticOrderParam.LogisticInfo> collect = list.stream().map(d -> {
+                            AddLogisticOrderParam.LogisticInfo logisticInfo = new AddLogisticOrderParam.LogisticInfo();
+                            logisticInfo.setContractId(d.getContractId());
+                            logisticInfo.setContractNo(d.getContractNo());
+                            logisticInfo.setContractName("");
+                            logisticInfo.setAcceptCompanyId(d.getEntId());
+                            logisticInfo.setAcceptContactPhone(d.getPhone());
+                            logisticInfo.setAcceptContacts(d.getContacts());
+                            logisticInfo.setAcceptContactsId(d.getContactsId());
+                            logisticInfo.setAcceptCompany(d.getFirmName());
+                            logisticInfo.setPrice(d.getTransportPrice());
+                            logisticInfo.setPriceType(0L);
+                            logisticInfo.setEndTime(LocalDate.now());
+                            logisticInfo.setStartTime(LocalDate.now());
+                            logisticInfo.setUnloadContacts("");
+                            logisticInfo.setUnloadPhone("");
+                            logisticInfo.setUnloadDetailAddress("");
+                            logisticInfo.setAmount(new BigDecimal("0"));
+                            logisticInfo.setAmountUnit("");
+                            logisticInfo.setLoss(new BigDecimal("0"));
+                            logisticInfo.setPayment(0L);
+                            logisticInfo.setSigningWay(0);
+                            logisticInfo.setLossUnit("");
+                            logisticInfo.setBillingMode("");
+                            logisticInfo.setRemark("");
+                            logisticInfo.setType(0);
+
+                            return logisticInfo;
+                        }
+                ).collect(Collectors.toList());
+                addLogisticOrderParam.setLogisticInfo(collect);
+            }
+
+        }
         addLogisticOrderParam.setTradeOrderId(kwoTradeOrder.getId());
         addLogisticOrderParam.setTradeOrderId(kwoTradeOrder.getId());
         addLogisticOrderParam.setTradeOrderNo(kwoTradeOrder.getTOrderNo());
         addLogisticOrderParam.setTradeOrderNo(kwoTradeOrder.getTOrderNo());
         if (Objects.equals(tradeContractResDto.getConsignment(), 1)) {//买方托运
         if (Objects.equals(tradeContractResDto.getConsignment(), 1)) {//买方托运
@@ -2349,15 +2435,71 @@ public class KwoTradeOrderService {
         addLogisticOrderParam.setGoodsPriceUnit(byOrderId.getUnit());
         addLogisticOrderParam.setGoodsPriceUnit(byOrderId.getUnit());
         List<KwoTradeOrderAddress> kwoTradeOrderAddresses = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
         List<KwoTradeOrderAddress> kwoTradeOrderAddresses = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
         KwoTradeOrderAddress kwoTradeOrderAddress = kwoTradeOrderAddresses.get(0);
         KwoTradeOrderAddress kwoTradeOrderAddress = kwoTradeOrderAddresses.get(0);
-        addLogisticOrderParam.setLoadName(kwoTradeOrderAddress.getName());
-        addLogisticOrderParam.setLoadCityCode(kwoTradeOrderAddress.getCityCode());
-        addLogisticOrderParam.setLoadCityName(kwoTradeOrderAddress.getCityName());
-        addLogisticOrderParam.setLoadContacts(kwoTradeOrderAddress.getContacts());
-        addLogisticOrderParam.setLoadPhone(kwoTradeOrderAddress.getPhone());
-        addLogisticOrderParam.setLoadDetailAddress(kwoTradeOrderAddress.getDetailAddress());
-
+        if (Objects.nonNull(kwoTradeOrderAddress)) {
+            addLogisticOrderParam.setLoadName(kwoTradeOrderAddress.getName());
+            addLogisticOrderParam.setLoadCityCode(kwoTradeOrderAddress.getCityCode());
+            addLogisticOrderParam.setLoadCityName(kwoTradeOrderAddress.getCityName());
+            addLogisticOrderParam.setLoadContacts(kwoTradeOrderAddress.getContacts());
+            addLogisticOrderParam.setLoadPhone(kwoTradeOrderAddress.getPhone());
+            addLogisticOrderParam.setLoadDetailAddress(kwoTradeOrderAddress.getDetailAddress());
+        }
+
+        List<KwoTradeOrderAddress> kwoTradeOrderAddresses2 = addressMap.get(String.valueOf(AddressTypeEnum.SHIPMENT.getCode()));
+        KwoTradeOrderAddress unloadAddress = kwoTradeOrderAddresses2.get(0);
+        if (Objects.nonNull(unloadAddress)) {
+            addLogisticOrderParam.setUnloadId(unloadAddress.getId());
+            addLogisticOrderParam.setUnloadName(unloadAddress.getName());
+            addLogisticOrderParam.setUnloadCityCode(unloadAddress.getCityCode());
+            addLogisticOrderParam.setUnloadCityName(unloadAddress.getCityName());
+            addLogisticOrderParam.setUnLoadDetailAddress(unloadAddress.getDetailAddress());
+        }
+
+        log.info("创建物流订单:{}", JSONObject.toJSONString(addLogisticOrderParam));
         transportRemoteService.addLogisticOrder(addLogisticOrderParam);
         transportRemoteService.addLogisticOrder(addLogisticOrderParam);
+        return true;
+    }
 
 
+    /**
+     * 手动完结订单
+     *
+     * @param tradeOrderSettleParam
+     * @return
+     */
+    public Object settleOrder(TradeOrderSettleParam tradeOrderSettleParam) {
+        KwoTradeOrder kwoTradeOrder = new KwoTradeOrder();
+        List<KwtLogisticsOrderVO> logisticOrderList = transportRemoteService.getLogisticOrderList(new OrderFinishParam(tradeOrderSettleParam.getId()));
+        if (CollUtil.isNotEmpty(logisticOrderList)) {
+            if (logisticOrderList.stream().allMatch(d -> Objects.equals(d.getStatus(), LogisticsOrderV1Enum.HAVE_FINISHED.getCode()))) {
+                kwoTradeOrder.setStatus(TradeOrderStatusEnum.SUCCESS.getCode());
+            } else {
+                kwoTradeOrder.setStatus(TradeOrderStatusEnum.DEAL.getCode());
+            }
+        } else {
+            kwoTradeOrder.setStatus(TradeOrderStatusEnum.DEAL.getCode());
+        }
+        kwoTradeOrder.setId(tradeOrderSettleParam.getId());
+        kwoTradeOrder.setUpdateBy(LoginUserHolder.getUserId());
+        kwoTradeOrder.setUpdateTime(new Date());
+        kwoTradeOrderMapper.updateById(kwoTradeOrder);
+        //通知下游,贸易订单已完结,或处于完结中。
+        transportRemoteService.logisticOrderFinish(new OrderFinishParam(tradeOrderSettleParam.getId()));
         return true;
         return true;
     }
     }
+
+    public void updateOrderAmount(TradeOrderSettlePara tradeOrderSettlePara) {
+        if (Objects.isNull(tradeOrderSettlePara.getTOrderId())) {
+            throw new BusinessException("订单id不能为空");
+        }
+        KwoTradeOrder kwoTradeOrder = kwoTradeOrderMapper.selectById(tradeOrderSettlePara.getTOrderId());
+        KwoTradeOrder kwoTradeOrder1 = new KwoTradeOrder();
+        kwoTradeOrder1.setId(kwoTradeOrder.getId());
+        if (Objects.nonNull(tradeOrderSettlePara.getLoadAmount())) {
+            kwoTradeOrder1.setLoadAmount(NumberUtil.add(tradeOrderSettlePara.getLoadAmount(), kwoTradeOrder.getLoadAmount()));
+        }
+        if (Objects.nonNull(tradeOrderSettlePara.getUnloadAmount())) {
+            kwoTradeOrder1.setUnloadAmount(NumberUtil.add(tradeOrderSettlePara.getUnloadAmount(), kwoTradeOrder.getUnloadAmount()));
+        }
+
+        kwoTradeOrderMapper.updateById(kwoTradeOrder1);
+    }
 }
 }

+ 4 - 0
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderTransportService.java

@@ -23,6 +23,10 @@ public class KwoTradeOrderTransportService {
         kwoTradeOrderTransportMapper.insert(kwoTradeOrderTransport);
         kwoTradeOrderTransportMapper.insert(kwoTradeOrderTransport);
     }
     }
 
 
+    /**
+     * @param id 贸易订单id
+     * @return
+     */
     public List<KwoTradeOrderTransport> queryList(Long id) {
     public List<KwoTradeOrderTransport> queryList(Long id) {
         return kwoTradeOrderTransportMapper.selectList(new LambdaQueryWrapper<KwoTradeOrderTransport>().eq(KwoTradeOrderTransport::getTOrderId, id).eq(KwoTradeOrderTransport::getDelFlag, 0));
         return kwoTradeOrderTransportMapper.selectList(new LambdaQueryWrapper<KwoTradeOrderTransport>().eq(KwoTradeOrderTransport::getTOrderId, id).eq(KwoTradeOrderTransport::getDelFlag, 0));
     }
     }