Explorar o código

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

xucaiqin %!s(int64=2) %!d(string=hai) anos
pai
achega
9100adf673
Modificáronse 36 ficheiros con 960 adicións e 145 borrados
  1. 18 0
      sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java
  2. 33 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java
  3. 5 0
      sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/vo/RDriverVo.java
  4. 1 1
      sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java
  5. 33 5
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java
  6. 13 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java
  7. 57 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java
  8. 5 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfDriver.java
  9. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTruck.java
  10. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java
  11. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckReportVo.java
  12. 1 1
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java
  13. 12 0
      sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/service/KwfTruckReportService.java
  14. 7 2
      sckw-modules/sckw-fleet/src/main/resources/mapper/KwfTruckReportMapper.xml
  15. 31 21
      sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java
  16. 2 2
      sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml
  17. 14 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java
  18. 9 6
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java
  19. 32 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateAmountParam.java
  20. 6 0
      sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsList.java
  21. 42 1
      sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java
  22. 3 2
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java
  23. 17 14
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java
  24. 4 0
      sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java
  25. 16 23
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java
  26. 9 9
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java
  27. 12 1
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtLogisticsOrderMapper.java
  28. 7 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/dao/KwtWaybillOrderMapper.java
  29. 5 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrder.java
  30. 57 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeDriverDto.java
  31. 68 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeTruckDto.java
  32. 15 0
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/vo/WaybillCountVo.java
  33. 234 18
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java
  34. 134 33
      sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/LogisticsConsignmentService.java
  35. 25 0
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtLogisticsOrderMapper.xml
  36. 30 3
      sckw-modules/sckw-transport/src/main/resources/mapper/KwtWaybillOrderMapper.xml

+ 18 - 0
sckw-common/sckw-common-core/src/main/java/com/sckw/core/model/enums/CarWaybillEnum.java

@@ -110,4 +110,22 @@ public enum CarWaybillEnum {
         }
         return null;
     }
+
+    /**
+     * @param code 状态码
+     * @desc 是否可以变更司机/车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public static boolean changeDriverAndTruck(int code) {
+        if (code == CarWaybillEnum.COMPLETION_UNLOADING.getCode()
+                || code == CarWaybillEnum.APPROVAL_PASS.getCode()
+                || code == CarWaybillEnum.REJECT_ORDER.getCode()
+                || code == CarWaybillEnum.REFUSE_TRAFFIC.getCode()
+                || code == CarWaybillEnum.REVOKED.getCode()
+                || code == CarWaybillEnum.APPROVAL_NO_PASS.getCode()) {
+            return false;
+        }
+        return true;
+    }
 }

+ 33 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/RemoteFleetService.java

@@ -21,6 +21,22 @@ public interface RemoteFleetService {
      **/
     Map<Long, RDriverVo> findDriver(List<Long> driverIds);
 
+    /**
+     * @param driverId 司机档案主键id
+     * @desc 查询司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    RDriverVo findDriver(Long driverId);
+
+    /**
+     * @param params 司机档案信息
+     * @desc 更新司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    int updateById(RDriverVo params);
+
     /**
      * @param truckNos 车牌号,多个已逗号隔开
      * @desc 查询车辆信息
@@ -28,4 +44,21 @@ public interface RemoteFleetService {
      * @date 2023/7/18
      **/
     Map<String, RTruckVo> findTruck(List<String> truckNos);
+
+    /**
+     * @param truckId 车辆档案主键id
+     * @desc 查询车辆信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    RTruckVo findTruck(Long truckId);
+
+    /**
+     * @param params 车辆档案信息
+     * @desc 更新车辆档案
+     * @author zk
+     * @date 2023/8/3
+     **/
+    int updateById(RTruckVo params);
+
 }

+ 5 - 0
sckw-modules-api/sckw-fleet-api/src/main/java/com/sckw/fleet/api/model/vo/RDriverVo.java

@@ -46,4 +46,9 @@ public class RDriverVo implements Serializable {
      * 总运量(净重)
      */
     private BigDecimal totalWeight;
+
+    /**
+     * 车辆业务状态
+     */
+    private Integer businessStatus;
 }

+ 1 - 1
sckw-modules-api/sckw-order-api/src/main/java/com/sckw/order/api/model/OrderDetailRes.java

@@ -108,7 +108,7 @@ public class OrderDetailRes implements Serializable {
     private BigDecimal actualAmount;
 
     /**
-     * 订单创建来源类型(采购下单/销售代客下单)
+     * 订单创建来源类型(1采购下单/2销售代客下单)
      */
     private String source;
 

+ 33 - 5
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckController.java

@@ -301,11 +301,15 @@ public class KwfTruckController {
 
         List data = new ArrayList();
         for (String truckNo:truckNos) {
+            int aaa = new Random().nextInt(10) / 3;
+            int bbb = new Random().nextInt(10) / 4;
             data.add(new HashMap(){{
                 put("truckNo", truckNo);
                 put("speed", new Random().nextInt(100));
-                put("lng", "30."+new Random().nextInt(1000000));
-                put("lat", "103."+new Random().nextInt(1000000));
+                put("lat", "30.58"+new Random().nextInt(10000));
+                put("lng", "104.06"+new Random().nextInt(10000));
+                put("businessStatus", aaa == 0 ? 0 : 1);
+                put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);
                 put("gpsTime", DateUtils.getCurrentTime());}});
         }
         return HttpResult.ok(data);
@@ -325,17 +329,41 @@ public class KwfTruckController {
             put("lng", "30.60513"); put("lat", "104.05079");
             put("gpsTime", DateUtils.format(params.getStartTime(), DateUtils.DATE_TIME_PATTERN));}});
         for (long i=0; i<hours; i++) {
+            int aaa = new Random().nextInt(10) / 3;
+            int bbb = new Random().nextInt(10) / 4;
             data.add(new HashMap(){{
                 put("truckNo", params.getTruckNo());
                 put("speed", new Random().nextInt(100));
-                put("lng", "30."+new Random().nextInt(1000000));
-                put("lat", "103."+new Random().nextInt(1000000));
+                put("lat", "30.58"+new Random().nextInt(10000));
+                put("lng", "104.06"+new Random().nextInt(10000));
+                put("businessStatus", aaa == 0 ? 0 : 1);
+                put("runStatus", bbb == 0 ? 0 : bbb == 1 ? 1 : 2);
                 put("gpsTime", DateUtils.getCurrentTime());}});
         }
         data.add(new HashMap(){{put("truckNo", params.getTruckNo()); put("speed", 95.0);
-            put("lng", "29.524931"); put("lat", "103.734587");
+            put("lat", "29.524931"); put("lng", "103.734587");
             put("gpsTime", DateUtils.format(params.getEndTime(), DateUtils.DATE_TIME_PATTERN));}});
         return HttpResult.ok(data);
     }
 
