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

增加被合并去掉的代码

lengfaqiang 2 лет назад
Родитель
Сommit
1b3e05595a
24 измененных файлов с 459 добавлено и 67 удалено
  1. 6 1
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java
  2. 87 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/ListToPageDataUntil.java
  3. 59 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PageData.java
  4. 15 2
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  5. 21 3
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java
  6. 1 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/LogisticsOrderDTO.java
  7. 33 0
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/LogisticsOrderParam.java
  8. 1 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/KwtLogisticsOrderVO.java
  9. 1 1
      sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/LogisticsOrderVO.java
  10. 1 1
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java
  11. 2 2
      sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java
  12. 4 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java
  13. 1 1
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java
  14. 7 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/CarWaybillVo.java
  15. 2 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  16. 7 18
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTrack.java
  17. 1 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillCarVO.java
  18. 22 4
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  19. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  20. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  21. 67 15
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  22. 7 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java
  23. 108 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java
  24. 2 2
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

+ 6 - 1
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java

@@ -46,7 +46,12 @@ public enum LogisticsOrderEnum {
     /**
      * 物流订单-已退回
      */
-    SEND_BACK(7, "sendBack", "7", "已退回");
+    SEND_BACK(7, "sendBack", "7", "已退回"),
+
+    REJECT_ORDER(8, "rejectOrder", "8", "已拒单"),
+
+    CANCEL_ORDER(9, "cancelOrder", "9", "已撤销"),
+    ;
 
     private final Integer code;
     private final String value;

+ 87 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/ListToPageDataUntil.java

@@ -0,0 +1,87 @@
+package com.sckw.core.utils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author lfdc
+ * @description List分页工具类
+ * @date 2023-08-03 18:08:07
+ */
+public class ListToPageDataUntil {
+    /**
+     * 数据集合的分页方法,根据传入总共的数据跟页码,返回页码所需要显示多少条的数据
+     * <BR/>采用泛型的方法,即为,list中为什么类型的数据就返回什么类型的数据
+     *
+     * @param List 带有需要进行分页的数据集合
+     * @param page 第几页
+     * @param rows 显示多少条数据
+     * @return 进过分页之后返回的数据
+     */
+    public static <T> PageData<T> getListToPageData(Integer page, Integer rows, List<T> List) {
+        PageData<T> data = new PageData<>();
+        List<T> datepaging = datepaging(List, page, rows);
+        //第几页,1开始
+        data.setPage(page);
+        //每页显示的条数
+        data.setPageSize(rows);
+        //总页数
+        int size = List.size();
+        int totalPage = size / rows;
+        data.setPages(totalPage);
+        //总条数
+        data.setSize(size);
+        //每页的内容
+        data.setList(datepaging);
+        return data;
+    }
+
+    /**
+     * 数据集合的分页方法,根据传入总共的数据跟页码,返回页码所需要显示多少条的数据
+     * <BR/>采用泛型的方法,即为,list中为什么类型的数据就返回什么类型的数据
+     *
+     * @param list 带有需要进行分页的数据集合
+     * @param page 第几页
+     * @param rows 显示多少条数据
+     * @return 进过分页之后返回的数据
+     */
+    private static <T> List<T> datepaging(List<T> list, Integer page, Integer rows) {
+        /*
+         * 经过测试发现当page为0或者小于时,也就是第0页时,程序会报错,所以需要处理一下page的值
+         * 先进行空值的判断,避免程序出现null异常
+         * 当page的值小于等于0时,我们让它的值为1
+         */
+        //参数的校验 当传入过来的list集合为null时,先进行实例化
+        if (list == null) {
+            list = new ArrayList<T>();
+        }
+        //当传入过来的page为null时,先进行赋值操作
+        if ((Object) page == null) {
+            page = 1;
+        }
+        //当传入过来的rows为null时,先进行赋值操作
+        if ((Object) rows == null) {
+            rows = 1;
+        }
+        if (page <= 0) {
+            page = 1;
+        }
+        //记录一下数据一共有多少条
+        int totalitems = list.size();
+        //实例化一个接受分页处理之后的数据
+        List<T> afterList = new ArrayList<T>();
+        /*
+         * 进行分页处理,采用for循环的方式来进行处理
+         * 首先for循环中,i应该从哪里开始:i应该从 (当前是第几页 -1 乘以 条数) 开始
+         * 然后for循环应该到哪里结束,也就是i应该小于:判断(开始的索引+显示条数)是不是大于总条数,如果大于就是总条数,如果小于就是(开始的索引+显示条数)
+         * 然后让i++
+         */
+        for (int i = (page - 1) * rows; i < (((page - 1) * rows) + rows > totalitems ? totalitems : ((page - 1) * rows) + rows); i++) {
+            //然后将数据存入afterList中
+            afterList.add(list.get(i));
+        }
+        //然后将处理后的数据集合进行返回
+        return afterList;
+    }
+
+}

+ 59 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/utils/PageData.java

@@ -0,0 +1,59 @@
+package com.sckw.core.utils;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @author lfdc
+ * @description
+ * @date 2023-08-03 18:08:09
+ */
+@Data
+public class PageData<T> {
+
+    /**
+     * 当前页
+     */
+    private int page;
+    /**
+     * 当前页的数量
+     */
+    private int pageSize;
+    /**
+     * 总条数
+     */
+    private int size;
+
+    /**
+     * 由于startRow和endRow不常用,这里说个具体的用法
+     * 可以在页面中"显示startRow到endRow 共size条数据"
+     * 当前页面第一个元素在数据库中的行号
+     */
+    private long startRow;
+    /**
+     * 当前页面最后一个元素在数据库中的行号
+     */
+    private long endRow;
+    /**
+     * 总页数
+     */
+    private int pages;
+    /**
+     * 前一页
+     */
+    private int prePage;
+    /**
+     * 下一页
+     */
+    private int nextPage;
+    /**
+     * 展示数据
+     */
+    private List list;
+
+    /**
+     * 是否为第一页
+     */
+    private boolean isFirstPage = false;
+}

+ 15 - 2
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java

@@ -174,12 +174,12 @@ public class SckwLogisticsOrder {
     /**
      * 总亏吨量(自己承运总亏吨量+分包承运总亏吨量)
      */
-    private BigDecimal deficitTotalAmount;
+    private BigDecimal totalDeficitAmount;
 
     /**
      * 总亏吨扣款(自己承运总亏吨扣款+分包承运总亏吨扣款)
      */
-    private BigDecimal deficitTotalPrice;
+    private BigDecimal totalDeficitPrice;
 
     /**
      * 付款方式(预付款、线下支付、第三方支付)
@@ -442,4 +442,17 @@ public class SckwLogisticsOrder {
      * 计费方式
      */
     private String billingModeLabel;
+
+    /**
+     * 计划开始时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    /**
+     * 计划结束时间
+     */
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
 }

+ 21 - 3
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/dubbo/TransportDubboService.java

@@ -1,8 +1,10 @@
 package com.sckw.transport.api.dubbo;
 
+import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.api.model.dto.AddressResDTO;
-import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
+import com.sckw.transport.api.model.param.LogisticsOrderParam;
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 
 import java.util.List;
 import java.util.Map;
@@ -48,11 +50,27 @@ public interface TransportDubboService {
      */
     List<AddressResDTO> getLogisticsOrderAddressListByEntId(Long entId);
 
+    /**
+     * 贸易订单验证物流订单是否已完成
+     *
+     * @param tOrderId 贸易订单id
+     * @return
+     */
+    boolean checkLogisticsOrderByTradeOrderId(Long tOrderId);
+
+    /**
+     * 对账修改物流订单信息
+     *
+     * @param logisticsOrderParam 请求物流订单数据
+     * @return
+     */
+    HttpResult checkLogisticsOrderStatusById(LogisticsOrderParam logisticsOrderParam);
+
     /**
      * 根据企业id获取物流订单地址信息
      *
      * @param entIds 企业id
      * @return
      */
-    Map<Long,List<AddressResDTO>> getLogisticsOrderAddressListByEntId(List<Long> entIds);
+    Map<Long, List<AddressResDTO>> getLogisticsOrderAddressListByEntId(List<Long> entIds);
 }

+ 1 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/vo/LogisticsOrderDTO.java → sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/LogisticsOrderDTO.java

@@ -1,4 +1,4 @@
-package com.sckw.transport.api.model.dto.vo;
+package com.sckw.transport.api.model.dto;
 
 import lombok.Data;
 

+ 33 - 0
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/param/LogisticsOrderParam.java

@@ -0,0 +1,33 @@
+package com.sckw.transport.api.model.param;
+
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lfdc
+ * @description dubbo调用物流订单请求参数
+ * @date 2023-08-09 09:08:10
+ */
+@Data
+public class LogisticsOrderParam {
+    /**
+     * 物流订单id
+     */
+    private Long lOrderId;
+
+    /**
+     * 要修改成的单据状态
+     */
+    private String status;
+
+    /**
+     * 修改人
+     */
+    private Long updateBy;
+
+    /**
+     * 修改时间
+     */
+    private Date updateTime;
+}

+ 1 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/vo/KwtLogisticsOrderVO.java → sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/KwtLogisticsOrderVO.java

@@ -1,4 +1,4 @@
-package com.sckw.transport.api.model.dto.vo;
+package com.sckw.transport.api.model.vo;
 
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;

+ 1 - 1
sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/dto/vo/LogisticsOrderVO.java → sckw-modules-api/sckw-transport-api/src/main/java/com/sckw/transport/api/model/vo/LogisticsOrderVO.java

@@ -1,4 +1,4 @@
-package com.sckw.transport.api.model.dto.vo;
+package com.sckw.transport.api.model.vo;
 
 import lombok.Data;
 

+ 1 - 1
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/model/vo/res/LedgerLogisticsDetailVo.java

@@ -1,7 +1,7 @@
 package com.sckw.payment.model.vo.res;
 
 import com.fasterxml.jackson.annotation.JsonFormat;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
+import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import lombok.Getter;
 import lombok.Setter;
 

+ 2 - 2
sckw-modules/sckw-payment/src/main/java/com/sckw/payment/service/KwpLedgerLogisticsService.java

@@ -29,8 +29,8 @@ import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.transport.api.dubbo.TransportDubboService;
-import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;

+ 4 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwAcceptCarriageService.java

@@ -278,8 +278,10 @@ public class KwAcceptCarriageService {
             vo.setRemark(logisticsOrder.getRemark());
             vo.setShipmentsContacts(logisticsOrder.getLoadContacts());
             vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
-            vo.setShipmentsDateTime(logisticsOrder.getLoadTime() == null ?
-                    null : DateUtil.getDateTime(logisticsOrder.getLoadTime()));
+            vo.setShipmentsDateTime(logisticsOrder.getStartTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getStartTime()));
+            vo.setReceiveGoodsDateTime(logisticsOrder.getEndTime() == null ?
+                    null : DateUtil.getDateTime(logisticsOrder.getEndTime()));
             vo.setShipmentsPhone(logisticsOrder.getLoadPhone());
             vo.setSigning(logisticsOrder.getContractSigningWay());
             vo.setStatus(logisticsOrder.getStatus());

+ 1 - 1
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwTransportService.java

@@ -23,7 +23,7 @@ import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.transport.api.dubbo.TransportDubboService;
-import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;

+ 7 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/CarWaybillVo.java

@@ -1,9 +1,8 @@
 package com.sckw.report.service.vo;
 
-import com.fasterxml.jackson.annotation.JsonAlias;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import lombok.Data;
 import lombok.experimental.Accessors;
-import com.fasterxml.jackson.annotation.JsonProperty;
 
 import java.io.Serial;
 import java.io.Serializable;
@@ -56,6 +55,12 @@ public class CarWaybillVo implements Serializable {
      */
     private String  status;
 
+    /**
+     * 承运车队
+     */
+    private String firmName;
+
+
     /**
      * 派车时间
      */

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java

@@ -2,8 +2,8 @@ package com.sckw.transport.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.transport.api.model.dto.AddressResDTO;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderDTO;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
+import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
+import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.param.LogisticsOrderParam;

+ 7 - 18
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTrack.java

@@ -3,6 +3,7 @@ package com.sckw.transport.model;
 import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
+
 import java.io.Serializable;
 import java.util.Date;
 
@@ -26,39 +27,27 @@ public class KwtWaybillOrderTrack implements Serializable {
     private Long wOrderId;
 
     /**
-     * 装卸货时间
+     * 备注
      */
-    private Date operateTime;
+    private String remark;
 
     /**
      * 用户状态(待受理、待运输、运输中、已完成、已取消)
      */
     private Integer status;
 
-    /**
-     * 备注
-     */
-    private String remark;
-
-    /**
-     * 创建人
-     */
     private Long createBy;
 
-    /**
-     * 创建时间
-     */
     private Date createTime;
 
-    /**
-     * 创建人更新人
-     */
     private Long updateBy;
 
+    private Date updateTime;
+
     /**
-     * 更新时间
+     * 装卸货时间
      */
-    private Date updateTime;
+    private Date operateTime;
 
     /**
      * 是否删除(0未删除,1删除)

+ 1 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillCarVO.java

@@ -2,7 +2,6 @@ package com.sckw.transport.model.vo;
 
 import lombok.Data;
 import lombok.experimental.Accessors;
-import org.stringtemplate.v4.ST;
 
 /**
  * @author JC
@@ -38,7 +37,7 @@ public class WaybillCarVO {
      */
     private String driverPhone;
     /**
-     * 挂车
+     * 挂车
      */
     private String trailerNo;
 }

+ 22 - 4
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -203,7 +203,7 @@ public class AcceptCarriageOrderService {
         } else if (NumberConstant.ZERO == status) {
             orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
         } else {
-            log.info("承运订单生成物流托运 承运订单id:{}," +
+            log.info("承运订单-分包托运物流托运 承运订单id:{}," +
                             "承运订单编号:{},合同id:{},合同信息:{}",
                     bo.getLOrderId(), bo.getLOrderNo(),
                     bo.getContractId(), JSONObject.toJSONString(infoResDto));
@@ -630,6 +630,12 @@ public class AcceptCarriageOrderService {
          * */
         // 0 已签约 1待签约
         Integer status = infoResDto.getStatus();
+        //todo 2023-08-09 验证必须是合同已签约才能进行接单操作
+        if (NumberConstant.ZERO != status) {
+            result.setMsg("该订单合同未签约!");
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            return result;
+        }
         Integer orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
         if (NumberConstant.ONE == status) {
             orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
@@ -651,12 +657,13 @@ public class AcceptCarriageOrderService {
                     .set(KwtLogisticsOrder::getUpdateTime, new Date())
                     .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId()));
         } else {
+            orderStatus = LogisticsOrderEnum.REJECT_ORDER.getCode();
             //todo 当前为删除订单 后续要改为拒绝接单  数据统计在页面已退回状态中
             //删除订单
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
                     .eq(StringUtils.isNotBlank(orderDTO.getLOrderId()), KwtLogisticsOrder::getId, orderDTO.getLOrderId())
                     .eq(StringUtils.isNotBlank(orderDTO.getLOrderNo()), KwtLogisticsOrder::getLOrderNo, orderDTO.getLOrderNo())
-                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getStatus, orderStatus)
                     .set(KwtLogisticsOrder::getUpdateTime, new Date())
                     .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId()));
         }
@@ -681,7 +688,18 @@ public class AcceptCarriageOrderService {
             track.setStatus(orderStatus);
             logisticsOrderTrackMapper.updateById(track);
         }
-
+        //修改mongodb状态
+        SckwLogisticsOrder order = new SckwLogisticsOrder();
+        order.set_id(logisticsOrder.getId());
+        order.setLOrderId(logisticsOrder.getId());
+        order.setStatus(String.valueOf(orderStatus));
+        order.setUpdateTime(new Date());
+        order.setUpdateByName(LoginUserHolder.getUserName());
+        SckwBusSum busSum = new SckwBusSum();
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        busSum.setMethod(NumberConstant.TWO);
+        busSum.setObject(order);
+        streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
         return result;
     }
 
