uk_labour_repository.dart 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649
  1. import 'dart:io';
  2. import 'package:domain/entity/response/uk_labour_request_review_detail_entity.dart';
  3. import 'package:domain/entity/response/uk_labour_request_review_list_entity.dart';
  4. import 'package:domain/entity/server_time.dart';
  5. import 'package:get/get.dart';
  6. import 'package:plugin_platform/platform_export.dart';
  7. import 'package:plugin_platform/http/http_provider.dart';
  8. import 'package:plugin_platform/http/http_result.dart';
  9. import 'package:shared/utils/log_utils.dart';
  10. import 'package:shared/utils/util.dart';
  11. import '../constants/api_constants.dart';
  12. import '../entity/response/uk_lab_req_show_template_entity.dart';
  13. import '../entity/response/uk_labour_request_detail_entity.dart';
  14. import '../entity/response/uk_labour_request_preselect_addstatff_list_entity.dart';
  15. import '../entity/response/uk_labour_request_preselected_list_entity.dart';
  16. import '../entity/response/uk_labour_request_table_entity.dart';
  17. import '../entity/response/uk_labour_review_status_entity.dart';
  18. /// 用工请求相关
  19. class UkLabourRepository extends GetxService {
  20. HttpProvider httpProvider;
  21. UkLabourRepository({required this.httpProvider});
  22. /// 获取用工请求的主列表
  23. Future<HttpResult<UkLabourRequestTableEntity>> fetchLabourRequestList(
  24. String? keyword,
  25. String? startDate,
  26. String? endDate,
  27. String? statusId,
  28. String? departmentId, {
  29. required int curPage,
  30. CancelToken? cancelToken,
  31. }) async {
  32. //参数
  33. Map<String, String> params = {};
  34. params["cur_page"] = curPage.toString();
  35. params["page_size"] = "20";
  36. if (!Utils.isEmpty(keyword)) {
  37. params["job_title"] = keyword!;
  38. }
  39. if (!Utils.isEmpty(startDate)) {
  40. params["job_start"] = startDate!;
  41. }
  42. if (!Utils.isEmpty(endDate)) {
  43. params["job_end"] = endDate!;
  44. }
  45. if (!Utils.isEmpty(statusId)) {
  46. params["co_status"] = statusId!;
  47. }
  48. if (!Utils.isEmpty(departmentId)) {
  49. params["co_department_id"] = departmentId!;
  50. }
  51. final result = await httpProvider.requestNetResult(
  52. ApiConstants.apiLabourRequestList,
  53. params: params,
  54. cancelToken: cancelToken,
  55. );
  56. //根据返回的结果,封装原始数据为Bean/Entity对象
  57. if (result.isSuccess) {
  58. //重新赋值data或list
  59. final json = result.getDataJson();
  60. var data = UkLabourRequestTableEntity.fromJson(json!);
  61. //重新赋值data或list
  62. return result.convert<UkLabourRequestTableEntity>(data: data);
  63. }
  64. return result.convert();
  65. }
  66. /// 根据ID获取主列表的Item数据,用于刷新Item
  67. Future<HttpResult<UkLabourRequestTableEntity>> fetchItemByRequestId(
  68. String? requestId, {
  69. CancelToken? cancelToken,
  70. }) async {
  71. //参数
  72. Map<String, String> params = {};
  73. params["cur_page"] = "1";
  74. params["page_size"] = "1";
  75. if (!Utils.isEmpty(requestId)) {
  76. params["request_id"] = requestId!;
  77. }
  78. final result = await httpProvider.requestNetResult(
  79. ApiConstants.apiLabourRequestList,
  80. params: params,
  81. isShowLoadingDialog: true,
  82. cancelToken: cancelToken,
  83. );
  84. //根据返回的结果,封装原始数据为Bean/Entity对象
  85. if (result.isSuccess) {
  86. //重新赋值data或list
  87. final json = result.getDataJson();
  88. var data = UkLabourRequestTableEntity.fromJson(json!);
  89. //重新赋值data或list
  90. return result.convert<UkLabourRequestTableEntity>(data: data);
  91. }
  92. return result.convert();
  93. }
  94. /// 添加用工的选项
  95. Future<HttpResult<UkLabourRequestDetailEntity>> fetchLabourRequestAddOption({
  96. CancelToken? cancelToken,
  97. }) async {
  98. final result = await httpProvider.requestNetResult(
  99. ApiConstants.apiLabourRequestAddOption,
  100. isShowLoadingDialog: true,
  101. cancelToken: cancelToken,
  102. );
  103. //根据返回的结果,封装原始数据为Bean/Entity对象
  104. if (result.isSuccess) {
  105. //重新赋值data或list
  106. final json = result.getDataJson();
  107. var data = UkLabourRequestDetailEntity.fromJson(json!);
  108. //重新赋值data或list
  109. return result.convert<UkLabourRequestDetailEntity>(data: data);
  110. }
  111. return result.convert();
  112. }
  113. /// 根据模板id 回显 详情页相关数据
  114. Future<HttpResult<UkLabReqShowTemplateEntity>> fetchLabourRequestShowTemplateData(
  115. String templateId,
  116. {
  117. CancelToken? cancelToken,
  118. }) async {
  119. Map<String, dynamic> params = {};
  120. params['template_id'] = templateId;
  121. final result = await httpProvider.requestNetResult(
  122. ApiConstants.apiLabourRequestTemplateShowUK,
  123. params: params,
  124. isShowLoadingDialog: true,
  125. cancelToken: cancelToken,
  126. );
  127. //根据返回的结果,封装原始数据为Bean/Entity对象
  128. if (result.isSuccess) {
  129. //重新赋值data或list
  130. final json = result.getDataJson();
  131. var data = UkLabReqShowTemplateEntity.fromJson(json!);
  132. //重新赋值data或list
  133. return result.convert<UkLabReqShowTemplateEntity>(data: data);
  134. }
  135. return result.convert();
  136. }
  137. /// 获取labourequest 详情
  138. Future<HttpResult<UkLabourRequestDetailEntity>> fetchLabourRequestDetail(
  139. String? requestId, {
  140. CancelToken? cancelToken,
  141. }) async {
  142. //参数
  143. Map<String, String> params = {};
  144. if (!Utils.isEmpty(requestId)) {
  145. params["request_id"] = requestId!;
  146. }
  147. final result = await httpProvider.requestNetResult(
  148. ApiConstants.apiLabourRequestEditDetail,
  149. params: params,
  150. isShowLoadingDialog: true,
  151. cancelToken: cancelToken,
  152. );
  153. //根据返回的结果,封装原始数据为Bean/Entity对象
  154. if (result.isSuccess) {
  155. //重新赋值data或list
  156. final json = result.getDataJson();
  157. var data = UkLabourRequestDetailEntity.fromJson(json!);
  158. //重新赋值data或list
  159. return result.convert<UkLabourRequestDetailEntity>(data: data);
  160. }
  161. return result.convert();
  162. }
  163. /// 编辑用工请求发布
  164. Future<HttpResult> editLabourRequestSubmit({
  165. String? requestId,
  166. String? templateId,
  167. String? jobStart,
  168. String? jobEnd,
  169. String? departmentId,
  170. String? needNum,
  171. String? salaryBy,
  172. String? repeatDateStr,
  173. String? amount,
  174. String? certificate, // 多个逗号隔开
  175. String? challenge25,
  176. String? vehicle, // 多个逗号隔开
  177. String? description,
  178. String? employmentType,
  179. String? eventName,
  180. String? eventType,
  181. String? passengers,
  182. String? estRevenue,
  183. String? position,
  184. String? estCost,
  185. dynamic? attUrl,
  186. CancelToken? cancelToken,
  187. }) async {
  188. //参数
  189. Map<String, dynamic> params = {};
  190. params['request_id'] = requestId ?? "";
  191. params['template_id'] = templateId ?? "";
  192. params['job_start'] = jobStart ?? "";
  193. params['job_end'] = jobEnd ?? "";
  194. params['need_num'] = needNum ?? "";
  195. if (!Utils.isEmpty(departmentId)) {
  196. params["co_department_id"] = departmentId!;
  197. }
  198. params['salary_by'] = salaryBy ?? "";
  199. if (!Utils.isEmpty(amount)) {
  200. params["amount"] = amount!;
  201. }
  202. if(!Utils.isEmpty(certificate)){
  203. params["certificate"] = certificate!;
  204. }
  205. if(!Utils.isEmpty(challenge25)){
  206. params["challenge_25"] = challenge25!;
  207. }
  208. if(!Utils.isEmpty(vehicle)){
  209. params["vehicle"] = vehicle!;
  210. }
  211. if(!Utils.isEmpty(repeatDateStr)) {
  212. params["select"] = repeatDateStr!;
  213. }
  214. params['description'] = description ?? "";
  215. params['employment_type'] = employmentType ?? "";
  216. params['event_name'] = eventName ?? "";
  217. params['event_type'] = eventType ?? "";
  218. params['passengers'] = passengers ?? "";
  219. params['est_revenue'] = estRevenue ?? "";
  220. params['position'] = position ?? "";
  221. params['est_cost'] = estCost ?? "";
  222. //可能是file 也可能是 url
  223. Map<String, String> filePathParams = {};
  224. // 判断 http 或者 https 开头
  225. if(Utils.isNotEmpty(attUrl)){
  226. if(attUrl!.startsWith("http") || attUrl!.startsWith("https")){
  227. params['att_url'] = attUrl;
  228. }else {
  229. filePathParams['att_url'] = attUrl;
  230. }
  231. }
  232. final result = await httpProvider.requestNetResult(
  233. ApiConstants.apiLabourRequestEditSubmit,
  234. method: HttpMethod.POST,
  235. params: params,
  236. paths: filePathParams,
  237. networkDebounce: true,
  238. isShowLoadingDialog: true,
  239. cancelToken: cancelToken,
  240. );
  241. //根据返回的结果,封装原始数据为Bean/Entity对象
  242. if (result.isSuccess) {
  243. //重新赋值data或list
  244. return result.convert();
  245. }
  246. return result.convert();
  247. }
  248. /// 新增 labourequest用工请求发布
  249. Future<HttpResult> addLabourRequestSubmit({
  250. String? templateId,
  251. String? jobDate,
  252. String? jobStart,
  253. String? jobEnd,
  254. String? departmentId,
  255. String? needNum,
  256. String? salaryBy,
  257. String? repeatDateStr,
  258. String? amount,
  259. String? certificate, // 多个逗号隔开
  260. String? challenge25,
  261. String? vehicle, // 多个逗号隔开
  262. String? jobApplyPreId,
  263. String? description,
  264. String? employmentType,
  265. String? eventName,
  266. String? eventType,
  267. String? passengers,
  268. String? estRevenue,
  269. String? position,
  270. String? estCost,
  271. dynamic? attUrl,
  272. CancelToken? cancelToken,
  273. }) async {
  274. //参数
  275. Map<String, dynamic> params = {};
  276. params['template_id'] = templateId ?? "";
  277. params['job_date'] = jobDate ?? "";
  278. params['start_time'] = jobStart ?? "";
  279. params['end_time'] = jobEnd ?? "";
  280. params['need_num'] = needNum ?? "";
  281. if (!Utils.isEmpty(departmentId)) {
  282. params["co_department_id"] = departmentId!;
  283. }
  284. params['salary_by'] = salaryBy ?? "";
  285. if(!Utils.isEmpty(repeatDateStr)){
  286. params["select"] = repeatDateStr!;
  287. }
  288. if(!Utils.isEmpty(jobApplyPreId)){
  289. params["job_apply_pre_id"] = jobApplyPreId!;
  290. }
  291. if (!Utils.isEmpty(amount)) {
  292. params["amount"] = amount!;
  293. }
  294. if(!Utils.isEmpty(certificate)){
  295. params["certificate"] = certificate!;
  296. }
  297. if(!Utils.isEmpty(challenge25)){
  298. params["challenge_25"] = challenge25!;
  299. }
  300. if(!Utils.isEmpty(vehicle)){
  301. params["vehicle"] = vehicle!;
  302. }
  303. params['description'] = description ?? "";
  304. params['employment_type'] = employmentType ?? "";
  305. params['event_name'] = eventName ?? "";
  306. params['event_type'] = eventType ?? "";
  307. params['passengers'] = passengers ?? "";
  308. params['est_revenue'] = estRevenue ?? "";
  309. params['position'] = position ?? "";
  310. params['est_cost'] = estCost ?? "";
  311. //可能是file 也可能是 url
  312. Map<String, String> filePathParams = {};
  313. // 判断 http 或者 https 开头
  314. if(Utils.isNotEmpty(attUrl)){
  315. if(attUrl!.startsWith("http") || attUrl!.startsWith("https")){
  316. params['att_url'] = attUrl;
  317. }else {
  318. filePathParams['att_url'] = attUrl;
  319. }
  320. }
  321. final result = await httpProvider.requestNetResult(
  322. ApiConstants.apiLabourRequestAddSubmit,
  323. method: HttpMethod.POST,
  324. params: params,
  325. paths: filePathParams,
  326. networkDebounce: true,
  327. isShowLoadingDialog: true,
  328. cancelToken: cancelToken,
  329. );
  330. //根据返回的结果,封装原始数据为Bean/Entity对象
  331. if (result.isSuccess) {
  332. //重新赋值data或list
  333. return result.convert();
  334. }
  335. return result.convert();
  336. }
  337. /// 用工请求 快速复制
  338. Future<HttpResult> quickCopyLabourRequestSubmit(
  339. String? requestId,
  340. // 格式[Y-m-d]
  341. String? jobDate,
  342. //格式[H:m]
  343. String? startTime,
  344. //格式[H:m]
  345. String? endTime,
  346. {
  347. CancelToken? cancelToken,
  348. }) async {
  349. //参数
  350. Map<String, String> params = {};
  351. params['request_id'] = requestId ?? "";
  352. params['job_date'] = jobDate ?? "";
  353. params['start_time'] = startTime ?? "";
  354. params['end_time'] = endTime ?? "";
  355. final result = await httpProvider.requestNetResult(
  356. ApiConstants.apiLabourRequestQuickCopyUK,
  357. method: HttpMethod.POST,
  358. params: params,
  359. networkDebounce: true,
  360. isShowLoadingDialog: true,
  361. cancelToken: cancelToken,
  362. );
  363. //根据返回的结果,封装原始数据为Bean/Entity对象
  364. if (result.isSuccess) {
  365. //重新赋值data或list
  366. return result.convert();
  367. }
  368. return result.convert();
  369. }
  370. /// 获取 labourequest preselected 列表
  371. Future<HttpResult<UkLabourRequestPreselectedListEntity>> fetchLabourRequestPreselectedList(
  372. String reQuestId,
  373. {
  374. required int curPage,
  375. CancelToken? cancelToken,
  376. }) async {
  377. //参数
  378. Map<String, String> params = {};
  379. params["cur_page"] = curPage.toString();
  380. params["page_size"] = "20";
  381. if (!Utils.isEmpty(reQuestId)) {
  382. params["request_id"] = reQuestId;
  383. }
  384. final result = await httpProvider.requestNetResult(
  385. ApiConstants.apiLabourRequestPreSelectListUK,
  386. params: params,
  387. cancelToken: cancelToken,
  388. );
  389. //根据返回的结果,封装原始数据为Bean/Entity对象
  390. if (result.isSuccess) {
  391. //重新赋值data或list
  392. final json = result.getDataJson();
  393. var data = UkLabourRequestPreselectedListEntity.fromJson(json!);
  394. //重新赋值data或list
  395. return result.convert<UkLabourRequestPreselectedListEntity>(data: data);
  396. }
  397. return result.convert();
  398. }
  399. /// 预选人-添加员工的列表
  400. Future<HttpResult<UkLabourRequestPreselectAddstatffListEntity>> fetchtPreselectedAddStaffList(
  401. String? keyWord,
  402. String? reQuestId,
  403. {
  404. required int curPage,
  405. CancelToken? cancelToken,
  406. }) async {
  407. //参数
  408. Map<String, String> params = {};
  409. params["cur_page"] = curPage.toString();
  410. params["page_size"] = "20";
  411. if (!Utils.isEmpty(keyWord)) {
  412. params["keyword"] = keyWord!;
  413. }
  414. if (!Utils.isEmpty(reQuestId)) {
  415. params["request_id"] = reQuestId!;
  416. }
  417. final result = await httpProvider.requestNetResult(
  418. ApiConstants.apiLabourRequestPreSelectAddStaffListUK,
  419. params: params,
  420. cancelToken: cancelToken,
  421. );
  422. //根据返回的结果,封装原始数据为Bean/Entity对象
  423. if (result.isSuccess) {
  424. //重新赋值data或list
  425. final json = result.getDataJson();
  426. var data = UkLabourRequestPreselectAddstatffListEntity.fromJson(json!);
  427. //重新赋值data或list
  428. return result.convert<UkLabourRequestPreselectAddstatffListEntity>(data: data);
  429. }
  430. return result.convert();
  431. }
  432. //// 添加预选员工
  433. Future<HttpResult> labourRequestPreselectedAddStaffSubmit(
  434. String reQuestId,
  435. String staffIds,
  436. {
  437. CancelToken? cancelToken,
  438. }) async {
  439. //参数
  440. Map<String, String> params = {};
  441. params['request_id'] = reQuestId ?? "";
  442. params['staff_ids'] = staffIds ?? "";
  443. final result = await httpProvider.requestNetResult(
  444. ApiConstants.apiLabourRequestPreSelectAddBatchUK,
  445. method: HttpMethod.POST,
  446. params: params,
  447. networkDebounce: true,
  448. isShowLoadingDialog: true,
  449. cancelToken: cancelToken,
  450. );
  451. //根据返回的结果,封装原始数据为Bean/Entity对象
  452. if (result.isSuccess) {
  453. //重新赋值data或list
  454. return result.convert();
  455. }
  456. return result.convert();
  457. }
  458. /// 删除预选员工
  459. Future<HttpResult> labourRequestPreselectedDelete(
  460. String selectedId,
  461. {
  462. CancelToken? cancelToken,
  463. }) async {
  464. //参数
  465. Map<String, String> params = {};
  466. params['selected_id'] = selectedId ?? "";
  467. final result = await httpProvider.requestNetResult(
  468. ApiConstants.apiLabourRequestPreSelectDeleteUK,
  469. method: HttpMethod.POST,
  470. params: params,
  471. networkDebounce: true,
  472. isShowLoadingDialog: true,
  473. cancelToken: cancelToken,
  474. );
  475. //根据返回的结果,封装原始数据为Bean/Entity对象
  476. if (result.isSuccess) {
  477. //重新赋值data或list
  478. return result.convert();
  479. }
  480. return result.convert();
  481. }
  482. /// labourequest -review ------------
  483. /// 获取用工请求审核的主列表
  484. Future<HttpResult<UkLabourRequestReviewListEntity>> fetchLabourRequestReViewList({
  485. String? keyword,
  486. String? startDate,
  487. String? endDate,
  488. String? departmentId,
  489. required int curPage,
  490. CancelToken? cancelToken,
  491. }) async {
  492. //参数
  493. Map<String, String> params = {};
  494. params["cur_page"] = curPage.toString();
  495. params["page_size"] = "20";
  496. if (!Utils.isEmpty(keyword)) {
  497. params["job_title"] = keyword!;
  498. }
  499. if (!Utils.isEmpty(startDate)) {
  500. params["job_start"] = startDate!;
  501. }
  502. if (!Utils.isEmpty(endDate)) {
  503. params["job_end"] = endDate!;
  504. }
  505. if (!Utils.isEmpty(departmentId)) {
  506. params["co_department_id"] = departmentId!;
  507. }
  508. final result = await httpProvider.requestNetResult(
  509. ApiConstants.apiLabourRequestReViewListUK,
  510. params: params,
  511. cancelToken: cancelToken,
  512. );
  513. //根据返回的结果,封装原始数据为Bean/Entity对象
  514. if (result.isSuccess) {
  515. //重新赋值data或list
  516. final json = result.getDataJson();
  517. var data = UkLabourRequestReviewListEntity.fromJson(json!);
  518. //重新赋值data或list
  519. return result.convert<UkLabourRequestReviewListEntity>(data: data);
  520. }
  521. return result.convert();
  522. }
  523. /// labourrequest -review 批量审核(批量同意/批量拒绝)
  524. Future<HttpResult> labourRequestReviewBatchSubmit(
  525. {
  526. // 多个Record Ids以逗号分隔
  527. String? recordIds,
  528. // 审核类型Type【approve|reject】
  529. String? type,
  530. CancelToken? cancelToken,
  531. }) async {
  532. //参数
  533. Map<String, String> params = {};
  534. params['record_ids'] = recordIds ?? "";
  535. params['type'] = type ?? "";
  536. final result = await httpProvider.requestNetResult(
  537. ApiConstants.apiLabourRequestReViewBatchSubmitUK,
  538. method: HttpMethod.POST,
  539. params: params,
  540. networkDebounce: true,
  541. isShowLoadingDialog: true,
  542. cancelToken: cancelToken,
  543. );
  544. //根据返回的结果,封装原始数据为Bean/Entity对象
  545. if (result.isSuccess) {
  546. //重新赋值data或list
  547. return result.convert();
  548. }
  549. return result.convert();
  550. }
  551. /// 用工审核的审核流程列表
  552. Future<HttpResult<UkLabourReviewStatusEntity>> fetchLabourReviewStatusView(
  553. String? requestId, {
  554. CancelToken? cancelToken,
  555. }) async {
  556. //参数
  557. Map<String, String> params = {};
  558. params['request_id'] = requestId ?? "";
  559. final result = await httpProvider.requestNetResult(
  560. ApiConstants.apiLabourRequestStateWorkFlow,
  561. params: params,
  562. cancelToken: cancelToken,
  563. );
  564. //根据返回的结果,封装原始数据为Bean/Entity对象
  565. if (result.isSuccess) {
  566. //重新赋值data或list
  567. final json = result.getDataJson();
  568. var data = UkLabourReviewStatusEntity.fromJson(json!);
  569. //重新赋值data或list
  570. return result.convert<UkLabourReviewStatusEntity>(data: data);
  571. }
  572. return result.convert();
  573. }
  574. }