+    /**
+     * @param truckNo 车牌号
+     * @description 车牌号查询车辆关联数据
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @GetMapping("/findDetailByTruckNo")
+    public HttpResult findDetailByTruckNo(String truckNo) {
+        Map detail = new HashMap();
+        detail.put("truckNo", truckNo);
+        detail.put("driverName", "赵先生");
+        detail.put("driverPhone", "17358629955");
+        detail.put("firmName", "东旭物流有限公司");
+        detail.put("detailAddress", "四川省成都市xxx路10号");
+        detail.put("lat", "30.58"+new Random().nextInt(10000));
+        detail.put("lng", "104.06"+new Random().nextInt(10000));
+        detail.put("speed", new Random().nextInt(100));
+        detail.put("gpsTime", DateUtils.getCurrentTime());
+        return HttpResult.ok(detail);
+    }
 }

+ 13 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/controller/KwfTruckReportController.java

@@ -5,6 +5,7 @@ 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.web.context.LoginUserHolder;
 import com.sckw.core.web.response.HttpResult;
 import com.sckw.excel.easyexcel.RequestHolder;
 import com.sckw.excel.utils.ExcelUtil;
@@ -83,6 +84,18 @@ public class KwfTruckReportController {
         return HttpResult.error("无数据!");
     }
 
+    /**
+     * @param params {。。。}
+     * @desc 查询
+     * @author zk
+     * @date 2023/7/6
+     **/
+    @PostMapping("/findList")
+    public HttpResult findList(@RequestBody HashMap params) throws SystemException {
+        params.put("entId", LoginUserHolder.getEntId());
+        return HttpResult.ok(reportService.findList(params));
+    }
+
     /**
      * @param file 导入文件
      * @description 导入

+ 57 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/dubbo/RemoteFleetServiceImpl.java

@@ -1,11 +1,14 @@
 package com.sckw.fleet.dubbo;
 
+import com.sckw.core.utils.BeanUtils;
 import com.sckw.core.utils.CollectionUtils;
 import com.sckw.fleet.api.RemoteFleetService;
 import com.sckw.fleet.api.model.vo.RDriverVo;
 import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.fleet.dao.KwfDriverMapper;
 import com.sckw.fleet.dao.KwfTruckMapper;
+import com.sckw.fleet.model.KwfDriver;
+import com.sckw.fleet.model.KwfTruck;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -59,6 +62,33 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
         return driverMap;
     }
 
+    /**
+     * @param driverId 司机档案主键id
+     * @desc 查询司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public RDriverVo findDriver(Long driverId) {
+        RDriverVo driverVo = new RDriverVo();
+        KwfDriver driver = driverDao.selectById(driverId);
+        BeanUtils.copyProperties(driver, driverVo);
+        return driverVo;
+    }
+
+    /**
+     * @param params 司机档案信息
+     * @desc 更新司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public int updateById(RDriverVo params) {
+        KwfDriver driver = new KwfDriver();
+        BeanUtils.copyProperties(params, driver);
+        return driverDao.updateById(driver);
+    }
+
     /**
      * @param truckNos 车牌号,多个已逗号隔开
      * @desc 查询车辆信息
@@ -90,4 +120,31 @@ public class RemoteFleetServiceImpl implements RemoteFleetService {
 
         return truckMap;
     }
+
+    /**
+     * @param truckId 车辆档案主键id
+     * @desc 查询车辆信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public RTruckVo findTruck(Long truckId) {
+        RTruckVo truckVo = new RTruckVo();
+        KwfTruck truck = truckDao.selectById(truckId);
+        BeanUtils.copyProperties(truck, truckVo);
+        return truckVo;
+    }
+
+    /**
+     * @param params 车辆档案信息
+     * @desc 更新车辆档案
+     * @author zk
+     * @date 2023/8/3
+     **/
+    @Override
+    public int updateById(RTruckVo params) {
+        KwfTruck truck = new KwfTruck();
+        BeanUtils.copyProperties(params, truck);
+        return truckDao.updateById(truck);
+    }
 }

+ 5 - 0
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfDriver.java

@@ -61,4 +61,9 @@ public class KwfDriver extends BaseModel {
      */
     private BigDecimal totalWeight;
 
+    /**
+     * 车辆业务状态(0空闲、1任务)
+     */
+    private Integer businessStatus;
+
 }

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/KwfTruck.java

