一次大的提交

This commit is contained in:
2026-08-07 08:49:29 +08:00
parent bf2fc49c19
commit db70665ced
181 changed files with 23060 additions and 2804 deletions

View File

@@ -0,0 +1,150 @@
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:maibu_satabot_v2/features/v2/work_order/domain/entities/work_order_entity.dart';
import 'package:maibu_satabot_v2/features/v2/work_order/domain/usecases/work_order_usecases.dart';
import 'package:maibu_satabot_v2/features/v2/work_order/presentation/states/work_order_state.dart';
class WorkOrderCubit extends Cubit<WorkOrderState> {
final GetWorkOrderListUseCase _getWorkOrderListUseCase;
final GetWorkOrderDetailUseCase _getWorkOrderDetailUseCase;
final DispatchWorkOrderUseCase _dispatchWorkOrderUseCase;
final SuspendWorkOrderUseCase _suspendWorkOrderUseCase;
final CompleteWorkOrderUseCase _completeWorkOrderUseCase;
final StartWorkOrderUseCase _startWorkOrderUseCase;
WorkOrderCubit({
required GetWorkOrderListUseCase getWorkOrderListUseCase,
required GetWorkOrderDetailUseCase getWorkOrderDetailUseCase,
required DispatchWorkOrderUseCase dispatchWorkOrderUseCase,
required SuspendWorkOrderUseCase suspendWorkOrderUseCase,
required CompleteWorkOrderUseCase completeWorkOrderUseCase,
required StartWorkOrderUseCase startWorkOrderUseCase,
}) : _getWorkOrderListUseCase = getWorkOrderListUseCase,
_getWorkOrderDetailUseCase = getWorkOrderDetailUseCase,
_dispatchWorkOrderUseCase = dispatchWorkOrderUseCase,
_suspendWorkOrderUseCase = suspendWorkOrderUseCase,
_completeWorkOrderUseCase = completeWorkOrderUseCase,
_startWorkOrderUseCase = startWorkOrderUseCase,
super(WorkOrderInitial());
Future<void> loadWorkOrderList({
String? orderNo,
String? orderTitle,
int? sourceType,
int? orderType,
int? priorityLevel,
int? assigneeId,
int? deviceId,
int? siteId,
int? orgId,
int? orderStatus,
String? startTime,
String? endTime,
String? keyword,
}) async {
emit(WorkOrderLoading());
final result = await _getWorkOrderListUseCase.execute(
orderNo: orderNo,
orderTitle: orderTitle,
sourceType: sourceType,
orderType: orderType,
priorityLevel: priorityLevel,
assigneeId: assigneeId,
deviceId: deviceId,
siteId: siteId,
orgId: orgId,
orderStatus: orderStatus,
startTime: startTime,
endTime: endTime,
keyword: keyword,
pageNum: 1,
pageSize: 10000,
);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(orders) => emit(WorkOrderListLoaded(orders)),
);
}
Future<void> loadWorkOrderDetail(int id) async {
emit(WorkOrderLoading());
final result = await _getWorkOrderDetailUseCase.execute(id);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(order) => emit(WorkOrderDetailLoaded(order)),
);
}
Future<void> dispatchWorkOrder({
required int orderId,
required int assigneeId,
required String assigneeName,
String? collaboratorIds,
String? collaboratorNames,
String? planStartTime,
String? planEndTime,
String? deadlineTime,
}) async {
emit(const WorkOrderActionInProgress('派发工单'));
final result = await _dispatchWorkOrderUseCase.execute(
orderId: orderId,
assigneeId: assigneeId,
assigneeName: assigneeName,
collaboratorIds: collaboratorIds,
collaboratorNames: collaboratorNames,
planStartTime: planStartTime,
planEndTime: planEndTime,
deadlineTime: deadlineTime,
);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(success) => emit(const WorkOrderActionSuccess('派发工单成功')),
);
}
Future<void> suspendWorkOrder(int id) async {
emit(const WorkOrderActionInProgress('挂起工单'));
final result = await _suspendWorkOrderUseCase.execute(id);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(success) => emit(const WorkOrderActionSuccess('挂起工单成功')),
);
}
Future<void> completeWorkOrder({
required int id,
String? completeRemark,
String? completeTime,
}) async {
emit(const WorkOrderActionInProgress('完成工单'));
final result = await _completeWorkOrderUseCase.execute(
id: id,
completeRemark: completeRemark,
completeTime: completeTime,
);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(success) => emit(const WorkOrderActionSuccess('完成工单成功')),
);
}
Future<void> startWorkOrder({
required List<int> ids,
String? startTime,
String? deviceId,
}) async {
emit(const WorkOrderActionInProgress('开始执行工单'));
final result = await _startWorkOrderUseCase.execute(
ids: ids,
startTime: startTime,
deviceId: deviceId,
);
result.fold(
(failure) => emit(WorkOrderError(failure.message)),
(success) => emit(const WorkOrderActionSuccess('开始执行工单成功')),
);
}
void refresh() {
emit(WorkOrderInitial());
}
}

View File

@@ -0,0 +1,58 @@
import 'package:equatable/equatable.dart';
import 'package:maibu_satabot_v2/features/v2/work_order/domain/entities/work_order_entity.dart';
abstract class WorkOrderState extends Equatable {
const WorkOrderState();
@override
List<Object?> get props => [];
}
class WorkOrderInitial extends WorkOrderState {}
class WorkOrderLoading extends WorkOrderState {}
class WorkOrderListLoaded extends WorkOrderState {
final List<WorkOrderEntity> orders;
const WorkOrderListLoaded(this.orders);
@override
List<Object?> get props => [orders];
}
class WorkOrderDetailLoaded extends WorkOrderState {
final WorkOrderEntity order;
const WorkOrderDetailLoaded(this.order);
@override
List<Object?> get props => [order];
}
class WorkOrderActionInProgress extends WorkOrderState {
final String action;
const WorkOrderActionInProgress(this.action);
@override
List<Object?> get props => [action];
}
class WorkOrderActionSuccess extends WorkOrderState {
final String action;
const WorkOrderActionSuccess(this.action);
@override
List<Object?> get props => [action];
}
class WorkOrderError extends WorkOrderState {
final String message;
const WorkOrderError(this.message);
@override
List<Object?> get props => [message];
}