Ver Fonte

承运订单-派车新增查询派车和待运量接口
修复bug-SAS-878
物流订单-剩余量/总装/总卸初始化赋值

lengfaqiang há 2 anos atrás
pai
commit
f914a42d94

+ 17 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -2,7 +2,6 @@ package com.sckw.transport.controller;
 
 import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
-import com.sckw.core.exception.SystemException;
 import com.sckw.core.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 import com.sckw.core.utils.CollectionUtils;
@@ -16,12 +15,12 @@ import com.sckw.transport.model.vo.WaybillOrderDriverVo;
 import com.sckw.transport.service.DriverService;
 import com.sckw.transport.service.KwtWaybillOrderService;
 import jakarta.validation.Valid;
+import jakarta.validation.constraints.NotBlank;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -149,6 +148,22 @@ public class KwtWaybillOrderController {
         }
     }
 
+    /**
+     * 查询已排量、待运量数据
+     * @param orderId
+     * @return
+     */
+    @RequestMapping(name = "查询已排量、待运量数据",path = "/getLogisticsAmountByOrderId",method = RequestMethod.GET)
+    public HttpResult getLogisticsAmountByOrderId(@NotBlank @RequestParam("orderId") String orderId){
+        log.info("查询已排量、待运量数据 query :{}",orderId);
+        try {
+            return waybillOrderService.getLogisticsAmountByOrderId(orderId);
+        } catch (Exception e) {
+            log.error("查询已排量、待运量数据 error:{}", e.getMessage(), e);
+            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
+        }
+    }
+
     /**
      * @param params {}
      * @desc 派车-趟次/循环

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

@@ -6,6 +6,7 @@ import com.sckw.transport.api.model.dto.AddressResDTO;
 import com.sckw.transport.api.model.dto.LogisticsOrderDTO;
 import com.sckw.transport.api.model.vo.LogisticsOrderVO;
 import com.sckw.transport.model.KwtLogisticsOrder;
+import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.param.AcceptCarriageOrderQuery;
 import com.sckw.transport.model.param.DriverParam;
 import com.sckw.transport.model.param.LogisticsOrderParam;

+ 3 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java

@@ -131,4 +131,7 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @return
      */
     Long selectWaybillOrderCountByStatus(@Param("entId") Long entId, @Param("statuses") List<Integer> statuses, @Param("keyword") String keyword);
+
+    Map<String,Object> selectOrderByOrderId(@Param("orderId") Long orderId, @Param("type") Integer type, @Param("statusList") List<Long> statusList);
+
 }

+ 16 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/AcceptCarriageOrderVO.java

