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

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

czh 2 лет назад
Родитель
Сommit
89f63ce344
13 измененных файлов с 464 добавлено и 267 удалено
  1. 4 46
      sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java
  2. 5 25
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  3. 12 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppAcceptCarriageController.java
  4. 11 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppConsignController.java
  5. 2 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/param/LogisticsConsignmentParam.java
  6. 11 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillVO.java
  7. 65 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/LogisticsOrderTrackVO.java
  8. 6 6
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/OrderDetailVO.java
  9. 10 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java
  10. 96 23
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java
  11. 43 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/ConsignOrderService.java
  12. 146 151
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  13. 53 5
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

+ 4 - 46
sckw-modules/sckw-order/src/main/java/com/sckw/order/controller/KwoTradeOrderController.java

@@ -1,15 +1,10 @@
 package com.sckw.order.controller;
 
-import com.sckw.core.exception.BusinessException;
-import com.sckw.core.model.enums.OrderRuleEnum;
-import com.sckw.core.model.enums.RedisOrderGenerateEnum;
-import com.sckw.core.utils.OrderGenerateSeqNoUtils;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.order.model.vo.req.*;
 import com.sckw.order.serivce.KwoTradeOrderService;
 import io.seata.spring.annotation.GlobalTransactional;
 import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
 import org.springframework.http.MediaType;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
@@ -22,7 +17,6 @@ import org.springframework.web.bind.annotation.*;
 @RestController
 @RequestMapping(value = "/kwoTradeOrder")
 @RequiredArgsConstructor