@@ -92,7 +92,7 @@ public class KwfTruck extends BaseModel {
     private BigDecimal totalWeight;
 
     /**
-     * 车辆业务状态
+     * 车辆业务状态(0空闲、1任务)
      */
     private Integer businessStatus;
 

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfDriverVo.java

@@ -147,7 +147,7 @@ public class KwfDriverVo {
     private String remark;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

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

@@ -34,7 +34,7 @@ public class KwfTruckReportVo {
     private String truckNo;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

+ 1 - 1
sckw-modules/sckw-fleet/src/main/java/com/sckw/fleet/model/vo/KwfTruckVo.java

@@ -23,7 +23,7 @@ public class KwfTruckVo {
     private String id;
 
     /**
-     * 状态
+     * 状态(1正常、2零时、3异常)
      */
     @ExcelIgnore
     private int status;

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

@@ -29,6 +29,8 @@ import com.sckw.system.api.model.dto.res.UserCacheResDto;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.math.BigDecimal;
@@ -164,6 +166,16 @@ public class KwfTruckReportService {
         return trucks;
     }
 
+    /**
+     * @param params {。。。}
+     * @desc 查询
+     * @author zk
+     * @date 2023/7/6
+     **/
+    public HttpResult findList(HashMap params) throws SystemException {
+        return HttpResult.ok(truckReportDao.findList(params));
+    }
+
     /**
      * @param {}
      * @description 导出

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

@@ -102,8 +102,10 @@
 
     <select id="findList" resultType="java.util.Map" parameterType="java.util.Map" >
         SELECT
-            trr.id, trr.ent_id entId, truck_id truckId, driver_id driverId, trr.remark, trr.status,
-            tr.truck_no, tr.actual_weight, tr.business_status, dr.`name`, dr.phone, dr.idcard
+            trr.id, trr.ent_id entId, trr.status, dr.id driverId, dr.name driverName, dr.phone driverPhone, dr.idcard driverIdcard,
+            tr.id truckId, tr.truck_no truckNo, tr.type truckType, tr.energy_type truckEnergyType,
+            tr.use_type truckUseType, tr.color truckColor, tr.trailer_no truckTrailerNo,
+            tr.business_status businessStatus, tr.actual_weight actualWeight
         from kwf_truck_report trr
         left join kwf_truck tr on tr.id = trr.truck_id
         left join kwf_driver dr on dr.id = trr.driver_id
@@ -123,6 +125,9 @@
         <if test="truckNo != null and truckNo != ''">
             and tr.truck_no = #{truckNo, jdbcType=VARCHAR}
         </if>
+        <if test="businessStatus != null and businessStatus != ''">
+            and tr.business_status = #{businessStatus, jdbcType=VARCHAR}
+        </if>
         <if test="status != null and status != ''">
             and trr.status = #{status, jdbcType=VARCHAR}
         </if>

+ 31 - 21
sckw-modules/sckw-order/src/main/java/com/sckw/order/serivce/KwoTradeOrderService.java

@@ -28,6 +28,8 @@ import com.sckw.payment.api.model.dto.WalletDto;
 import com.sckw.payment.api.model.dto.common.R;
 import com.sckw.product.api.dubbo.GoodsInfoService;
 import com.sckw.product.api.model.KwpGoods;
+import com.sckw.redis.constant.RedisConstant;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.AreaTreeFrontResDto;
@@ -776,29 +778,37 @@ public class KwoTradeOrderService {
         if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), DictEnum.TORDER_UNIT_TYPE_2.getValue())) {
             throw new BusinessException("无订单操作权限!");
         }
-        order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
-        kwoTradeOrderMapper.updateById(order);
-        //订单状态记录
-        KwoTradeOrderTrack track = new KwoTradeOrderTrack();
-        track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
-        kwoTradeOrderTrackService.insert(track);
-        if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
-            KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
-            if (Objects.isNull(goods)) {
-                throw new BusinessException("商品信息异常!");
-            }
-            //更新库存
-            BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
-            HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
-            if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
-                throw new BusinessException(updateResult.getMsg());
+        String lockKey = String.format(RedisConstant.TORDER_UPDATE_AMOUNT_KEY, param.getId());
+        if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+            throw new BusinessException("业务繁忙,请稍后再试!");
+        }
+        try {
+            order.setActualAmount(param.getActualAmount()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_5.getValue()));
+            kwoTradeOrderMapper.updateById(order);
+            //订单状态记录
+            KwoTradeOrderTrack track = new KwoTradeOrderTrack();
+            track.setTOrderId(order.getId()).setTOrderNo(order.getTOrderNo()).setRemark(param.getRemark()).setStatus(order.getStatus());
+            kwoTradeOrderTrackService.insert(track);
+            if (param.getActualAmount().compareTo(order.getAmount()) != 0) {
+                KwoTradeOrderGoods goods = kwoTradeOrderGoodsService.getByOrderId(param.getId());
+                if (Objects.isNull(goods)) {
+                    throw new BusinessException("商品信息异常!");
+                }
+                //更新库存
+                BigDecimal amount = param.getActualAmount().subtract(order.getAmount());
+                HttpResult updateResult = goodsInfoService.updateGoodsAmount(goods.getGoodsId(), amount);
+                if (!Objects.equals(HttpStatus.SUCCESS_CODE, updateResult.getCode())) {
+                    throw new BusinessException(updateResult.getMsg());
+                }
             }
+            //mongodb更新订单状态
+            SckwTradeOrder updateParam = new SckwTradeOrder();
+            updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
+                    .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
+            saveMongoDb(3, updateParam);
+        } finally {
+            RedissonUtils.unlock(lockKey);
         }
-        //mongodb更新订单状态
-        SckwTradeOrder updateParam = new SckwTradeOrder();
-        updateParam.setTOrderId(order.getId()).setActualAmount(order.getActualAmount()).setStatus(order.getStatus())
-                .setUpdateBy(LoginUserHolder.getUserId()).setUpdateByName(LoginUserHolder.getUserName()).setUpdateTime(new Date());
-        saveMongoDb(3, updateParam);
 
     }
 

+ 2 - 2
sckw-modules/sckw-order/src/main/resources/bootstrap-dev.yml

@@ -5,7 +5,7 @@ spring:
         # 服务注册地址
         server-addr: 10.10.10.230:8848
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_lfdc
         # 共享配置
         group: sckw-service-platform
       config:
@@ -14,7 +14,7 @@ spring:
         # 配置文件格式
         file-extension: yaml
         # 命名空间
-        namespace: sckw-service-platform-dev
+        namespace: sckw_lfdc
         # 共享配置
         group: sckw-service-platform
         #可以读多个配置文件  需要在同一个命名空间下面可以是不同的组

+ 14 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/controller/KwpGoodsController.java

@@ -211,4 +211,18 @@ public class KwpGoodsController {
         return HttpResult.ok(kwpGoodsService.maxPurchaseNum(param));
     }
 
+
+    /**
+     * @desc: 更新商品库存
+     * @author: yzc
+     * @date: 2023-08-03 17:05
+     * @Param param:
+     * @return: com.sckw.core.web.response.HttpResult
+     */
+    @Log(description = "更新商品库存")
+    @PostMapping(value = "/updateAmount", produces = MediaType.APPLICATION_JSON_VALUE)
+    public HttpResult updateAmount(@RequestBody @Validated UpdateAmountParam param) {
+        kwpGoodsService.updateAmount(param);
+        return HttpResult.ok("更新商品库存成功");
+    }
 }

+ 9 - 6
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/GoodsListExport.java

@@ -36,7 +36,7 @@ public class GoodsListExport implements Serializable {
     @ExcelProperty(value = "规格尺寸", index = 4)
     private String spec;
 
-    @ExcelProperty(value = "增值税", index = 5)
+    @ExcelProperty(value = "发票税率", index = 5)
     private String taxRateLabel;
 
     @ExcelProperty(value = "库存数量", index = 6)
@@ -45,13 +45,13 @@ public class GoodsListExport implements Serializable {
     @ExcelProperty(value = "交易方式", index = 7)
     private String tradingLabel;
 
-    @ExcelProperty(value = "最单价", index = 8)
+    @ExcelProperty(value = "最单价", index = 8)
     private String highestPrice;
 
-    @ExcelProperty(value = "最单价", index = 9)
+    @ExcelProperty(value = "最单价", index = 9)
     private String lowestPrice;
 
-    @ExcelProperty(value = "地址信息", index = 10)
+    @ExcelProperty(value = "仓储地址", index = 10)
     private String address;
 
     @ExcelProperty(value = "客户经理", index = 11)
@@ -69,10 +69,13 @@ public class GoodsListExport implements Serializable {
     @ExcelProperty(value = "供应企业", index = 15)
     private String supplyEnt;
 
-    @ExcelProperty(value = "创人", index = 16)
+    @ExcelProperty(value = "创人", index = 16)
     private String createByName;
 
-    @ExcelProperty(value = "备注", index = 17)
+    @ExcelProperty(value = "创建时间", index = 17)
+    private String createTime;
+
+    @ExcelProperty(value = "备注", index = 18)
     private String remark;
 
 }

+ 32 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/req/UpdateAmountParam.java

@@ -0,0 +1,32 @@
+package com.sckw.product.model.vo.req;
+
+import jakarta.validation.constraints.DecimalMin;
+import jakarta.validation.constraints.NotNull;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+import org.hibernate.validator.constraints.Range;
+
+import java.math.BigDecimal;
+
+/**
+ * @desc: 更新商品库存请求参数
+ * @author: yzc
+ * @date: 2023-08-03 17:00
+ */
+@Getter
+@Setter
+@ToString
+public class UpdateAmountParam {
+
+    @NotNull(message = "商品id不能为空")
+    private Long id;
+
+    @NotNull(message = "变更类型不能为空")
+    @Range(min = 0, max = 1,message = "非法变更类型")
+    private Integer updateType;
+
+    @NotNull(message = "变更数量不能为空")
+    @DecimalMin(value = "0.00", message = "变更数量应该大于零")
+    private BigDecimal updateAmount;
+}

+ 6 - 0
sckw-modules/sckw-product/src/main/java/com/sckw/product/model/vo/res/GoodsList.java

@@ -142,6 +142,12 @@ public class GoodsList {
      */
     private String createByName;
 
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date createTime;
+
     /**
      * 备注
      */

+ 42 - 1
sckw-modules/sckw-product/src/main/java/com/sckw/product/service/KwpGoodsService.java

@@ -27,6 +27,8 @@ import com.sckw.product.enums.GoodsStatusEnum;
 import com.sckw.product.model.*;
 import com.sckw.product.model.vo.req.*;
 import com.sckw.product.model.vo.res.*;
+import com.sckw.redis.constant.RedisConstant;
+import com.sckw.redis.utils.RedissonUtils;
 import com.sckw.system.api.RemoteSystemService;
 import com.sckw.system.api.model.dto.res.EntCacheResDto;
 import com.sckw.system.api.model.dto.res.SysDictResDto;
@@ -229,6 +231,10 @@ public class KwpGoodsService {
         if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode())
                 || Objects.equals(goods.getStatus(), GoodsStatusEnum.TAKE_OFF_SHELVES.getCode())) {
             judgeParameters(param);
+            if (Objects.equals(goods.getStatus(), GoodsStatusEnum.PUT_ON_SHELVES.getCode()) &&
+            goods.getAmount().compareTo(param.getAmount()) != 0) {
+                throw new BusinessException("上架商品不可修改库存数量!");
+            }
         }
         BeanUtils.copyProperties(param, goods);
         if (Objects.nonNull(param.getAddressInfo())) {
@@ -564,7 +570,8 @@ public class KwpGoodsService {
             export.setHighestPrice(Objects.isNull(e.getHighestPrice()) ? null : String.valueOf(e.getHighestPrice()))
                     .setLowestPrice(Objects.isNull(e.getLowestPrice()) ? null : String.valueOf(e.getLowestPrice()))
                     .setAddedTime(Objects.isNull(e.getAddedTime()) ? null : DateUtil.getDateTime(e.getAddedTime()))
-                    .setShelfTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()));
+                    .setShelfTime(Objects.isNull(e.getShelfTime()) ? null : DateUtil.getDateTime(e.getShelfTime()))
+                    .setCreateTime(Objects.isNull(e.getCreateTime()) ? null : DateUtil.getDateTime(e.getCreateTime()));
             list.add(export);
         });
         return list;
@@ -871,4 +878,38 @@ public class KwpGoodsService {
         BigDecimal divide = new BigDecimal(money).divide(param.getUtilPrice().multiply(new BigDecimal("100")), 2, RoundingMode.HALF_UP);
         return amount.compareTo(divide) < 0 ? amount : divide;
     }
+
+    /**
+     * @desc: 更新商品库存
+     * @author: yzc
+     * @date: 2023-08-03 17:06
+     * @Param param:
+     * @return: void
+     */
+    public void updateAmount(UpdateAmountParam param) {
+        Long id = param.getId();
+        BigDecimal updateAmount = param.getUpdateAmount();
+        LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
+        wrapper.eq(KwpGoods::getId, id).eq(KwpGoods::getStatus, GoodsStatusEnum.PUT_ON_SHELVES.getCode())
+                .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
+        KwpGoods goods = kwpGoodsMapper.selectOne(wrapper);
+        if (Objects.isNull(goods)) {
+            throw new BusinessException("商品不存在或已下架!");
+        }
+        BigDecimal amount = goods.getAmount();
+        BigDecimal finalAmount = Objects.equals(param.getUpdateType(), 0) ? amount.add(updateAmount) : amount.subtract(updateAmount);
+        if (finalAmount.compareTo(BigDecimal.ZERO) <= 0) {
+            throw new BusinessException("库存数量更新后不能小于等于零!");
+        }
+        String lockKey = String.format(RedisConstant.GOODS_UPDATE_AMOUNT_KEY, id);
+        try {
+            if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 10L, 30L))) {
+                throw new BusinessException("业务繁忙,请稍后再试!");
+            }
+            goods.setAmount(finalAmount);
+            kwpGoodsMapper.updateById(goods);
+        } finally {
+            RedissonUtils.unlock(lockKey);
+        }
+    }
 }

+ 3 - 2
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/KwOrderService.java

