import 'package:domain/entity/response/u_k_template_entity.dart'; import 'package:get/get.dart'; import 'package:plugin_platform/http/http_provider.dart'; import 'package:plugin_platform/http/http_result.dart'; import 'package:plugin_platform/platform_export.dart'; import 'package:shared/utils/util.dart'; import '../constants/api_constants.dart'; import '../entity/response/uk_attendance_review_entity.dart'; import '../entity/response/uk_attendance_review_remark_entity.dart'; import '../entity/response/uk_job_applied_revise_add_detail_entity.dart'; import '../entity/response/uk_job_applied_revise_edit_detail_entity.dart'; import '../entity/response/uk_job_applied_revise_info_entity.dart'; import '../entity/response/uk_job_applied_revise_log_entity.dart'; import '../entity/response/uk_job_applied_staff_list_entity.dart'; import '../entity/response/uk_job_list_applied_staff_search_entity.dart'; import '../entity/response/uk_job_template_detail_by_select_title_entity.dart'; import '../entity/response/uk_report_outlet_entity.dart'; import '../entity/response/uk_staff_detail_entity.dart'; import '../entity/response/uk_staff_labour_history_entity.dart'; import '../entity/response/uk_template_detail_entity.dart'; import '../entity/response/uk_template_detail_index_entity.dart'; import '../entity/response/uk_template_title_option_entity.dart'; /// UK工作相关数据仓库 class UKJobRepository extends GetxService { HttpProvider httpProvider; UKJobRepository({required this.httpProvider}); /// 用工模版中的工作标题列表 Future> fetchJobTemplateList( String? keyword, { required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "10"; if (!Utils.isEmpty(keyword)) { params["job_title"] = keyword!; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateListSG, params: params, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = UKTemplateEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } /// 添加用工模版 时详情里面的 数据源 Future> fetchJobTemplateIndex({ CancelToken? cancelToken, }) async { final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateAddIndexUK, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = UkTemplateDetailIndexEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } /// 添加用工模版 时详情里 根据所选template 获取工作标题选项 Future> fetchJobTitleOptiosByTemplate( String templateTitle, { CancelToken? cancelToken, }) async { Map params = {}; params['template_title'] = templateTitle; final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateTitleOptionsUK, params: params, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { final jsonList = result.getListJson(); var list = jsonList?.map((e) { if (e is Map) { return UkTemplateTitleOptionEntity.fromJson(e); } else { return null; } }).whereType().toList(); return result.convert(list: list); } return result.convert(); } /// 编辑时获取的用工模版中的详情 Future> fetchJobTemplateDetail({ required String? templateId, CancelToken? cancelToken, }) async { Map params = {}; params['template_id'] = templateId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateDetailUK, params: params, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = UkTemplateDetailEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } /// 新增时 选择了 jobtitle 后 获取该title对应的模板详情 用于回显当前title 的模板数据 Future> fetchSelectJobTitleGetTemplateDetail({ required String? templateId, CancelToken? cancelToken, }) async { Map params = {}; params['template_id'] = templateId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateDetailBySelectTitleUK, params: params, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { final json = result.getDataJson(); var data = UkJobTemplateDetailBySelectTitleEntity.fromJson(json!); return result.convert(data: data); } return result.convert(); } /// 工作模板的添加提交 Future addJobTemplateSubmit({ required String jobTemplateId , required String jobTitle, List? certificate, List? vehicle, String? note, String? desc, String? contactName, String? contactNo, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['job_template_id'] = jobTemplateId; params['job_title'] = jobTitle; if (certificate != null && certificate.isNotEmpty) { params['certificate[]'] = certificate; } if (vehicle != null && vehicle.isNotEmpty) { params['vehicle[]'] = vehicle; } if (Utils.isNotEmpty(note)) { params['note'] = note ?? ""; } if (Utils.isNotEmpty(contactName)) { params['contact_name'] = contactName ?? ""; } if (Utils.isNotEmpty(contactNo)) { params['contact_no'] = contactNo ?? ""; } if (Utils.isNotEmpty(desc)) { params['description'] = desc ?? ""; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateAddSubmitSG, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { return result.convert(); } return result.convert(); } /// 工作模板的编辑提交 Future editJobTemplateSubmit({ required String templateId, required String jobTemplateId, required String jobTitle, List? certificate, List? vehicle, String? note, String? desc, String? contactName, String? contactNo, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['job_title'] = jobTitle; params['template_id'] = templateId; params['job_template_id'] = jobTemplateId; if (certificate != null && certificate.isNotEmpty) { params['certificate[]'] = certificate; } if (vehicle != null && vehicle.isNotEmpty) { params['vehicle[]'] = vehicle; } if (Utils.isNotEmpty(note)) { params['note'] = note ?? ""; } if (Utils.isNotEmpty(contactName)) { params['contact_name'] = contactName ?? ""; } if (Utils.isNotEmpty(contactNo)) { params['contact_no'] = contactNo ?? ""; } if (Utils.isNotEmpty(desc)) { params['description'] = desc ?? ""; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateEditSubmitSG, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { return result.convert(); } return result.convert(); } ///工作模板的删除 Future deleteJobTemplate({ required String? templateId, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['template_id'] = templateId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiJobTemplateDeleteSG, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); if (result.isSuccess) { return result.convert(); } return result.convert(); } /// 添加用工请求发布 Future addLabourRequestSubmit({ required String? templateId, required String? jobDate, required String? startTime, required String? endTime, required String? departmentId, required String? needNum, required String? salaryBy, String? amount, String? repeatDate, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['template_id'] = templateId ?? ""; params['job_date'] = jobDate ?? ""; params['start_time'] = startTime ?? ""; params['end_time'] = endTime ?? ""; params['need_num'] = needNum ?? ""; params['salary_by'] = salaryBy ?? ""; if (!Utils.isEmpty(departmentId)) { params["co_department_id"] = departmentId!; } if (!Utils.isEmpty(amount)) { params["amount"] = amount!; } if (!Utils.isEmpty(repeatDate)) { params["select"] = repeatDate!; } final result = await httpProvider.requestNetResult( ApiConstants.apiLabourRequestAddSubmit, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } // job-list ------------ /// 工作中已申请的成员列表 Future> fetchJobAppliedStaffs( String? jobId, String? staffName, { String? appliedId, required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "10"; if (!Utils.isEmpty(jobId)) { params["job_id"] = jobId!; } if (!Utils.isEmpty(appliedId)) { params["applied_id"] = appliedId!; } if (!Utils.isEmpty(staffName)) { params["staff_name"] = staffName!; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobListAppliedStaffList, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedStaffListEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// 根据ID获取主列表的Item数据,用于刷新Item Future> fetchItemByAppliedIds( String? jobId, String? appliedIds, { CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = "1"; params["page_size"] = "9999"; if (!Utils.isEmpty(appliedIds)) { params["applied_ids"] = appliedIds!; } if (!Utils.isEmpty(jobId)) { params["job_id"] = jobId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobListAppliedStaffList, params: params, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedStaffListEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// 设置小费 Future appliedStaffBatchSetTipSubmit( { // 多个applied_ids 以逗号分隔 String? appliedIds , // 设置小费 String? gratuity, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['applied_ids'] = appliedIds ?? ""; params['gratuity'] = gratuity ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffBatchSetTipUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// 添加员工的全部员工数据列表 Future> searchStaffList( String? jobId, String? keyword, { required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "10"; if (!Utils.isEmpty(jobId)) { params["job_id"] = jobId!; } if (!Utils.isEmpty(keyword)) { params["keyword"] = keyword!; } final result = await httpProvider.requestNetResult( ApiConstants.apiJobListAppliedStaffSearch, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobListAppliedStaffSearchEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// 添加员工 时 给员工 打标记 Future staffSetFavourite( String? memberId, String? isFavourite, { CancelToken? cancelToken, }) async { //参数 Map params = {}; if (!Utils.isEmpty(memberId)) { params["member_id"] = memberId!; } if (!Utils.isEmpty(isFavourite)) { params["is_favourite"] = isFavourite!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffSetFavouriteUK, method: HttpMethod.POST, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// 获取revise 列表 Future> fetchJobAppliedReviseList( { String? appliedId, required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "10"; if (!Utils.isEmpty(appliedId)) { params["applied_id"] = appliedId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseListUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedReviseInfoEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// 根据ID获取主列表的Item数据,用于刷新Item Future> fetchJobAppliedReviseListById( { String? appliedId, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = "1"; params["page_size"] = "9999"; if (!Utils.isEmpty(appliedId)) { params["applied_id"] = appliedId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseListUK, params: params, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedReviseInfoEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// revise add 时 获取详情 Future> fetchAddReviseDetailInfo( { String? appliedId, CancelToken? cancelToken, }) async { //参数 Map params = {}; if (!Utils.isEmpty(appliedId)) { params["applied_id"] = appliedId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseAddUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedReviseEditDetailEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// revise edit 时 获取详情 Future> fetchEditReviseDetailInfo( { String? reviseId, CancelToken? cancelToken, }) async { //参数 Map params = {}; if (!Utils.isEmpty(reviseId)) { params["revise_id"] = reviseId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseEditUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedReviseEditDetailEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// revise add 提交 Future reviseAddSubmit( { String? appliedId, String? reviseHours, String? reason, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['applied_id'] = appliedId ?? ""; params['revise_hours'] = reviseHours ?? ""; params['reason'] = reason ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseAddSubmitUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// revise edit 提交 Future reviseEditSubmit( { String? reviseId, String? reviseHours, String? reason, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['revise_id'] = reviseId ?? ""; params['revise_hours'] = reviseHours ?? ""; params['reason'] = reason ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseEditSubmitUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// revise recall Future reviseRecall( { String? reviseId, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['revise_id'] = reviseId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseRecallUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// revise delete Future reviseDelete( { String? reviseId, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['revise_id'] = reviseId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseDeleteUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } /// revise logs Future> featchReviseLogs( { String? reviseId, CancelToken? cancelToken, }) async { //参数 Map params = {}; params['revise_id'] = reviseId ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAppliedStaffReviseLogsUK, method: HttpMethod.GET, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkJobAppliedReviseLogEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } // -------staff------- // 员工的信息 Future> fetchStaffDetail( String? memberId, { CancelToken? cancelToken, }) async { //参数 Map params = {}; if (!Utils.isEmpty(memberId)) { params["member_id"] = memberId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiStaffDetailUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkStaffDetailEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } // 员工的历史申请记录 Future> fetchStaffLabourHistory( String? memberId, String? keyword, { required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "10"; if (!Utils.isEmpty(memberId)) { params["member_id"] = memberId!; } if (!Utils.isEmpty(keyword)) { params["keyword"] = keyword!; } final result = await httpProvider.requestNetResult( ApiConstants.apiStaffLabourHistoryUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkStaffLabourHistoryEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } // --------attentance review--------- /// 考勤审核列表 Future> fetchAttendanceReviewList( String? keyword, { required int curPage, CancelToken? cancelToken, }) async { //参数 Map params = {}; params["cur_page"] = curPage.toString(); params["page_size"] = "20"; if (!Utils.isEmpty(keyword)) { params["job_title"] = keyword!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAttendanceReviewTableUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkAttendanceReviewEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } // attendance review 获取Remarks 考勤的批量备注 Future> fetchAttendanceReviewRemarkInfo( String? appliedId, { CancelToken? cancelToken, }) async { //参数 Map params = {}; if (!Utils.isEmpty(appliedId)) { params["applied_id"] = appliedId!; } final result = await httpProvider.requestNetResult( ApiConstants.apiAttendanceReviewRemarksUK, params: params, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list final json = result.getDataJson(); var data = UkAttendanceReviewRemarkEntity.fromJson(json!); //重新赋值data或list return result.convert(data: data); } return result.convert(); } /// 考勤的批量同意/批量拒绝 Future attendanceReviewsBatchSubmit( String? recordIds, String? type, //审核类型Type【approve|reject】 String? auditMark, // 拒绝原因 { CancelToken? cancelToken, }) async { //参数 Map params = {}; params['record_ids'] = recordIds ?? ""; params['type'] = type ?? ""; params['audit_mark'] = auditMark ?? ""; final result = await httpProvider.requestNetResult( ApiConstants.apiAttendanceReviewBatchSubmitUK, method: HttpMethod.POST, params: params, networkDebounce: true, isShowLoadingDialog: true, cancelToken: cancelToken, ); //根据返回的结果,封装原始数据为Bean/Entity对象 if (result.isSuccess) { //重新赋值data或list return result.convert(); } return result.convert(); } }