job_sg_repository.dart 30 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018
  1. import 'dart:typed_data';
  2. import 'package:domain/entity/response/job_applied_index_s_g_entity.dart';
  3. import 'package:domain/entity/response/job_applied_list_s_g_entity.dart';
  4. import 'package:domain/entity/response/revise_list_s_g_entity.dart';
  5. import 'package:domain/entity/response/revise_log_s_g_entity.dart';
  6. import 'package:domain/entity/response/s_g_attendance_review_option_entity.dart';
  7. import 'package:domain/entity/response/s_g_attendance_review_table_entity.dart';
  8. import 'package:domain/entity/response/s_g_attendance_review_workflow_entity.dart';
  9. import 'package:domain/entity/response/s_g_dashboard_entity.dart';
  10. import 'package:domain/entity/response/staff_detail_s_g_entity.dart';
  11. import 'package:domain/entity/response/staff_review_history_s_g_entity.dart';
  12. import 'package:get/get.dart';
  13. import 'package:plugin_platform/platform_export.dart';
  14. import 'package:plugin_platform/http/http_provider.dart';
  15. import 'package:plugin_platform/http/http_result.dart';
  16. import 'package:shared/utils/date_time_utils.dart';
  17. import 'package:shared/utils/util.dart';
  18. import '../constants/api_constants.dart';
  19. import '../entity/response/add_edit_revise_view_s_g_entity.dart';
  20. import '../entity/response/job_applied_edit_index_s_g_entity.dart';
  21. import '../entity/response/job_applied_remark_view_s_g_entity.dart';
  22. import '../entity/response/job_applied_staff_s_g_entity.dart';
  23. import '../entity/response/revise_index_s_g_entity.dart';
  24. import '../entity/response/staff_job_history_s_g_entity.dart';
  25. /// 工作相关(新加坡)
  26. class JobSGRepository extends GetxService {
  27. HttpProvider httpProvider;
  28. JobSGRepository({required this.httpProvider});
  29. /// 获取工作已申请的选项
  30. Future<HttpResult<JobAppliedIndexSGEntity>> fetchJobAppliedIndex(
  31. String? jobId, {
  32. CancelToken? cancelToken,
  33. }) async {
  34. //参数
  35. Map<String, String> params = {};
  36. params["job_id"] = jobId ?? "";
  37. final result = await httpProvider.requestNetResult(
  38. ApiConstants.apiJobAppliedIndexSG,
  39. params: params,
  40. cancelToken: cancelToken,
  41. );
  42. //根据返回的结果,封装原始数据为Bean/Entity对象
  43. if (result.isSuccess) {
  44. //重新赋值data或list
  45. final json = result.getDataJson();
  46. var data = JobAppliedIndexSGEntity.fromJson(json!);
  47. //重新赋值data或list
  48. return result.convert<JobAppliedIndexSGEntity>(data: data);
  49. }
  50. return result.convert();
  51. }
  52. /// 获取工作已申请的列表
  53. Future<HttpResult<JobAppliedListSGEntity>> fetchJobAppliedList(
  54. String? jobId,
  55. String? status,
  56. String? keyword, {
  57. required int curPage,
  58. CancelToken? cancelToken,
  59. }) async {
  60. //参数
  61. Map<String, String> params = {};
  62. params["cur_page"] = curPage.toString();
  63. params["page_size"] = "10";
  64. params["job_id"] = jobId ?? "";
  65. if (!Utils.isEmpty(keyword)) {
  66. params["keyword"] = keyword!;
  67. }
  68. if (!Utils.isEmpty(status)) {
  69. params["status"] = status!;
  70. }
  71. final result = await httpProvider.requestNetResult(
  72. ApiConstants.apiJobAppliedListSG,
  73. params: params,
  74. cancelToken: cancelToken,
  75. );
  76. //根据返回的结果,封装原始数据为Bean/Entity对象
  77. if (result.isSuccess) {
  78. //重新赋值data或list
  79. final json = result.getDataJson();
  80. var data = JobAppliedListSGEntity.fromJson(json!);
  81. //重新赋值data或list
  82. return result.convert<JobAppliedListSGEntity>(data: data);
  83. }
  84. return result.convert();
  85. }
  86. /// 根据ID获取主列表的Item数据,用于刷新Item
  87. Future<HttpResult<JobAppliedListSGEntity>> fetchItemByAppliedIds(
  88. String? jobId,
  89. String? appliedIds, {
  90. CancelToken? cancelToken,
  91. }) async {
  92. //参数
  93. Map<String, String> params = {};
  94. params["cur_page"] = "1";
  95. params["page_size"] = "9999";
  96. if (!Utils.isEmpty(appliedIds)) {
  97. params["applied_ids"] = appliedIds!;
  98. }
  99. if (!Utils.isEmpty(jobId)) {
  100. params["job_id"] = jobId!;
  101. }
  102. final result = await httpProvider.requestNetResult(
  103. ApiConstants.apiJobAppliedListSG,
  104. params: params,
  105. isShowLoadingDialog: true,
  106. cancelToken: cancelToken,
  107. );
  108. //根据返回的结果,封装原始数据为Bean/Entity对象
  109. if (result.isSuccess) {
  110. //重新赋值data或list
  111. final json = result.getDataJson();
  112. var data = JobAppliedListSGEntity.fromJson(json!);
  113. //重新赋值data或list
  114. return result.convert<JobAppliedListSGEntity>(data: data);
  115. }
  116. return result.convert();
  117. }
  118. /// 获取工作已申请的列表中添加的员工搜索
  119. Future<HttpResult<JobAppliedStaffSGEntity>> searchJobAppliedStaff(
  120. String? jobId,
  121. String? keyword, {
  122. required int curPage,
  123. CancelToken? cancelToken,
  124. }) async {
  125. //参数
  126. Map<String, String> params = {};
  127. params["cur_page"] = curPage.toString();
  128. params["page_size"] = "20";
  129. params["job_id"] = jobId ?? "";
  130. if (!Utils.isEmpty(keyword)) {
  131. params["keyword"] = keyword!;
  132. }
  133. final result = await httpProvider.requestNetResult(
  134. ApiConstants.apiJobAppliedSearchStaffSG,
  135. params: params,
  136. cancelToken: cancelToken,
  137. );
  138. //根据返回的结果,封装原始数据为Bean/Entity对象
  139. if (result.isSuccess) {
  140. //重新赋值data或list
  141. final json = result.getDataJson();
  142. var data = JobAppliedStaffSGEntity.fromJson(json!);
  143. //重新赋值data或list
  144. return result.convert<JobAppliedStaffSGEntity>(data: data);
  145. }
  146. return result.convert();
  147. }
  148. /// 添加员工到申请列表
  149. Future<HttpResult> addStaff2AppliedJob(
  150. String? jobId,
  151. String? staffIds, {
  152. CancelToken? cancelToken,
  153. }) async {
  154. //参数
  155. Map<String, String> params = {};
  156. params['job_id'] = jobId ?? "";
  157. params['staff_ids'] = staffIds ?? "";
  158. final result = await httpProvider.requestNetResult(
  159. ApiConstants.apiJobAppliedAddStaffSubmitSG,
  160. method: HttpMethod.POST,
  161. params: params,
  162. networkDebounce: true,
  163. isShowLoadingDialog: true,
  164. cancelToken: cancelToken,
  165. );
  166. //根据返回的结果,封装原始数据为Bean/Entity对象
  167. if (result.isSuccess) {
  168. //重新赋值data或list
  169. return result.convert();
  170. }
  171. return result.convert();
  172. }
  173. /// 批量修改员工信息或考勤
  174. Future<HttpResult> batchEditJobApplied(
  175. String? jobId,
  176. String? appliedIds,
  177. String? startTime,
  178. String? endTime,
  179. String? subtractHours,
  180. String? status, {
  181. CancelToken? cancelToken,
  182. }) async {
  183. //参数
  184. Map<String, String> params = {};
  185. params['applied_ids'] = appliedIds ?? "";
  186. params['job_id'] = jobId ?? "";
  187. if (!Utils.isEmpty(startTime)) {
  188. params['start_time'] = startTime ?? "";
  189. }
  190. if (!Utils.isEmpty(endTime)) {
  191. params['end_time'] = endTime ?? "";
  192. }
  193. if (!Utils.isEmpty(subtractHours)) {
  194. params['subtract_hours'] = subtractHours ?? "";
  195. }
  196. if (!Utils.isEmpty(status)) {
  197. params['status'] = status ?? "";
  198. }
  199. final result = await httpProvider.requestNetResult(
  200. ApiConstants.apiJobAppliedBatchEditSG,
  201. method: HttpMethod.POST,
  202. params: params,
  203. networkDebounce: true,
  204. isShowLoadingDialog: true,
  205. cancelToken: cancelToken,
  206. );
  207. //根据返回的结果,封装原始数据为Bean/Entity对象
  208. if (result.isSuccess) {
  209. //重新赋值data或list
  210. return result.convert();
  211. }
  212. return result.convert();
  213. }
  214. /// 编辑员工信息或考勤的选项详情
  215. Future<HttpResult<JobAppliedEditIndexSGEntity>> fetchEditJobAppliedIndex(
  216. String? appliedId, {
  217. CancelToken? cancelToken,
  218. }) async {
  219. //参数
  220. Map<String, String> params = {};
  221. params['applied_id'] = appliedId ?? "";
  222. final result = await httpProvider.requestNetResult(
  223. ApiConstants.apiJobAppliedEditViewSG,
  224. params: params,
  225. isShowLoadingDialog: true,
  226. cancelToken: cancelToken,
  227. );
  228. //根据返回的结果,封装原始数据为Bean/Entity对象
  229. if (result.isSuccess) {
  230. //重新赋值data或list
  231. final json = result.getDataJson();
  232. var data = JobAppliedEditIndexSGEntity.fromJson(json!);
  233. //重新赋值data或list
  234. return result.convert<JobAppliedEditIndexSGEntity>(data: data);
  235. }
  236. return result.convert();
  237. }
  238. /// 编辑员工信息或考勤的提交
  239. Future<HttpResult> submitEditJobApplied(
  240. String? appliedId,
  241. String? startTime,
  242. String? endTime,
  243. String? security_in,
  244. String? security_out,
  245. String? work_in,
  246. String? work_out,
  247. String? adjustHours,
  248. String? status, {
  249. CancelToken? cancelToken,
  250. }) async {
  251. //参数
  252. Map<String, String> params = {};
  253. params['applied_id'] = appliedId ?? "";
  254. params['start_time'] = DateTimeUtils.formatDateStr(startTime!, format: 'HH:mm:ss') ?? "";
  255. params['end_time'] = DateTimeUtils.formatDateStr(endTime!, format: 'HH:mm:ss') ?? "";
  256. if (!Utils.isEmpty(security_in)) {
  257. params['security_in'] = DateTimeUtils.formatDateStr(security_in!, format: 'HH:mm:ss');
  258. }
  259. if (!Utils.isEmpty(security_out)) {
  260. params['security_out'] = DateTimeUtils.formatDateStr(security_out!, format: 'HH:mm:ss');
  261. }
  262. if (!Utils.isEmpty(work_in)) {
  263. params['work_in'] = DateTimeUtils.formatDateStr(work_in!, format: 'HH:mm:ss');
  264. }
  265. if (!Utils.isEmpty(work_out)) {
  266. params['work_out'] = DateTimeUtils.formatDateStr(work_out!, format: 'HH:mm:ss');
  267. }
  268. if (!Utils.isEmpty(adjustHours)) {
  269. params['adjust_hours'] = adjustHours ?? "";
  270. }
  271. if (!Utils.isEmpty(status)) {
  272. params['status'] = status ?? "";
  273. }
  274. final result = await httpProvider.requestNetResult(
  275. ApiConstants.apiJobAppliedEditSubmitSG,
  276. method: HttpMethod.POST,
  277. params: params,
  278. networkDebounce: true,
  279. isShowLoadingDialog: true,
  280. cancelToken: cancelToken,
  281. );
  282. //根据返回的结果,封装原始数据为Bean/Entity对象
  283. if (result.isSuccess) {
  284. //重新赋值data或list
  285. return result.convert();
  286. }
  287. return result.convert();
  288. }
  289. /// 修改考勤员工的考勤状态
  290. Future<HttpResult> submitEditAppliedStatus(
  291. String? appliedId,
  292. String? status, {
  293. CancelToken? cancelToken,
  294. }) async {
  295. //参数
  296. Map<String, String> params = {};
  297. params['applied_id'] = appliedId ?? "";
  298. params['status'] = status ?? "";
  299. final result = await httpProvider.requestNetResult(
  300. ApiConstants.apiJobAppliedChangeStatusSG,
  301. method: HttpMethod.POST,
  302. params: params,
  303. networkDebounce: true,
  304. isShowLoadingDialog: true,
  305. cancelToken: cancelToken,
  306. );
  307. //根据返回的结果,封装原始数据为Bean/Entity对象
  308. if (result.isSuccess) {
  309. //重新赋值data或list
  310. return result.convert();
  311. }
  312. return result.convert();
  313. }
  314. /// 获取员工的评价信息
  315. Future<HttpResult<JobAppliedRemarkViewSGEntity>> fetchJobAppliedRemarkView(
  316. String? appliedId, {
  317. CancelToken? cancelToken,
  318. }) async {
  319. //参数
  320. Map<String, String> params = {};
  321. params['applied_id'] = appliedId ?? "";
  322. final result = await httpProvider.requestNetResult(
  323. ApiConstants.apiJobAppliedRemarkViewSG,
  324. params: params,
  325. isShowLoadingDialog: true,
  326. cancelToken: cancelToken,
  327. );
  328. //根据返回的结果,封装原始数据为Bean/Entity对象
  329. if (result.isSuccess) {
  330. //重新赋值data或list
  331. final json = result.getDataJson();
  332. var data = JobAppliedRemarkViewSGEntity.fromJson(json!);
  333. //重新赋值data或list
  334. return result.convert<JobAppliedRemarkViewSGEntity>(data: data);
  335. }
  336. return result.convert();
  337. }
  338. /// 提交员工的评价
  339. Future<HttpResult> submitAppliedRemark(
  340. String? appliedId,
  341. String? attitude_rate,
  342. String? grooming_rate,
  343. String? performance_rate,
  344. String? experience_rate,
  345. String? feedback, {
  346. CancelToken? cancelToken,
  347. }) async {
  348. //参数
  349. Map<String, String> params = {};
  350. params['applied_id'] = appliedId ?? "";
  351. params['attitude_rate'] = (double.parse(attitude_rate ?? "5.0")).toInt().toString();
  352. params['grooming_rate'] = (double.parse(grooming_rate ?? "5.0")).toInt().toString();
  353. params['performance_rate'] = (double.parse(performance_rate ?? "5.0")).toInt().toString();
  354. params['experience_rate'] = (double.parse(experience_rate ?? "5.0")).toInt().toString();
  355. if (!Utils.isEmpty(feedback)) {
  356. params['feedback'] = feedback ?? "";
  357. }
  358. final result = await httpProvider.requestNetResult(
  359. ApiConstants.apiJobAppliedRemarkSubmitSG,
  360. method: HttpMethod.POST,
  361. params: params,
  362. networkDebounce: true,
  363. isShowLoadingDialog: true,
  364. cancelToken: cancelToken,
  365. );
  366. //根据返回的结果,封装原始数据为Bean/Entity对象
  367. if (result.isSuccess) {
  368. //重新赋值data或list
  369. return result.convert();
  370. }
  371. return result.convert();
  372. }
  373. /// 获取员工的详细信息
  374. Future<HttpResult<StaffDetailSGEntity>> fetchStaffDetail(
  375. String? memberId, {
  376. CancelToken? cancelToken,
  377. }) async {
  378. //参数
  379. Map<String, String> params = {};
  380. params['member_id'] = memberId ?? "";
  381. final result = await httpProvider.requestNetResult(
  382. ApiConstants.apiJobListStaffDetailSG,
  383. params: params,
  384. );
  385. //根据返回的结果,封装原始数据为Bean/Entity对象
  386. if (result.isSuccess) {
  387. //重新赋值data或list
  388. final json = result.getDataJson();
  389. var data = StaffDetailSGEntity.fromJson(json!);
  390. //重新赋值data或list
  391. return result.convert<StaffDetailSGEntity>(data: data);
  392. }
  393. return result.convert();
  394. }
  395. /// 获取员工的做工历史列表
  396. Future<HttpResult<StaffJobHistorySGEntity>> fetchStaffJobHistory(
  397. String? memberId, {
  398. required int curPage,
  399. CancelToken? cancelToken,
  400. }) async {
  401. //参数
  402. Map<String, String> params = {};
  403. params['member_id'] = memberId ?? "";
  404. params['cur_page'] = curPage.toString();
  405. params['page_size'] = "10";
  406. final result = await httpProvider.requestNetResult(
  407. ApiConstants.apiJobListStaffLabourHistorySG,
  408. params: params,
  409. );
  410. //根据返回的结果,封装原始数据为Bean/Entity对象
  411. if (result.isSuccess) {
  412. //重新赋值data或list
  413. final json = result.getDataJson();
  414. var data = StaffJobHistorySGEntity.fromJson(json!);
  415. //重新赋值data或list
  416. return result.convert<StaffJobHistorySGEntity>(data: data);
  417. }
  418. return result.convert();
  419. }
  420. /// 获取员工的做工评价历史列表
  421. Future<HttpResult<StaffReviewHistorySGEntity>> fetchStaffReviewHeadView(
  422. String? memberId, {
  423. CancelToken? cancelToken,
  424. }) async {
  425. //参数
  426. Map<String, String> params = {};
  427. params['member_id'] = memberId ?? "";
  428. final result = await httpProvider.requestNetResult(
  429. ApiConstants.apiJobListStaffReviewHeadSG,
  430. params: params,
  431. );
  432. //根据返回的结果,封装原始数据为Bean/Entity对象
  433. if (result.isSuccess) {
  434. //重新赋值data或list
  435. final json = result.getDataJson();
  436. var data = StaffReviewHistorySGEntity.fromJson(json!);
  437. //重新赋值data或list
  438. return result.convert<StaffReviewHistorySGEntity>(data: data);
  439. }
  440. return result.convert();
  441. }
  442. /// 获取员工的做工评价历史列表
  443. Future<HttpResult<StaffReviewHistorySGEntity>> fetchStaffReviewHistory(
  444. String? memberId, {
  445. required int curPage,
  446. CancelToken? cancelToken,
  447. }) async {
  448. //参数
  449. Map<String, String> params = {};
  450. params['cur_page'] = curPage.toString();
  451. params['page_size'] = "10";
  452. params['member_id'] = memberId ?? "";
  453. final result = await httpProvider.requestNetResult(
  454. ApiConstants.apiJobListStaffReViewHistorySG,
  455. params: params,
  456. );
  457. //根据返回的结果,封装原始数据为Bean/Entity对象
  458. if (result.isSuccess) {
  459. //重新赋值data或list
  460. final json = result.getDataJson();
  461. var data = StaffReviewHistorySGEntity.fromJson(json!);
  462. //重新赋值data或list
  463. return result.convert<StaffReviewHistorySGEntity>(data: data);
  464. }
  465. return result.convert();
  466. }
  467. /// Revise 列表选项
  468. Future<HttpResult<ReviseIndexSGEntity>> fetchReviseIndex({
  469. CancelToken? cancelToken,
  470. }) async {
  471. final result = await httpProvider.requestNetResult(
  472. ApiConstants.apiReviseIndexSG,
  473. cancelToken: cancelToken,
  474. );
  475. //根据返回的结果,封装原始数据为Bean/Entity对象
  476. if (result.isSuccess) {
  477. //重新赋值data或list
  478. final json = result.getDataJson();
  479. var data = ReviseIndexSGEntity.fromJson(json!);
  480. //重新赋值data或list
  481. return result.convert<ReviseIndexSGEntity>(data: data);
  482. }
  483. return result.convert();
  484. }
  485. /// Revise 列表选项
  486. Future<HttpResult<ReviseListSGEntity>> fetchReviseList(
  487. String? applied_id,
  488. String? status,
  489. String? keyword,
  490. String? start_date,
  491. String? end_date, {
  492. required int curPage,
  493. CancelToken? cancelToken,
  494. }) async {
  495. //参数
  496. Map<String, String> params = {};
  497. params["cur_page"] = curPage.toString();
  498. params["page_size"] = "10";
  499. if (!Utils.isEmpty(applied_id)) {
  500. params["applied_id"] = applied_id!;
  501. }
  502. if (!Utils.isEmpty(status)) {
  503. params["status"] = status!;
  504. }
  505. if (!Utils.isEmpty(keyword)) {
  506. params["keyword"] = keyword!;
  507. }
  508. if (!Utils.isEmpty(start_date)) {
  509. params["start_date"] = start_date!;
  510. }
  511. if (!Utils.isEmpty(end_date)) {
  512. params["end_date"] = end_date!;
  513. }
  514. final result = await httpProvider.requestNetResult(
  515. ApiConstants.apiReviseListSG,
  516. params: params,
  517. cancelToken: cancelToken,
  518. );
  519. //根据返回的结果,封装原始数据为Bean/Entity对象
  520. if (result.isSuccess) {
  521. //重新赋值data或list
  522. final json = result.getDataJson();
  523. var data = ReviseListSGEntity.fromJson(json!);
  524. //重新赋值data或list
  525. return result.convert<ReviseListSGEntity>(data: data);
  526. }
  527. return result.convert();
  528. }
  529. /// 根据ID获取主列表的Item数据,用于刷新Item
  530. Future<HttpResult<ReviseListSGEntity>> fetchReviseListByIds(
  531. String? reviseId, {
  532. CancelToken? cancelToken,
  533. }) async {
  534. //参数
  535. Map<String, String> params = {};
  536. params["cur_page"] = "1";
  537. params["page_size"] = "9999";
  538. if (!Utils.isEmpty(reviseId)) {
  539. params["revise_id"] = reviseId!;
  540. }
  541. final result = await httpProvider.requestNetResult(
  542. ApiConstants.apiReviseListSG,
  543. params: params,
  544. cancelToken: cancelToken,
  545. );
  546. //根据返回的结果,封装原始数据为Bean/Entity对象
  547. if (result.isSuccess) {
  548. //重新赋值data或list
  549. final json = result.getDataJson();
  550. var data = ReviseListSGEntity.fromJson(json!);
  551. //重新赋值data或list
  552. return result.convert<ReviseListSGEntity>(data: data);
  553. }
  554. return result.convert();
  555. }
  556. /// Revise 添加选项
  557. Future<HttpResult<AddEditReviseViewSGEntity>> fetchReviseAddIndex(
  558. String? applied_id, {
  559. CancelToken? cancelToken,
  560. }) async {
  561. Map<String, String> params = {};
  562. params["applied_id"] = applied_id ?? "";
  563. final result = await httpProvider.requestNetResult(
  564. ApiConstants.apiAddReviseViewSG,
  565. params: params,
  566. isShowLoadingDialog: true,
  567. cancelToken: cancelToken,
  568. );
  569. //根据返回的结果,封装原始数据为Bean/Entity对象
  570. if (result.isSuccess) {
  571. //重新赋值data或list
  572. final json = result.getDataJson();
  573. var data = AddEditReviseViewSGEntity.fromJson(json!);
  574. //重新赋值data或list
  575. return result.convert<AddEditReviseViewSGEntity>(data: data);
  576. }
  577. return result.convert();
  578. }
  579. /// Revise 编辑选项
  580. Future<HttpResult<AddEditReviseViewSGEntity>> fetchReviseEditIndex(
  581. String? revise_id, {
  582. CancelToken? cancelToken,
  583. }) async {
  584. Map<String, String> params = {};
  585. params["revise_id"] = revise_id ?? "";
  586. final result = await httpProvider.requestNetResult(
  587. ApiConstants.apiEditReviseViewSG,
  588. params: params,
  589. isShowLoadingDialog: true,
  590. cancelToken: cancelToken,
  591. );
  592. //根据返回的结果,封装原始数据为Bean/Entity对象
  593. if (result.isSuccess) {
  594. //重新赋值data或list
  595. final json = result.getDataJson();
  596. var data = AddEditReviseViewSGEntity.fromJson(json!);
  597. //重新赋值data或list
  598. return result.convert<AddEditReviseViewSGEntity>(data: data);
  599. }
  600. return result.convert();
  601. }
  602. /// Review Add 提交
  603. Future<HttpResult> submitReviseAdd(
  604. String? appliedId,
  605. String? revise_hours,
  606. String? revise_msg, {
  607. CancelToken? cancelToken,
  608. }) async {
  609. //参数
  610. Map<String, String> params = {};
  611. params['applied_id'] = appliedId ?? "";
  612. if (!Utils.isEmpty(revise_hours)) {
  613. params['revise_hours'] = revise_hours ?? "";
  614. }
  615. if (!Utils.isEmpty(revise_msg)) {
  616. params['revise_msg'] = revise_msg ?? "";
  617. }
  618. final result = await httpProvider.requestNetResult(
  619. ApiConstants.apiAddReviseSubmitSG,
  620. method: HttpMethod.POST,
  621. params: params,
  622. networkDebounce: true,
  623. isShowLoadingDialog: true,
  624. cancelToken: cancelToken,
  625. );
  626. //根据返回的结果,封装原始数据为Bean/Entity对象
  627. if (result.isSuccess) {
  628. //重新赋值data或list
  629. return result.convert();
  630. }
  631. return result.convert();
  632. }
  633. /// Review Edit 提交
  634. Future<HttpResult> submitReviseEdit(
  635. String? revise_id,
  636. String? revise_hours,
  637. String? revise_msg, {
  638. CancelToken? cancelToken,
  639. }) async {
  640. //参数
  641. Map<String, String> params = {};
  642. params['revise_id'] = revise_id ?? "";
  643. if (!Utils.isEmpty(revise_hours)) {
  644. params['revise_hours'] = revise_hours ?? "";
  645. }
  646. if (!Utils.isEmpty(revise_msg)) {
  647. params['revise_msg'] = revise_msg ?? "";
  648. }
  649. final result = await httpProvider.requestNetResult(
  650. ApiConstants.apiEditReviseSubmitSG,
  651. method: HttpMethod.POST,
  652. params: params,
  653. networkDebounce: true,
  654. isShowLoadingDialog: true,
  655. cancelToken: cancelToken,
  656. );
  657. //根据返回的结果,封装原始数据为Bean/Entity对象
  658. if (result.isSuccess) {
  659. //重新赋值data或list
  660. return result.convert();
  661. }
  662. return result.convert();
  663. }
  664. /// Review Recall
  665. Future<HttpResult> recallRevise(
  666. String? revise_id, {
  667. CancelToken? cancelToken,
  668. }) async {
  669. //参数
  670. Map<String, String> params = {};
  671. params['revise_id'] = revise_id ?? "";
  672. final result = await httpProvider.requestNetResult(
  673. ApiConstants.apiRecallReviseSG,
  674. method: HttpMethod.POST,
  675. params: params,
  676. networkDebounce: true,
  677. isShowLoadingDialog: true,
  678. cancelToken: cancelToken,
  679. );
  680. //根据返回的结果,封装原始数据为Bean/Entity对象
  681. if (result.isSuccess) {
  682. //重新赋值data或list
  683. return result.convert();
  684. }
  685. return result.convert();
  686. }
  687. /// Review Delete
  688. Future<HttpResult> deleteRevise(
  689. String? revise_id, {
  690. CancelToken? cancelToken,
  691. }) async {
  692. //参数
  693. Map<String, String> params = {};
  694. params['revise_id'] = revise_id ?? "";
  695. final result = await httpProvider.requestNetResult(
  696. ApiConstants.apiDeleteReviseSG,
  697. method: HttpMethod.POST,
  698. params: params,
  699. networkDebounce: true,
  700. isShowLoadingDialog: true,
  701. cancelToken: cancelToken,
  702. );
  703. //根据返回的结果,封装原始数据为Bean/Entity对象
  704. if (result.isSuccess) {
  705. //重新赋值data或list
  706. return result.convert();
  707. }
  708. return result.convert();
  709. }
  710. /// Review Logs
  711. Future<HttpResult<ReviseLogSGEntity>> fetchReviseLogs(
  712. String? revise_id, {
  713. CancelToken? cancelToken,
  714. }) async {
  715. Map<String, String> params = {};
  716. params["revise_id"] = revise_id ?? "";
  717. final result = await httpProvider.requestNetResult(
  718. ApiConstants.apiReviseLogListSG,
  719. params: params,
  720. cancelToken: cancelToken,
  721. );
  722. //根据返回的结果,封装原始数据为Bean/Entity对象
  723. if (result.isSuccess) {
  724. //重新赋值data或list
  725. final json = result.getDataJson();
  726. var data = ReviseLogSGEntity.fromJson(json!);
  727. //重新赋值data或list
  728. return result.convert<ReviseLogSGEntity>(data: data);
  729. }
  730. return result.convert();
  731. }
  732. // =================================== SG 的 Job Attendance Review 相关接口 ↓ ===================================
  733. /// 考勤审核列表的选项数据
  734. Future<HttpResult<SGAttendanceReviewOptionEntity>> fetchAttendanceReviewOption({
  735. CancelToken? cancelToken,
  736. }) async {
  737. final result = await httpProvider.requestNetResult(
  738. ApiConstants.apiAttendanceReviewOptionSG,
  739. cancelToken: cancelToken,
  740. );
  741. //根据返回的结果,封装原始数据为Bean/Entity对象
  742. if (result.isSuccess) {
  743. //重新赋值data或list
  744. final json = result.getDataJson();
  745. var data = SGAttendanceReviewOptionEntity.fromJson(json!);
  746. //重新赋值data或list
  747. return result.convert<SGAttendanceReviewOptionEntity>(data: data);
  748. }
  749. return result.convert();
  750. }
  751. /// 考勤审核列表 Table
  752. Future<HttpResult<SGAttendanceReviewTableEntity>> fetchAttendanceReviewTable({
  753. String? recordId,
  754. String? agencyId,
  755. String? startDate,
  756. String? endDate,
  757. String? outletId,
  758. String? keyword,
  759. String? status,
  760. required int curPage,
  761. CancelToken? cancelToken,
  762. }) async {
  763. Map<String, String> params = {};
  764. params['cur_page'] = curPage.toString();
  765. params['page_size'] = "10";
  766. if (Utils.isNotEmpty(recordId)) {
  767. params['record_id'] = recordId ?? "";
  768. }
  769. if (Utils.isNotEmpty(agencyId)) {
  770. params['agency_id'] = agencyId ?? "";
  771. }
  772. if (Utils.isNotEmpty(startDate)) {
  773. params['start_date'] = startDate ?? "";
  774. }
  775. if (Utils.isNotEmpty(endDate)) {
  776. params['end_date'] = endDate ?? "";
  777. }
  778. if (Utils.isNotEmpty(status)) {
  779. params['status'] = status ?? "";
  780. }
  781. if (Utils.isNotEmpty(outletId)) {
  782. params['outlet_id'] = outletId ?? "";
  783. }
  784. if (Utils.isNotEmpty(keyword)) {
  785. params['job_title'] = keyword ?? "";
  786. }
  787. final result = await httpProvider.requestNetResult(
  788. ApiConstants.apiAttendanceReviewTableSG,
  789. params: params,
  790. cancelToken: cancelToken,
  791. );
  792. //根据返回的结果,封装原始数据为Bean/Entity对象
  793. if (result.isSuccess) {
  794. //重新赋值data或list
  795. final json = result.getDataJson();
  796. var data = SGAttendanceReviewTableEntity.fromJson(json!);
  797. //重新赋值data或list
  798. return result.convert<SGAttendanceReviewTableEntity>(data: data);
  799. }
  800. return result.convert();
  801. }
  802. /// 考勤审核的批量同意
  803. Future<HttpResult> approveAttendanceReviews(
  804. String? recordIds, {
  805. CancelToken? cancelToken,
  806. }) async {
  807. //参数
  808. Map<String, String> params = {};
  809. params['record_ids'] = recordIds ?? "";
  810. final result = await httpProvider.requestNetResult(
  811. ApiConstants.apiAttendanceReviewApproveSG,
  812. method: HttpMethod.POST,
  813. params: params,
  814. networkDebounce: true,
  815. isShowLoadingDialog: true,
  816. cancelToken: cancelToken,
  817. );
  818. //根据返回的结果,封装原始数据为Bean/Entity对象
  819. if (result.isSuccess) {
  820. //重新赋值data或list
  821. return result.convert();
  822. }
  823. return result.convert();
  824. }
  825. /// 考勤审核的批量拒绝
  826. Future<HttpResult> rejectAttendanceReviews(
  827. String? recordIds,
  828. String? reason, {
  829. CancelToken? cancelToken,
  830. }) async {
  831. //参数
  832. Map<String, String> params = {};
  833. params['record_ids'] = recordIds ?? "";
  834. if (Utils.isNotEmpty(reason)) {
  835. params['audit_mark'] = reason ?? "";
  836. }
  837. final result = await httpProvider.requestNetResult(
  838. ApiConstants.apiAttendanceReviewRejectSG,
  839. method: HttpMethod.POST,
  840. params: params,
  841. networkDebounce: true,
  842. isShowLoadingDialog: true,
  843. cancelToken: cancelToken,
  844. );
  845. //根据返回的结果,封装原始数据为Bean/Entity对象
  846. if (result.isSuccess) {
  847. //重新赋值data或list
  848. return result.convert();
  849. }
  850. return result.convert();
  851. }
  852. /// 考勤审核的状态流
  853. Future<HttpResult<SGAttendanceReviewWorkflowEntity>> fetchAttendanceReviewWorkFlow(
  854. String? appliedId, {
  855. CancelToken? cancelToken,
  856. }) async {
  857. //参数
  858. Map<String, String> params = {};
  859. params['applied_id'] = appliedId ?? "";
  860. final result = await httpProvider.requestNetResult(
  861. ApiConstants.apiAttendanceReviewWorkflowSG,
  862. params: params,
  863. isShowLoadingDialog: true,
  864. cancelToken: cancelToken,
  865. );
  866. //根据返回的结果,封装原始数据为Bean/Entity对象
  867. if (result.isSuccess) {
  868. //重新赋值data或list
  869. final json = result.getDataJson();
  870. var data = SGAttendanceReviewWorkflowEntity.fromJson(json!);
  871. //重新赋值data或list
  872. return result.convert<SGAttendanceReviewWorkflowEntity>(data: data);
  873. }
  874. return result.convert();
  875. }
  876. /// 获取 SG Dashboard 的列表数据
  877. Future<HttpResult<SGDashboardEntity>> fetchDashboardList({
  878. String? day,
  879. CancelToken? cancelToken,
  880. }) async {
  881. //参数
  882. Map<String, String> params = {};
  883. if (Utils.isNotEmpty(day)) {
  884. params['day'] = day ?? "";
  885. }
  886. final result = await httpProvider.requestNetResult(
  887. ApiConstants.apiDashboardTableSG,
  888. params: params,
  889. isShowLoadingDialog: true,
  890. cancelToken: cancelToken,
  891. );
  892. //根据返回的结果,封装原始数据为Bean/Entity对象
  893. if (result.isSuccess) {
  894. //重新赋值data或list
  895. final json = result.getDataJson();
  896. var data = SGDashboardEntity.fromJson(json!);
  897. //重新赋值data或list
  898. return result.convert<SGDashboardEntity>(data: data);
  899. }
  900. return result.convert();
  901. }
  902. }