@@ -91,7 +91,7 @@ public class KwOrderService {
             order.setStatusLabel(DictEnum.getLabel(DictTypeEnum.TORDER_STATUS.getType(), String.valueOf(e.getStatus())))
                     .setTrading(DictEnum.getLabel(DictTypeEnum.TRADE_TYPE.getType(), e.getTrading()))
                     .setDeliveryType(DictEnum.getLabel(DictTypeEnum.DELIVERY_TYPE.getType(), e.getDeliveryType()))
-                    .setPickupType(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
+                    .setPickupTypeLabel(DictEnum.getLabel(DictTypeEnum.PICKUP_TYPE.getType(), e.getPickupType()))
                     .setLoadDetailAddressInfo(e.getLoadCityName() + e.getUnloadDetailAddress())
                     .setUnloadDetailAddressInfo(e.getUnloadCityName() + e.getUnloadDetailAddress())
                     .setConsignmentStatus(Objects.isNull(e.getEntrustAmount()) || e.getEntrustAmount().compareTo(e.getAmount()) < 0 ? "待托运" : "已托运")
@@ -270,9 +270,10 @@ public class KwOrderService {
                     .setSource(DictEnum.getLabel(DictTypeEnum.TORDER_SOURCE.getType(), e.getSource()))
                     .setUnitPrice(String.valueOf(e.getUnitPrice())).setPrice(String.valueOf(e.getPrice()))
                     .setAmount(String.valueOf(e.getAmount())).setActualAmount(String.valueOf(e.getActualAmount()))
+                    .setLoadDetailAddressInfo(e.getLoadCityName() + e.getUnloadDetailAddress())
+                    .setUnloadDetailAddressInfo(e.getUnloadCityName() + e.getUnloadDetailAddress())
                     .setActualAmount(Objects.isNull(e.getActualAmount()) ? "0.00" : String.valueOf(e.getActualAmount()))
                     .setStartTime(Objects.isNull(e.getStartTime()) ? null : DateUtil.dateToStr(e.getStartTime()))
-                    .setAddedTime(Objects.isNull(e.getEndTime()) ? null : DateUtil.dateToStr(e.getEndTime()))
                     .setCreateTime(DateUtil.getDateTime(e.getCreateTime()));
             list.add(export);
         });

+ 17 - 14
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/param/TradeOrderListExport.java

@@ -32,25 +32,25 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "销售单位")
     private String supplyFirmName;
 
-    @ExcelProperty(value = "交付类型" )
-    private String deliveryType;
-
     @ExcelProperty(value = "提货方式" )
     private String pickupType;
 
     @ExcelProperty(value = "托运状态")
     private String consignmentStatus;
 
+    @ExcelProperty(value = "交付类型" )
+    private String deliveryType;
+
     @ExcelProperty(value = "下单方式" )
     private String source;
 
-    @ExcelProperty(value = "付款类型")
+    @ExcelProperty(value = "支付方式")
     private String trading;
 
     @ExcelProperty(value = "关联合同")
     private String contractNo;
 
-    @ExcelProperty(value = "承包方式")
+    @ExcelProperty(value = "签约方式")
     private String contractSigningWay;
 
     @ExcelProperty(value = "商品名称")
@@ -59,16 +59,13 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "规格")
     private String goodsSpec;
 
-    @ExcelProperty(value = "上架时间")
-    private String addedTime;
-
     @ExcelProperty(value = "单价/元")
     private String unitPrice;
 
     @ExcelProperty(value = "订单金额")
     private String price;
 
-    @ExcelProperty(value = "订单目标")
+    @ExcelProperty(value = "订单总量")
     private String amount;
 
     @ExcelProperty(value = "已履约量")
@@ -77,11 +74,17 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "归属项目")
     private String projectName;
 
-    @ExcelProperty(value = "装货地点")
-    private String loadCityName;
+    @ExcelProperty(value = "装货地址名称")
+    private String loadName;
+
+    @ExcelProperty(value = "装货地址明细")
+    private String loadDetailAddressInfo;
+
+    @ExcelProperty(value = "卸货地址名称")
+    private String unloadName;
 
-    @ExcelProperty(value = "卸货地点")
-    private String unloadCityName;
+    @ExcelProperty(value = "卸货地址明细")
+    private String unloadDetailAddressInfo;
 
     @ExcelProperty(value = "计划开始时间")
     private String startTime;