-@Slf4j
 public class KwoTradeOrderController {
 
     private final KwoTradeOrderService kwoTradeOrderService;
@@ -37,16 +31,7 @@ public class KwoTradeOrderController {
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addPurchaseOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addPurchaseOrderDraft(@RequestBody @Validated PurchaseOrderDraftParam param) {
-        try {
-            return kwoTradeOrderService.addPurchaseOrderDraft(param);
-        } catch (Exception e) {
-            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
-            log.error("采购下单草稿 error:{}", e.getMessage(), e);
-            if (e instanceof BusinessException){
-                throw new BusinessException(e.getMessage());
-            }
-            throw new BusinessException("采购下单草稿提交失败!");
-        }
+        return kwoTradeOrderService.addPurchaseOrderDraft(param);
     }
 
     /**
@@ -59,16 +44,7 @@ public class KwoTradeOrderController {
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addPurchaseOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addPurchaseOrderSubmit(@RequestBody @Validated PurchaseOrderParam purchaseOrderParam) {
-        try {
-            return kwoTradeOrderService.addPurchaseOrderSubmit(purchaseOrderParam);
-        } catch (Exception e) {
-            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
-            log.error("采购下单提交 error:{}", e.getMessage(), e);
-            if (e instanceof BusinessException){
-                throw new BusinessException(e.getMessage());
-            }
-            throw new BusinessException("采购下单提交失败!");
-        }
+        return kwoTradeOrderService.addPurchaseOrderSubmit(purchaseOrderParam);
     }
 
     /**
@@ -81,16 +57,7 @@ public class KwoTradeOrderController {
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addValetOrderDraft", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addValetOrderDraft(@RequestBody @Validated ValetOrderDraftParam param) {
-        try {
-            return kwoTradeOrderService.addValetOrderDraft(param);
-        } catch (Exception e) {
-            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
-            log.error("代客下单草稿 error:{}", e.getMessage(), e);
-            if (e instanceof BusinessException){
-                throw new BusinessException(e.getMessage());
-            }
-            throw new BusinessException("代客下单草稿提交失败!");
-        }
+        return kwoTradeOrderService.addValetOrderDraft(param);
     }
 
 
@@ -104,16 +71,7 @@ public class KwoTradeOrderController {
     @GlobalTransactional(name = "default_tx_group")
     @PostMapping(value = "/addValetOrderSubmit", produces = MediaType.APPLICATION_JSON_VALUE)
     public HttpResult addValetOrderSubmit(@RequestBody @Validated ValetOrderParam valetOrderParam) {
-        try {
-            return kwoTradeOrderService.addValetOrderSubmit(valetOrderParam);
-        } catch (Exception e) {
-            OrderGenerateSeqNoUtils.getSeqNoMinusOne(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
-            log.error("代客下单提交 error:{}", e.getMessage(), e);
-            if (e instanceof BusinessException){
-                throw new BusinessException(e.getMessage());
-            }
-            throw new BusinessException("代客下单提交失败!");
-        }
+        return kwoTradeOrderService.addValetOrderSubmit(valetOrderParam);
     }
 
     /**

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

@@ -96,12 +96,8 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public HttpResult addPurchaseOrderDraft(PurchaseOrderDraftParam param) {
-        String orderNo = getOrderNo();
-        if (StringUtils.isBlank(orderNo)) {
-            return HttpResult.error("采购下单草稿生成订单号异常!");
-        }
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
-        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
+        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(getOrderNo())
                 .setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
                 .setSource(DictEnum.TORDER_SOURCE_1.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
         kwoTradeOrderMapper.insert(order);
@@ -235,12 +231,8 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public HttpResult addValetOrderDraft(ValetOrderDraftParam param) {
-        String orderNo = getOrderNo();
-        if (StringUtils.isBlank(orderNo)) {
-            return HttpResult.error("代客下单草稿生成订单号异常!");
-        }
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
-        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
+        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(getOrderNo())
                 .setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
                 .setSource(DictEnum.TORDER_SOURCE_2.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
         kwoTradeOrderMapper.insert(order);
@@ -256,10 +248,6 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public HttpResult addPurchaseOrderSubmit(PurchaseOrderParam param) {
-        String orderNo = getOrderNo();
-        if (StringUtils.isBlank(orderNo)) {
-            return HttpResult.error("采购下单提交生成订单号异常!");
-        }
         GoodsInfo goodsInfo = param.getGoodsInfo();
         if (Objects.isNull(goodsInfo.getPriceRangeId())) {
             throw new BusinessException("采购下单价格梯度信息不能为空!");
@@ -270,7 +258,7 @@ public class KwoTradeOrderService {
                 .setOrderSource(DictEnum.TORDER_SOURCE_1.getValue());
         orderCheck(orderCheckDTO, false);
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
-        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
+        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(getOrderNo())
                 .setUnit(param.getGoodsInfo().getUnit()).setSource(DictEnum.TORDER_SOURCE_1.getValue())
                 .setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_1.getValue()));
         kwoTradeOrderMapper.insert(order);
@@ -376,10 +364,6 @@ public class KwoTradeOrderService {
      * @return: void
      */
     public HttpResult addValetOrderSubmit(ValetOrderParam param) {
-        String orderNo = getOrderNo();
-        if (StringUtils.isBlank(orderNo)) {
-            return HttpResult.error("代客下单提交生成订单号异常!");
-        }
         OrderCheckDTO orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
         getTopEnt(orderCheck, param.getUnitInfo());
         orderCheck.setGoodsId(param.getGoodsInfo().getGoodsId()).setUnitPrice(param.getGoodsInfo().getUnitPrice())
@@ -389,7 +373,7 @@ public class KwoTradeOrderService {
         contractCheck(contract);
         param.setContractInfo(contract);
         KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
-        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
+        order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(getOrderNo())
                 .setUnit(param.getGoodsInfo().getUnit()).setSource(DictEnum.TORDER_SOURCE_2.getValue());
         String contractStatus = contract.getContractStatus();
         if (Objects.equals(contractStatus, DictEnum.CONTRACT_STATUS_0.getValue())) {
@@ -418,8 +402,8 @@ public class KwoTradeOrderService {
     private String getOrderNo() {
         Date date = new Date();
         String lockKey = String.format(RedisConstant.TORDER_NO_GENERATE_KEY, DateUtils.formatDateToYYMMDD(date));
+        String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
         try {
-            String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
             if (Boolean.FALSE.equals(RedissonUtils.exists(key))) {
                 if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
                     throw new BusinessException("业务繁忙,请稍后再试!");
@@ -432,10 +416,6 @@ public class KwoTradeOrderService {
                 }
             }
             return OrderGenerateSeqNoUtils.getOtherSeqNo(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
-
-        } catch (Exception e) {
-            log.error("生成贸易订单号异常:{}",e.getMessage(),e);
-            return null;
         } finally {
             RedissonUtils.unlock(lockKey);
         }

+ 12 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppAcceptCarriageController.java

@@ -49,4 +49,16 @@ public class AppAcceptCarriageController {
         }
     }
 
+
+    @RequestMapping(name = "企业app承运订单订单进度", path = "/getOrderTrackByOrderId", method = RequestMethod.GET)
+    public HttpResult getOrderTrackByOrderId(@NotBlank(message = "订单id不能为空") @RequestParam("orderId") String orderId) {
+        log.info("企业app承运订单订单进度 query :{}", orderId);
+        try {
+            return carriageOrderService.getOrderTrackByOrderId(orderId,"2");
+        } catch (Exception e) {
+            log.error("企业app承运订单订单进度失败  query:{}, error:{}", orderId, e.getMessage(), e);
+            return HttpResult.error(e.getMessage());
+        }
+    }
+
 }

+ 11 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/enterpriseApp/AppConsignController.java

@@ -77,4 +77,15 @@ public class AppConsignController {
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
         }
     }
+
+    @RequestMapping(name = "企业app托运订单订单进度", path = "/getOrderTrackByOrderId", method = RequestMethod.GET)
+    public HttpResult getOrderTrackByOrderId(@NotBlank(message = "订单id不能为空") @RequestParam("orderId") String orderId) {
+        log.info("企业app托运订单订单进度 query :{}", orderId);
+        try {
+            return consignOrderService.getOrderTrackByOrderId(orderId,"1");
+        } catch (Exception e) {
+            log.error("企业app托运订单订单进度失败  query:{}, error:{}", orderId, e.getMessage(), e);
+            return HttpResult.error(e.getMessage());
+        }
+    }
 }

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

@@ -191,7 +191,8 @@ public class LogisticsConsignmentParam {
      */
     @NotNull(message = "运价不能为空")
     @DecimalMin(value = "0.00",message = "运价必须为大于0的正整数")
-    private Long price;
+    @Digits(integer = 6,fraction = 2,message = "运价格式填写错误")
+    private BigDecimal price;
     /**
      * 运价方式
      */

+ 11 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/CarWaybillVO.java

@@ -100,6 +100,17 @@ public class CarWaybillVO {
      * 扣亏量/吨
      */
     private BigDecimal deduct;
+
+    /**
+     * 合理损耗
+     */
+    private BigDecimal loss;
+
+    /**
+     * 合理损耗
+     */
+    private String lossLabel;
+
     /**
      * 派车人
      */

+ 65 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/LogisticsOrderTrackVO.java

@@ -0,0 +1,65 @@
+package com.sckw.transport.model.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author lfdc
+ * @description 物流订单状态返回vo
+ * @date 2023-08-29 11:08:22
+ */
+@Data
+public class LogisticsOrderTrackVO {
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 物流订单id
+     */
+    private Long lOrderId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 用户状态(待受理、待运输、运输中、已完成、已取消)
+     */
+    private Integer status;
+
+    /**
+     * 用户状态(待受理、待运输、运输中、已完成、已取消)
+     */
+    private String statusLabel;
+
+    private Long createBy;
+
+    /**
+     * 中文名称
+     */
+    private String createName;
+
+    /**
+     * 用户角色
+     */
+    private String createRole;
+
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
+    private Long updateBy;
+
+    /**
+     * 更新时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date updateTime;
+
+
+    private static final long serialVersionUID = 1L;
+}

+ 6 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/OrderDetailVO.java

@@ -62,7 +62,7 @@ public class OrderDetailVO {
     /**
      * 扣亏损值
      */
-    private String deduct;
+    private BigDecimal deduct;
 
     /**
      * 商品名称
@@ -75,23 +75,23 @@ public class OrderDetailVO {
     /**
      * 合理亏损
      */
-    private String loss;
+    private BigDecimal loss;
     /**
      * 任务总量
      */
-    private String number;
+    private BigDecimal number;
     /**
      * 订单金额
      */
-    private String orderAmount;
+    private BigDecimal orderAmount;
     /**
      * 已履约量
      */
-    private String performanceAmount;
+    private BigDecimal performanceAmount;
     /**
      * 运价
      */
-    private String price;
+    private BigDecimal price;
     /**
      * 计划结束时间
      */

+ 10 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillDetailVO.java

@@ -44,9 +44,14 @@ public class WaybillDetailVO {
      */
     private BigDecimal deficitAmount;
     /**
-     * 亏吨量
+     * 合理损耗
      */
     private BigDecimal loss;
+
+    /**
+     * 合理损耗
+     */
+    private String lossLabel;
     /**
      * 扣亏损值
      */
@@ -68,14 +73,14 @@ public class WaybillDetailVO {
      */
     private String driverName;
     /**
-     * 计划开始时间
+     * 计划开始时间  HH:mm:ss
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date startTime;
     /**
-     * 计划结束时间
+     * 计划结束时间  HH:mm:ss
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
     private Date endTime;
 
 }

+ 96 - 23
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -106,6 +106,9 @@ public class AcceptCarriageOrderService {
     @Autowired
     private KwtWaybillOrderMapper waybillOrderMapper;
 
+    @Autowired
+    private KwtWaybillOrderTicketMapper waybillOrderTicketMapper;
+
     @Autowired
     private KwtWaybillOrderTrackMapper waybillOrderTrackMapper;
 
@@ -152,13 +155,17 @@ public class AcceptCarriageOrderService {
         EntCacheResDto entCacheResDto = remoteSystemService.queryEntCacheById(LoginUserHolder.getEntId());
         if (entCacheResDto == null) {
             log.info("承运订单-分包托运 用户id:{}", LoginUserHolder.getUserId());
-            throw new RuntimeException("企业信息查询异常");
+            throw new BusinessException("企业信息查询异常");
         }
         if (!entCacheResDto.getEntTypes().contains(String.valueOf(NumberConstant.THREE))) {
-            throw new RuntimeException("当前用户企业不具有分包功能权限!");
+            throw new BusinessException("当前用户企业不具有分包功能权限!");
         }
         if (bo.getCarryingCapacity().compareTo(new BigDecimal("0.00")) == 0) {
-            throw new RuntimeException("分配承运量必须填写大于0.00");
+            throw new BusinessException("分配承运量必须填写大于0.00");
+        }
+        BigDecimal subtract = logisticsOrder.getAmount().subtract((logisticsOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getEntrustAmount()));
+        if (bo.getCarryingCapacity().compareTo(subtract) == 1) {
+            throw new BusinessException("分配承运量必须可待分配量");
         }
         KwtLogisticsOrder order = new KwtLogisticsOrder();
         if (!bo.getIsFullDose()) {
@@ -792,23 +799,55 @@ public class AcceptCarriageOrderService {
      */
     public HttpResult getWaybillData(String wOrderId) {
         SckwWaybillOrder sckwWaybillOrder = mongoTemplate.findById(Long.parseLong(wOrderId), SckwWaybillOrder.class);
+        KwtWaybillOrder waybillOrder = waybillOrderMapper.selectOne(new LambdaQueryWrapper<KwtWaybillOrder>()
+                .eq(KwtWaybillOrder::getId, wOrderId));
+        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getId, waybillOrder.getLOrderId()));
+        SysDictResDto sysDictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TAX_RATE_TYPE.getType(), kwtLogisticsOrder.getLossUnit());
+        List<KwtWaybillOrderTicket> kwtWaybillOrderTickets = waybillOrderTicketMapper.selectList(new LambdaQueryWrapper<KwtWaybillOrderTicket>()
+                .eq(KwtWaybillOrderTicket::getWOrderId, Long.parseLong(wOrderId))
+        );
         WaybillDetailVO vo = new WaybillDetailVO();
-        if (!ObjectUtils.isEmpty(sckwWaybillOrder)) {
-            vo.setFleetName(sckwWaybillOrder.getCarrierFirmName());
-            vo.setTruckNo(sckwWaybillOrder.getTruckNo());
-            vo.setDriverName(sckwWaybillOrder.getDriverName());
-            vo.setSendCarWeigh(sckwWaybillOrder.getEntrustAmount());
-            vo.setLoadAmount(sckwWaybillOrder.getLoadAmount());
-            vo.setStowageDateTime(sckwWaybillOrder.getLoadTime());
-            vo.setWaybillType(sckwWaybillOrder.getType());
-            vo.setUnloadAmount(sckwWaybillOrder.getUnloadAmount());
-            vo.setUnloadDateTime(sckwWaybillOrder.getUnloadTime());
-            vo.setAppointor(sckwWaybillOrder.getCreateByName());
-            vo.setLoss(sckwWaybillOrder.getLoss());
-            vo.setGoodsPrice(sckwWaybillOrder.getGoodsPrice());
-            vo.setStartTime(sckwWaybillOrder.getStartTime());
-            vo.setEndTime(sckwWaybillOrder.getEndTime());
+        vo.setSendCarWeigh(waybillOrder.getEntrustAmount());
+        vo.setLoadAmount(waybillOrder.getLoadAmount());
+        vo.setUnloadAmount(waybillOrder.getUnloadAmount());
+        for (KwtWaybillOrderTicket waybillOrderTicket : kwtWaybillOrderTickets) {
+            if (waybillOrderTicket != null) {
+                if (waybillOrderTicket.getType() == 1) {
+                    vo.setStowageDateTime(waybillOrderTicket.getOperateTime());
+                }
+                if (waybillOrderTicket.getType() == 2) {
+                    vo.setUnloadDateTime(waybillOrderTicket.getOperateTime());
+                }
+            }
         }
+        vo.setWaybillType(waybillOrder.getType());
+        vo.setDeficitAmount(waybillOrder.getDeficitAmount());
+        vo.setLoss(kwtLogisticsOrder.getLoss());
+        vo.setLossLabel(sysDictResDto == null ? null : sysDictResDto.getLabel());
+        vo.setGoodsPrice(sckwWaybillOrder.getGoodsPrice());
+        vo.setAppointor(sckwWaybillOrder.getCreateByName());
+        vo.setFleetName(sckwWaybillOrder.getCarrierFirmName());
+        vo.setTruckNo(waybillOrder.getTruckNo());
+        vo.setDriverName(waybillOrder.getDriverName());
+        vo.setStartTime(waybillOrder.getStartTime());
+        vo.setEndTime(waybillOrder.getStartTime());
+//        if (!ObjectUtils.isEmpty(sckwWaybillOrder)) {
+//            vo.setFleetName(sckwWaybillOrder.getCarrierFirmName());
+//            vo.setTruckNo(sckwWaybillOrder.getTruckNo());
+//            vo.setDriverName(sckwWaybillOrder.getDriverName());
+//            vo.setSendCarWeigh(sckwWaybillOrder.getEntrustAmount());
+//            vo.setLoadAmount(sckwWaybillOrder.getLoadAmount());
+//            vo.setStowageDateTime(sckwWaybillOrder.getLoadTime());
+//            vo.setWaybillType(sckwWaybillOrder.getType());
+//            vo.setUnloadAmount(sckwWaybillOrder.getUnloadAmount());
+//            vo.setUnloadDateTime(sckwWaybillOrder.getUnloadTime());
+//            vo.setAppointor(sckwWaybillOrder.getCreateByName());
+//            vo.setLoss(sckwWaybillOrder.getLoss());
+//            vo.setGoodsPrice(sckwWaybillOrder.getGoodsPrice());
+//            vo.setStartTime(sckwWaybillOrder.getStartTime());
+//            vo.setEndTime(sckwWaybillOrder.getEndTime());
+//        }
         return HttpResult.ok(vo);
     }
 
@@ -1581,10 +1620,10 @@ public class AcceptCarriageOrderService {
             orderDetailVO.setCarrierPhone(unitTwo.getPhone());
         }
         orderDetailVO.setGoodsName(orderGoods == null ? null : orderGoods.getGoodsName());
-        orderDetailVO.setNumber(logisticsOrder.getAmount() == null ? null : String.valueOf(logisticsOrder.getAmount()));
-        orderDetailVO.setPrice(logisticsOrder.getPrice() == null ? null : String.valueOf(logisticsOrder.getPrice()));
-        orderDetailVO.setLoss(logisticsOrder.getLoss() == null ? null : String.valueOf(logisticsOrder.getLoss()));
-        orderDetailVO.setDeduct(logisticsOrder.getGoodsPrice() == null ? null : String.valueOf(logisticsOrder.getGoodsPrice()));
+        orderDetailVO.setNumber(logisticsOrder.getAmount() == null ? null : logisticsOrder.getAmount());
+        orderDetailVO.setPrice(logisticsOrder.getPrice() == null ? null : logisticsOrder.getPrice());
+        orderDetailVO.setLoss(logisticsOrder.getLoss() == null ? null : logisticsOrder.getLoss());
+        orderDetailVO.setDeduct(logisticsOrder.getGoodsPrice() == null ? null : logisticsOrder.getGoodsPrice());
         orderDetailVO.setLoadAddress(loadOrderAddress.getName());
         orderDetailVO.setLoadContacts(loadOrderAddress.getContacts());
         orderDetailVO.setLoadPhone(loadOrderAddress.getPhone());
@@ -1597,7 +1636,7 @@ public class AcceptCarriageOrderService {
         orderDetailVO.setBillingMode(logisticsOrder.getBillingMode());
         orderDetailVO.setScheduleStartTime(logisticsOrder.getStartTime() == null ? null : logisticsOrder.getStartTime());
         orderDetailVO.setScheduleEndTime(logisticsOrder.getEndTime() == null ? null : logisticsOrder.getEndTime());
-        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : String.valueOf(logisticsOrder.getLoadAmount()));
+        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
         return HttpResult.ok(orderDetailVO);
     }
 
@@ -2195,4 +2234,38 @@ public class AcceptCarriageOrderService {
         String[] idArrays = StringUtils.isBlank(pids) ? new String[0] : pids.split(Global.COMMA);
         return idArrays.length <= 1 ? Global.NUMERICAL_ONE : (idArrays.length - Global.NUMERICAL_ONE);
     }
+
+    public HttpResult getOrderTrackByOrderId(String orderId, String number) {
+        List<KwtLogisticsOrderTrack> list = logisticsOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                .eq(KwtLogisticsOrderTrack::getLOrderId, orderId)
+                .eq(KwtLogisticsOrderTrack::getDelFlag, NumberConstant.ZERO).orderByDesc(KwtLogisticsOrderTrack::getCreateTime)
+        );
+        List<LogisticsOrderTrackVO> vos = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            List<Long> collect = list.stream().map(KwtLogisticsOrderTrack::getCreateBy).collect(Collectors.toList());
+            Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(collect);
+            for (KwtLogisticsOrderTrack track : list) {
+                LogisticsOrderTrackVO vo = new LogisticsOrderTrackVO();
+                vo.setId(track.getId());
+                vo.setLOrderId(track.getLOrderId());
+                vo.setRemark(track.getRemark());
+                vo.setStatus(track.getStatus());
+                vo.setStatusLabel(LogisticsOrderEnum.getName(track.getStatus()));
+                vo.setCreateBy(track.getCreateBy());
+                if (!longUserCacheResDtoMap.isEmpty()) {
+                    if (longUserCacheResDtoMap.get(track.getCreateBy()) != null) {
+                        vo.setCreateName(longUserCacheResDtoMap.get(track.getCreateBy()).getName());
+                        if (longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo() != null && longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo().get(0) != null) {
+                            vo.setCreateRole(longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo().get(0).getName());
+                        }
+                    }
+                }
+                vo.setCreateTime(track.getCreateTime());
+                vo.setUpdateBy(track.getUpdateBy());
+                vo.setUpdateTime(track.getUpdateTime());
+                vos.add(vo);
+            }
+        }
+        return HttpResult.ok(vos);
+    }
 }

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

@@ -38,6 +38,7 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
+import com.sckw.system.api.model.dto.res.SysDictResDto;
 import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
@@ -180,7 +181,7 @@ public class ConsignOrderService {
                 /**.eq(KwtWaybillOrder::getEntId, LoginUserHolder.getEntId())*/);
         JSONObject statistics = new JSONObject();
         //合理损耗
-        BigDecimal loss = order.getLoss();
+        BigDecimal loss = order.getLoss() == null ? new BigDecimal("0.00") : order.getLoss();
         //派车量
         BigDecimal sendCarWeighNumber = new BigDecimal("0.00");
         //装货量
@@ -202,10 +203,10 @@ public class ConsignOrderService {
                  * 合理损耗值=装货量*合理损耗
                  扣亏量/吨->亏吨量-合理损耗值
                  罚款值 扣亏量/吨*扣亏货值
-                 运价:
-                 按照装货量 运价*装货量
+                 运价:
+                 按照装货量 运输运价*装货量
                  按照卸货量 卸货量*运输单价-罚款值
-                 按照趟次=运价
+                 按照趟次=运输运
                  */
                 //已委托量
                 BigDecimal entrustAmount = kwtWaybillOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : kwtWaybillOrder.getEntrustAmount();
@@ -392,6 +393,9 @@ public class ConsignOrderService {
 //                        String.valueOf(kwtWaybillOrder.getCreateBy()) : remoteSystemService.queryUserCacheById(kwtWaybillOrder.getCreateBy()).getName());
                     carWaybillVo.setLOrderNo(order.getLOrderNo());
                     carWaybillVo.setLOrderId(String.valueOf(order.getId()));
+                    carWaybillVo.setLoss(loss);
+                    SysDictResDto sysDictResDto = remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.TAX_RATE_TYPE.getType(), order.getLossUnit());
+                    carWaybillVo.setLossLabel(sysDictResDto == null ? null : sysDictResDto.getLabel());
                     returnList.add(carWaybillVo);
                 }
             }
@@ -1089,7 +1093,7 @@ public class ConsignOrderService {
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public HttpResult addOrder(AddOrderDTO addOrderDTO){
+    public HttpResult addOrder(AddOrderDTO addOrderDTO) {
         /**生成订单编号*/
         String lOrderNo = OrderGenerateSeqNoUtils.getSeqNo(RedisOrderGenerateEnum.LOGISTICS_ORDER, OrderRuleEnum.LOGISTICS_ORDER, "2", "0", "0");
         HttpResult httpResult = ValidUtil.serviceValid(addOrderDTO);
@@ -1660,4 +1664,38 @@ public class ConsignOrderService {
         HttpResult httpResult = statisticsConsign(query, type);
         return httpResult;
     }
+
+    public HttpResult getOrderTrackByOrderId(String orderId, String number) {
+        List<KwtLogisticsOrderTrack> list = kwtLogisticsOrderTrackMapper.selectList(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                .eq(KwtLogisticsOrderTrack::getLOrderId, orderId)
+                .eq(KwtLogisticsOrderTrack::getDelFlag, NumberConstant.ZERO).orderByDesc(KwtLogisticsOrderTrack::getCreateTime)
+        );
+        List<LogisticsOrderTrackVO> vos = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(list)) {
+            List<Long> collect = list.stream().map(KwtLogisticsOrderTrack::getCreateBy).collect(Collectors.toList());
+            Map<Long, UserCacheResDto> longUserCacheResDtoMap = remoteSystemService.queryUserCacheMapByIds(collect);
+            for (KwtLogisticsOrderTrack track : list) {
+                LogisticsOrderTrackVO vo = new LogisticsOrderTrackVO();
+                vo.setId(track.getId());
+                vo.setLOrderId(track.getLOrderId());
+                vo.setRemark(track.getRemark());
+                vo.setStatus(track.getStatus());
+                vo.setStatusLabel(LogisticsOrderEnum.getName(track.getStatus()));
+                vo.setCreateBy(track.getCreateBy());
+                if (!longUserCacheResDtoMap.isEmpty()) {
+                    if (longUserCacheResDtoMap.get(track.getCreateBy()) != null) {
+                        vo.setCreateName(longUserCacheResDtoMap.get(track.getCreateBy()).getName());
+                        if (longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo() != null && longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo().get(0) != null) {
+                            vo.setCreateRole(longUserCacheResDtoMap.get(track.getCreateBy()).getRoleInfo().get(0).getName());
+                        }
+                    }
+                }
+                vo.setCreateTime(track.getCreateTime());
+                vo.setUpdateBy(track.getUpdateBy());
+                vo.setUpdateTime(track.getUpdateTime());
+                vos.add(vo);
+            }
+        }
+        return HttpResult.ok(vos);
+    }
 }

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

@@ -73,10 +73,10 @@ public class LogisticsConsignmentService {
     @Autowired
     RedisLockUtil redisLockUtil;
 
-    @DubboReference(version = "1.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
     RemoteSystemService remoteSystemService;
 
-    @DubboReference(version = "1.0.0", group = "design", check = false)
+    @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
     GoodsInfoService goodsInfoService;
 
     @DubboReference(version = "1.0.0", group = "design", check = false, timeout = 6000)
@@ -232,7 +232,7 @@ public class LogisticsConsignmentService {
         logisticsOrder.setTOrderId(tradeOrder.getId());
         logisticsOrder.setTOrderNo("D" + com.sckw.transport.utils.StringUtils.getWaybillNoUtil());
         logisticsOrder.setSettlementCycle(bo.getSettlementCycle());
-        logisticsOrder.setPrice(new BigDecimal(bo.getPrice()));
+        logisticsOrder.setPrice(bo.getPrice());
         logisticsOrder.setPriceType(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()) == null ?
                 null : Long.parseLong(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()).getValue()));
 
@@ -449,7 +449,7 @@ public class LogisticsConsignmentService {
 //        order.setPids(orderId + StringConstant.COMMA);
         order.setPids(String.valueOf(orderId));
         order.setSettlementCycle(bo.getSettlementCycle());
-        order.setPrice(new BigDecimal(bo.getPrice()));
+        order.setPrice(bo.getPrice());
         order.setPriceType(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()) == null ?
                 null : Long.parseLong(remoteSystemService.queryDictByTypeAndValue(DictTypeEnum.PRICE_TYPE.getType(), bo.getPriceType()).getValue()));
 //        order.setAmount(tradeOrder.getAmount());
@@ -936,16 +936,16 @@ public class LogisticsConsignmentService {
         if (CollectionUtils.isEmpty(ids) || ids.size() < NumberConstant.ONE) {
             throw new BusinessException("单据id不能为空");
         }
-        List<JSONObject> list = new ArrayList<>();
+        HttpResult result = new HttpResult();
         //1采购 2销售
         if (String.valueOf(NumberConstant.ONE).equals(type)) {
-            cancelConsignByOrder(ids, remark, list);
+            result = cancelConsignByOrder(ids, remark);
         } else if (String.valueOf(NumberConstant.TWO).equals(type)) {
-            cancelConsignBySellOrder(ids, remark, list);
+            result = cancelConsignBySellOrder(ids, remark);
         } else {
             throw new BusinessException("类型错误!");
         }
-        return HttpResult.ok(list);
+        return result;
     }
 
     /**
@@ -953,81 +953,80 @@ public class LogisticsConsignmentService {
      *
      * @param ids
      */
-    public void cancelConsignBySellOrder(List<String> ids, String remark, List<JSONObject> list) {
-        ids.forEach(s -> {
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("id", s);
-            /**当前单据作废
-             * 托运数量回归溯
-             */
-            KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrder>()
-                    .eq(KwtLogisticsOrder::getId, s));
-            if (kwtLogisticsOrder == null || (!String.valueOf(LogisticsOrderEnum.PENDING_ORDER.getCode()).equals(kwtLogisticsOrder.getStatus()))) {
-                log.info("物流订单单据id:{}", s);
-                jsonObject.put("message", "单据状态异常或单据不存在");
-                jsonObject.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
-            } else {
-                /**撤退推送接口数据溯源修改贸易订单已委托量*/
-                CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
-                param.setTOrderId(Long.parseLong(s));
-                param.setEntrustAmount(kwtLogisticsOrder.getLoadAmount().negate());
-                param.setUpdateBy(LoginUserHolder.getUserId());
-                param.setUpdateByName(LoginUserHolder.getUserName());
-                HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
-                if (HttpStatus.SUCCESS_CODE == httpResult.getCode()) {
-                    kwtLogisticsOrder.setDelFlag(NumberConstant.ONE);
-                    kwtLogisticsOrder.setUpdateTime(new Date());
-                    kwtLogisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
-                    kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
-                            .eq(KwtLogisticsOrder::getId, kwtLogisticsOrder.getId())
-                            .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
-                            .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
-                            .set(KwtLogisticsOrder::getUpdateTime, new Date()));
-                    KwtLogisticsOrderTrack orderTrack = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
-                            .eq(KwtLogisticsOrderTrack::getLOrderId, s)
-                            .eq(KwtLogisticsOrderTrack::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
-                    );
-                    if (orderTrack == null) {
-                        KwtLogisticsOrderTrack track = new KwtLogisticsOrderTrack();
-                        track.setId(new IdWorker(NumberConstant.ONE).nextId());
-                        track.setLOrderId(Long.valueOf(s));
-                        track.setRemark(remark);
-                        track.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
-                        track.setCreateBy(LoginUserHolder.getUserId());
-                        track.setCreateTime(new Date());
-                        track.setUpdateBy(LoginUserHolder.getUserId());
-                        track.setUpdateTime(new Date());
-                    } else {
-                        orderTrack.setRemark(remark);
-                        orderTrack.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
-                        orderTrack.setUpdateBy(LoginUserHolder.getUserId());
-                        orderTrack.setUpdateTime(new Date());
-                        kwtLogisticsOrderTrackMapper.updateById(orderTrack);
-                    }
-                    //mongoDb数据
-                    SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
-                    logisticsOrder.set_id(Long.valueOf(s));
-                    logisticsOrder.setLOrderId(Long.valueOf(s));
-                    logisticsOrder.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
-                    logisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
-                    logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
-                    logisticsOrder.setUpdateTime(new Date());
-                    SckwBusSum sckwBusSum = new SckwBusSum();
-                    sckwBusSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
-                    sckwBusSum.setMethod(NumberConstant.TWO);
-                    sckwBusSum.setObject(logisticsOrder);
-                    streamBridge.send("sckw-busSum", JSON.toJSONString(sckwBusSum));
-
-                    jsonObject.put("status", HttpStatus.SUCCESS_CODE);
-                    jsonObject.put("message", "操作成功");
+    public HttpResult cancelConsignBySellOrder(List<String> ids, String remark) {
+        HttpResult result = new HttpResult();
+        String s = ids.get(0);
+        /**当前单据作废
+         * 托运数量回归溯
+         */
+        KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getId, s));
+        if (kwtLogisticsOrder == null || (!LogisticsOrderEnum.PENDING_ORDER.getStatus().equals(String.valueOf(kwtLogisticsOrder.getStatus())))) {
+            log.info("物流订单单据id:{}", s);
+            result.setMsg("单据状态异常或单据不存在");
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            return result;
+        } else {
+            /**撤退推送接口数据溯源修改贸易订单已委托量*/
+            CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+            param.setTOrderId(kwtLogisticsOrder.getTOrderId());
+            param.setEntrustAmount(kwtLogisticsOrder.getAmount().negate());
+            param.setUpdateBy(LoginUserHolder.getUserId());
+            param.setUpdateByName(LoginUserHolder.getUserName());
+            HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+            log.info("销售订单撤销托运-溯源贸易订单请求数据:{},返回数据:{}", JSONObject.toJSONString(param), JSONObject.toJSONString(httpResult));
+            if (HttpStatus.SUCCESS_CODE == httpResult.getCode()) {
+//                    kwtLogisticsOrder.setDelFlag(NumberConstant.ONE);
+                kwtLogisticsOrder.setUpdateTime(new Date());
+                kwtLogisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+                kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                        .eq(KwtLogisticsOrder::getId, kwtLogisticsOrder.getId())
+                        .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
+                        .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                        .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+                KwtLogisticsOrderTrack orderTrack = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                        .eq(KwtLogisticsOrderTrack::getLOrderId, s)
+                        .eq(KwtLogisticsOrderTrack::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
+                );
+                if (orderTrack == null) {
+                    KwtLogisticsOrderTrack track = new KwtLogisticsOrderTrack();
+                    track.setId(new IdWorker(NumberConstant.ONE).nextId());
+                    track.setLOrderId(Long.valueOf(s));
+                    track.setRemark(remark);
+                    track.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
+                    track.setCreateBy(LoginUserHolder.getUserId());
+                    track.setCreateTime(new Date());
+                    track.setUpdateBy(LoginUserHolder.getUserId());
+                    track.setUpdateTime(new Date());
+                    kwtLogisticsOrderTrackMapper.insert(track);
                 } else {
-                    JSONObject.toJSONString(httpResult);
-                    jsonObject.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
-                    jsonObject.put("message", "操作失败:" + httpResult.getMsg());
+                    orderTrack.setRemark(remark);
+                    orderTrack.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
+                    orderTrack.setUpdateBy(LoginUserHolder.getUserId());
+                    orderTrack.setUpdateTime(new Date());
+                    kwtLogisticsOrderTrackMapper.updateById(orderTrack);
                 }
+                //mongoDb数据
+                SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
+                logisticsOrder.set_id(Long.valueOf(s));
+                logisticsOrder.setLOrderId(Long.valueOf(s));
+                logisticsOrder.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
+                logisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
+                logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+                logisticsOrder.setUpdateTime(new Date());
+                SckwBusSum sckwBusSum = new SckwBusSum();
+                sckwBusSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+                sckwBusSum.setMethod(NumberConstant.TWO);
+                sckwBusSum.setObject(logisticsOrder);
+                streamBridge.send("sckw-busSum", JSON.toJSONString(sckwBusSum));
+                result.setMsg("操作成功");
+                result.setCode(HttpStatus.SUCCESS_CODE);
+            } else {
+                result.setMsg("操作失败:" + httpResult.getMsg());
+                result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
             }
-            list.add(jsonObject);
-        });
+        }
+        return result;
     }
 
     /**
@@ -1035,83 +1034,79 @@ public class LogisticsConsignmentService {
      *
      * @param ids
      */
-    public void cancelConsignByOrder(List<String> ids, String remark, List<JSONObject> list) {
-        ids.forEach(s -> {
-            /**当前单据作废
-             * 托运数量回归溯源
-             */
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.put("id", s);
-            /**当前单据作废
-             * 托运数量回归溯
-             */
-            KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrder>()
-                    .eq(KwtLogisticsOrder::getId, s));
-            if (kwtLogisticsOrder == null || (!LogisticsOrderEnum.PENDING_ORDER.getStatus().equals(String.valueOf(kwtLogisticsOrder.getStatus())))) {
-                log.info("物流订单单据id:{}", s);
-                jsonObject.put("message", "单据状态异常或单据不存在");
-                jsonObject.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
-            } else {
-                /**撤退推送接口数据溯源修改贸易订单已委托量*/
-                CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
-                param.setTOrderId(Long.parseLong(s));
-                param.setEntrustAmount(kwtLogisticsOrder.getLoadAmount().negate());
-                param.setUpdateBy(LoginUserHolder.getUserId());
-                param.setUpdateByName(LoginUserHolder.getUserName());
-                HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
-                if (HttpStatus.SUCCESS_CODE == httpResult.getCode()) {
+    public HttpResult cancelConsignByOrder(List<String> ids, String remark) {
+        HttpResult result = new HttpResult();
+        String id = ids.get(0);
+        /**当前单据作废
+         * 托运数量回归溯
+         */
+        KwtLogisticsOrder kwtLogisticsOrder = kwtLogisticsOrderMapper.selectOne(new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                .eq(KwtLogisticsOrder::getId, Long.parseLong(id)));
+        if (kwtLogisticsOrder == null || (!LogisticsOrderEnum.PENDING_ORDER.getStatus().equals(String.valueOf(kwtLogisticsOrder.getStatus())))) {
+            log.info("物流订单单据id:{}", id);
+            result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+            result.setMsg("单据状态异常或单据不存在");
+            return result;
+        } else {
+            /**撤退推送接口数据溯源修改贸易订单已委托量*/
+            CreateOrCancelLogisticsOrderParam param = new CreateOrCancelLogisticsOrderParam();
+            param.setTOrderId(kwtLogisticsOrder.getTOrderId());
+            param.setEntrustAmount(kwtLogisticsOrder.getAmount().negate());
+            param.setUpdateBy(LoginUserHolder.getUserId());
+            param.setUpdateByName(LoginUserHolder.getUserName());
+            HttpResult httpResult = tradeOrderInfoService.createOrCancelLogisticsOrder(param);
+            log.info("采购订单撤销托运-溯源贸易订单请求数据:{},返回数据:{}", JSONObject.toJSONString(param), JSONObject.toJSONString(httpResult));
+            if (HttpStatus.SUCCESS_CODE == httpResult.getCode()) {
 //                    kwtLogisticsOrder.setDelFlag(NumberConstant.ONE);
 //                    kwtLogisticsOrder.setUpdateTime(new Date());
 //                    kwtLogisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
-                    kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
-                            .eq(KwtLogisticsOrder::getId, kwtLogisticsOrder.getId())
-                            .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
-                            .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
-                            .set(KwtLogisticsOrder::getUpdateTime, new Date()));
-                    KwtLogisticsOrderTrack orderTrack = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
-                            .eq(KwtLogisticsOrderTrack::getLOrderId, s)
-                            .eq(KwtLogisticsOrderTrack::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
-                    );
-                    if (orderTrack == null) {
-                        KwtLogisticsOrderTrack track = new KwtLogisticsOrderTrack();
-                        track.setId(new IdWorker(NumberConstant.ONE).nextId());
-                        track.setLOrderId(Long.valueOf(s));
-                        track.setRemark(remark);
-                        track.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
-                        track.setCreateBy(LoginUserHolder.getUserId());
-                        track.setCreateTime(new Date());
-                        track.setUpdateBy(LoginUserHolder.getUserId());
-                        track.setUpdateTime(new Date());
-                    } else {
-                        orderTrack.setRemark(remark);
-                        orderTrack.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
-                        orderTrack.setUpdateBy(LoginUserHolder.getUserId());
-                        orderTrack.setUpdateTime(new Date());
-                        kwtLogisticsOrderTrackMapper.updateById(orderTrack);
-                    }
-                    //mongoDb数据
-                    SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
-                    logisticsOrder.set_id(Long.valueOf(s));
-                    logisticsOrder.setLOrderId(Long.valueOf(s));
-                    logisticsOrder.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
-                    logisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
-                    logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
-                    logisticsOrder.setUpdateTime(new Date());
-                    SckwBusSum sckwBusSum = new SckwBusSum();
-                    sckwBusSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
-                    sckwBusSum.setMethod(NumberConstant.TWO);
-                    sckwBusSum.setObject(logisticsOrder);
-                    streamBridge.send("sckw-busSum", JSON.toJSONString(sckwBusSum));
-
-                    jsonObject.put("status", HttpStatus.SUCCESS_CODE);
-                    jsonObject.put("message", "操作失败:" + httpResult.getMsg());
+                kwtLogisticsOrderMapper.update(null, new LambdaUpdateWrapper<KwtLogisticsOrder>()
+                        .eq(KwtLogisticsOrder::getId, kwtLogisticsOrder.getId())
+                        .set(KwtLogisticsOrder::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
+                        .set(KwtLogisticsOrder::getUpdateBy, LoginUserHolder.getUserId())
+                        .set(KwtLogisticsOrder::getUpdateTime, new Date()));
+                KwtLogisticsOrderTrack orderTrack = kwtLogisticsOrderTrackMapper.selectOne(new LambdaQueryWrapper<KwtLogisticsOrderTrack>()
+                        .eq(KwtLogisticsOrderTrack::getLOrderId, id)
+                        .eq(KwtLogisticsOrderTrack::getStatus, LogisticsOrderEnum.CANCEL_ORDER.getCode())
+                );
+                if (orderTrack == null) {
+                    KwtLogisticsOrderTrack track = new KwtLogisticsOrderTrack();
+                    track.setId(new IdWorker(NumberConstant.ONE).nextId());
+                    track.setLOrderId(Long.valueOf(id));
+                    track.setRemark(remark);
+                    track.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
+                    track.setCreateBy(LoginUserHolder.getUserId());
+                    track.setCreateTime(new Date());
+                    track.setUpdateBy(LoginUserHolder.getUserId());
+                    track.setUpdateTime(new Date());
+                    kwtLogisticsOrderTrackMapper.insert(track);
                 } else {
-                    jsonObject.put("status", HttpStatus.GLOBAL_EXCEPTION_CODE);
-                    jsonObject.put("message", "操作失败:" + httpResult.getMsg());
+                    orderTrack.setRemark(remark);
+                    orderTrack.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getCode());
+                    orderTrack.setUpdateBy(LoginUserHolder.getUserId());
+                    orderTrack.setUpdateTime(new Date());
+                    kwtLogisticsOrderTrackMapper.updateById(orderTrack);
                 }
+                //mongoDb数据
+                SckwLogisticsOrder logisticsOrder = new SckwLogisticsOrder();
+                logisticsOrder.set_id(Long.valueOf(id));
+                logisticsOrder.setLOrderId(Long.valueOf(id));
+                logisticsOrder.setStatus(LogisticsOrderEnum.CANCEL_ORDER.getStatus());
+                logisticsOrder.setUpdateByName(LoginUserHolder.getUserName());
+                logisticsOrder.setUpdateBy(LoginUserHolder.getUserId());
+                logisticsOrder.setUpdateTime(new Date());
+                SckwBusSum sckwBusSum = new SckwBusSum();
+                sckwBusSum.setBusSumType(BusinessTypeEnum.LOGISTICS_ORDER_TYPE.getName());
+                sckwBusSum.setMethod(NumberConstant.TWO);
+                sckwBusSum.setObject(logisticsOrder);
+                streamBridge.send("sckw-busSum", JSON.toJSONString(sckwBusSum));
+                result.setCode(HttpStatus.SUCCESS_CODE);
+            } else {
+                result.setCode(HttpStatus.GLOBAL_EXCEPTION_CODE);
+                result.setMsg("操作失败:" + httpResult.getMsg());
             }
-            list.add(jsonObject);
-        });
+        }
+        return result;
     }
 
     /**

+ 53 - 5
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/TransportCommonService.java

@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.sckw.contract.api.RemoteContractService;
 import com.sckw.contract.api.model.dto.res.ContractCommonInfoResDto;
 import com.sckw.core.common.enums.NumberConstant;
+import com.sckw.core.common.enums.enums.DictEnum;
 import com.sckw.core.common.enums.enums.DictTypeEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
 import com.sckw.core.model.page.PageResult;
@@ -180,10 +181,10 @@ public class TransportCommonService {
         }
         orderDetailVO.setGoodsId(String.valueOf(orderGoods == null ? null : orderGoods.getGoodsId()));
         orderDetailVO.setGoodsName(orderGoods == null ? null : orderGoods.getGoodsName());
-        orderDetailVO.setNumber(logisticsOrder.getAmount() == null ? null : String.valueOf(logisticsOrder.getAmount()));
-        orderDetailVO.setPrice(logisticsOrder.getPrice() == null ? null : String.valueOf(logisticsOrder.getPrice()));
-        orderDetailVO.setLoss(logisticsOrder.getLoss() == null ? null : String.valueOf(logisticsOrder.getLoss()));
-        orderDetailVO.setDeduct(logisticsOrder.getGoodsPrice() == null ? null : String.valueOf(logisticsOrder.getGoodsPrice()));
+        orderDetailVO.setNumber(logisticsOrder.getAmount() == null ? null : logisticsOrder.getAmount());
+        orderDetailVO.setPrice(logisticsOrder.getPrice() == null ? null : logisticsOrder.getPrice());
+        orderDetailVO.setLoss(logisticsOrder.getLoss() == null ? null : logisticsOrder.getLoss());
+        orderDetailVO.setDeduct(logisticsOrder.getGoodsPrice() == null ? null : logisticsOrder.getGoodsPrice());
         orderDetailVO.setLoadName(loadOrderAddress.getName());
         orderDetailVO.setLoadAddress(loadOrderAddress.getCityName());
         orderDetailVO.setLoadContacts(loadOrderAddress.getContacts());
@@ -208,7 +209,7 @@ public class TransportCommonService {
         }
         orderDetailVO.setScheduleStartTime(logisticsOrder.getStartTime() == null ? null : logisticsOrder.getStartTime());
         orderDetailVO.setScheduleEndTime(logisticsOrder.getEndTime() == null ? null : logisticsOrder.getEndTime());
-        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : String.valueOf(logisticsOrder.getLoadAmount()));
+        orderDetailVO.setPerformanceAmount(logisticsOrder.getLoadAmount() == null ? null : logisticsOrder.getLoadAmount());
         orderDetailVO.setTotalLoadAmount(logisticsOrder.getTotalLoadAmount());
         orderDetailVO.setTotalUnloadAmount(logisticsOrder.getTotalUnloadAmount());
         orderDetailVO.setCreateTime(logisticsOrder.getCreateTime());
@@ -234,6 +235,53 @@ public class TransportCommonService {
             }
         }
         orderDetailVO.setRemark(logisticsOrder.getRemark());
+        /**亏吨量/吨->装货量-卸货量
+         * 合理损耗值=装货量*合理损耗
+         扣亏量/吨->亏吨量-合理损耗值
+         罚款值 扣亏量/吨*扣亏货值
+         总运价:
+         按照装货量 运输运价*装货量
+         按照卸货量 卸货量*运输单价-罚款值
+         按照趟次=运输运价
+         */
+        //合理损耗
+        BigDecimal loss = logisticsOrder.getLoss() == null ? new BigDecimal("0.00") : logisticsOrder.getLoss();
+
+        Integer status = logisticsOrder.getStatus();
+        List<Integer> orderStatusFinish = new ArrayList<>();
+        orderStatusFinish.add(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+        orderStatusFinish.add(LogisticsOrderEnum.HAVE_RECONCILED.getCode());
+        orderStatusFinish.add(LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getCode());
+        /**根据当前单据状态进行订单金额计算*/
+        if (orderStatusFinish.contains(status)) {
+            /**亏吨量/吨->装货量-卸货量
+             扣亏量/吨->亏吨量-合理损耗值
+             扣亏量/吨->亏吨量-合理损耗值(装货量*合理损耗)*/
+            BigDecimal loadAmount = logisticsOrder.getLoadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getLoadAmount();
+            BigDecimal unloadAmount = logisticsOrder.getUnloadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getUnloadAmount();
+            //运价
+            BigDecimal price = logisticsOrder.getPrice() == null ? new BigDecimal("0.00") : logisticsOrder.getPrice();
+            //亏吨量
+            BigDecimal defectiveWeighNumber = loadAmount.subtract(unloadAmount);
+            //合理损耗值
+            BigDecimal lossAmount = loadAmount.multiply(loss);
+            //扣亏量/吨
+            BigDecimal deductWeighNumber = defectiveWeighNumber.subtract(lossAmount);
+            if (deductWeighNumber.compareTo(new BigDecimal("0")) < 0) {
+                deductWeighNumber = new BigDecimal("0.00");
+            }
+            //罚款值
+            BigDecimal fineValue = (logisticsOrder.getGoodsPrice() == null ? new BigDecimal("0.00") : logisticsOrder.getGoodsPrice()).multiply(deductWeighNumber);
+            if (DictEnum.CHARGING_TYPE_1.getValue().equals(logisticsOrder.getBillingMode())) {
+                orderDetailVO.setOrderAmount(price.multiply(loadAmount));
+            } else if (DictEnum.CHARGING_TYPE_2.getValue().equals(logisticsOrder.getBillingMode())) {
+                orderDetailVO.setOrderAmount(unloadAmount.multiply(price).subtract(fineValue));
+            } else if (DictEnum.CHARGING_TYPE_3.getValue().equals(logisticsOrder.getBillingMode())) {
+                orderDetailVO.setOrderAmount(price);
+            }
+        } else {
+            orderDetailVO.setOrderAmount(logisticsOrder.getAmount().multiply(logisticsOrder.getPrice()));
+        }
         return orderDetailVO;
     }