瀏覽代碼

1:接单操作
2:撤销托运
3:运单详情接口
4:派车接口

lengfaqiang 2 年之前
父節點
當前提交
d07aa74702
共有 34 個文件被更改,包括 607 次插入112 次删除
  1. 1 1
      sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwLogisticsOrder.java
  2. 12 3
      sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java
  3. 3 2
      sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/KwsDeptDao.java
  4. 1 1
      sckw-modules/sckw-example/src/main/resources/mapper/KwsDeptDao.xml
  5. 6 6
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java
  6. 6 0
      sckw-modules/sckw-transport/pom.xml
  7. 55 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/common/enums/CarWaybillEnum.java
  8. 3 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/common/enums/LogisticsOrderEnum.java
  9. 20 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java
  10. 0 15
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java
  11. 17 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/TransportCommonController.java
  12. 6 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  13. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java
  14. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderAddress.java
  15. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderCirculate.java
  16. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderContract.java
  17. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderGoods.java
  18. 2 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderSubcontract.java
  19. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderTrack.java
  20. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderUnit.java
  21. 14 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrder.java
  22. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTicket.java
  23. 1 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTrack.java
  24. 71 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/CarListDTO.java
  25. 1 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderDTO.java
  26. 73 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/SendCarDTO.java
  27. 0 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsConsignmentParam.java
  28. 133 3
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  29. 0 25
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  30. 39 36
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  31. 79 2
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java
  32. 16 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/utils/StringUtils.java
  33. 37 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  34. 3 1
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

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

@@ -192,7 +192,7 @@ public class SckwLogisticsOrder {
     /**
      * 商品类型
      */
-    private Long goodsType;
+    private String goodsType;
 
     /**
      * 商品行业

+ 12 - 3
sckw-modules/sckw-example/src/main/java/com/sckw/example/controller/ExcelExportController.java

@@ -1,6 +1,7 @@
 package com.sckw.example.controller;
 
 import com.alibaba.fastjson.JSONObject;
+import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.model.file.FileInfo;
 import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
@@ -138,10 +139,11 @@ public class ExcelExportController {
     @RequestMapping(value = "globalTransactionalDemo", method = RequestMethod.GET)
     public HttpResult globalTransactionalDemo() {
         KwsDept dos = new KwsDept();
-        HttpResult result = null;
+        HttpResult result = new HttpResult();
         result.setMsg(HttpStatus.SUCCESS_MESSAGE);
         try {
-            dos.setId(new IdWorker(1).nextId());
+            long l = new IdWorker(1).nextId();
+            dos.setId(l);
             dos.setSystemType("1");
             dos.setAccount("张三");
             dos.setPassword("password");
@@ -155,9 +157,16 @@ public class ExcelExportController {
             dos.setUpdateBy(123L);
             dos.setCreateTime(new Date());
             dos.setUpdateTime(new Date());
-            kwsDeptDao.insert(dos);
+//            kwsDeptDao.insert(dos);
+//            KwsDept kwsDept = new KwsDept();
+            int insert = kwsDeptDao.insert(dos);
             String xid = RootContext.getXID();
+            System.out.println(xid);
+            System.out.println(l);
             result = fileApiDubboService.selectAll();
+            long nextId = new IdWorker(NumberConstant.ONE).nextId();
+            dos.setId(nextId);
+            int insert1 = kwsDeptDao.insert(dos);
             log.info(JSONObject.toJSONString(result));
         } catch (Exception e) {
             result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);

+ 3 - 2
sckw-modules/sckw-example/src/main/java/com/sckw/example/dao/KwsDeptDao.java

@@ -1,9 +1,10 @@
 package com.sckw.example.dao;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.sckw.example.model.KwsDept;
 import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
-public interface KwsDeptDao {
-    int insert(KwsDept kwsDept);
+public interface KwsDeptDao extends BaseMapper<KwsDept> {
+//    int insert(KwsDept kwsDept);
 }

+ 1 - 1
sckw-modules/sckw-example/src/main/resources/mapper/KwsDeptDao.xml

@@ -40,7 +40,7 @@
         where id = #{id,jdbcType=BIGINT}
     </delete>
     <insert id="insert" parameterType="com.sckw.example.dao.KwsDeptDao">
-        insert into kws_user (id, system_type, account,
+        insert into sckw_system.kws_user (id, system_type, account,
                               `password`, `name`, phone,
                               photo, email, client_id,
                               is_main, remark, `status`,

+ 6 - 6
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/dto/KwfTruckDto.java

@@ -112,10 +112,10 @@ public class KwfTruckDto {
         return isMatch;
     }
 
-    public static void main(String[] args) {
-        String regular = "^[0-9]+(.[0-9]{2})?$";
-        String str = "1.2";
-        boolean bool = matchs(regular, str);
-        System.out.println(bool);
-    }
+//    public static void main(String[] args) {
+//        String regular = "^[0-9]+(.[0-9]{2})?$";
+//        String str = "1.2";
+//        boolean bool = matchs(regular, str);
+//        System.out.println(bool);
+//    }
 }

+ 6 - 0
sckw-modules/sckw-transport/pom.xml

@@ -54,6 +54,12 @@
             <artifactId>sckw-system-api</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.sckw</groupId>
+            <artifactId>sckw-product-api</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+
         <dependency>
             <groupId>com.sckw</groupId>
             <artifactId>sckw-common-seata</artifactId>

+ 55 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/common/enums/CarWaybillEnum.java

@@ -0,0 +1,55 @@
+package com.sckw.transport.common.enums;
+
+/**
+ * @author lfdc
+ * @description 车辆运单状态枚举
+ * @date 2023-07-14 14:07:23
+ */
+public enum CarWaybillEnum {
+    PENDING_ORDER(1, "pendingOrder", "1", "待接单"),
+    PENDING_VEHICLE(2, "pendingVehicle", "2", "待出车"),
+    EXIT_COMPLETED(3, "exitCompleted", "3", "已出车"),
+    WAIT_LOADING(4, "waitLoading", "4", "到达装货点"),
+    COMPLETION_LOADING(5, "completionLoading", "5", "已装货"),
+    WAIT_UNLOADING(6, "waitUnloading", "6", "到达卸货点"),
+    COMPLETION_UNLOADING(7, "completionUnloading", "7", "已卸货"),
+    APPROVAL_COMPLETED(8, "approvalCompleted", "8", "已核单"),
+    REJECT_ORDER(9, "rejectOrder", "9", "拒接单");
+
+    private final Integer code;
+    private final String value;
+    private final String status;
+    private final String destination;
+
+    public Integer getCode() {
+        return code;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public String getDestination() {
+        return destination;
+    }
+
+    CarWaybillEnum(Integer code, String value, String status, String destination) {
+        this.code = code;
+        this.value = value;
+        this.status = status;
+        this.destination = destination;
+    }
+
+    public static String getLogisticsOrderValue(Integer code) {
+        for (CarWaybillEnum waybillEnum : CarWaybillEnum.values()) {
+            if (waybillEnum.getCode().equals(code)) {
+                return waybillEnum.getValue();
+            }
+        }
+        return null;
+    }
+}

+ 3 - 3
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/common/enums/LogisticsOrderEnum.java

@@ -14,8 +14,8 @@ public enum LogisticsOrderEnum {
 //    WAIT_UNLOADING(5, "waitUnLoading", "5", "待卸货"),
     HAVE_FINISHED(4, "haveFinished", "4", "已完成"),
     HAVE_RECONCILED(5, "haveReconciled", "5", "已对账"),
-    HAVE_ALREADY_SETTLED(6,"haveAlreadySettled","5","已结算"),
-    SEND_BACK(7,"sendBack","5","已退回");
+    HAVE_ALREADY_SETTLED(6, "haveAlreadySettled", "5", "已结算"),
+    SEND_BACK(7, "sendBack", "5", "已退回");
 
     private final Integer code;
     private final String value;
@@ -53,4 +53,4 @@ public enum LogisticsOrderEnum {
         }
         return null;
     }
-    }
+}

