uk_labour_repository.dart 20 KB

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