@@ -92,7 +95,7 @@ public class TradeOrderListExport implements Serializable {
     @ExcelProperty(value = "备注")
     private String remark;
 
-    @ExcelProperty(value = "创人")
+    @ExcelProperty(value = "创人")
     private String createByName;
 
     @ExcelProperty(value = "创建时间")

+ 4 - 0
sckw-modules/sckw-report/src/main/java/com/sckw/report/service/vo/OrderListRes.java

@@ -67,6 +67,10 @@ public class OrderListRes {
      * 提货方式(采方自提、供应配送)
      */
     private String pickupType;
+    /**
+     * 提货方式label
+     */
+    private String pickupTypeLabel;
     /**
      * 托运状态
      */

+ 16 - 23
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/KwtWaybillOrderController.java

@@ -83,32 +83,25 @@ public class KwtWaybillOrderController {
     }
 
     /**
-     * 司机端 根据当前登录 id获取派给当前id的车辆运单
-     * @return
-     */
-    @RequestMapping(value = "/getWaybillDriverDetail", method = RequestMethod.GET)
-    public HttpResult getWaybillDriverDetail(@RequestParam("id") Long id, @RequestParam("type") String type) {
-        try {
-            return driverService.getWaybillDriverDetail(id, type);
-        } catch (Exception e) {
-            log.error("派车给当前司机单据查询 error:{}", e.getMessage(), e);
-            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
-        }
+     * @param params
+     * @desc 变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @PostMapping("/changeDriver")
+    public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params){
+        return waybillOrderService.changeDriver(params);
     }
 
     /**
-     * 司机app top统计
-     * @param id 司机id
-     * @return
-     */
-    @RequestMapping(value = "/statistics", method = RequestMethod.POST)
-    public HttpResult statistics(@RequestParam("id") Long id) {
-        try {
-            return driverService.statistics(id);
-        } catch (Exception e) {
-            log.error("司机app top统计 error:{}", e.getMessage(), e);
-            return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
-        }
+     * @param params
+     * @desc 变更车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    @PostMapping("/changeTruck")
+    public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params){
+        return waybillOrderService.changeTruck(params);
     }
 
     /**

+ 9 - 9
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/controller/LogisticsConsignmentController.java

@@ -54,16 +54,16 @@ public class LogisticsConsignmentController {
     /**
      * 采购订单-托运订单列表-销售订单id
      *
-     * @param id 销售订单id
+     * @param ids 销售订单id
      * @return
      */
     @RequestMapping(value = "/purchaseLogisticsOrder", method = RequestMethod.GET)
-    public HttpResult purchaseLogisticsOrder(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id,
+    public HttpResult purchaseLogisticsOrder(@RequestParam("ids") @NotBlank(message = "单据id不能为空") String ids,
                                              @RequestParam("page") @NotNull(message = "当前页不能为空") int page,
                                              @RequestParam("pageSize") @NotNull(message = "每页条数不能为空") int pageSize) {
-        log.info("采购订单-托运订单列表 传递参数信息:{}", id);
+        log.info("采购订单-托运订单列表 传递参数信息:{}", ids);
         try {
-            return logisticsConsignmentService.logisticsOrder(id, page, pageSize, "1");
+            return logisticsConsignmentService.logisticsOrder(ids, page, pageSize, "1");
         } catch (Exception e) {
             log.error("采购订单-托运订单列表 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());
@@ -108,21 +108,21 @@ public class LogisticsConsignmentController {
     }
 
     /**
-     * 采购订单-车辆详情-销售订单id
+     * 采购订单-车辆信息-销售订单id
      *
-     * @param id       销售订单id
+     * @param ids       销售订单ids
      * @param page
      * @param pageSize
      * @return
      */
     @Validated
     @RequestMapping(value = "/purchaseLogisticsCar", method = RequestMethod.GET)
-    public HttpResult purchaseLogisticsCar(@RequestParam("id") @NotBlank(message = "单据id不能为空") String id,
+    public HttpResult purchaseLogisticsCar(@RequestParam("ids") @NotBlank(message = "单据id不能为空") String ids,
                                            @RequestParam("page") @NotNull(message = "当前页不能为空") int page,
                                            @RequestParam("pageSize") @NotNull(message = "每页条数不能为空") int pageSize) {
-        log.info("采购订单-车辆详情 传递参数信息:{}", id);
+        log.info("采购订单-车辆详情 传递参数信息:{}", ids);
         try {
-            return logisticsConsignmentService.purchaseLogisticsCar(id, page, pageSize);
+            return logisticsConsignmentService.purchaseLogisticsCar(ids, page, pageSize);
         } catch (Exception e) {
             log.error("采购订单-车辆详情 error :{}", e.getMessage(), e);
             return HttpResult.error(HttpStatus.GLOBAL_EXCEPTION_CODE, e.getMessage());

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

@@ -48,13 +48,24 @@ public interface KwtLogisticsOrderMapper extends BaseMapper<KwtLogisticsOrder> {
 
     /**
      * 销售订单-采购订单-托运详情
-     *
      * @param id
+     * @param page
+     * @param pageSize
+     * @param type
      * @return
      */
     List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderList(@Param("id") String id, @Param("page") int page,
                                                                          @Param("pageSize") int pageSize,@Param("type") String type);
 
+    /**
+     * 销售订单-采购订单-托运详情
+     *
+     * @param id
+     * @param type
+     * @return
+     */
+    List<com.sckw.transport.model.dto.LogisticsOrderDTO> selectOrderListNotPage(@Param("id") String id, @Param("type") String type);
+
     /**
      * 销售订单-采购订单-托运列表-数据统计
      *

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

@@ -107,4 +107,11 @@ public interface KwtWaybillOrderMapper extends BaseMapper<KwtWaybillOrder> {
      * @date 2023/8/1
      **/
     List<WaybillOrderDriverVo> findOtherWaybillOrderByDriver(Map params);
+
+    /**
+     *
+     * @param id
+     * @return
+     */
+    List<OrderCarDTO> selectWaybillOrderCarListNotPage(@Param("id") String id);
 }

+ 5 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/KwtWaybillOrder.java

@@ -85,6 +85,11 @@ public class KwtWaybillOrder extends BaseModel {
      */
     private BigDecimal deficitAmount;
 
+    /**
+     * 亏吨扣款
+     */
+    private BigDecimal deficitPrice;
+
     /**
      * 计划开始时间
      */

+ 57 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeDriverDto.java

@@ -0,0 +1,57 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 车辆运单变更司机
+ * @date 2023/8/2 0002
+ */
+@Data
+public class ChangeDriverDto {
+
+    /**
+     * 派车类型(1:趟次:2:循环)
+     */
+    @JsonProperty("type")
+    @NotNull(message = "派车类型不能为空")
+    private Integer type;
+
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 司机id
+     */
+    @JsonProperty("driverId")
+    @NotNull(message = "司机信息ID不能为空")
+    private Long driverId;
+
+    /**
+     * 司机名称
+     */
+    @JsonProperty("driverName")
+    @NotBlank(message = "司机名称不能为空")
+    private String driverName;
+
+    /**
+     * 司机手机号码
+     */
+    @JsonProperty("driverPhone")
+    @NotBlank(message = "司机手机号码不能为空")
+    private String driverPhone;
+
+    /**
+     * 司机身份证号
+     */
+    @JsonProperty("driverIdcard")
+    @NotBlank(message = "司机身份证号不能为空")
+    private String driverIdcard;
+}

+ 68 - 0
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/model/dto/ChangeTruckDto.java

@@ -0,0 +1,68 @@
+package com.sckw.transport.model.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
+import lombok.Data;
+
+/**
+ * @author zk
+ * @desc 车辆运单变更车辆
+ * @date 2023/8/2 0002
+ */
+@Data
+public class ChangeTruckDto {
+
+    /**
+     * 派车类型(1:趟次:2:循环)
+     */
+    @JsonProperty("type")
+    @NotNull(message = "派车类型不能为空")
+    private Integer type;
+
+    /**
+     * 车辆运单id
+     */
+    @JsonProperty("wOrderId")
+    @NotNull(message = "车辆运单ID不能为空")
+    private Long wOrderId;
+
+    /**
+     * 车牌号
+     */
+    @JsonProperty("truckId")
+    @NotNull(message = "车辆信息ID不能为空")
+    private Long truckId;
+
+    /**
+     * 车牌号
+     */
+    @JsonProperty("truckNo")
+    @NotBlank(message = "车牌号不能为空")
+    private String truckNo;
+
+    /**
+     * 车辆类型(牵引车、自卸、高栏、平板、厢式、集装箱车、罐车、封闭式、专项作业车、其他)
+     */
+    private String truckType;
+
+    /**
+     * 车能源类型(柴油、汽油、电动、氢能、天然气、液化石油气、甲醇、油电混动、油气混动、其他)
+     */
+    private String truckEnergyType;
+
+    /**
+     * 车使用性质(营运车、租赁车辆、货运车、危化品运输车、非营运车、其他)
+     */
+    private String truckUseType;
+
+    /**
+     * 车辆颜色
+     */
+    private String truckColor;
+
+    /**
+     * 车挂车号
+     */
+    private String truckTrailerNo;
+}

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

@@ -41,5 +41,20 @@ public class WaybillCountVo {
      */
     private Date unloadTime;
 
+    /**
+     * 总运单完成量
+     */
+    private Integer totalComplete;
+
+    /**
+     * 总运单接单量
+     */
+    private Integer totalTake;
+
+    /**
+     * 执行中的任务数
+     */
+    private Integer totalExecute;
+
 
 }

+ 234 - 18
sckw-modules/sckw-transport/src/main/java/com/sckw/transport/service/KwtWaybillOrderService.java

@@ -1,36 +1,36 @@
 package com.sckw.transport.service;
 
 import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
-import com.sckw.core.common.enums.enums.DictTypeEnum;
 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.model.page.PageHelperUtil;
 import com.sckw.core.model.page.PageResult;
 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;
+import com.sckw.fleet.api.RemoteFleetService;
+import com.sckw.fleet.api.model.vo.RDriverVo;
+import com.sckw.fleet.api.model.vo.RTruckVo;
 import com.sckw.mongo.enums.BusinessTypeEnum;
 import com.sckw.mongo.model.SckwLogisticsOrder;
 import com.sckw.mongo.model.SckwWaybillOrder;
 import com.sckw.stream.model.SckwBusSum;
 import com.sckw.system.api.RemoteSystemService;
 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.*;
 import com.sckw.transport.model.dto.*;
 import com.sckw.transport.model.vo.WaybillCountVo;
 import com.sckw.transport.model.vo.WaybillOrderDriverVo;
 import jakarta.annotation.Resource;
+import jakarta.validation.Valid;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cloud.stream.function.StreamBridge;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.RequestBody;
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.*;
@@ -42,6 +42,7 @@ import java.util.stream.Collectors;
  * @date 2023/7/19 0019
  */
 @Service
+@SuppressWarnings("all")
 public class KwtWaybillOrderService {
 
     @Autowired
@@ -68,7 +69,8 @@ public class KwtWaybillOrderService {
     private StreamBridge streamBridge;
     @DubboReference(version = "2.0.0", group = "design", check = false)
     private RemoteSystemService remoteSystemService;
-
+    @DubboReference(version = "1.0.0", group = "design", check = false)
+    private RemoteFleetService remoteFleetService;
 
     /**
      * @param driverId 司机ID
@@ -130,7 +132,152 @@ public class KwtWaybillOrderService {
         return waybillOrders;
     }
 
+    /**
+     * @param params
+     * @desc 变更司机
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeDriver(@RequestBody @Valid ChangeDriverDto params){
+        /**数据校验**/
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = logisticsOrderCirculateDao.selectById(params.getWOrderId());
+        if (waybillOrder == null && circulate == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+
+        /**循环派车**/
+        if (params.getType() == Global.NUMERICAL_TWO) {
+            /**更新循环派车信息**/
+            if (circulate != null) {
+                changeWaybillOrderCirculate(circulate.getId(), params, null);
+                wOrder.set_id(circulate.getId());
+            } else {
+                circulate = logisticsOrderCirculateDao.findCirculate(waybillOrder.getLOrderId(), waybillOrder.getTruckId(), waybillOrder.getDriverId(), Global.NO);
+                changeWaybillOrderCirculate(circulate.getId(), params, null);
+            }
+        }
+
+        if (waybillOrder != null) {
+            if (!CarWaybillEnum.changeDriverAndTruck(waybillOrder.getStatus())) {
+                return HttpResult.error("车辆运单当前状态不能变更司机!");
+            }
+            /**更新车辆运单**/
+            changeWaybillOrder(params, null);
+            wOrder.set_id(params.getWOrderId());
+        }
+
+        /**Mongodb数据更新**/
+        wOrder.setDriverId(params.getDriverId());
+        wOrder.setDriverName(params.getDriverName());
+        wOrder.setDriverPhone(params.getDriverPhone());
+        wOrder.setDriverIdcard(params.getDriverIdcard());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+        return HttpResult.ok("更换司机成功!");
+    }
+
+    /**
+     * @param params
+     * @desc 变更车辆
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public HttpResult changeTruck(@RequestBody @Valid ChangeTruckDto params){
+        /**数据校验**/
+        SckwWaybillOrder wOrder = new SckwWaybillOrder();
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = waybillOrderDao.selectById(params.getWOrderId());
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = logisticsOrderCirculateDao.selectById(params.getWOrderId());
+        if (waybillOrder == null && circulate == null) {
+            return HttpResult.error("车辆运单不存在!");
+        }
+
+        /**循环派车**/
+        if (params.getType() == Global.NUMERICAL_TWO) {
+            /**更新循环派车信息**/
+            if (circulate != null) {
+                changeWaybillOrderCirculate(circulate.getId(), null, params);
+                wOrder.set_id(circulate.getId());
+            } else {
+                circulate = logisticsOrderCirculateDao.findCirculate(waybillOrder.getLOrderId(), waybillOrder.getTruckId(), waybillOrder.getDriverId(), Global.NO);
+                changeWaybillOrderCirculate(circulate.getId(), null, params);
+            }
+        }
+
+        if (waybillOrder != null) {
+            if (!CarWaybillEnum.changeDriverAndTruck(waybillOrder.getStatus())) {
+                return HttpResult.error("车辆运单当前状态不能变更车辆!");
+            }
+            /**更新车辆运单**/
+            changeWaybillOrder(null, params);
+            wOrder.set_id(params.getWOrderId());
+        }
+
+        /**Mongodb数据更新**/
+        wOrder.setTruckId(params.getTruckId());
+        wOrder.setTruckNo(params.getTruckNo());
+        wOrder.setTruckType(params.getTruckType());
+        wOrder.setTruckEnergyType(params.getTruckEnergyType());
+        wOrder.setTruckUseType(params.getTruckUseType());
+        wOrder.setTruckColor(params.getTruckColor());
+        wOrder.setTruckTrailerNo(params.getTruckTrailerNo());
+        editSckwWaybillOrder(wOrder, waybillOrder, 2);
+        return HttpResult.ok("更换车辆成功!");
+    }
+
+    /**
+     * @param circulateId 循环派车信息ID
+     * @param driver 司机信息
+     * @param truck 车辆信息
+     * @desc 变更循环派车信息
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public void changeWaybillOrderCirculate(Long circulateId, ChangeDriverDto driver, ChangeTruckDto truck){
+        //循环派车信息
+        KwtLogisticsOrderCirculate circulate = new KwtLogisticsOrderCirculate();
+        if (driver != null) {
+            circulate.setId(circulateId);
+            circulate.setDriverId(driver.getDriverId());
+            circulate.setDriverPhone(driver.getDriverPhone());
+            circulate.setDriverName(driver.getDriverName());
+            circulate.setDriverIdcard(driver.getDriverIdcard());
+        }
+        if (truck != null) {
+            circulate.setTruckId(truck.getTruckId());
+            circulate.setTruckNo(truck.getTruckNo());
+        }
+        logisticsOrderCirculateDao.updateById(circulate);
+    }
 
+    /**
+     * @param driver 司机信息
+     * @param truck 车辆信息
+     * @desc 更新车辆运单信息
+     * @author zk
+     * @date 2023/8/2
+     **/
+    public void changeWaybillOrder(ChangeDriverDto driver, ChangeTruckDto truck){
+        //车辆运单信息
+        KwtWaybillOrder waybillOrder = new KwtWaybillOrder();
+        if (driver != null) {
+            waybillOrder.setId(driver.getWOrderId());
+            waybillOrder.setDriverId(driver.getDriverId());
+            waybillOrder.setDriverPhone(driver.getDriverPhone());
+            waybillOrder.setDriverName(driver.getDriverName());
+            waybillOrder.setDriverIdcard(driver.getDriverIdcard());
+        }
+        if (truck != null) {
+            waybillOrder.setId(truck.getWOrderId());
+            waybillOrder.setTruckId(truck.getTruckId());
+            waybillOrder.setTruckNo(truck.getTruckNo());
+        }
+        waybillOrderDao.updateById(waybillOrder);
+    }
 
 
     /**
@@ -483,6 +630,7 @@ public class KwtWaybillOrderService {
         order.setUnloadGrossAmount(new BigDecimal(Global.AMOUNT));
         order.setUnloadUrls(Global.EMPTY_STRING);
         order.setDeficitAmount(new BigDecimal(Global.AMOUNT));
+        order.setDeficitPrice(new BigDecimal(Global.AMOUNT));
         order.setLoss(logisticsOrder.getLoss());
         order.setLossUnit(logisticsOrder.getLossUnit());
         order.setGoodsPrice(logisticsOrder.getGoodsPrice());
@@ -746,13 +894,19 @@ public class KwtWaybillOrderService {
             /**2新增运单状态记录**/
             setWaybillOrderTrack(waybillOrder.getId(), waybillOrder.getStatus(), params.getRemark());
 
-            /**3Mongodb数据更新**/
+            /**3跟新司机/车辆数据**/
+            //更新司机信息
+            editDriver(waybillOrder.getDriverId());
+            //更新车辆信息
+            editTruck(waybillOrder.getTruckId());
+
+            /**4Mongodb数据更新**/
             //1车辆运单
             SckwWaybillOrder wOrder = new SckwWaybillOrder();
             wOrder.set_id(waybillOrder.getId());
             editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
-            /**4发送消息**/
+            /**5发送消息**/
 
         }
 
@@ -1092,7 +1246,13 @@ public class KwtWaybillOrderService {
         ticket.setTime(params.getTime());
         waybillOrderTicketDao.insert(ticket);
 
-        /**4更新承运订单entrustAmount**/
+        /**4跟新司机/车辆数据**/
+        //更新司机信息
+        editDriver(waybillOrder.getDriverId());
+        //更新车辆信息
+        editTruck(waybillOrder.getTruckId());
+
+        /**5更新承运订单entrustAmount**/
         KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
         //承运订单已装货量=承运订单原装货量+当前车辆运单装货量
         BigDecimal loadAmount = logisticsOrder.getLoadAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getLoadAmount();
@@ -1103,7 +1263,7 @@ public class KwtWaybillOrderService {
         //校验当前承运订单是否运输完成(修改状态+统计量)
         checkLogisticsByStatusV1(waybillOrder.getLOrderId());
 
-        /**5Mongodb数据更新**/
+        /**6Mongodb数据更新**/
         //1车辆运单
         SckwWaybillOrder wOrder = new SckwWaybillOrder();
         wOrder.set_id(waybillOrder.getId());
@@ -1118,7 +1278,7 @@ public class KwtWaybillOrderService {
         lOrder.setLoadAmount(logisticsOrder.getLoadAmount());
         editSckwLogisticsOrder(lOrder, logisticsOrder);
 
-        /**6发送消息**/
+        /**7发送消息**/
 
         return HttpResult.ok("装货成功!");
     }
@@ -1179,9 +1339,13 @@ public class KwtWaybillOrderService {
         }
 
         /**业务处理**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
         /**1更新车辆运单**/
         waybillOrder.setUnloadAmount(params.getAmount());
         waybillOrder.setDeficitAmount(waybillOrder.getLoadAmount().subtract(waybillOrder.getUnloadAmount()));
+        BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        waybillOrder.setDeficitPrice(deficitPrice);
         waybillOrder.setStatus(CarWaybillEnum.COMPLETION_UNLOADING.getCode());
         waybillOrderDao.updateById(waybillOrder);
 
@@ -1206,9 +1370,14 @@ public class KwtWaybillOrderService {
             logisticsOrderCirculateDao.updateByPrimaryKey(circulate);
         }
 
+        /**5跟新司机/车辆数据**/
+        //更新司机信息
+        editDriver(waybillOrder.getDriverId());
+        //更新车辆信息
+        editTruck(waybillOrder.getTruckId());
+
         /**5更新承运订单entrustAmount**/
         //更新卸货量/卸货时间/亏吨/亏吨扣款
-        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
         //承运订单卸货量=承运订单原卸货量+当前车辆运单卸货量
         BigDecimal unloadAmount = logisticsOrder.getUnloadAmount() == null ? new BigDecimal(Global.AMOUNT) : logisticsOrder.getUnloadAmount();
         logisticsOrder.setUnloadAmount(unloadAmount.add(waybillOrder.getUnloadAmount()));
@@ -1216,7 +1385,8 @@ public class KwtWaybillOrderService {
         //承运订单亏吨量=承运订单装货量-承运订单卸货量
         logisticsOrder.setDeficitAmount(logisticsOrder.getLoadAmount().subtract(logisticsOrder.getUnloadAmount()));
         //承运订单亏吨扣款
-        BigDecimal deficitPrice = deficitPrice(logisticsOrder.getLoadAmount(), logisticsOrder.getDeficitAmount(), logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        deficitPrice = deficitPrice(logisticsOrder.getLoadAmount(), logisticsOrder.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
         logisticsOrder.setDeficitPrice(deficitPrice);
         logisticsOrderDao.updateById(logisticsOrder);
 
@@ -1228,6 +1398,8 @@ public class KwtWaybillOrderService {
         SckwWaybillOrder wOrder = new SckwWaybillOrder();
         wOrder.set_id(waybillOrder.getId());
         wOrder.setUnloadAmount(waybillOrder.getUnloadAmount());
+        wOrder.setDeficitAmount(waybillOrder.getDeficitAmount());
+        wOrder.setDeficitPrice(waybillOrder.getDeficitPrice());
         wOrder.setUnloadUrls(params.getUrls());
         wOrder.setUnloadTime(waybillOrder.getUpdateTime());
         editSckwWaybillOrder(wOrder, waybillOrder, 2);
@@ -1450,16 +1622,26 @@ public class KwtWaybillOrderService {
         }
 
         /**2更新车辆运单信息**/
+        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
         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()));
+        BigDecimal deficitPrice = deficitPrice(waybillOrder.getLoadAmount(), waybillOrder.getDeficitAmount(),
+                logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
+        waybillOrder.setDeficitPrice(deficitPrice);
         waybillOrderDao.updateById(waybillOrder);
 
         /**3更新榜单信息**/
         BeanUtils.copyProperties(params, ticket);
         waybillOrderTicketDao.updateById(ticket);
 
-        /**4更新承运订单信息**/
+        /**4跟新司机/车辆数据**/
+        //更新司机信息
+        editDriver(waybillOrder.getDriverId());
+        //更新车辆信息
+        editTruck(waybillOrder.getTruckId());
+
+        /**5更新承运订单信息**/
         Map queryParams = new HashMap();
         queryParams.put("lOrderId", waybillOrder.getLOrderId());
         queryParams.put("loadCountStatus", params.getType() == 1 ? 1 : null);
@@ -1467,13 +1649,12 @@ public class KwtWaybillOrderService {
         WaybillCountVo waybillCount = waybillOrderDao.findWaybillOrderCount(queryParams);
 
         //更新卸货量/卸货时间/亏吨/亏吨扣款
-        KwtLogisticsOrder logisticsOrder = logisticsOrderDao.selectById(waybillOrder.getLOrderId());
         logisticsOrder.setLoadAmount(waybillCount.getLoadAmount());
         logisticsOrder.setLoadTime(waybillCount.getLoadTime());
         logisticsOrder.setUnloadAmount(waybillCount.getUnloadAmount());
         logisticsOrder.setUnloadTime(waybillCount.getUnloadTime());
         logisticsOrder.setDeficitAmount(waybillCount.getDeficitAmount());
-        BigDecimal deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
+        deficitPrice = deficitPrice(waybillCount.getLoadAmount(), waybillCount.getDeficitAmount(),
                 logisticsOrder.getLoss(), logisticsOrder.getGoodsPrice());
         logisticsOrder.setDeficitPrice(deficitPrice);
         logisticsOrderDao.updateById(logisticsOrder);
@@ -1485,8 +1666,7 @@ public class KwtWaybillOrderService {
             checkLogisticsByStatusV1(waybillOrder.getLOrderId());
         }
 
-
-        /**5Mongodb数据更新**/
+        /**6Mongodb数据更新**/
         //1车辆运单
         SckwWaybillOrder wOrder = new SckwWaybillOrder();
         wOrder.set_id(waybillOrder.getId());
@@ -1497,6 +1677,7 @@ public class KwtWaybillOrderService {
         wOrder.setUnloadTime(params.getType() == 2 ? params.getTime() : null);
         wOrder.setLoadUrls(params.getType() == 2 ? params.getUrls() : null);
         wOrder.setDeficitAmount(waybillOrder.getDeficitAmount());
+        wOrder.setDeficitPrice(waybillOrder.getDeficitPrice());
         editSckwWaybillOrder(wOrder, waybillOrder, 2);
 
         //2承运订单
@@ -1555,4 +1736,39 @@ public class KwtWaybillOrderService {
         return HttpResult.ok("车辆运单审核完成!");
     }
 
+    /**
+     * @param driverId 司机档案ID
+     * @desc 更新司机信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    public void editDriver(Long driverId) {
+        //数据统计
+        WaybillCountVo countVo = waybillOrderDao.findWaybillOrderCount(new HashMap(){{put("driverId", driverId);}});
+        RDriverVo driver = new RDriverVo();
+        driver.setId(driverId);
+        driver.setTotalComplete(countVo.getTotalComplete());
+        driver.setTotalTake(countVo.getTotalTake());
+        driver.setTotalWeight(countVo.getLoadAmount());
+        driver.setBusinessStatus(countVo.getTotalExecute() != null && countVo.getTotalExecute() > 0 ? 1 : 0 );
+        remoteFleetService.updateById(driver);
+    }
+
+    /**
+     * @param driverId 车辆档案ID
+     * @desc 更新车辆信息
+     * @author zk
+     * @date 2023/8/3
+     **/
+    public void editTruck(Long truckId) {
+        //数据统计
+        WaybillCountVo countVo = waybillOrderDao.findWaybillOrderCount(new HashMap(){{put("truckId", truckId);}});
+        RTruckVo truck = new RTruckVo();
+        truck.setId(truckId);
+        truck.setTotalComplete(countVo.getTotalComplete());
+        truck.setTotalTake(countVo.getTotalTake());
+        truck.setTotalWeight(countVo.getLoadAmount());
+        truck.setBusinessStatus(countVo.getTotalExecute() != null && countVo.getTotalExecute() > 0 ? 1 : 0 );
+        remoteFleetService.updateById(truck);
+    }
 }

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

@@ -536,28 +536,77 @@ public class LogisticsConsignmentService {
     }
 
     /**
-     * 销售订单-采购订单-获取托运订单数据
+     * 采购订单-获取托运订单数据
      *
-     * @param id       销售订单id
+     * @param ids      销售订单ids
      * @param page     当前页
      * @param pageSize 每页条数
      * @param type     属于采购(1)还是销售(2)
      * @return
      */
-    public HttpResult logisticsOrder(String id, Integer page, Integer pageSize, String type) {
+    public HttpResult logisticsOrder(String ids, Integer page, Integer pageSize, String type) {
         HttpResult httpResult = new HttpResult();
         if (String.valueOf(NumberConstant.ONE).equals(type)) {
             //采购
-            httpResult = logisticsOrderList(id, page, pageSize, type);
+            httpResult = logisticsOrderList(ids, page, pageSize, type);
         } else if (String.valueOf(NumberConstant.TWO).equals(type)) {
             //销售
-            httpResult = logisticsOrderList(id, page, pageSize, type);
+            httpResult = logisticsSellOrderList(ids, page, pageSize, type);
         } else {
             return HttpResult.error("单据类型错误");
         }
         return httpResult;
     }
 
+    /**
+     * 销售订单-获取托运订单数据
+     *
+     * @param ids
+     * @param page
+     * @param pageSize
+     * @param type
+     * @return
+     */
+    private HttpResult logisticsSellOrderList(String ids, Integer page, Integer pageSize, String type) {
+        List<String> stringList = StringUtils.splitStrToList(ids, String.class);
+        if (CollectionUtils.isEmpty(stringList)) {
+            return HttpResult.ok();
+        }
+        List<LogisticsOrderDTO> returnList = new ArrayList<>();
+        for (String id : stringList) {
+            OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
+            /**
+             * 1销售展示是供应配送  0采购展示是采购自提
+             * 根据提货方式(1供应配送/0采购自提)
+             * 决定托运数据是否展示
+             *
+             */
+            boolean flag = false;
+            if (String.valueOf(NumberConstant.ONE).equals(orderDetailRes.getPickupType())) {
+                flag = true;
+            }
+            List<LogisticsOrderDTO> list = new ArrayList<>();
+            if (flag) {
+                /**数据展示*/
+                list = kwtLogisticsOrderMapper.selectOrderListNotPage(id, type);
+                if (CollectionUtils.isNotEmpty(list)) {
+                    for (LogisticsOrderDTO logisticsOrderDTO : list) {
+                        logisticsOrderDTO.setStatus(LogisticsOrderEnum.getDestination(logisticsOrderDTO.getStatus()));
+                    }
+                    returnList.addAll(list);
+                }
+            }
+        }
+        /**基于多个传递数据查询->手动分页*/
+        List<LogisticsOrderDTO> subList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(returnList)) {
+            subList = returnList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+        }
+
+        PageResult build = PageResult.build(page, pageSize, returnList.stream().count(), subList);
+        return HttpResult.ok(build);
+    }
+
     /**
      * 采购订单/销售订单-托运订单列表-下方数据统计
      *
@@ -601,37 +650,49 @@ public class LogisticsConsignmentService {
     }
 
     /**
-     * 销售订单-采购订单-获取托运订单数据
+     * 采购订单-获取托运订单数据
      *
-     * @param id       销售订单id
+     * @param ids      销售订单id
      * @param page     当前页
      * @param pageSize 每页条数
      * @param type     属于采购(1)还是销售(2)
      * @return
      */
-    private HttpResult logisticsOrderList(String id, Integer page, Integer pageSize, String type) {
-        OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
-        /**根据下单方式(代客下单/自主下单)决定托运数据是否展示*/
-        boolean flag = false;
-        if (String.valueOf(NumberConstant.ONE).equals(orderDetailRes.getSource())) {
-            flag = true;
-        } else if (String.valueOf(NumberConstant.TWO).equals(orderDetailRes.getSource())) {
-            flag = true;
-        } else {
-            throw new RuntimeException("获取贸易订单下单方式异常!");
+    private HttpResult logisticsOrderList(String ids, Integer page, Integer pageSize, String type) {
+        List<String> stringList = StringUtils.splitStrToList(ids, String.class);
+        if (CollectionUtils.isEmpty(stringList)) {
+            return HttpResult.ok();
         }
-        List<LogisticsOrderDTO> list = new ArrayList<>();
-        PageResult build = PageResult.build(page, pageSize, 0L, list);
-        if (flag) {
-            /**数据展示*/
-            Long count = getLogisticsOrderCount(id, type);
-            Integer newPage = page - 1;
-            list = getLogisticsOrderData(id, newPage, pageSize, type);
-            for (LogisticsOrderDTO logisticsOrderDTO : list) {
-                logisticsOrderDTO.setStatus(LogisticsOrderEnum.getDestination(logisticsOrderDTO.getStatus()));
+        List<LogisticsOrderDTO> returnList = new ArrayList<>();
+        for (String id : stringList) {
+            OrderDetailRes orderDetailRes = tradeOrderInfoService.getOrderDetailById(Long.parseLong(id));
+            /**
+             * 1销售展示是供应配送  0采购展示是采购自提
+             * 根据提货方式(1供应配送/0采购自提)
+             * 决定托运数据是否展示
+             *
+             */
+            boolean flag = false;
+            if (String.valueOf(NumberConstant.ZERO).equals(orderDetailRes.getPickupType())) {
+                flag = true;
             }
-            build = PageResult.build(page, pageSize, count, list);
+            List<LogisticsOrderDTO> list = new ArrayList<>();
+            if (flag) {
+                /**数据展示*/
+                list = kwtLogisticsOrderMapper.selectOrderListNotPage(id, type);
+                if (CollectionUtils.isNotEmpty(list)) {
+                    for (LogisticsOrderDTO logisticsOrderDTO : list) {
+                        logisticsOrderDTO.setStatus(LogisticsOrderEnum.getDestination(logisticsOrderDTO.getStatus()));
+                    }
+                    returnList.addAll(list);
+                }
+            }
+        }
+        List<LogisticsOrderDTO> subList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(returnList)) {
+            subList = returnList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
         }
+        PageResult build = PageResult.build(page, pageSize, returnList.stream().count(), subList);
         return HttpResult.ok(build);
     }
 
@@ -647,19 +708,59 @@ public class LogisticsConsignmentService {
         return list;
     }
 
+//    /**
+//     * 采购订单获取车辆信息
+//     *
+//     * @param id
+//     * @param page
+//     * @param pageSize
+//     * @return
+//     */
+//    public HttpResult purchaseLogisticsCar(String id, Integer page, Integer pageSize) {
+//        Long count = getLogisticsCarDataCount(id);
+//        Integer newPage = page - 1;
+//        List<OrderCarDTO> list = getLogisticsCarData(id, newPage, pageSize);
+//        PageResult build = PageResult.build(page, pageSize, count, list);
+//        return HttpResult.ok(build);
+//    }
+
+
     /**
      * 采购订单获取车辆信息
      *
-     * @param id
+     * @param ids
      * @param page
      * @param pageSize
      * @return
      */
-    public HttpResult purchaseLogisticsCar(String id, Integer page, Integer pageSize) {
-        Long count = getLogisticsCarDataCount(id);
-        Integer newPage = page - 1;
-        List<OrderCarDTO> list = getLogisticsCarData(id, newPage, pageSize);
-        PageResult build = PageResult.build(page, pageSize, count, list);
+    public HttpResult purchaseLogisticsCar(String ids, Integer page, Integer pageSize) {
+        List<String> stringList = StringUtils.splitStrToList(ids, String.class);
+        if (CollectionUtils.isEmpty(stringList)) {
+            return HttpResult.ok();
+        }
+        List<OrderCarDTO> returnList = new ArrayList<>();
+        for (String id : stringList) {
+            List<OrderCarDTO> list = waybillOrderMapper.selectWaybillOrderCarListNotPage(id);
+            List<String> collect = list.stream().map(OrderCarDTO::getTruckNo).collect(Collectors.toList());
+            Map<String, RTruckVo> truck = remoteFleetService.findTruck(collect);
+            for (OrderCarDTO orderCarDTO : list) {
+//            orderCarDTO.setDriverId(String.valueOf(orderCarDTO.getDriverId()));
+//            orderCarDTO.setDriverName(orderCarDTO.getDriverName());
+//            orderCarDTO.setDriverPhone(orderCarDTO.getDriverPhone());
+//            orderCarDTO.setDriverCard(orderCarDTO.getDriverCard());
+                orderCarDTO.setLoadAmount(truck.get(orderCarDTO.getTruckNo()) == null ?
+                        null : (truck.get(orderCarDTO.getTruckNo()).getActualWeight() == null ?
+                        null : (String.valueOf(truck.get(orderCarDTO.getTruckNo()).getActualWeight()))));
+            }
+            if (CollectionUtils.isNotEmpty(list)) {
+                returnList.addAll(list);
+            }
+        }
+        List<OrderCarDTO> subList = new ArrayList<>();
+        if (CollectionUtils.isNotEmpty(returnList)) {
+            subList = returnList.stream().skip((page - 1) * pageSize).limit(pageSize).collect(Collectors.toList());
+        }
+        PageResult build = PageResult.build(page, pageSize, returnList.stream().count(), subList);
         return HttpResult.ok(build);
     }
 

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

@@ -71,6 +71,31 @@
           AND a.t_order_id = #{id,jdbcType=VARCHAR} limit #{page}
             , #{pageSize}
     </select>
+
+    <select id="selectOrderListNotPage" resultType="com.sckw.transport.model.dto.LogisticsOrderDTO">
+        SELECT a.id          as lOrderId,
+               a.l_order_no  as lOrderNo,
+               b.`status`    as `status`,
+               a.t_order_id  as tOrderId,
+               a.t_order_no  as tOrderNo,
+               a.payment     as payment,
+               a.amount,
+               a.price,
+               a.loss,
+               a.goods_price as goodsPrice,
+               c.firm_name   as comanyName,
+               c.contacts,
+               c.phone,
+               a.create_by   as createBy,
+               a.create_time as createTime
+        FROM kwt_logistics_order a
+                 LEFT JOIN kwt_logistics_order_track b ON a.id = b.l_order_id and a.`status` = b.`status`
+                 LEFT JOIN kwt_logistics_order_unit c ON a.id = c.l_order_id AND c.unit_type = #{type}
+        WHERE a.del_flag = '0'
+          AND b.del_flag = '0'
+          AND a.t_order_id = #{id,jdbcType=VARCHAR}
+        order by createTime desc
+    </select>
     <select id="selectOrderCount" resultType="java.lang.Long">
         SELECT count(a.id)
         FROM kwt_logistics_order a

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

@@ -149,9 +149,12 @@
 
     <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
+            count(case when wo.status not in (1, 9, 11) then 1 end) totalComplete,
+            count(case when wo.status not in (1, 9, 10, 11) then 1 end) totalTake,
+            count(case when wo.status not in (3, 4, 5, 6) then 1 end) totalExecute,
+            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
@@ -160,6 +163,12 @@
         <if test="lOrderId != null and lOrderId != ''">
             and lo.id = #{lOrderId, jdbcType=BIGINT}
         </if>
+        <if test="driverId != null and driverId != ''">
+            and wo.driver_id = #{driverId, jdbcType=BIGINT}
+        </if>
+        <if test="truckId != null and truckId != ''">
+            and wo.truck_id = #{truckId, jdbcType=BIGINT}
+        </if>
         <if test="passStatus != null and passStatus != ''">
             and wo.status = 8
         </if>
@@ -333,4 +342,22 @@
             and LEFT(wo.create_time, 7) = #{month, jdbcType=TIMESTAMP}
         </if>
     </select>
+    <select id="selectWaybillOrderCarListNotPage" resultType="com.sckw.transport.model.dto.OrderCarDTO">
+        SELECT a.id            as wOrderId,
+               a.w_order_no    as wOrderNo,
+               a.driver_id     as driverId,
+               a.driver_name   as driverName,
+               a.driver_phone  as driverPhone,
+               a.driver_idcard as driverCard,
+               a.truck_no      as truckNo,
+               a.l_order_id    as lOrderId,
+               b.l_order_no    as lOrderNo,
+               b.t_order_id    as tOrderId,
+               b.t_order_no    as tOrderNo
+        FROM kwt_waybill_order a
+                 LEFT JOIN kwt_logistics_order b ON a.l_order_id = b.id
+        WHERE a.del_flag = '0'
+          and b.del_flag = '0'
+          and b.t_order_id = #{id,jdbcType=VARCHAR}
+    </select>
 </mapper>