@@ -245,6 +245,22 @@ public class AcceptCarriageOrderVO /*extends PageRequest*/ {
      */
     private BigDecimal ignoreAmount;
 
+    /**
+     * 待分配量(amount-subcontract_amount-entrust_amount)
+     */
+    private BigDecimal waitDistributionAmount;
+
+    /**
+     * 分包量(给下游承运商分包的量)
+     */
+    private BigDecimal subcontractAmount;
+
+    /**
+     * 已委托量(自己承运,给下游司机分配的量)
+     */
+    private BigDecimal entrustAmount;
+
+
     /**
      * 卸货量
      */

+ 14 - 6
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/AcceptCarriageOrderService.java

@@ -185,8 +185,10 @@ public class AcceptCarriageOrderService {
             order.setSubcontractAmount(new BigDecimal(NumberConstant.ZERO));
             order.setUnit(bo.getCarryingCapacityUnit());
         }
-        BigDecimal ignoreAmount = logisticsOrder.getIgnoreAmount();
-        if (ignoreAmount.compareTo(new BigDecimal("0.00")) == 0) {
+        BigDecimal subcontractAmount = logisticsOrder.getSubcontractAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getSubcontractAmount();
+        BigDecimal entrustAmount = logisticsOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getEntrustAmount();
+        BigDecimal waitDistributionAmount = logisticsOrder.getAmount().subtract(subcontractAmount).subtract(entrustAmount);
+        if (waitDistributionAmount.compareTo(new BigDecimal("0.00")) == 0) {
             throw new RuntimeException("剩余可分配量为0,不可进行分包操作!");
         }
         int level = logisticsLevel(logisticsOrder);
@@ -250,7 +252,7 @@ public class AcceptCarriageOrderService {
         insertLogisticsOrderTrack(bo, orderId, orderStatus);
         //修改上级分配量以及可分配量委托量等
         logisticsOrder.setSubcontractAmount(logisticsOrder.getSubcontractAmount().add(bo.getCarryingCapacity()));
-        logisticsOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
+//        logisticsOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
         logisticsOrderMapper.updateById(logisticsOrder);
         //修改父级mongodb数据
         //更新mongodb
@@ -263,7 +265,7 @@ public class AcceptCarriageOrderService {
         lOrder.setUpdateBy(order.getUpdateBy());
         lOrder.setUpdateByName(LoginUserHolder.getUserName());
         lOrder.setSubcontractAmount(logisticsOrder.getSubcontractAmount().add(bo.getCarryingCapacity()));
-        lOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
+//        lOrder.setIgnoreAmount(logisticsOrder.getIgnoreAmount().subtract(bo.getCarryingCapacity()));
         //rabbitMq业务汇总数据发送/消费对象
         SckwBusSum busSum = new SckwBusSum();
         //业务汇总类型
@@ -588,9 +590,11 @@ public class AcceptCarriageOrderService {
         order.setSubcontractAmount(decimal);
         order.setLoadAmount(decimal);
         order.setUnloadAmount(decimal);
-        order.setIgnoreAmount(bo.getCarryingCapacity());
+        order.setIgnoreAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setDeficitAmount(decimal);
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
         logisticsOrderMapper.insert(order);
     }
@@ -2062,7 +2066,7 @@ public class AcceptCarriageOrderService {
         order.setEntrustAmount(decimal);
         order.setUnloadAmount(decimal);
         order.setLoadAmount(decimal);
-        order.setIgnoreAmount(orderDTO.getAmount());
+        order.setIgnoreAmount(decimal);
         order.setDeficitAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setTaxRate(orderDTO.getTaxRate());
@@ -2073,11 +2077,14 @@ public class AcceptCarriageOrderService {
         order.setUpdateBy(LoginUserHolder.getUserId());
         order.setUpdateTime(new Date());
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         logisticsOrderMapper.insert(order);
     }
 
     /**
      * 承运订单首页条件查询
+     *
      * @param query
      * @param type
      * @return
@@ -2163,6 +2170,7 @@ public class AcceptCarriageOrderService {
                     }
                 }
             }
+            vo.setWaitDistributionAmount(vo.getCarryingCapacity().subtract(vo.getSubcontractAmount()).subtract(vo.getEntrustAmount()));
         }
         return PageRes.build(pageInfo, list);
     }

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

@@ -736,7 +736,10 @@ public class ConsignOrderService {
         if (logisticsOrder == null) {
             throw new BusinessException("采购订单-完结订单-物流单据不存在!");
         }
-        if (logisticsOrder.getLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
+        if (logisticsOrder.getTotalLoadAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
+            throw new BusinessException("完结订单,实装量不能大于分配量");
+        }
+        if (logisticsOrder.getAmount().compareTo(orderFinishDTO.getLoadAmount()) > 0) {
             throw new BusinessException("完结订单,实装量不能大于分配量");
         }
         /**订单状态验证*/
@@ -750,7 +753,7 @@ public class ConsignOrderService {
             throw new BusinessException("检测您现在有运单正在执行中,该订单目前不可完结,请先将运单执行完毕!");
         }
         //修改单据本身数据
-        BigDecimal ignoreAmount = logisticsOrder.getAmount().subtract(logisticsOrder.getTotalLoadAmount());
+        BigDecimal ignoreAmount = logisticsOrder.getAmount().subtract(orderFinishDTO.getLoadAmount() == null ? new BigDecimal("0.00") : logisticsOrder.getLoadAmount());
         logisticsOrder.setTotalLoadAmount(orderFinishDTO.getLoadAmount());
         logisticsOrder.setTotalUnloadAmount(orderFinishDTO.getUnloadAmount());
         logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
@@ -1228,7 +1231,7 @@ public class ConsignOrderService {
         order.setEntrustAmount(decimal);
         order.setUnloadAmount(decimal);
         order.setLoadAmount(decimal);
-        order.setIgnoreAmount(addOrderDTO.getAmount());
+        order.setIgnoreAmount(decimal);
         order.setDeficitAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setTaxRate(addOrderDTO.getTaxRate());
@@ -1239,6 +1242,8 @@ public class ConsignOrderService {
         order.setUpdateBy(LoginUserHolder.getUserId());
         order.setUpdateTime(new Date());
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         kwtLogisticsOrderMapper.insert(order);
     }
 
@@ -1606,6 +1611,7 @@ public class ConsignOrderService {
                     }
                 }
             }
+            vo.setWaitDistributionAmount(vo.getCarryingCapacity().subtract(vo.getSubcontractAmount()).subtract(vo.getEntrustAmount()));
         }
         return PageRes.build(pageInfo, list);
     }

+ 37 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1,5 +1,6 @@
 package com.sckw.transport.service;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.github.pagehelper.PageHelper;
 import com.sckw.core.common.enums.NumberConstant;
 import com.sckw.core.exception.BusinessException;
@@ -2257,4 +2258,40 @@ public class KwtWaybillOrderService {
         map.put("total", proceed + finish + cancel);
         return map;
     }
+
+    /**
+     * 查询已排量、待运量数据
+     *
+     * @param orderId 物流订单id
+     * @return
+     */
+    public HttpResult getLogisticsAmountByOrderId(String orderId) {
+        KwtLogisticsOrder kwtLogisticsOrder = logisticsOrderDao.selectOne(new LambdaQueryWrapper<KwtLogisticsOrder>().eq(KwtLogisticsOrder::getId, Long.parseLong(orderId)));
+        if (kwtLogisticsOrder==null){
+            return HttpResult.error("单据不存在!");
+        }
+        BigDecimal amount = kwtLogisticsOrder.getAmount();
+        BigDecimal entrustAmount = kwtLogisticsOrder.getEntrustAmount() == null ? new BigDecimal("0.00") : kwtLogisticsOrder.getEntrustAmount();
+        BigDecimal subcontractAmount = kwtLogisticsOrder.getSubcontractAmount() == null ? new BigDecimal("0.00") : kwtLogisticsOrder.getSubcontractAmount();
+        BigDecimal waitDistributionAmount = amount.subtract(entrustAmount).subtract(subcontractAmount);
+        Map<String, Map> map = new HashMap(NumberConstant.SIXTEEN);
+        //有效的车辆运单状态(其他状态不参与统计中)
+        List<Long> statusList = new ArrayList<>();
+        statusList.add(CarWaybillEnum.PENDING_VEHICLE.getCode().longValue());
+        statusList.add(CarWaybillEnum.EXIT_COMPLETED.getCode().longValue());
+        statusList.add(CarWaybillEnum.WAIT_LOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.COMPLETION_LOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.WAIT_UNLOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.COMPLETION_UNLOADING.getCode().longValue());
+        statusList.add(CarWaybillEnum.APPROVAL_PASS.getCode().longValue());
+        //趟次
+        Map<String, Object> tripMap = waybillOrderDao.selectOrderByOrderId(Long.parseLong(orderId), 1, statusList);
+        tripMap.put("waitDistributionAmount",waitDistributionAmount);
+        map.put("trip", tripMap);
+        //循环
+        Map<String, Object> loopMap = waybillOrderDao.selectOrderByOrderId(Long.parseLong(orderId), 2, statusList);
+        loopMap.put("waitDistributionAmount",waitDistributionAmount);
+        map.put("loop", loopMap);
+        return HttpResult.ok(map);
+    }
 }

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

@@ -483,9 +483,11 @@ public class LogisticsConsignmentService {
         order.setSubcontractAmount(decimal);
         order.setLoadAmount(decimal);
         order.setUnloadAmount(decimal);
-        order.setIgnoreAmount(bo.getCarryingCapacity());
+        order.setIgnoreAmount(decimal);
         order.setDeficitPrice(decimal);
         order.setDeficitAmount(decimal);
+        order.setTotalUnloadAmount(decimal);
+        order.setTotalLoadAmount(decimal);
         order.setBindStatus(String.valueOf(NumberConstant.ZERO));
         kwtLogisticsOrderMapper.insert(order);
     }

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

@@ -549,8 +549,7 @@
     </select>
 
     <select id="countAmountByTradeOrderId" resultType="java.util.Map">
-        SELECT
-               IFNULL(SUM(unload_amount), 0)       AS unloadAmount,
+        SELECT IFNULL(SUM(unload_amount), 0)       AS unloadAmount,
                IFNULL(SUM(load_amount), 0)         AS loadAmount,
                IFNULL(SUM(total_load_amount), 0)   AS totalLoadAmount,
                IFNULL(SUM(total_unload_amount), 0) AS totalUnloadAmount

+ 15 - 0
sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

@@ -444,4 +444,19 @@
             </foreach>
         </if>
     </select>
+
+    <select id="selectOrderByOrderId" resultType="java.util.Map">
+        SELECT COUNT(id) total,SUM(IFNULL(entrust_amount,0)) AS amount
+        FROM
+        sckw_transport.kwt_waybill_order
+        WHERE
+        l_order_id = #{orderId}
+        AND type = #{type}
+        <if test="statusList != null and statusList.size() > 0">
+            and status in
+            <foreach collection="statusList" open="(" close=")" separator="," item="item">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 </mapper>