job_sg_repository.dart 29 KB

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