|
|
@@ -1,12 +1,9 @@
|
|
|
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;
|
|
|
@@ -18,19 +15,19 @@ 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 +39,7 @@ import java.util.stream.Collectors;
|
|
|
* @date 2023/7/19 0019
|
|
|
*/
|
|
|
@Service
|
|
|
+@SuppressWarnings("all")
|
|
|
public class KwtWaybillOrderService {
|
|
|
|
|
|
@Autowired
|
|
|
@@ -69,7 +67,6 @@ public class KwtWaybillOrderService {
|
|
|
@DubboReference(version = "2.0.0", group = "design", check = false)
|
|
|
private RemoteSystemService remoteSystemService;
|
|
|
|
|
|
-
|
|
|
/**
|
|
|
* @param driverId 司机ID
|
|
|
* @desc 统计司机任务数(待接单/出车/执行/完结)
|
|
|
@@ -130,7 +127,151 @@ 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.setTruckId(truck.getTruckId());
|
|
|
+ waybillOrder.setTruckNo(truck.getTruckNo());
|
|
|
+ }
|
|
|
+ waybillOrderDao.updateById(waybillOrder);
|
|
|
+ }
|
|
|
|
|
|
|
|
|
/**
|