+ 20 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/AcceptCarriageOrderController.java

@@ -6,7 +6,9 @@ import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
 import com.sckw.transport.model.dto.OrderTakingDTO;
+import com.sckw.transport.model.dto.SendCarDTO;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
+import com.sckw.transport.model.param.LogisticsConsignmentParam;
 import com.sckw.transport.model.vo.ConsignOrderVO;
 import com.sckw.transport.service.AcceptCarriageOrderService;
 import jakarta.servlet.http.HttpServletResponse;
@@ -89,13 +91,14 @@ public class AcceptCarriageOrderController {
     public HttpResult orderTaking(@Validated @RequestBody OrderTakingDTO orderDTO) {
         return acceptCarriageOrderService.orderTaking(orderDTO);
     }
+
     /**
      * 承运订单-分包托运
-     * @param query 查询参数
+     * @param query 请求参数
      * @return
      */
     @RequestMapping(value = "/subcontractConsignment", method = RequestMethod.POST)
-    public HttpResult subcontractConsignment(AcceptCarriageOrderQuery query) {
+    public HttpResult subcontractConsignment(LogisticsConsignmentParam query) {
         try {
             return acceptCarriageOrderService.subcontractConsignment(query);
         } catch (Exception e) {
@@ -104,4 +107,19 @@ public class AcceptCarriageOrderController {
         }
     }
 
+    /**
+     * 承运订单-提交派车
+     * @param sendCarDTO 请求参数
+     * @return
+     */
+    @RequestMapping(value = "/commitSendCar", method = RequestMethod.POST)
+    public HttpResult commitSendCar(@Validated @RequestBody SendCarDTO sendCarDTO) {
+        try {
+            return acceptCarriageOrderService.commitSendCar(sendCarDTO);
+        } catch (Exception e) {
+            log.error("派车 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 }

+ 0 - 15
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/ConsignOrderController.java

@@ -57,21 +57,6 @@ public class ConsignOrderController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
-    /**
-     * 托运订单-撤销托运
-     *
-     * @param orderDto
-     * @return
-     */
-    @RequestMapping(value = "/cancelConsign", method = RequestMethod.POST)
-    public HttpResult cancelConsign(@Validated @RequestBody OrderDTO orderDto) {
-        try {
-            return consignOrderService.cancelConsign(orderDto);
-        } catch (Exception e) {
-            log.error("托运订单-撤销托运运单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
-            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
-        }
-    }
 
     /**
      * 托运订单-完结订单

+ 17 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/TransportCommonController.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSONObject;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.transport.model.dto.DocumentParamDTO;
+import com.sckw.transport.model.dto.OrderDTO;
 import com.sckw.transport.service.TransportCommonService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -42,4 +43,20 @@ public class TransportCommonController {
         }
     }
 
+    /**
+     * 托运订单/承运订单-撤销托运
+     *
+     * @param orderDto
+     * @return
+     */
+    @RequestMapping(value = "/cancelConsign", method = RequestMethod.POST)
+    public HttpResult cancelConsign(@Validated @RequestBody OrderDTO orderDto) {
+        try {
+            return transportCommonService.cancelConsign(orderDto);
+        } catch (Exception e) {
+            log.error("托运订单-撤销托运运单失败:订单id {},error {} ", orderDto.getId(), e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
 }

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

@@ -6,6 +6,10 @@ import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
 public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
+    /**
+     * @param id
+     * @return
+     */
     int deleteByPrimaryKey(Long id);
 
     int insert(KwtLogisticsOrder record);
@@ -17,4 +21,6 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
     int updateByPrimaryKeySelective(KwtLogisticsOrder record);
 
     int updateByPrimaryKey(KwtLogisticsOrder record);
+
+    void removeById(KwtLogisticsOrder logisticsOrder);
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrder.java

@@ -175,7 +175,7 @@ public class KwtLogisticsOrder implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic(value = "0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderAddress.java

@@ -110,7 +110,7 @@ public class KwtLogisticsOrderAddress implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderCirculate.java

@@ -94,7 +94,7 @@ public class KwtLogisticsOrderCirculate implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderContract.java

@@ -55,7 +55,7 @@ public class KwtLogisticsOrderContract implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderGoods.java

@@ -71,7 +71,7 @@ public class KwtLogisticsOrderGoods implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 2 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderSubcontract.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.model;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import lombok.Data;
 
 import java.io.Serializable;
@@ -63,6 +64,7 @@ public class KwtLogisticsOrderSubcontract implements Serializable {
     /**
      * 是否删除(0未删除,1删除)
      */
+    @TableLogic("0")
     private Integer delFlag;
 
     private static final long serialVersionUID = 1L;

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderTrack.java

@@ -51,7 +51,7 @@ public class KwtLogisticsOrderTrack implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtLogisticsOrderUnit.java

@@ -78,7 +78,7 @@ public class KwtLogisticsOrderUnit implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 14 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrder.java

@@ -36,7 +36,9 @@ public class KwtWaybillOrder implements Serializable {
      * 编号
      */
     private String wOrderNo;
-
+    /**
+     * 单据类型(1:趟次;2:循环)
+     */
     private String type;
 
     /**
@@ -94,7 +96,17 @@ public class KwtWaybillOrder implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
+
+    /**
+     * 计划开始时间
+     */
+    private Date startTime;
+
+    /**
+     * 计划结束时间
+     */
+    private Date endTime;
 
     private static final long serialVersionUID = 1L;
 }

+ 1 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrderTicket.java

@@ -76,7 +76,7 @@ public class KwtWaybillOrderTicket implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 

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

@@ -50,7 +50,7 @@ public class KwtWaybillOrderTrack implements Serializable {
      * 是否删除(0未删除,1删除)
      */
     @TableLogic("0")
-    private Integer delFlag = 0;
+    private Integer delFlag;
 
     private static final long serialVersionUID = 1L;
 }

+ 71 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/CarListDTO.java

@@ -0,0 +1,71 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author lfdc
+ * @description 派车dto
+ * @date 2023-07-13 14:07:03
+ */
+@Data
+@Accessors(chain = true)
+public class CarListDTO {
+
+    /**
+     * 司机id
+     */
+    @JsonProperty("driverId")
+    @NotNull(message = "司机姓名不能为空")
+    private String driverId;
+
+    /**
+     * 司机姓名
+     */
+    @JsonProperty("driverName")
+    @NotNull(message = "司机姓名不能为空")
+    private String driverName;
+
+    /**
+     * 司机电话
+     */
+    @JsonProperty("driverPhone")
+    @NotNull(message = "司机电话不能为空")
+    private String driverPhone;
+
+    /**
+     * 装载量
+     */
+    @JsonProperty("loadAmount")
+    @NotNull(message = "装载量不能为空")
+    private String loadAmount;
+
+    /**
+     * 趟次
+     */
+    @JsonProperty("count")
+    private Integer count;
+
+    /**
+     * 车牌号
+     */
+    @JsonProperty("truckNo")
+    @NotNull(message = "车牌号不能为空")
+    private String truckNo;
+
+    /**
+     * 车辆类型
+     */
+    @JsonProperty("catType")
+    @NotNull(message = "车辆类型不能为空")
+    private String catType;
+
+    /**
+     * 司机身份证
+     */
+    @JsonProperty("driverCard")
+    @NotNull(message = "司机身份证不能为空")
+    private String driverCard;
+}

+ 1 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/OrderDTO.java

@@ -16,6 +16,7 @@ public class OrderDTO {
     @JsonProperty("orderNo")
     @NotNull(message = "单据编号不能为空")
     private String orderNo;
+
     @JsonProperty("id")
     @NotNull(message = "数据id不能为空")
     private String id;

+ 73 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/SendCarDTO.java

@@ -0,0 +1,73 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author lfdc
+ * @description 派单dto
+ * @date 2023-07-13 15:07:01
+ */
+@Data
+public class SendCarDTO {
+    /**
+     * 物流订单id
+     */
+    @JsonProperty("lOrderId")
+    @NotNull(message = "订单id不能为空")
+    private String lOrderId;
+
+    /**
+     * 物流订单No
+     */
+    @JsonProperty("lOrderNo")
+    @NotNull(message = "订单no不能为空")
+    private String lOrderNo;
+
+    /**
+     * 装货时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date loadDateTime;
+
+    /**
+     * 卸货时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date unloadDateTime;
+
+    /**
+     * 运单号
+     */
+    @JsonProperty("waybillNumber")
+    @NotNull(message = "运单号不能为空")
+    private String waybillNumber;
+
+    /**
+     * 派车类型(1:趟次:2:循环)
+     */
+    @JsonProperty("type")
+    @NotNull(message = "派车类型不能为空")
+    private String type;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    @NotNull(message = "运力信息不能为空")
+    List<CarListDTO> carList;
+
+    /**
+     * 待运量(循环时,必传递)
+     */
+    private String waitingVolume;
+}

+ 0 - 1
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsConsignmentParam.java

@@ -157,7 +157,6 @@ public class LogisticsConsignmentParam {
      */
     @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-//    private String receiveGoodsDateTime;
     private Date receiveGoodsDateTime;
     /**
      * 计划发货时间

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

@@ -5,20 +5,27 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
+import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
+import com.sckw.core.utils.IdWorker;
 import com.sckw.core.utils.StringUtils;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
+import com.sckw.transport.common.enums.CarWaybillEnum;
 import com.sckw.transport.common.enums.LogisticsOrderEnum;
-import com.sckw.transport.dao.KwtLogisticsOrderMapper;
-import com.sckw.transport.dao.KwtLogisticsOrderTrackMapper;
+import com.sckw.transport.dao.*;
 import com.sckw.transport.model.KwtLogisticsOrder;
 import com.sckw.transport.model.KwtLogisticsOrderTrack;
+import com.sckw.transport.model.KwtWaybillOrder;
+import com.sckw.transport.model.KwtWaybillOrderTrack;
 import com.sckw.transport.model.dto.OrderDTO;
 import com.sckw.transport.model.dto.OrderTakingDTO;
+import com.sckw.transport.model.dto.CarListDTO;
+import com.sckw.transport.model.dto.SendCarDTO;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
+import com.sckw.transport.model.param.LogisticsConsignmentParam;
 import com.sckw.transport.model.vo.AcceptCarriageOrderVO;
 import com.sckw.transport.model.vo.CarWaybillVO;
 import com.sckw.transport.model.vo.ConsignmentVO;
@@ -26,7 +33,9 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
 
+import java.math.BigDecimal;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -46,6 +55,15 @@ public class AcceptCarriageOrderService {
     @Autowired
     private KwtLogisticsOrderTrackMapper logisticsOrderTrackMapper;
 
+    @Autowired
+    private KwtWaybillOrderMapper waybillOrderMapper;
+
+    @Autowired
+    private KwtWaybillOrderTrackMapper waybillOrderTrackMapper;
+
+    @Autowired
+    private KwtWaybillOrderTicketMapper waybillOrderTicketMapper;
+
     public HttpResult list(AcceptCarriageOrderQuery query) {
         List<AcceptCarriageOrderVO> list = new ArrayList<>();
         AcceptCarriageOrderVO acceptCarriageOrderVo = new AcceptCarriageOrderVO();
@@ -67,7 +85,8 @@ public class AcceptCarriageOrderService {
         return null;
     }
 
-    public HttpResult subcontractConsignment(AcceptCarriageOrderQuery query) {
+    public HttpResult subcontractConsignment(LogisticsConsignmentParam query) {
+
         return null;
     }
 
@@ -119,4 +138,115 @@ public class AcceptCarriageOrderService {
                 .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId()));
         return result;
     }
+
+    /**
+     * 派车
+     *
+     * @param sendCarDTO
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult commitSendCar(SendCarDTO sendCarDTO) {
+        log.info("承运订单提交派车信息详情:{}", JSONObject.toJSONString(sendCarDTO));
+        HttpResult result = new HttpResult();
+        KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(StringUtils.isNotBlank(sendCarDTO.getLOrderId()), KwtLogisticsOrder::getId, sendCarDTO.getLOrderId()));
+        if (logisticsOrder == null) {
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            result.setMsg("单据不存在!");
+            return result;
+        }
+        if (String.valueOf(NumberConstant.ZERO).equals(sendCarDTO.getType())) {
+            for (CarListDTO car : sendCarDTO.getCarList()) {
+                if (ObjectUtils.isEmpty(car.getCount())) {
+                    throw new RuntimeException("趟次派车时,趟次次数不能为空");
+                }
+                for (int i = 0; i < car.getCount(); i++) {
+                    Long wOrderId = new IdWorker(NumberConstant.ONE).nextId();
+                    String wOrderNo = com.sckw.transport.utils.StringUtils.getWaybillNoUtil() + i;
+                    KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
+                    waybillOrder.setType(String.valueOf(NumberConstant.ZERO));
+                    waybillOrder.setEntrustAmount(new BigDecimal(car.getLoadAmount()));
+                    insertWaybillOrder(waybillOrder, wOrderId, wOrderNo, logisticsOrder, car, sendCarDTO);
+                    //insertWaybillOrderTicket(id,wOrderNo,logisticsOrder,sendCarDTO);
+                    insertWaybillOrderTrack(wOrderId);
+                }
+            }
+        } else if (String.valueOf(NumberConstant.ONE).equals(sendCarDTO.getType())) {
+            for (CarListDTO car : sendCarDTO.getCarList()) {
+                if (ObjectUtils.isEmpty(sendCarDTO.getWaitingVolume())) {
+                    throw new RuntimeException("循环派车时,剩余可运量不能为空");
+                }
+                for (int i = 0; i < car.getCount(); i++) {
+                    Long wOrderId = new IdWorker(NumberConstant.ONE).nextId();
+                    String wOrderNo = com.sckw.transport.utils.StringUtils.getWaybillNoUtil() + i;
+                    KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
+                    waybillOrder.setType(String.valueOf(NumberConstant.ONE));
+                    waybillOrder.setEntrustAmount(new BigDecimal(sendCarDTO.getWaitingVolume()));
+                    insertWaybillOrder(waybillOrder, wOrderId, wOrderNo, logisticsOrder, car, sendCarDTO);
+                    insertWaybillOrderTrack(wOrderId);
+                }
+            }
+        } else {
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            result.setMsg("派车类型错误!");
+            return result;
+        }
+        return result;
+    }
+
+    /**
+     * 保存车辆运单状态信息
+     *
+     * @param wOrderId
+     */
+    private void insertWaybillOrderTrack(Long wOrderId) {
+        KwtWaybillOrderTrack track = new KwtWaybillOrderTrack();
+        track.setId(new IdWorker(NumberConstant.ONE).nextId());
+        track.setWOrderId(wOrderId);
+        track.setStatus(CarWaybillEnum.PENDING_ORDER.getCode());
+        track.setCreateTime(new Date());
+        track.setUpdateTime(new Date());
+        track.setCreateBy(LoginUserHolder.getUserId());
+        track.setUpdateBy(LoginUserHolder.getUserId());
+        waybillOrderTrackMapper.insert(track);
+    }
+
+    /**
+     * 保存车辆装卸单信息
+     *
+     * @param id
+     * @param wOrderNo
+     * @param logisticsOrder
+     * @param carListDTO
+     */
+    private void insertWaybillOrderTicket(Long id, String wOrderNo, KwtLogisticsOrder logisticsOrder, CarListDTO carListDTO) {
+
+    }
+
+    /**
+     * 派车主体保存
+     *
+     * @param wOrderNo
+     * @param logisticsOrder
+     * @param carListDTO
+     * @param sendCarDTO
+     */
+    private void insertWaybillOrder(KwtWaybillOrder waybillOrder, Long wOrderId, String wOrderNo, KwtLogisticsOrder logisticsOrder, CarListDTO carListDTO, SendCarDTO sendCarDTO) {
+        waybillOrder.setId(wOrderId);
+        waybillOrder.setEntId(logisticsOrder.getEntId());
+        waybillOrder.setLOrderId(Long.parseLong(sendCarDTO.getLOrderId()));
+        waybillOrder.setWOrderNo(wOrderNo);
+        waybillOrder.setStartTime(sendCarDTO.getLoadDateTime());
+        waybillOrder.setEndTime(sendCarDTO.getUnloadDateTime());
+        waybillOrder.setDriverId(Long.parseLong(carListDTO.getDriverId()));
+        waybillOrder.setTruckNo(carListDTO.getTruckNo());
+        waybillOrder.setRemark(sendCarDTO.getRemark());
+        waybillOrder.setStatus(NumberConstant.ZERO);
+        waybillOrder.setCreateBy(LoginUserHolder.getUserId());
+        waybillOrder.setCreateTime(new Date());
+        waybillOrder.setUpdateTime(new Date());
+        waybillOrder.setUpdateBy(LoginUserHolder.getUserId());
+        waybillOrderMapper.insert(waybillOrder);
+    }
 }

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

@@ -1,6 +1,5 @@
 package com.sckw.transport.service;
 
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.utils.CollectionUtils;
@@ -20,7 +19,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.ObjectUtils;
 
 import java.math.BigDecimal;
@@ -176,27 +174,4 @@ public class ConsignOrderService {
         }
         return HttpResult.ok(carDataVOS);
     }
-
-    @Transactional(rollbackFor = Exception.class)
-    public HttpResult cancelConsign(OrderDTO orderDto) {
-        log.info("订单-撤销托运请求参数:{}", JSONObject.toJSONString(orderDto));
-        HttpResult result = new HttpResult();
-        KwtLogisticsOrder logisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
-                .eq(KwtLogisticsOrder::getId, orderDto.getId())
-                .eq(KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
-                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
-        if (logisticsOrder == null) {
-            result.setMsg("单据不存在");
-        }
-        /**以此字段判别是否存在分包操作*/
-        if (logisticsOrder.getPid()==null){//撤销数据回归到贸易订单
-            //并不属于被分包
-            //待接单状态下才能撤销托运
-            //
-
-        }else {
-            //即代表存在分包,当次是属于被分包.需要将数据回归到上游数据。
-        }
-        return result;
-    }
 }

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

@@ -11,6 +11,8 @@ 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.product.api.dubbo.GoodsInfoService;
+import com.sckw.product.api.model.KwpGoods;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.transport.common.enums.LogisticsOrderEnum;
@@ -44,6 +46,9 @@ public class LogisticsConsignmentService {
     @DubboReference(version = "2.0.0", group = "design", check = false)
     RemoteSystemService remoteSystemService;
 
+    @DubboReference(version = "2.0.0", group = "design", check = false)
+    GoodsInfoService goodsInfoService;
+
     @Autowired
     public KwoTradeOrderMapper kwoTradeOrderMapper;
 
@@ -98,32 +103,31 @@ public class LogisticsConsignmentService {
             order.setAmount(new BigDecimal(NumberConstant.ZERO));
             order.setSubcontractAmount(new BigDecimal(NumberConstant.ZERO));
         }
-        String waybillNo = "waybillNo";
+        String lOrderNo = com.sckw.transport.utils.StringUtils.getLOrderNo();
         Long orderId = new IdWorker(NumberConstant.ONE).nextId();
-        insertLogisticsGoods(bo, waybillNo, orderId);
-        insertLogisticsOrder(bo, waybillNo, order, tradeOrder, orderId);
+        insertLogisticsGoods(bo, lOrderNo, orderId);
+        insertLogisticsOrder(bo, lOrderNo, order, tradeOrder, orderId);
         insertLogisticsOrderContract(bo, orderId);
-        insertLogisticsOrderUnit(bo, waybillNo, orderId);
-        insertLogisticsOrderAddress(bo, waybillNo, orderId);
-        insertLogisticsOrderTrack(bo, waybillNo, orderId);
-        sendMongoDB(waybillNo, orderId, bo, tradeOrder);
-
+        insertLogisticsOrderUnit(bo, orderId);
+        insertLogisticsOrderAddress(bo, orderId);
+        insertLogisticsOrderTrack(bo, orderId);
+        sendMongoDB(lOrderNo, orderId, bo, tradeOrder);
     }
 
     /**
      * 组装数据发送至mongoDb
      *
-     * @param waybillNo
+     * @param lOrderNo
      * @param orderId
      * @param bo
      */
-    private void sendMongoDB(String waybillNo, Long orderId, LogisticsConsignmentParam bo, KwoTradeOrder tradeOrder) {
+    private void sendMongoDB(String lOrderNo, Long orderId, LogisticsConsignmentParam bo, KwoTradeOrder tradeOrder) {
         SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
         logisticsOrder.setLOrderId(orderId);
-        logisticsOrder.setLOrderNo(waybillNo);
+        logisticsOrder.setLOrderNo(lOrderNo);
         logisticsOrder.setLOrderPid(null);
         logisticsOrder.setTOrderId(tradeOrder.getId());
-        logisticsOrder.setTOrderNo("D" + waybillNo);
+        logisticsOrder.setTOrderNo("D" + com.sckw.transport.utils.StringUtils.getWaybillNoUtil());
         logisticsOrder.setSettlementCycle(bo.getSettlementCycle());
         logisticsOrder.setPrice(new BigDecimal(bo.getPrice()));
         logisticsOrder.setPriceType(remoteSystemService.queryDictByTypeAndValue(DictEnum.PRICE_TYPE_0.getType(), bo.getPriceType()) == null ?
@@ -148,21 +152,23 @@ public class LogisticsConsignmentService {
 //        logisticsOrder.setUnloadTime();
 //        logisticsOrder.setLoadTime();
 //        logisticsOrder.setWOrderNo();
-        logisticsOrder.setSubcontractAmount(new BigDecimal(NumberConstant.ZERO));
-        logisticsOrder.setEntrustAmount(new BigDecimal(NumberConstant.ZERO));
-        logisticsOrder.setUnloadAmount(new BigDecimal(NumberConstant.ZERO));
-        logisticsOrder.setLoadAmount(new BigDecimal(NumberConstant.ZERO));
-        logisticsOrder.setIgnoreAmount(new BigDecimal(NumberConstant.ZERO));
-        logisticsOrder.setDeficitPrice(new BigDecimal(NumberConstant.ZERO));
+        BigDecimal decimal = new BigDecimal(NumberConstant.ZERO);
+        logisticsOrder.setSubcontractAmount(decimal);
+        logisticsOrder.setEntrustAmount(decimal);
+        logisticsOrder.setUnloadAmount(decimal);
+        logisticsOrder.setLoadAmount(decimal);
+        logisticsOrder.setIgnoreAmount(decimal);
+        logisticsOrder.setDeficitPrice(decimal);
         logisticsOrder.setPayment(Long.parseLong(bo.getPayment()));
         logisticsOrder.setTaxRate(bo.getTaxRate() == null ? null : new BigDecimal(bo.getTaxRate()));
         logisticsOrder.setRemark(bo.getRemark());
         logisticsOrder.setEntId(LoginUserHolder.getEntId());
         logisticsOrder.setFirmName(remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId()).getFirmName());
         logisticsOrder.setGoodsId(Integer.parseInt(bo.getGoodsId()));
-        //todo dubbo调用订单服务
-//        logisticsOrder.setGoodsType();
-//        logisticsOrder.setGoodsSpec();
+        //todo dubbo调用商品服务
+        KwpGoods goods = goodsInfoService.getGoodsById(Long.parseLong(bo.getGoodsId()));
+        logisticsOrder.setGoodsType(goods == null ? null : goods.getGoodsType());
+        logisticsOrder.setGoodsSpec(goods == null ? null : goods.getSpec());
         logisticsOrder.setContractId(Integer.parseInt(bo.getContractId()));
         logisticsOrder.setContractNo(bo.getContractNo());
         logisticsOrder.setContractName(bo.getContractName());
@@ -212,11 +218,10 @@ public class LogisticsConsignmentService {
 
     /**
      * 物流订单-企业信息
-     *
      * @param bo
-     * @param waybillNo
+     * @param orderId
      */
-    private void insertLogisticsOrderUnit(LogisticsConsignmentParam bo, String waybillNo, Long orderId) {
+    private void insertLogisticsOrderUnit(LogisticsConsignmentParam bo, Long orderId) {
         KwtLogisticsOrderUnit checkUnit = new KwtLogisticsOrderUnit()
                 .setLOrderId(orderId)
                 .setId(new IdWorker(NumberConstant.ONE).nextId())
@@ -250,11 +255,10 @@ public class LogisticsConsignmentService {
 
     /**
      * 物流订单-状态
-     *
      * @param bo
-     * @param waybillNo
+     * @param orderId
      */
-    private void insertLogisticsOrderTrack(LogisticsConsignmentParam bo, String waybillNo, Long orderId) {
+    private void insertLogisticsOrderTrack(LogisticsConsignmentParam bo,Long orderId) {
         KwtLogisticsOrderTrack entity = new KwtLogisticsOrderTrack();
         entity.setId(new IdWorker(NumberConstant.ONE).nextId());
         entity.setLOrderId(orderId);
@@ -271,16 +275,16 @@ public class LogisticsConsignmentService {
      * 物流订单-商品信息
      *
      * @param bo
-     * @param waybillNo
+     * @param lOrderNo
      */
-    private void insertLogisticsGoods(LogisticsConsignmentParam bo, String waybillNo, Long orderId) {
+    private void insertLogisticsGoods(LogisticsConsignmentParam bo, String lOrderNo, Long orderId) {
         KwtLogisticsOrderGoods kwtLogisticsOrderGoods = new KwtLogisticsOrderGoods();
         kwtLogisticsOrderGoods.setId(new IdWorker(NumberConstant.ONE).nextId());
         kwtLogisticsOrderGoods.setGoodsId(Long.parseLong(bo.getGoodsId()));
         kwtLogisticsOrderGoods.setGoodsName(bo.getGoodsName());
         kwtLogisticsOrderGoods.setSkuId(StringUtils.isBlank(bo.getSkuId()) ? null : Long.parseLong(bo.getSkuId()));
         kwtLogisticsOrderGoods.setLOrderId(orderId);
-        kwtLogisticsOrderGoods.setLOrderNo(waybillNo);
+        kwtLogisticsOrderGoods.setLOrderNo(lOrderNo);
         kwtLogisticsOrderGoods.setUpdateBy(LoginUserHolder.getUserId());
         kwtLogisticsOrderGoods.setUpdateTime(new Date());
         kwtLogisticsOrderGoods.setCreateBy(LoginUserHolder.getUserId());
@@ -292,16 +296,16 @@ public class LogisticsConsignmentService {
      * 物流订单-主体
      *
      * @param bo
-     * @param waybillNo
+     * @param lOrderNo
      * @param order
      * @param tradeOrder
      */
-    private void insertLogisticsOrder(LogisticsConsignmentParam bo, String waybillNo, KwtLogisticsOrder order, KwoTradeOrder tradeOrder, Long orderId) {
+    private void insertLogisticsOrder(LogisticsConsignmentParam bo, String lOrderNo, KwtLogisticsOrder order, KwoTradeOrder tradeOrder, Long orderId) {
         order.setId(orderId);
         order.setEntId(LoginUserHolder.getEntId());
         order.setTOrderId(Long.parseLong(bo.getLOrderId()));
         order.setTOrderNo(bo.getLOrderNo());
-        order.setLOrderNo(waybillNo);
+        order.setLOrderNo(lOrderNo);
         order.setPid(null);
         order.setSettlementCycle(bo.getSettlementCycle());
         order.setPrice(new BigDecimal(bo.getPrice()));
@@ -352,11 +356,10 @@ public class LogisticsConsignmentService {
 
     /**
      * 物流订单-装卸货地址
-     *
      * @param bo
-     * @param waybillNo
+     * @param orderId
      */
-    private void insertLogisticsOrderAddress(LogisticsConsignmentParam bo, String waybillNo, Long orderId) {
+    private void insertLogisticsOrderAddress(LogisticsConsignmentParam bo, Long orderId) {
         KwtLogisticsOrderAddress loadOrderAddress = new KwtLogisticsOrderAddress();
         KwtLogisticsOrderAddress unloadOrderAddress = new KwtLogisticsOrderAddress();
         //todo 装卸货地址 通过dubbo查询

+ 79 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -2,19 +2,27 @@ package com.sckw.transport.service;
 
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.utils.StringUtils;
 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.transport.common.enums.LogisticsOrderEnum;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.DocumentParamDTO;
+import com.sckw.transport.model.dto.OrderDTO;
 import com.sckw.transport.model.vo.OrderDetailVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.ObjectUtils;
+
+import java.math.BigDecimal;
+import java.util.Date;
 
 /**
  * @author lfdc
@@ -89,6 +97,11 @@ public class TransportCommonService {
         return HttpResult.ok();
     }
 
+    /**
+     * 查看订单详情
+     * @param dto
+     * @return
+     */
     public HttpResult getOrderDetail(DocumentParamDTO dto) {
         HttpResult httpResult = new HttpResult();
         httpResult.setCode(HttpStatus.SUCCESS_CODE);
@@ -122,11 +135,9 @@ public class TransportCommonService {
         KwtLogisticsOrderUnit unitOne = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                 .eq(StringUtils.isNotBlank(dto.getId()), KwtLogisticsOrderUnit::getLOrderId, dto.getId())
                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.ONE));
-//                .eq(KwtLogisticsOrderUnit::getEntId, logisticsOrder.getEntId()));
         KwtLogisticsOrderUnit unitTwo = logisticsOrderUnitMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderUnit>()
                 .eq(StringUtils.isNotBlank(dto.getId()), KwtLogisticsOrderUnit::getLOrderId, dto.getId())
                 .eq(KwtLogisticsOrderUnit::getUnitType, NumberConstant.TWO));
-//                .eq(KwtLogisticsOrderUnit::getEntId, logisticsOrder.getEntId()));
         KwtLogisticsOrderAddress loadOrderAddress = logisticsOrderAddressMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderAddress>()
                 .eq(StringUtils.isNotBlank(dto.getId()), KwtLogisticsOrderAddress::getLOrderId, dto.getId())
                 .eq(KwtLogisticsOrderAddress::getAddressType, NumberConstant.ONE));
@@ -174,4 +185,70 @@ public class TransportCommonService {
         orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : String.valueOf(logisticsOrder.getLoadAmount()));
         return orderDetailVO;
     }
+
+    /**
+     * 撤销托运
+     * @param orderDto
+     * @return
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public HttpResult cancelConsign(OrderDTO orderDto) {
+        log.info("订单-撤销托运请求参数:{}", JSONObject.toJSONString(orderDto));
+        HttpResult result = new HttpResult();
+        KwtLogisticsOrder logisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getId, orderDto.getId())
+                .eq(KwtLogisticsOrder::getLOrderNo, orderDto.getOrderNo())
+                .eq(KwtLogisticsOrder::getEntId, LoginUserHolder.getEntId()));
+        if (logisticsOrder == null) {
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            result.setMsg("单据不存在");
+            return result;
+        }
+        if (!LogisticsOrderEnum.TO_BE_PLANNED.getCode().equals(logisticsOrder.getStatus())) {
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            result.setMsg("待接单才允许撤销托运");
+            return result;
+        }
+        /**以此字段判别是否存在分包操作*/
+        if (ObjectUtils.isEmpty(logisticsOrder.getPid())) {
+            /**并不存在分包,撤销数据回归到贸易订单,[待接单状态]下才能撤销托运*/
+            //todo 调用dubbo 修改数值
+            Long tOrderId = logisticsOrder.getTOrderId();
+            String tOrderNo = logisticsOrder.getTOrderNo();
+            logisticsOrder.setDelFlag(1);
+            logisticsOrder.setUpdateTime(new Date());
+            logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+            logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                    .eq(KwtLogisticsOrder::getId, logisticsOrder.getId())
+                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                    .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+        } else {
+            /**即代表存在分包,当次是属于被分包.需要将数据回归到上游数据。*/
+            Long pid = logisticsOrder.getPid();
+            KwtLogisticsOrder order = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                    .eq(KwtLogisticsOrder::getId, pid));
+            //上游分配量
+            BigDecimal amount = logisticsOrder.getAmount();
+            //已经完成的量
+            BigDecimal unloadAmount = logisticsOrder.getUnloadAmount();
+            //未完成的量
+            BigDecimal subtract = amount.subtract(unloadAmount);
+            //.setScale(2,BigDecimal.ROUND_HALF_DOWN)
+            BigDecimal add = order.getSubcontractAmount().add(subtract);
+            logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                    .eq(KwtLogisticsOrder::getId, order.getId())
+                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getSubcontractAmount,add)
+                    .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                    .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+
+            logisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                    .eq(KwtLogisticsOrder::getId, logisticsOrder.getId())
+                    .set(KwtLogisticsOrder::getDelFlag, NumberConstant.ONE)
+                    .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                    .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+        }
+        return result;
+    }
 }

+ 16 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/utils/StringUtils.java

@@ -0,0 +1,16 @@
+package com.sckw.transport.utils;
+
+/**
+ * @author lfdc
+ * @description 字符串工具类
+ * @date 2023-07-14 10:07:20
+ */
+public class StringUtils {
+    public static String getWaybillNoUtil() {
+        return "waybillNo";
+    }
+
+    public static String getLOrderNo() {
+        return "lOrderNo";
+    }
+}

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

@@ -44,4 +44,41 @@
     deficit_price, payment, tax_rate, remark, `status`, create_by, create_time, update_by,
     update_time, del_flag
     </sql>
+    <update id="updateByPrimaryKey" parameterType="com.sckw.transport.model.KwtLogisticsOrder">
+        update kwt_logistics_order
+        set ent_id = #{entId,jdbcType=BIGINT},
+            t_order_id = #{tOrderId,jdbcType=BIGINT},
+            t_order_no = #{tOrderNo,jdbcType=VARCHAR},
+            l_order_no = #{lOrderNo,jdbcType=VARCHAR},
+            pid = #{pid,jdbcType=BIGINT},
+            settlement_cycle = #{settlementCycle,jdbcType=BIGINT},
+            billing_mode = #{billingMode,jdbcType=VARCHAR},
+            price = #{price,jdbcType=DECIMAL},
+            price_type = #{priceType,jdbcType=BIGINT},
+            amount = #{amount,jdbcType=DECIMAL},
+            unit = #{unit,jdbcType=VARCHAR},
+            loss = #{loss,jdbcType=DECIMAL},
+            loss_unit = #{lossUnit,jdbcType=VARCHAR},
+            goods_price = #{goodsPrice,jdbcType=DECIMAL},
+            goods_price_unit = #{goodsPriceUnit,jdbcType=VARCHAR},
+            start_time = #{startTime,jdbcType=TIMESTAMP},
+            ent_time = #{entTime,jdbcType=TIMESTAMP},
+            subcontract_amount = #{subcontractAmount,jdbcType=DECIMAL},
+            entrust_amount = #{entrustAmount,jdbcType=DECIMAL},
+            unload_amount = #{unloadAmount,jdbcType=DECIMAL},
+            load_amount = #{loadAmount,jdbcType=DECIMAL},
+            ignore_amount = #{ignoreAmount,jdbcType=DECIMAL},
+            deficit_amount = #{deficitAmount,jdbcType=DECIMAL},
+            deficit_price = #{deficitPrice,jdbcType=DECIMAL},
+            payment = #{payment,jdbcType=BIGINT},
+            tax_rate = #{taxRate,jdbcType=DECIMAL},
+            remark = #{remark,jdbcType=VARCHAR},
+            `status` = #{status,jdbcType=INTEGER},
+            create_by = #{createBy,jdbcType=BIGINT},
+            create_time = #{createTime,jdbcType=TIMESTAMP},
+            update_by = #{updateBy,jdbcType=BIGINT},
+            update_time = #{updateTime,jdbcType=TIMESTAMP},
+            del_flag = #{delFlag,jdbcType=INTEGER}
+        where id = #{id,jdbcType=BIGINT}
+    </update>
 </mapper>

+ 3 - 1
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -17,6 +17,8 @@
         <result column="status" jdbcType="INTEGER" property="status" />
         <result column="create_by" jdbcType="BIGINT" property="createBy" />
         <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+        <result column="start_time" jdbcType="TIMESTAMP" property="startTime" />
+        <result column="end_time" jdbcType="TIMESTAMP" property="endTime" />
         <result column="update_by" jdbcType="BIGINT" property="updateBy" />
         <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
         <result column="del_flag" jdbcType="INTEGER" property="delFlag" />
@@ -24,6 +26,6 @@
     <sql id="Base_Column_List">
         id, ent_id, l_order_id, w_order_no, truck_no, driver_id, entrust_amount, unload_amount,
     load_amount, deficit_amount, remark, `status`, create_by, create_time, update_by,
-    update_time, del_flag
+    update_time, del_flag,start_time,end_time
     </sql>
 </mapper>