Przeglądaj źródła

采购订单-完结订单修改
mongodb字段增加
提供贸易订单/对账dubbo接口

lengfaqiang 2 lat temu
rodzic
commit
b8f5e882e6

+ 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;

+ 17 - 4
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;
 
     /**
      * 付款方式(预付款、线下支付、第三方支付)
@@ -399,7 +399,7 @@ public class SckwLogisticsOrder {
      * 创建时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date createTime;
 
     /**
@@ -416,7 +416,7 @@ public class SckwLogisticsOrder {
      * 更新时间
      */
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
-    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     private Date updateTime;
 
     /**
@@ -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;
+
 }

+ 0 - 2
sckw-common/sckw-common-mongo/src/main/java/com/sckw/mongo/model/SckwWaybillOrder.java

@@ -1,13 +1,11 @@
 package com.sckw.mongo.model;
 
-import com.fasterxml.jackson.annotation.JsonIgnore;
 import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 import lombok.experimental.Accessors;
 import org.springframework.data.annotation.Id;
 import org.springframework.data.mongodb.core.mapping.Document;
-import org.springframework.data.mongodb.core.mapping.Field;
 
 import java.math.BigDecimal;
 import java.util.Date;

+ 19 - 1
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 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);
 }

+ 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;
+}

+ 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());

+ 6 - 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;
@@ -31,6 +30,11 @@ public class CarWaybillVo implements Serializable {
     @JsonProperty(value="wOrderNo")
     private String wOrderNo;
 
+    /**
+     * 承运车队
+     */
+    private String firmName;
+
     /**
      * 车辆牌照
      */

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

@@ -1,8 +1,10 @@
 package com.sckw.transport.model;
 
+import com.baomidou.mybatisplus.annotation.TableLogic;
 import com.baomidou.mybatisplus.annotation.TableName;
-import com.sckw.core.model.base.BaseModel;
 import lombok.Data;
+
+import java.io.Serializable;
 import java.util.Date;
 
 /**
@@ -12,21 +14,47 @@ import java.util.Date;
  */
 @Data
 @TableName("kwt_waybill_order_track")
-public class KwtWaybillOrderTrack extends BaseModel {
+public class KwtWaybillOrderTrack implements Serializable {
+
+    /**
+     * 主键
+     */
+    private Long id;
 
     /**
      * 车辆运单id
      */
     private Long wOrderId;
 
+    /**
+     * 备注
+     */
+    private String remark;
+
     /**
      * 用户状态(待受理、待运输、运输中、已完成、已取消)
+     */
+    private Integer status;
 
-    private Integer status;*/
+    private Long createBy;
+
+    private Date createTime;
+
+    private Long updateBy;
+
+    private Date updateTime;
 
     /**
      * 装卸货时间
      */
     private Date operateTime;
 
+    /**
+     * 是否删除(0未删除,1删除)
+     */
+    @TableLogic("0")
+    private Integer delFlag;
+
+    private static final long serialVersionUID = 1L;
+
 }

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

@@ -197,7 +197,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));
@@ -624,6 +624,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();
@@ -645,12 +651,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()));
         }
@@ -675,7 +682,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;
     }
 
@@ -1253,7 +1271,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("自建订单异常");

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

@@ -1216,7 +1216,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");
@@ -1288,7 +1288,7 @@ public class LogisticsConsignmentService {
                     }
                 }
             }
-            lllll(list);
+            recursionLogisticsOrder(list);
         }
     }
 

+ 106 - 0
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.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 获取物流订单相关地址信息
      *