Преглед на файлове

feat:执行运单逻辑修改

wangweiyu преди 4 години
родител
ревизия
cc13e06fc6
променени са 1 файла, в които са добавени 49 реда и са изтрити 21 реда
  1. 49 21
      src/main/java/com/aoyang/tms/service/impl/WorkerServiceImpl.java

+ 49 - 21
src/main/java/com/aoyang/tms/service/impl/WorkerServiceImpl.java

@@ -8,6 +8,7 @@ import com.aoyang.tms.entity.TruckCheckInfo;
 import com.aoyang.tms.entity.WorkCycle;
 import com.aoyang.tms.entity.WorkOrder;
 import com.aoyang.tms.service.*;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.BeanUtils;
 import org.springframework.stereotype.Service;
@@ -15,6 +16,7 @@ import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
+import java.util.List;
 
 /**
  * @Description: 作业端相关接口
@@ -40,34 +42,60 @@ public class WorkerServiceImpl implements WorkerService {
     public Boolean startOrder(Long userId, String userName, WorkOrder workOrderParam) {
         Boolean flag = true;
         try {
-            // TODO 查询是否有中止的装车运单
-
             WorkOrder workOrder = workOrderService.getById(workOrderParam.getId());
             if (workOrder != null) {
-                //1.车辆进入出车前检车状态
-                Truck truck = truckService.getById(workOrder.getTruckId());
-                truck.setTmsStatus(TmsTruckStatus.PRE_CHECK);
-                truckService.updateById(truck);
-                //2.创建行程周期
-                WorkCycle workCycle = new WorkCycle();
-                workCycle.setStartTime(LocalDateTime.now());
-                BeanUtils.copyProperties(truck, workCycle);
-                BeanUtils.copyProperties(workOrder, workCycle);
-                //行车周期执行中
-                workCycle.setStatus(1);
-                workCycleService.save(workCycle);
+                return false;
+            }
+            Truck truck = truckService.getById(workOrder.getTruckId());
+            WorkCycle workCycleOld = workCycleService.getOne(
+                    new QueryWrapper<WorkCycle>().eq("truck_id", workOrder.getTruckId()).eq("status", 1));
+            if (workOrder.getType() == 1) {
+                boolean cancelFlag = false;
+                if (truck.getTmsStatus() == 1 || truck.getTmsStatus() == 2) {
+                    // 行车状态已开始行车周期
+                    // 查询当前是否有中止的装车运单
+                    QueryWrapper<WorkOrder> queryWrapper = new QueryWrapper<>();
+                    queryWrapper.eq("cycle_id", workCycleOld.getId());
+                    queryWrapper.eq("status", 60);
+                    queryWrapper.eq("type", 1);
+                    List<WorkOrder> calcelList = workOrderService.list(queryWrapper);
+                    if (calcelList != null && calcelList.size() > 0) {
+                        cancelFlag = true;
+                    }
+                }
+                if (cancelFlag) {
+                    workOrder.setCycleId(workCycleOld.getId());
+                } else {
+                    //1.车辆进入出车前检车状态
+                    truck.setTmsStatus(TmsTruckStatus.PRE_CHECK);
+                    truckService.updateById(truck);
+                    //2.创建行程周期
+                    WorkCycle workCycle = new WorkCycle();
+                    workCycle.setStartTime(LocalDateTime.now());
+                    BeanUtils.copyProperties(truck, workCycle);
+                    BeanUtils.copyProperties(workOrder, workCycle);
+                    //行车周期执行中
+                    workCycle.setStatus(1);
+                    workCycleService.save(workCycle);
 
-                if (workOrder.getType() == 1) {
-                    //3.订单进入前往装车点状态,
-                    workOrder.setOrderStatus(WorkOrderEnum.GOTO_ZHUANGCHE_SPOT.orderStatus());
-                    workOrder.setExecuteTime(LocalDateTime.now());
+                    workOrder.setCycleId(workCycle.getId());
                 }
-                workOrder.setCycleId(workCycle.getId());
+                //3.订单进入前往装车点状态,
+                workOrder.setOrderStatus(WorkOrderEnum.GOTO_ZHUANGCHE_SPOT.orderStatus());
+                workOrder.setExecuteTime(LocalDateTime.now());
                 workOrderService.updateById(workOrder);
 
-                //4 记录日志
-                //TODO
+            } else if (workOrder.getType() == 2) {
+                workOrder.setCycleId(workCycleOld.getId());
+                //3.订单进入前往卸车点状态,
+                workOrder.setOrderStatus(WorkOrderEnum.GOTO_XIECHE_SPOT.orderStatus());
+                workOrder.setExecuteTime(LocalDateTime.now());
+                workOrderService.updateById(workOrder);
             }
+
+            //4 记录日志
+            //TODO
+
         } catch (Exception e) {
             log.error("startOrder:{}", e.getMessage());
             return false;