修改代码 #104

Merged
hnu202326010106 merged 1 commits from wanglei_branch into develop 3 weeks ago

@ -7,14 +7,21 @@ import com.campus.water.mapper.RepairmanRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
/**
*
*
* @author
* @date 2025/12/25
*/
@Slf4j
@Service
@RequiredArgsConstructor
public class WorkOrderServiceImpl implements WorkOrderService {
@ -28,12 +35,12 @@ public class WorkOrderServiceImpl implements WorkOrderService {
.orElseThrow(() -> new RuntimeException("工单不存在"));
}
/**
*
* "待处理""空闲"
* @param orderId ID
* @param repairmanId ID
*
* @param orderId ID
* @param repairmanId ID
* @return truefalse
*/
@Override
@ -47,7 +54,7 @@ public class WorkOrderServiceImpl implements WorkOrderService {
// 检查工单状态是否为"待处理"(只有待处理的工单可被抢单)
if (order.getStatus() == WorkOrder.OrderStatus.pending) {
// 查询维修人员是否存在且状态为"空闲"
var repairman = repairmanRepository.findById(repairmanId);
Optional<Repairman> repairman = repairmanRepository.findById(repairmanId);
if (repairman.isPresent() && repairman.get().getStatus() == Repairman.RepairmanStatus.idle) {
// 更新工单状态:改为"已抢单"记录抢单时间和维修人员ID
@ -57,7 +64,7 @@ public class WorkOrderServiceImpl implements WorkOrderService {
workOrderRepository.save(order);
// 更新维修人员状态:改为"忙碌"
var repairmanEntity = repairman.get();
Repairman repairmanEntity = repairman.get();
repairmanEntity.setStatus(Repairman.RepairmanStatus.busy);
repairmanRepository.save(repairmanEntity);
@ -71,9 +78,10 @@ public class WorkOrderServiceImpl implements WorkOrderService {
/**
*
* "待处理"
* @param orderId ID
* @param repairmanId ID
* @param reason
*
* @param orderId ID
* @param repairmanId ID
* @param reason
* @return truefalse
*/
@Override
@ -96,8 +104,7 @@ public class WorkOrderServiceImpl implements WorkOrderService {
workOrderRepository.save(order);
// 重置维修人员状态:改为"空闲"
var repairman = repairmanRepository.findById(repairmanId);
repairman.ifPresent(rm -> {
repairmanRepository.findById(repairmanId).ifPresent(rm -> {
rm.setStatus(Repairman.RepairmanStatus.idle);
repairmanRepository.save(rm);
});
@ -111,10 +118,11 @@ public class WorkOrderServiceImpl implements WorkOrderService {
/**
*
* "已抢单""处理中"
* @param orderId ID
* @param repairmanId ID
* @param dealNote
* @param imgUrl URL
*
* @param orderId ID
* @param repairmanId ID
* @param dealNote
* @param imgUrl URL
* @return truefalse
*/
@Override
@ -154,7 +162,6 @@ public class WorkOrderServiceImpl implements WorkOrderService {
*
* "待审核""已完成"退"处理中"
*/
// 在WorkOrderServiceImpl的reviewOrder方法中
@Override
@Transactional
public boolean reviewOrder(String orderId, boolean approved) {
@ -163,15 +170,8 @@ public class WorkOrderServiceImpl implements WorkOrderService {
WorkOrder order = orderOpt.get();
if (order.getStatus() == WorkOrder.OrderStatus.reviewing) {
if (approved) {
// 审核通过:改为"已完成",并更新维修人员工作量
// 审核通过:改为"已完成"
order.setStatus(WorkOrder.OrderStatus.completed);
if (order.getAssignedRepairmanId() != null) {
repairmanRepository.findById(order.getAssignedRepairmanId())
.ifPresent(rm -> {
rm.setWorkCount(rm.getWorkCount() + 1);
repairmanRepository.save(rm);
});
}
} else {
// 审核不通过:退回"处理中"
order.setStatus(WorkOrder.OrderStatus.processing);
@ -190,10 +190,15 @@ public class WorkOrderServiceImpl implements WorkOrderService {
}
return false;
}
@Component
@RequiredArgsConstructor
/**
* @Slf4j
* Spring@EnableScheduling
*/
@Slf4j
public class WorkOrderTimeoutTask {
@Service // 单独注册为Spring Bean替代@Component
@RequiredArgsConstructor
public static class WorkOrderTimeoutTask {
private final WorkOrderRepository workOrderRepository;
@ -218,15 +223,16 @@ public class WorkOrderServiceImpl implements WorkOrderService {
}
}
log.info("超时工单检查完成");
log.info("超时工单检查完成,共检查{}个工单,其中{}个超时",
activeOrders.size(),
activeOrders.stream().filter(o -> o.getDeadline() != null && now.isAfter(o.getDeadline())).count());
}
}
/**
*
* "待处理"
*
* @param areaId ID
* @return
*/
@ -244,6 +250,7 @@ public class WorkOrderServiceImpl implements WorkOrderService {
/**
*
*
*
* @param repairmanId ID
* @return
*/
@ -255,8 +262,9 @@ public class WorkOrderServiceImpl implements WorkOrderService {
/**
*
* "待处理""超时""空闲"
* @param orderId ID
* @param repairmanId ID
*
* @param orderId ID
* @param repairmanId ID
* @return truefalse
*/
@Override
@ -292,7 +300,6 @@ public class WorkOrderServiceImpl implements WorkOrderService {
return false; // 派单失败(工单不存在/状态异常/维修人员不满足条件)
}
// 按状态查询工单的方法
@Override
public List<WorkOrder> getOrdersByStatus(WorkOrder.OrderStatus status) {
return workOrderRepository.findByStatus(status);

Loading…
Cancel
Save