@@ -1282,7 +1300,7 @@ public class AcceptCarriageOrderService {
         if (NumberConstant.ONE == status) {
             orderStatus = LogisticsOrderEnum.TO_BE_PLANNED.getCode();
         } else if (NumberConstant.ZERO == status) {
-            orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
+            orderStatus = LogisticsOrderEnum.WAIT_DELIVERY.getCode();
         } else {
             log.info("承运订单创建订单异常");
             throw new RuntimeException("自建订单异常");

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java

@@ -722,7 +722,7 @@ public class ConsignOrderService {
         if (NumberConstant.ONE == status) {
             orderStatus = LogisticsOrderEnum.TO_BE_PLANNED.getCode();
         } else if (NumberConstant.ZERO == status) {
-            orderStatus = LogisticsOrderEnum.PENDING_ORDER.getCode();
+            orderStatus = LogisticsOrderEnum.WAIT_DELIVERY.getCode();
         } else {
             log.info("托运订单创建订单异常");
             throw new RuntimeException("自建订单异常");

+ 3 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java

@@ -1171,7 +1171,7 @@ public class LogisticsConsignmentService {
 //                        }
 //                    }
 //                }
-//                lllll(list);
+//                recursionLogisticsOrder(list);
 //            }
 ////
 ////            List<Long> collect = kwtLogisticsOrders.stream().map(KwtLogisticsOrder::getId).collect(Collectors.toList());
@@ -1255,7 +1255,7 @@ public class LogisticsConsignmentService {
         streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
     }
 
-    private void lllll(List<Map<String, Object>> list) {
+    private void recursionLogisticsOrder(List<Map<String, Object>> list) {
         if (!org.springframework.util.CollectionUtils.isEmpty(list) && list.size() > 0) {
             //倒序排序
 //                List<Map<String, Object>> maps = ListUtils.sortMapListByFeild(list, "level", "desc");
@@ -1327,7 +1327,7 @@ public class LogisticsConsignmentService {
                     }
                 }
             }
-            lllll(list);
+            recursionLogisticsOrder(list);
         }
     }
 

+ 67 - 15
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.service;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
@@ -14,21 +15,25 @@ import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
+import com.sckw.mongo.enums.BusinessTypeEnum;
+import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.order.api.dubbo.TradeOrderInfoService;
-import com.sckw.order.api.model.OrderDetailRes;
-import com.sckw.order.api.model.UpdateOrderAmountParam;
+import com.sckw.order.api.model.CreateOrCancelLogisticsOrderParam;
+import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderDTO;
+import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.CancelOrderDTO;
 import com.sckw.transport.model.dto.DocumentParamDTO;
 import com.sckw.transport.model.param.LogisticsOrderParam;
 import com.sckw.transport.model.vo.OrderDetailVO;
+import jakarta.annotation.Resource;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
@@ -78,6 +83,9 @@ public class TransportCommonService {
     @Autowired
     public KwtWaybillOrderMapper waybillOrderMapper;
 
+    @Resource
+    private StreamBridge streamBridge;
+
     /**
      * 查看订单详情
      *
@@ -218,20 +226,35 @@ public class TransportCommonService {
             /**并不存在分包,撤销数据回归到贸易订单,[待接单状态]下才能撤销托运*/
             /**调用dubbo 修改数值*/
             Long tOrderId = logisticsOrder.getTOrderId();
-            OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(tOrderId);
-            UpdateOrderAmountParam param = new UpdateOrderAmountParam();
+            CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+            param.setEntrustAmount(logisticsOrder.getAmount().negate());
+            param.setUpdateBy(LoginUserHolder.getUserId());
+            param.setUpdateByName(LoginUserHolder.getUserName());
             param.setTOrderId(tOrderId);
-            param.setActualAmount(orderDetailRes.getActualAmount().add(logisticsOrder.getLoadAmount()));
-            param.setEntrustAmount(orderDetailRes.getEntrustAmount().add(logisticsOrder.getEntrustAmount().subtract(logisticsOrder.getLoadAmount())));
-            tradeOrderInfoService.updateOrderAmount(param);
-            logisticsOrder.setDelFlag(1);
-            logisticsOrder.setUpdateTime(new Date());
-            logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+            HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+            if (HttpStatus.SUCCESS_CODE != httpResult.getCode()) {
+                log.info("撤销托运错误:,请求参数:{},响应信息:{}",JSONObject.toJSONString(param),JSONObject.toJSONString(httpResult));
+            }
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
                     .eq(KwtLogisticsOrder::getId, logisticsOrder.getId())
-                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
                     .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
                     .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+            //mongodb更新
+            SckwLogisticsOrder order = new SckwLogisticsOrder();
+            order.set_id(logisticsOrder.getId());
+            order.setLOrderId(logisticsOrder.getId());
+            order.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
+            order.setUpdateTime(new Date());
+            order.setUpdateByName(LoginUserHolder.getUserName());
+            SckwBusSum busSum = new SckwBusSum();
+            //业务汇总类型
+            busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+            //操作对象(1新增/2修改)
+            busSum.setMethod(NumberConstant.TWO);
+            //业务汇总数据对象
+            busSum.setObject(order);
+            streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
         } else {
             /**即代表存在分包,当次是属于被分包.需要将数据回归到上游数据。*/
             Long pid = logisticsOrder.getPid();
@@ -241,9 +264,9 @@ public class TransportCommonService {
             //上游分配量
             BigDecimal amount = logisticsOrder.getAmount();
             //已经完成的量
-            BigDecimal unloadAmount = logisticsOrder.getUnloadAmount();
+            BigDecimal loadAmount = logisticsOrder.getLoadAmount();
             //未完成的量
-            BigDecimal subtract = amount.subtract(unloadAmount);
+            BigDecimal subtract = amount.subtract(loadAmount);
             //.setScale(2,BigDecimal.ROUND_HALF_DOWN)
             BigDecimal add = order.getSubcontractAmount().add(subtract);
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
@@ -255,9 +278,38 @@ public class TransportCommonService {
             /**下游订单进行删除*/
             logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
                     .eq(KwtLogisticsOrder::getId, logisticsOrder.getId())
-                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
                     .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
                     .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+            /**mongodb更新*/
+            SckwLogisticsOrder sckwLogisticsOrder = new SckwLogisticsOrder();
+            sckwLogisticsOrder.set_id(logisticsOrder.getId());
+            sckwLogisticsOrder.setLOrderId(logisticsOrder.getId());
+            sckwLogisticsOrder.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
+            sckwLogisticsOrder.setUpdateTime(new Date());
+            sckwLogisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
+            SckwBusSum busSum = new SckwBusSum();
+            //业务汇总类型
+            busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+            //操作对象(1新增/2修改)
+            busSum.setMethod(NumberConstant.TWO);
+            //业务汇总数据对象
+            busSum.setObject(sckwLogisticsOrder);
+            streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
+            SckwLogisticsOrder logisticsOrder1 = new SckwLogisticsOrder();
+            logisticsOrder1.set_id(logisticsOrder.getId());
+            logisticsOrder1.setLOrderId(logisticsOrder.getId());
+            logisticsOrder1.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
+            logisticsOrder1.setUpdateTime(new Date());
+            logisticsOrder1.setUpdateByName(LoginUserHolder.getUserName());
+            SckwBusSum busSum1 = new SckwBusSum();
+            //业务汇总类型
+            busSum1.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+            //操作对象(1新增/2修改)
+            busSum1.setMethod(NumberConstant.TWO);
+            //业务汇总数据对象
+            busSum1.setObject(logisticsOrder);
+            streamBridge.send("sckw-busSum", JSON.toJSONString(busSum));
         }
         return result;
     }

+ 7 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/WaybillManagementService.java

@@ -13,7 +13,6 @@ import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.utils.DateUtil;
 import com.sckw.fleet.api.RemoteFleetService;
-import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.mongo.model.TableTops;
 import com.sckw.system.api.RemoteSystemService;
@@ -93,11 +92,15 @@ public class WaybillManagementService {
         WaybillCarVO waybillCarVO = new WaybillCarVO();
         if(!ObjectUtils.isEmpty(info)) {
             // 基础信息
+            wayBillDetailDTO.setTruckId(info.getTruckId());
+            wayBillDetailDTO.setTruckNo(info.getTruckNo());
             wayBillDetailDTO.setDriverId(info.getDriverId());
             wayBillDetailDTO.setDriverName(info.getDriverName());
             wayBillDetailDTO.setDriverPhone(info.getDriverPhone());
             wayBillDetailDTO.setDriverId(info.getDriverId());
+            wayBillDetailDTO.setWOrderId(info.getWOrderId());
             wayBillDetailDTO.setWOrderNo(info.getWOrderNo());
+            wayBillDetailDTO.setLOrderId(info.getLOrderId());
             wayBillDetailDTO.setLOrderNo(info.getLOrderNo());
             wayBillDetailDTO.setEntrustAmount(String.valueOf(info.getEntrustAmount()));
             wayBillDetailDTO.setType(String.valueOf(info.getType()));
@@ -121,9 +124,12 @@ public class WaybillManagementService {
             if(!ObjectUtils.isEmpty(truckTypeString)) {
                 waybillCarVO.setType(truckTypeString.getLabel());
             }
+            waybillCarVO.setTruckId(String.valueOf(info.getTruckId()));
             waybillCarVO.setTruckNo(info.getTruckNo());
+            waybillCarVO.setType(info.getTruckType());
             waybillCarVO.setDriverName(info.getDriverName());
             waybillCarVO.setDriverPhone(info.getDriverPhone());
+            waybillCarVO.setDriverId(String.valueOf(info.getTruckId()));
             waybillCarVO.setTrailerNo(info.getTruckTrailerNo());
             // 票据
             waybillTicketVO.setLoadTime(DateUtil.getDateTime(info.getLoadTime()));

+ 108 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/dubbo/TransportDubboServiceImpl.java

@@ -1,14 +1,22 @@
 package com.sckw.transport.service.dubbo;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.utils.CollectionUtils;
+import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
+import com.sckw.core.web.response.HttpResult;
+import com.sckw.mongo.enums.BusinessTypeEnum;
+import com.sckw.mongo.model.SckwLogisticsOrder;
+import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.api.dubbo.TransportDubboService;
 import com.sckw.transport.api.model.dto.AddressResDTO;
-import com.sckw.transport.api.model.dto.vo.KwtLogisticsOrderVO;
-import com.sckw.transport.api.model.dto.vo.LogisticsOrderVO;
+import com.sckw.transport.api.model.param.LogisticsOrderParam;
+import com.sckw.transport.api.model.vo.KwtLogisticsOrderVO;
+import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import com.sckw.transport.dao.KwtLogisticsOrderGoodsMapper;
 import com.sckw.transport.dao.KwtLogisticsOrderMapper;
 import com.sckw.transport.dao.KwtLogisticsOrderUnitMapper;
@@ -16,10 +24,13 @@ import com.sckw.transport.dao.KwtWaybillOrderMapper;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtLogisticsOrderUnit;
 import com.sckw.transport.model.KwtWaybillOrder;
+import jakarta.annotation.Resource;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 
 import java.util.*;
@@ -29,10 +40,14 @@ import java.util.*;
  * @description 运输服务dubbo接口
  * @date 2023-07-11 14:07:28
  */
+@Slf4j
 @Service
 @DubboService(group = "design", version = "2.0.0", timeout = 50000)
 public class TransportDubboServiceImpl implements TransportDubboService {
 
+    @Resource
+    private StreamBridge streamBridge;
+
     @DubboReference(version = "2.0.0", group = "design", check = false)
     RemoteSystemService remoteSystemService;
 
@@ -113,6 +128,97 @@ public class TransportDubboServiceImpl implements TransportDubboService {
         return null;
     }
 
+    /**
+     * 贸易订单验证物流订单是否已完成
+     *
+     * @param tOrderId 贸易订单id
+     * @return false 无操作中的物流订单  ture 存在操作中的物流订单
+     */
+    @Override
+    public boolean checkLogisticsOrderByTradeOrderId(Long tOrderId) {
+        boolean flag = false;
+        List<Integer> statusList = new ArrayList<>();
+        statusList.add(LogisticsOrderEnum.TO_BE_PLANNED.getCode());
+        statusList.add(LogisticsOrderEnum.PENDING_ORDER.getCode());
+        statusList.add(LogisticsOrderEnum.WAIT_DELIVERY.getCode());
+        statusList.add(LogisticsOrderEnum.IN_TRANSIT.getCode());
+        List<KwtLogisticsOrder> logisticsOrders = logisticsOrderMapper.selectList(
+                new LambdaQueryWrapper<KwtLogisticsOrder>()
+                        .eq(KwtLogisticsOrder::getTOrderId, tOrderId)
+                        .eq(KwtLogisticsOrder::getDelFlag, NumberConstant.ZERO)
+                        .in(KwtLogisticsOrder::getStatus, statusList)
+        );
+        if (!org.springframework.util.CollectionUtils.isEmpty(logisticsOrders)) {
+            flag = true;
+        }
+        return flag;
+    }
+
+    /**
+     * 对账修改物流订单信息
+     *
+     * @param logisticsOrderParam 请求物流订单数据
+     * @return
+     */
+    @Override
+    public HttpResult checkLogisticsOrderStatusById(LogisticsOrderParam logisticsOrderParam) {
+        HttpResult httpResult = new HttpResult();
+        log.info("对账修改物流订单参数:{}", JSONObject.toJSONString(logisticsOrderParam));
+        Long lOrderId = logisticsOrderParam.getLOrderId();
+        String status = logisticsOrderParam.getStatus();
+        if (lOrderId == null) {
+            httpResult.setMsg("物流订单不能为空!");
+            httpResult.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            return httpResult;
+        }
+
+        LambdaQueryWrapper<KwtLogisticsOrder> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwtLogisticsOrder::getId, lOrderId);
+        wrapper.eq(KwtLogisticsOrder::getDelFlag, NumberConstant.ZERO);
+        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(wrapper);
+        if (kwtLogisticsOrder == null) {
+            httpResult.setMsg("物流订单不存在!");
+            httpResult.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            return httpResult;
+        }
+
+        if (LogisticsOrderEnum.HAVE_RECONCILED.getStatus().equals(status)) {
+            if (!LogisticsOrderEnum.HAVE_FINISHED.getStatus().equals(status)) {
+                httpResult.setMsg("物流单据状态有误,不能修改");
+                httpResult.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+                return httpResult;
+            }
+        } else if (LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getStatus().equals(status)) {
+            if (!LogisticsOrderEnum.HAVE_RECONCILED.getStatus().equals(status)) {
+                httpResult.setMsg("物流单据状态有误,不能修改");
+                httpResult.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+                return httpResult;
+            }
+        } else {
+            httpResult.setMsg("物流单据状态有误");
+            httpResult.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            return httpResult;
+        }
+        //修改单据状态
+        kwtLogisticsOrder.setStatus(Integer.valueOf(status));
+        kwtLogisticsOrder.setUpdateTime(new Date());
+        kwtLogisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+        logisticsOrderMapper.updateById(kwtLogisticsOrder);
+        //修改mongodb状态
+        SckwLogisticsOrder order = new SckwLogisticsOrder();
+        order.set_id(kwtLogisticsOrder.getId());
+        order.setLOrderId(kwtLogisticsOrder.getId());
+        order.setStatus(status);
+        order.setUpdateTime(new Date());
+        order.setUpdateByName(LoginUserHolder.getUserName());
+        SckwBusSum busSum = new SckwBusSum();
+        busSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+        busSum.setMethod(NumberConstant.ONE);
+        busSum.setObject(order);
+        streamBridge.send("sckw-busSum", com.alibaba.fastjson2.JSON.toJSONString(busSum));
+        return HttpResult.ok();
+    }
+
     /**
      * 根据企业id 获取物流订单相关地址信息
      *

+ 2 - 2
sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml

@@ -108,7 +108,7 @@
           AND b.del_flag = '0'
           AND a.t_order_id = #{id,jdbcType=VARCHAR}
     </select>
-    <select id="selectLogisticOrderData" resultType="com.sckw.transport.api.model.dto.vo.LogisticsOrderDTO">
+    <select id="selectLogisticOrderData" resultType="com.sckw.transport.api.model.dto.LogisticsOrderDTO">
         SELECT
         a.id as lOrderId,
         a.l_order_no as lOrderNO,
@@ -404,7 +404,7 @@
         GROUP BY b.truck_no
     </select>
 
-    <select id="selectLogisticOrderList" resultType="com.sckw.transport.api.model.dto.vo.LogisticsOrderVO">
+    <select id="selectLogisticOrderList" resultType="com.sckw.transport.api.model.vo.LogisticsOrderVO">
         SELECT
         a.id as lOrderId,
         a.l_order_no as lOrderNO,