Browse Source

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

yzc 2 years ago
parent
commit
706e44d6b3

+ 15 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/LogisticsOrderEnum.java

@@ -138,4 +138,19 @@ public enum LogisticsOrderEnum {
         }
         return null;
     }
+
+    /**
+     * @param status 物流订单状态
+     * @description 校验物流订单是否运输完成
+     * @author zk
+     * @date 2023/7/31
+     **/
+    public static boolean transportCompleted(int status) {
+        if (status != LogisticsOrderEnum.HAVE_FINISHED.getCode()
+                && status != LogisticsOrderEnum.HAVE_RECONCILED.getCode()
+                && status != LogisticsOrderEnum.HAVE_ALREADY_SETTLED.getCode()) {
+            return false;
+        }
+        return true;
+    }
 }

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

@@ -126,17 +126,17 @@ public class SckwLogisticsOrder {
     private BigDecimal subcontractAmount;
 
     /**
-     * 已委托量
+     * 已委托量(自己承运量)
      */
     private BigDecimal entrustAmount;
 
     /**
-     * 卸货量
+     * 卸货量(自己承运总卸货量)
      */
     private BigDecimal unloadAmount;
 
     /**
-     * 装货量
+     * 装货量(自己承运总装货量)
      */
     private BigDecimal loadAmount;
 
@@ -146,15 +146,35 @@ public class SckwLogisticsOrder {
     private BigDecimal ignoreAmount;
 
     /**
-     * 亏吨量
+     * 亏吨量(自己承运总亏吨量)
      */
     private BigDecimal deficitAmount;
 
     /**
-     * 亏吨扣款
+     * 亏吨扣款(自己承运总亏吨扣款)
      */
     private BigDecimal deficitPrice;
 
+    /**
+     * 总卸货量(自己承运总卸货量+分包承运总卸货量)
+     */
+    private BigDecimal unloadTotalAmount;
+
+    /**
+     * 总装货量(自己承运总装货量+分包承运总装货量)
+     */
+    private BigDecimal loadTotalAmount;
+
+    /**
+     * 总亏吨量(自己承运总亏吨量+分包承运总亏吨量)
+     */
+    private BigDecimal deficitTotalAmount;
+
+    /**
+     * 总亏吨扣款(自己承运总亏吨扣款+分包承运总亏吨扣款)
+     */
+    private BigDecimal deficitTotalPrice;
+
     /**
      * 付款方式(预付款、线下支付、第三方支付)
      */

+ 15 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java

@@ -33,6 +33,17 @@ public class KwfTruckReportVo {
     @ExcelProperty(value = "车牌号")
     private String truckNo;
 
+    /**
+     * 状态
+     */
+    @ExcelIgnore
+    private int status;
+    /**
+     * 状态名称
+     */
+    @ExcelProperty(value = "状态")
+    private int statusName;
+
     /**
      * 司机主键id
      */
@@ -159,4 +170,8 @@ public class KwfTruckReportVo {
     @ExcelProperty(value = "备注")
     private String remark;
 
+    public String getStatusName() {
+        return status == 1 ? "正常" : status == 2 ? "临时" : "异常";
+    }
+
 }

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java

@@ -248,7 +248,7 @@ public class KwfTruckReportService {
                 truckReport.setDriverId(driver.getId());
             } else {
                 //校验司机是否已上报
-                Map<String, Object> driver = trucks.get(0);
+                Map<String, Object> driver = drivers.get(0);
                 Object driverId = driver.get("id");
                 List<Map<String, Object>> reports = truckReportDao.findList(new HashMap() {{
                     put("driverId", driverId);

+ 1 - 1
sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckReportMapper.xml

@@ -47,7 +47,7 @@
 
     <select id="findPage" resultType="com.sckw.fleet.model.vo.KwfTruckReportVo" parameterType="java.util.Map" >
         SELECT
-            trr.id, trr.ent_id entId, trr.truck_id truckId, driver_id driverId, trr.remark, trr.status,
+            trr.id, trr.ent_id entId, trr.truck_id truckId, driver_id driverId, trr.remark, tr.status,
             trr.create_by createBy, trr.create_time createTime, trr.update_time updateTime, trr.remark,
             tr.truck_no truckNo, tr.actual_weight actualWeight, tr.business_status businessStatus,
             dr.`name` driverName, dr.phone driverPhone, dr.idcard driverIdcard, dr.ent_id driverEntId,

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

@@ -9,6 +9,7 @@ import com.sckw.transport.model.param.LogisticsOrderParam;
 import com.sckw.transport.model.vo.DriverListVo;
 import com.sckw.transport.model.vo.OrderFinishVO;
 import com.sckw.transport.model.vo.SubcontractConsignmentVO;
+import com.sckw.transport.model.vo.WaybillCountVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
@@ -102,8 +103,8 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
     OrderFinishVO selectOrderFinishData(@Param("orderId") String orderId);
 
     /**
-     * @param params {lOrderId 物流订单id}
-     * @desc 查询下级分包物流订单
+     * @param params {ownOrderId 物流订单id, upperlOrderId 下级分包物流订单,belowlOrderId 所属上级分包}
+     * @desc 查询分包物流订单
      * @author zk
      * @date 2023/7/20
      **/

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

@@ -5,10 +5,12 @@ import com.sckw.mongo.model.TableTops;
 import com.sckw.transport.model.KwtWaybillOrder;
 import com.sckw.transport.model.dto.OrderCarDTO;
 import com.sckw.transport.model.dto.WayBillDetailDTO;
+import com.sckw.transport.model.vo.WaybillCountVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
@@ -62,4 +64,12 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @return
      */
     int selectDataByLorderId(@Param("id") String id, @Param("statusList") List<Integer> statusList);
+
+    /**
+     * @param params {lOrderId 物流订单id, upperlOrderId 下级分包物流订单,belowlOrderId 所属上级分包, loadCountStatus 有效装货状态, unloadCountStatus 有效卸货状态}
+     * @desc 统计车辆运单
+     * @author zk
+     * @date 2023/7/31
+     **/
+    WaybillCountVo findWaybillOrderCount(Map params);
 }

+ 2 - 2
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/SendCarDto1.java

@@ -116,7 +116,7 @@ public class SendCarDto1 {
     /**
      * 装货时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @NotNull(message = "开始时间不能为空")
     private Date loadDateTime;
@@ -124,7 +124,7 @@ public class SendCarDto1 {
     /**
      * 卸货时间
      */
-    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @JsonFormat(locale="zh", pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @NotNull(message = "结束时间不能为空")
     private Date unloadDateTime;

+ 45 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillCountVo.java

@@ -0,0 +1,45 @@
+package com.sckw.transport.model.vo;
+
+import lombok.Data;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * @author zk
+ * @desc 车辆运单统计
+ * @date 2023/7/31 0031
+ */
+@Data
+public class WaybillCountVo {
+    /**
+     * 装货量
+     */
+    private BigDecimal entrustAmount;
+
+    /**
+     * 装货量
+     */
+    private BigDecimal loadAmount;
+
+    /**
+     * 卸货量
+     */
+    private BigDecimal unloadAmount;
+
+    /**
+     * 亏吨量
+     */
+    private BigDecimal deficitAmount;
+
+    /**
+     * 装货时间(第一单车辆运单装货时间)
+     */
+    private Date loadTime;
+
+    /**
+     * 卸货时间(最后一单车辆运单卸货时间)
+     */
+    private Date unloadTime;
+
+
+}

+ 135 - 28
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -3,10 +3,7 @@ package com.sckw.transport.service;
 import com.sckw.core.model.constant.Global;
 import com.sckw.core.model.enums.CarWaybillEnum;
 import com.sckw.core.model.enums.LogisticsOrderEnum;
-import com.sckw.core.utils.BeanUtils;
-import com.sckw.core.utils.CollectionUtils;
-import com.sckw.core.utils.IdWorker;
-import com.sckw.core.utils.StringUtils;
+import com.sckw.core.utils.*;
 import com.sckw.core.web.constant.HttpStatus;
 import com.sckw.core.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
@@ -17,6 +14,7 @@ import com.sckw.stream.model.SckwBusSum;
 import com.sckw.transport.dao.*;
 import com.sckw.transport.model.*;
 import com.sckw.transport.model.dto.*;
+import com.sckw.transport.model.vo.WaybillCountVo;
 import jakarta.annotation.Resource;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
@@ -26,6 +24,7 @@ import org.springframework.transaction.annotation.Transactional;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 
@@ -1000,9 +999,12 @@ public class KwtWaybillOrderService {
         //承运订单已装货量=承运订单原装货量+当前车辆运单装货量
         BigDecimal loadAmount = logisticsOrder.getLoadAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getLoadAmount();
         logisticsOrder.setLoadAmount(loadAmount.add(waybillOrder.getLoadAmount()));
-        logisticsOrder.setLoadTime(waybillOrder.getUpdateTime());
+        logisticsOrder.setLoadTime(logisticsOrder.getLoadTime() == null ?waybillOrder.getUpdateTime() : logisticsOrder.getLoadTime());
         logisticsOrderDao.updateById(logisticsOrder);
 
+        //校验当前承运订单是否运输完成(修改状态+统计量)
+        checkLogisticsByStatusV1(waybillOrder.getLOrderId());
+
         /**5Mongodb数据更新**/
         //1车辆运单
         SckwWaybillOrder wOrder = new SckwWaybillOrder();
@@ -1106,10 +1108,12 @@ public class KwtWaybillOrderService {
         //承运订单亏吨量=承运订单装货量-承运订单卸货量
         logisticsOrder.setDeficitAmount(logisticsOrder.getLoadAmount().subtract(logisticsOrder.getUnloadAmount()));
         //承运订单亏吨扣款
-        deficitPrice(logisticsOrder);
+        BigDecimal deficitPrice = deficitPrice(logisticsOrder.getLoadAmount(), logisticsOrder.getDeficitAmount(), logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        logisticsOrder.setDeficitPrice(deficitPrice);
         logisticsOrderDao.updateById(logisticsOrder);
-        //校验当前承运订单是否运输完成
-        setLogisticsByUnloading(logisticsOrder.getId());
+
+        //校验当前承运订单是否运输完成(修改状态+统计量)
+        checkLogisticsByStatusV1(waybillOrder.getLOrderId());
 
         /**5Mongodb数据更新**/
         //1车辆运单
@@ -1134,33 +1138,34 @@ public class KwtWaybillOrderService {
     }
 
     /**
-     * @param logisticsOrder 物流订单
-     * @desc 计算物流订单亏吨扣款
+     * @param loadAmount 装货量
+     * @param deficitAmount 亏吨量
+     * @param loss 合理损耗
+     * @param goodsPrice 货值单价
+     * @desc 计算亏吨扣款
      * @author zk
      * @date 2023/7/27
      **/
-    public void deficitPrice(KwtLogisticsOrder logisticsOrder) {
+    public BigDecimal deficitPrice(BigDecimal loadAmount, BigDecimal deficitAmount, BigDecimal loss, BigDecimal goodsPrice) {
         //承运订单亏吨扣款=(承运订单亏吨量 -(承运订单装货量 * 承运订单合理损耗))* 扣亏货值
-        BigDecimal loadAmount = logisticsOrder.getLoadAmount();
-        BigDecimal deficitAmount = logisticsOrder.getDeficitAmount();
-        BigDecimal loss = logisticsOrder.getLoss() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getLoss();
-        BigDecimal goodsPrice = logisticsOrder.getGoodsPrice() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getGoodsPrice();
+        loss = loss == null ? new BigDecimal(Global.AMOUNT) : loss;
+        goodsPrice = goodsPrice == null ? new BigDecimal(Global.AMOUNT) : goodsPrice;
         BigDecimal deficitPrice = deficitAmount.subtract(loadAmount.multiply(loss).setScale(4, RoundingMode.HALF_UP))
                 .multiply(goodsPrice).setScale(4, RoundingMode.HALF_UP);
-        logisticsOrder.setDeficitPrice(deficitPrice);
+        return deficitPrice;
     }
 
     /**
      * @param lOrderId 承运订单ID
-     * @description 校验当前承运订单是否运输完成
+     * @description 校验当前承运订单是否运输完成(修改状态)
      * @author zk
      * @date 2023/7/27
      **/
-    public void setLogisticsByUnloading(Long lOrderId) {
+    public void checkLogisticsByStatus(Long lOrderId) {
         /**
          校验当前承运订单是否运输完成(虑该当前承运订单上下级物流订单)
-         存在下级分包,下级物流订单和当前物流订单全部运输完成则修改当前物流订单状态为已完成(HAVE_FINISHED)
-         当前物流订单属于分包:需要判断上级及同级分包全部运输完成修改上级物流订单状态为已完成(HAVE_FINISHED)-一直向上到一级物流订单
+         1存在下级分包,下级物流订单和当前物流订单全部运输完成则修改当前物流订单状态为已完成(HAVE_FINISHED)
+         2当前物流订单属于分包:需要判断上级及同级分包全部运输完成修改上级物流订单状态为已完成(HAVE_FINISHED)-一直向上到一级物流订单
          **/
         //承运单信息
         KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(lOrderId);
@@ -1169,11 +1174,11 @@ public class KwtWaybillOrderService {
             return;
         }
 
-        /**存在下级分包**/
+        /**1存在下级分包**/
         BigDecimal subcontractAmount = logisticsOrder.getSubcontractAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getSubcontractAmount();
         if (subcontractAmount.compareTo(new BigDecimal(Global.AMOUNT)) == 0) {
             List<KwtLogisticsOrder> logisticsOrders = logisticsOrderDao.findLogisticsOrder(
-                    new HashMap(){{put("upperlOrderId", logisticsOrder.getId()); put("lOrderId", logisticsOrder.getId());}});
+                    new HashMap(){{put("upperlOrderId", logisticsOrder.getId()); put("ownOrderId", logisticsOrder.getId());}});
             for (KwtLogisticsOrder logisticsOrder1:logisticsOrders) {
                 if (logisticsOrder1.getStatus() == LogisticsOrderEnum.TO_BE_PLANNED.getCode()
                         || logisticsOrder1.getStatus() == LogisticsOrderEnum.PENDING_ORDER.getCode()
@@ -1200,15 +1205,98 @@ public class KwtWaybillOrderService {
             editSckwLogisticsOrder(lOrder, logisticsOrder);
         }
 
-        /**当前物流订单属于分包(存在上级物流订单)**/
-        //当前承运订单所属分包层级
-        //int level = checkLogisticsLevel(logisticsOrder);
+        /**2当前物流订单属于分包(存在上级物流订单)**/
+        //获取所有上级物流订单ID(当前物流订单ID除外)
         String pids = logisticsOrder.getPids();
         if (StringUtils.isNotBlank(pids)) {
-            String [] idArray = pids.split(",");
-            for (String id : idArray) {
-                KwtLogisticsOrder order = logisticsOrderDao.selectById(id);
+            List<Long> idArray = (List)Arrays.asList(pids);
+            for (Long id : idArray) {
+                //当前物流订单ID除外
+                if (id != lOrderId) {
+                    /**校验当前承运订单是否运输完成**/
+                    checkLogisticsByStatus(id);
+                }
+            }
+        }
+    }
+
+    /**
+     * @param lOrderId 承运订单ID
+     * @description 校验当前承运订单是否运输完成(修改状态+统计量)
+     * @author zk
+     * @date 2023/7/27
+     **/
+    public void checkLogisticsByStatusV1(Long lOrderId) {
+        /**
+         校验当前承运订单是否运输完成(虑该当前承运订单上下级物流订单)
+         1存在下级分包,下级物流订单和当前物流订单全部运输完成则修改当前物流订单状态为已完成(HAVE_FINISHED)、统计值
+         2当前物流订单属于分包:需要判断上级及同级分包全部运输完成修改上级物流订单状态为已完成(HAVE_FINISHED)、统计值-一直向上到一级物流订单
+         **/
+        //承运单信息
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(lOrderId);
 
+        /**1存在下级分包**/
+        boolean subcontractBool = true;
+        BigDecimal subcontractAmount = logisticsOrder.getSubcontractAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getSubcontractAmount();
+        if (subcontractAmount.compareTo(new BigDecimal(Global.AMOUNT)) > 0) {
+            /**1-1校验下级分包是否全部运输完成**/
+            List<KwtLogisticsOrder> logisticsOrders = logisticsOrderDao.findLogisticsOrder(
+                    new HashMap(){{put("upperlOrderId", logisticsOrder.getId()); put("ownOrderId", logisticsOrder.getId());}});
+            for (KwtLogisticsOrder logisticsOrder1:logisticsOrders) {
+                if (!LogisticsOrderEnum.transportCompleted(logisticsOrder1.getStatus())) {
+                    //下级分包承运订单运输未完成
+                    subcontractBool = false;
+                }
+            }
+        }
+
+        /**校验当前承运订单是否运输完成**/
+        WaybillCountVo waybillCount = waybillOrderDao.findWaybillOrderCount( new HashMap(){{put("lOrderId", logisticsOrder.getId());
+            put("passStatus", 1); }});
+        //物流运单状态(不包含已完成、已对账、已结算)+ 物流订单上级委派量-下游分包总量 <= 自己承运总装货量 + 下级分包全部运输完成
+        if (!LogisticsOrderEnum.transportCompleted(logisticsOrder.getStatus())
+                && logisticsOrder.getAmount().subtract(subcontractAmount).compareTo(waybillCount.getLoadAmount()) <= 0
+                && subcontractBool) {
+            /**1-2下级分包承运订单运输完成**/
+            logisticsOrder.setStatus(LogisticsOrderEnum.HAVE_FINISHED.getCode());
+            logisticsOrderDao.updateById(logisticsOrder);
+
+            /**1-3承运订单状态记录**/
+            KwtLogisticsOrderTrack orderTrack = new KwtLogisticsOrderTrack();
+            orderTrack.setLOrderId(logisticsOrder.getId());
+            orderTrack.setStatus(logisticsOrder.getStatus());
+            orderTrack.setRemark(LogisticsOrderEnum.getName(logisticsOrder.getStatus()));
+            logisticsOrderTrackDao.insert(orderTrack);
+        }
+
+        //车辆运单统计
+        /**1-4Mongodb数据更新**/
+        //车辆运单统计
+        waybillCount = waybillOrderDao.findWaybillOrderCount( new HashMap(){{put("lOrderId", logisticsOrder.getId());
+            put("unloadCountStatus", 1); put("upperlOrderId", logisticsOrder.getId()); }});
+        //2承运订单
+        SckwLogisticsOrder lOrder = new SckwLogisticsOrder();
+        lOrder.setLoadTime(waybillCount.getLoadTime());
+        lOrder.setUnloadTime(waybillCount.getUnloadTime());
+        lOrder.setLoadTotalAmount(waybillCount.getLoadAmount());
+        lOrder.setUnloadTotalAmount(waybillCount.getUnloadAmount());
+        lOrder.setDeficitTotalAmount(waybillCount.getDeficitAmount());
+        BigDecimal deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        lOrder.setDeficitPrice(deficitPrice);
+        editSckwLogisticsOrder(lOrder, logisticsOrder);
+
+        /**2当前物流订单属于分包(存在上级物流订单)**/
+        //获取所有上级物流订单ID(当前物流订单ID除外)
+        String pids = logisticsOrder.getPids();
+        if (StringUtils.isNotBlank(pids)) {
+            List<Long> idArray = (List)Arrays.asList(pids);
+            for (Long id : idArray) {
+                //当前物流订单ID除外
+                if (id != lOrderId) {
+                    /**校验当前承运订单是否运输完成**/
+                    checkLogisticsByStatusV1(id);
+                }
             }
         }
     }
@@ -1221,16 +1309,32 @@ public class KwtWaybillOrderService {
      **/
     public HttpResult editTicket(WaybillOrderTicketDto params) {
         /**校验**/
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        if (waybillOrder == null) {
+            return HttpResult.error("车辆运单信息不存在!");
+        }
         KwtWaybillOrderTicket ticket = waybillOrderTicketDao.findWaybillOrderTicket(params.getWOrderId(), params.getType());
         if (ticket == null) {
             return HttpResult.error("车辆运单榜单信息不存在!");
         }
 
+        /**更新车辆运单信息**/
+        waybillOrder.setLoadAmount(params.getType() == 1 ? params.getAmount() : waybillOrder.getLoadAmount());
+        waybillOrder.setUnloadAmount(params.getType() == 2 ? params.getAmount() : waybillOrder.getUnloadAmount());
+        waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
+        waybillOrderDao.updateById(waybillOrder);
+
         /**更新榜单信息**/
         BeanUtils.copyProperties(params, ticket);
         waybillOrderTicketDao.updateById(ticket);
 
         /**更新承运订单装卸货量**/
+        //有更新装卸货量才会更新物流订单量
+        if (waybillOrder.getLoadAmount().compareTo(params.getAmount()) != 0
+                || waybillOrder.getUnloadAmount().compareTo(params.getAmount()) != 0) {
+            //校验当前承运订单是否运输完成(修改状态+统计量)
+            checkLogisticsByStatusV1(waybillOrder.getLOrderId());
+        }
 
         return HttpResult.ok("修改单证成功!");
     }
@@ -1272,6 +1376,9 @@ public class KwtWaybillOrderService {
         wOrder.set_id(waybillOrder.getId());
         editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
+        /**4校验当前承运订单是否运输完成(修改状态+统计量)**/
+        checkLogisticsByStatusV1(waybillOrder.getLOrderId());
+
         /**4发送消息**/
 
         return HttpResult.ok("车辆运单审核完成!");

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

@@ -375,8 +375,7 @@
         </where>
     </select>
 
-    <select id="findLogisticsOrder" resultType="com.sckw.transport.model.KwtLogisticsOrder"
-            parameterType="java.util.Map">
+    <select id="findLogisticsOrder" resultType="com.sckw.transport.model.KwtLogisticsOrder" parameterType="java.util.Map">
         select
         id, ent_id entId, t_order_id tOrderId, t_order_no tOrderNo, l_order_no lOrderNo, pid, pids,
         settlement_cycle settlementCycle, price, price_type priceType, billing_mode billingMode,
@@ -392,11 +391,11 @@
         </if>
         <if test="upperlOrderId != null and upperlOrderId != ''">
             and FIND_IN_SET(#{upperlOrderId, jdbcType=BIGINT}, pids)
-            and id != #{lOrderId, jdbcType=BIGINT}
+            and id != #{ownOrderId, jdbcType=BIGINT}
         </if>
         <if test="belowlOrderId != null and belowlOrderId != ''">
             and FIND_IN_SET(id, #{belowlOrderId, jdbcType=VARCHAR})
-            and id != #{lOrderId, jdbcType=BIGINT}
+            and id != #{ownOrderId, jdbcType=BIGINT}
         </if>
     </select>
 </mapper>

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

@@ -145,4 +145,34 @@
             </if>
         </where>
     </select>
+
+    <select id="findWaybillOrderCount" resultType="com.sckw.transport.model.vo.WaybillCountVo" parameterType="java.util.Map">
+        SELECT
+        IFNULL(SUM(wo.entrust_amount), 0.0) entrustAmount, IFNULL(SUM(wo.load_amount), 0.0) loadAmount,
+        IFNULL(SUM(wo.unload_amount), 0.0) unloadAmount, IFNULL(SUM(wo.deficit_amount), 0.0) deficitAmount,
+        MIN(wot1.time) loadTime, MAX(wot2.time) unloadTime
+        from kwt_waybill_order wo
+        left join kwt_waybill_order_ticket wot1 on wot1.w_order_id = wo.id and wot1.type = 1 and wot1.del_flag = 0
+        left join kwt_waybill_order_ticket wot2 on wot2.w_order_id = wo.id and wot2.type = 2 and wot2.del_flag = 0
+        left join kwt_logistics_order lo on lo.id = wo.l_order_id
+        where wo.del_flag = 0 and lo.del_flag = 0
+        <if test="lOrderId != null and lOrderId != ''">
+            and lo.id = #{lOrderId, jdbcType=BIGINT}
+        </if>
+        <if test="passStatus != null and passStatus != ''">
+            wo.status = 8
+        </if>
+        <if test="loadCountStatus != null and loadCountStatus != ''">
+            wo.status in (5, 6, 7, 8, 12)
+        </if>
+        <if test="unloadCountStatus != null and unloadCountStatus != ''">
+            wo.status in (7, 8, 12)
+        </if>
+        <if test="upperlOrderId != null and upperlOrderId != ''">
+            and FIND_IN_SET(#{upperlOrderId, jdbcType=BIGINT}, pids)
+        </if>
+        <if test="belowlOrderId != null and belowlOrderId != ''">
+            and FIND_IN_SET(id, #{belowlOrderId, jdbcType=VARCHAR})
+        </if>
+    </select>
 </mapper>