job_sg_repository.dart 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532
  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/job_list_add_staff_entity.dart';
  5. import 'package:domain/entity/response/job_list_applied_edit_entity.dart';
  6. import 'package:domain/entity/response/job_list_applied_info_entity.dart';
  7. import 'package:domain/entity/response/job_list_applied_staff_list_entity.dart';
  8. import 'package:domain/entity/response/job_list_applied_staff_search_entity.dart';
  9. import 'package:domain/entity/response/job_list_detail_entity.dart';
  10. import 'package:domain/entity/response/job_list_entity.dart';
  11. import 'package:domain/entity/response/job_list_index_entity.dart';
  12. import 'package:domain/entity/response/job_list_remark_view_entity.dart';
  13. import 'package:domain/entity/response/staff_detail_entity.dart';
  14. import 'package:domain/entity/response/staff_detail_s_g_entity.dart';
  15. import 'package:domain/entity/response/staff_labour_history_entity.dart';
  16. import 'package:domain/entity/response/staff_remark_history_entity.dart';
  17. import 'package:domain/entity/response/staff_review_history_s_g_entity.dart';
  18. import 'package:get/get.dart';
  19. import 'package:plugin_platform/dio_export.dart';
  20. import 'package:plugin_platform/http/http_provider.dart';
  21. import 'package:plugin_platform/http/http_result.dart';
  22. import 'package:shared/utils/util.dart';
  23. import '../constants/api_constants.dart';
  24. import '../entity/response/attendance_entity.dart';
  25. import '../entity/response/check_success_entity.dart';
  26. import '../entity/response/job_applied_edit_index_s_g_entity.dart';
  27. import '../entity/response/job_applied_remark_view_s_g_entity.dart';
  28. import '../entity/response/job_applied_staff_s_g_entity.dart';
  29. import '../entity/response/job_list_applied_work_flow_entity.dart';
  30. import '../entity/response/staff_job_history_s_g_entity.dart';
  31. /// 工作相关(新加坡)
  32. class JobSGRepository extends GetxService {
  33. HttpProvider httpProvider;
  34. JobSGRepository({required this.httpProvider});
  35. /// 获取工作已申请的选项
  36. Future<HttpResult<JobAppliedIndexSGEntity>> fetchJobAppliedIndex(
  37. String? jobId, {
  38. CancelToken? cancelToken,
  39. }) async {
  40. //参数
  41. Map<String, String> params = {};
  42. params["job_id"] = jobId ?? "";
  43. final result = await httpProvider.requestNetResult(
  44. ApiConstants.apiJobAppliedIndexSG,
  45. params: params,
  46. cancelToken: cancelToken,
  47. );
  48. //根据返回的结果,封装原始数据为Bean/Entity对象
  49. if (result.isSuccess) {
  50. //重新赋值data或list
  51. final json = result.getDataJson();
  52. var data = JobAppliedIndexSGEntity.fromJson(json!);
  53. //重新赋值data或list
  54. return result.convert<JobAppliedIndexSGEntity>(data: data);
  55. }
  56. return result.convert();
  57. }
  58. /// 获取工作已申请的列表
  59. Future<HttpResult<JobAppliedListSGEntity>> fetchJobAppliedList(
  60. String? jobId,
  61. String? status,
  62. String? keyword, {
  63. required int curPage,
  64. CancelToken? cancelToken,
  65. }) async {
  66. //参数
  67. Map<String, String> params = {};
  68. params["cur_page"] = curPage.toString();
  69. params["page_size"] = "10";
  70. params["job_id"] = jobId ?? "";
  71. if (!Utils.isEmpty(keyword)) {
  72. params["keyword"] = keyword!;
  73. }
  74. if (!Utils.isEmpty(status)) {
  75. params["status"] = status!;
  76. }
  77. final result = await httpProvider.requestNetResult(
  78. ApiConstants.apiJobAppliedListSG,
  79. params: params,
  80. cancelToken: cancelToken,
  81. );
  82. //根据返回的结果,封装原始数据为Bean/Entity对象
  83. if (result.isSuccess) {
  84. //重新赋值data或list
  85. final json = result.getDataJson();
  86. var data = JobAppliedListSGEntity.fromJson(json!);
  87. //重新赋值data或list
  88. return result.convert<JobAppliedListSGEntity>(data: data);
  89. }
  90. return result.convert();
  91. }
  92. /// 根据ID获取主列表的Item数据,用于刷新Item
  93. Future<HttpResult<JobAppliedListSGEntity>> fetchItemByAppliedIds(
  94. String? jobId,
  95. String? appliedIds, {
  96. CancelToken? cancelToken,
  97. }) async {
  98. //参数
  99. Map<String, String> params = {};
  100. params["cur_page"] = "1";
  101. params["page_size"] = "9999";
  102. if (!Utils.isEmpty(appliedIds)) {
  103. params["applied_ids"] = appliedIds!;
  104. }
  105. if (!Utils.isEmpty(jobId)) {
  106. params["job_id"] = jobId!;
  107. }
  108. final result = await httpProvider.requestNetResult(
  109. ApiConstants.apiJobAppliedListSG,
  110. params: params,
  111. isShowLoadingDialog: true,
  112. cancelToken: cancelToken,
  113. );
  114. //根据返回的结果,封装原始数据为Bean/Entity对象
  115. if (result.isSuccess) {
  116. //重新赋值data或list
  117. final json = result.getDataJson();
  118. var data = JobAppliedListSGEntity.fromJson(json!);
  119. //重新赋值data或list
  120. return result.convert<JobAppliedListSGEntity>(data: data);
  121. }
  122. return result.convert();
  123. }
  124. /// 获取工作已申请的列表中添加的员工搜索
  125. Future<HttpResult<JobAppliedStaffSGEntity>> searchJobAppliedStaff(
  126. String? jobId,
  127. String? keyword, {
  128. required int curPage,
  129. CancelToken? cancelToken,
  130. }) async {
  131. //参数
  132. Map<String, String> params = {};
  133. params["cur_page"] = curPage.toString();
  134. params["page_size"] = "20";
  135. params["job_id"] = jobId ?? "";
  136. if (!Utils.isEmpty(keyword)) {
  137. params["keyword"] = keyword!;
  138. }
  139. final result = await httpProvider.requestNetResult(
  140. ApiConstants.apiJobAppliedSearchStaffSG,
  141. params: params,
  142. cancelToken: cancelToken,
  143. );
  144. //根据返回的结果,封装原始数据为Bean/Entity对象
  145. if (result.isSuccess) {
  146. //重新赋值data或list
  147. final json = result.getDataJson();
  148. var data = JobAppliedStaffSGEntity.fromJson(json!);
  149. //重新赋值data或list
  150. return result.convert<JobAppliedStaffSGEntity>(data: data);
  151. }
  152. return result.convert();
  153. }
  154. /// 添加员工到申请列表
  155. Future<HttpResult> addStaff2AppliedJob(
  156. String? jobId,
  157. String? staffIds, {
  158. CancelToken? cancelToken,
  159. }) async {
  160. //参数
  161. Map<String, String> params = {};
  162. params['job_id'] = jobId ?? "";
  163. params['staff_ids'] = staffIds ?? "";
  164. final result = await httpProvider.requestNetResult(
  165. ApiConstants.apiJobAppliedAddStaffSubmitSG,
  166. method: HttpMethod.POST,
  167. params: params,
  168. networkDebounce: true,
  169. isShowLoadingDialog: true,
  170. cancelToken: cancelToken,
  171. );
  172. //根据返回的结果,封装原始数据为Bean/Entity对象
  173. if (result.isSuccess) {
  174. //重新赋值data或list
  175. return result.convert();
  176. }
  177. return result.convert();
  178. }
  179. /// 批量修改员工信息或考勤
  180. Future<HttpResult> batchEditJobApplied(
  181. String? appliedIds,
  182. String? startTime,
  183. String? endTime,
  184. String? subtractHours,
  185. String? status, {
  186. CancelToken? cancelToken,
  187. }) async {
  188. //参数
  189. Map<String, String> params = {};
  190. params['applied_ids'] = appliedIds ?? "";
  191. if (!Utils.isEmpty(startTime)) {
  192. params['start_time'] = startTime ?? "";
  193. }
  194. if (!Utils.isEmpty(endTime)) {
  195. params['end_time'] = endTime ?? "";
  196. }
  197. if (!Utils.isEmpty(subtractHours)) {
  198. params['subtract_hours'] = subtractHours ?? "";
  199. }
  200. if (!Utils.isEmpty(status)) {
  201. params['status'] = status ?? "";
  202. }
  203. final result = await httpProvider.requestNetResult(
  204. ApiConstants.apiJobAppliedBatchEditSG,
  205. method: HttpMethod.POST,
  206. params: params,
  207. networkDebounce: true,
  208. isShowLoadingDialog: true,
  209. cancelToken: cancelToken,
  210. );
  211. //根据返回的结果,封装原始数据为Bean/Entity对象
  212. if (result.isSuccess) {
  213. //重新赋值data或list
  214. return result.convert();
  215. }
  216. return result.convert();
  217. }
  218. /// 编辑员工信息或考勤的选项详情
  219. Future<HttpResult<JobAppliedEditIndexSGEntity>> fetchEditJobAppliedIndex(
  220. String? appliedId, {
  221. CancelToken? cancelToken,
  222. }) async {
  223. //参数
  224. Map<String, String> params = {};
  225. params['applied_id'] = appliedId ?? "";
  226. final result = await httpProvider.requestNetResult(
  227. ApiConstants.apiJobAppliedEditViewSG,
  228. params: params,
  229. isShowLoadingDialog: true,
  230. cancelToken: cancelToken,
  231. );
  232. //根据返回的结果,封装原始数据为Bean/Entity对象
  233. if (result.isSuccess) {
  234. //重新赋值data或list
  235. final json = result.getDataJson();
  236. var data = JobAppliedEditIndexSGEntity.fromJson(json!);
  237. //重新赋值data或list
  238. return result.convert<JobAppliedEditIndexSGEntity>(data: data);
  239. }
  240. return result.convert();
  241. }
  242. /// 编辑员工信息或考勤的提交
  243. Future<HttpResult> submitEditJobApplied(
  244. String? appliedId,
  245. String? startTime,
  246. String? endTime,
  247. String? security_in,
  248. String? security_out,
  249. String? work_in,
  250. String? work_out,
  251. String? adjustHours,
  252. String? status, {
  253. CancelToken? cancelToken,
  254. }) async {
  255. //参数
  256. Map<String, String> params = {};
  257. params['applied_id'] = appliedId ?? "";
  258. params['start_time'] = startTime ?? "";
  259. params['end_time'] = endTime ?? "";
  260. if (!Utils.isEmpty(security_in)) {
  261. params['security_in'] = security_in ?? "";
  262. }
  263. if (!Utils.isEmpty(security_out)) {
  264. params['security_out'] = security_out ?? "";
  265. }
  266. if (!Utils.isEmpty(work_in)) {
  267. params['work_in'] = work_in ?? "";
  268. }
  269. if (!Utils.isEmpty(work_out)) {
  270. params['work_out'] = work_out ?? "";
  271. }
  272. if (!Utils.isEmpty(adjustHours)) {
  273. params['adjust_hours'] = adjustHours ?? "";
  274. }
  275. if (!Utils.isEmpty(status)) {
  276. params['status'] = status ?? "";
  277. }
  278. final result = await httpProvider.requestNetResult(
  279. ApiConstants.apiJobAppliedEditSubmitSG,
  280. method: HttpMethod.POST,
  281. params: params,
  282. networkDebounce: true,
  283. isShowLoadingDialog: true,
  284. cancelToken: cancelToken,
  285. );
  286. //根据返回的结果,封装原始数据为Bean/Entity对象
  287. if (result.isSuccess) {
  288. //重新赋值data或list
  289. return result.convert();
  290. }
  291. return result.convert();
  292. }
  293. /// 修改考勤员工的考勤状态
  294. Future<HttpResult> submitEditAppliedStatus(
  295. String? appliedId,
  296. String? status, {
  297. CancelToken? cancelToken,
  298. }) async {
  299. //参数
  300. Map<String, String> params = {};
  301. params['applied_id'] = appliedId ?? "";
  302. params['status'] = status ?? "";
  303. final result = await httpProvider.requestNetResult(
  304. ApiConstants.apiJobAppliedChangeStatusSG,
  305. method: HttpMethod.POST,
  306. params: params,
  307. networkDebounce: true,
  308. isShowLoadingDialog: true,
  309. cancelToken: cancelToken,
  310. );
  311. //根据返回的结果,封装原始数据为Bean/Entity对象
  312. if (result.isSuccess) {
  313. //重新赋值data或list
  314. return result.convert();
  315. }
  316. return result.convert();
  317. }
  318. /// 获取员工的评价信息
  319. Future<HttpResult<JobAppliedRemarkViewSGEntity>> fetchJobAppliedRemarkView(
  320. String? appliedId, {
  321. CancelToken? cancelToken,
  322. }) async {
  323. //参数
  324. Map<String, String> params = {};
  325. params['applied_id'] = appliedId ?? "";
  326. final result = await httpProvider.requestNetResult(
  327. ApiConstants.apiJobAppliedRemarkViewSG,
  328. params: params,
  329. isShowLoadingDialog: true,
  330. cancelToken: cancelToken,
  331. );
  332. //根据返回的结果,封装原始数据为Bean/Entity对象
  333. if (result.isSuccess) {
  334. //重新赋值data或list
  335. final json = result.getDataJson();
  336. var data = JobAppliedRemarkViewSGEntity.fromJson(json!);
  337. //重新赋值data或list
  338. return result.convert<JobAppliedRemarkViewSGEntity>(data: data);
  339. }
  340. return result.convert();
  341. }
  342. /// 提交员工的评价
  343. Future<HttpResult> submitAppliedRemark(
  344. String? appliedId,
  345. String? attitude_rate,
  346. String? grooming_rate,
  347. String? performance_rate,
  348. String? experience_rate,
  349. String? feedback, {
  350. CancelToken? cancelToken,
  351. }) async {
  352. //参数
  353. Map<String, String> params = {};
  354. params['applied_id'] = appliedId ?? "";
  355. params['attitude_rate'] = (double.parse(attitude_rate ?? "5.0")).toInt().toString();
  356. params['grooming_rate'] = (double.parse(grooming_rate ?? "5.0")).toInt().toString();
  357. params['performance_rate'] = (double.parse(performance_rate ?? "5.0")).toInt().toString();
  358. params['experience_rate'] = (double.parse(experience_rate ?? "5.0")).toInt().toString();
  359. if (!Utils.isEmpty(feedback)) {
  360. params['feedback'] = feedback ?? "";
  361. }
  362. final result = await httpProvider.requestNetResult(
  363. ApiConstants.apiJobAppliedRemarkSubmitSG,
  364. method: HttpMethod.POST,
  365. params: params,
  366. networkDebounce: true,
  367. isShowLoadingDialog: true,
  368. cancelToken: cancelToken,
  369. );
  370. //根据返回的结果,封装原始数据为Bean/Entity对象
  371. if (result.isSuccess) {
  372. //重新赋值data或list
  373. return result.convert();
  374. }
  375. return result.convert();
  376. }
  377. /// 获取员工的详细信息
  378. Future<HttpResult<StaffDetailSGEntity>> fetchStaffDetail(
  379. String? memberId, {
  380. CancelToken? cancelToken,
  381. }) async {
  382. //参数
  383. Map<String, String> params = {};
  384. params['member_id'] = memberId ?? "";
  385. final result = await httpProvider.requestNetResult(
  386. ApiConstants.apiJobListStaffDetailSG,
  387. params: params,
  388. );
  389. //根据返回的结果,封装原始数据为Bean/Entity对象
  390. if (result.isSuccess) {
  391. //重新赋值data或list
  392. final json = result.getDataJson();
  393. var data = StaffDetailSGEntity.fromJson(json!);
  394. //重新赋值data或list
  395. return result.convert<StaffDetailSGEntity>(data: data);
  396. }
  397. return result.convert();
  398. }
  399. /// 获取员工的做工历史列表
  400. Future<HttpResult<StaffJobHistorySGEntity>> fetchStaffJobHistory(
  401. String? memberId, {
  402. required int curPage,
  403. CancelToken? cancelToken,
  404. }) async {
  405. //参数
  406. Map<String, String> params = {};
  407. params['member_id'] = memberId ?? "";
  408. params['cur_page'] = curPage.toString();
  409. params['page_size'] = "10";
  410. final result = await httpProvider.requestNetResult(
  411. ApiConstants.apiJobListStaffLabourHistorySG,
  412. params: params,
  413. );
  414. //根据返回的结果,封装原始数据为Bean/Entity对象
  415. if (result.isSuccess) {
  416. //重新赋值data或list
  417. final json = result.getDataJson();
  418. var data = StaffJobHistorySGEntity.fromJson(json!);
  419. //重新赋值data或list
  420. return result.convert<StaffJobHistorySGEntity>(data: data);
  421. }
  422. return result.convert();
  423. }
  424. /// 获取员工的做工评价历史列表
  425. Future<HttpResult<StaffReviewHistorySGEntity>> fetchStaffReviewHeadView(
  426. String? memberId, {
  427. CancelToken? cancelToken,
  428. }) async {
  429. //参数
  430. Map<String, String> params = {};
  431. params['member_id'] = memberId ?? "";
  432. final result = await httpProvider.requestNetResult(
  433. ApiConstants.apiJobListStaffReviewHeadSG,
  434. params: params,
  435. );
  436. //根据返回的结果,封装原始数据为Bean/Entity对象
  437. if (result.isSuccess) {
  438. //重新赋值data或list
  439. final json = result.getDataJson();
  440. var data = StaffReviewHistorySGEntity.fromJson(json!);
  441. //重新赋值data或list
  442. return result.convert<StaffReviewHistorySGEntity>(data: data);
  443. }
  444. return result.convert();
  445. }
  446. /// 获取员工的做工评价历史列表
  447. Future<HttpResult<StaffReviewHistorySGEntity>> fetchStaffReviewHistory(
  448. String? memberId, {
  449. required int curPage,
  450. CancelToken? cancelToken,
  451. }) async {
  452. //参数
  453. Map<String, String> params = {};
  454. params['cur_page'] = curPage.toString();
  455. params['page_size'] = "10";
  456. params['member_id'] = memberId ?? "";
  457. final result = await httpProvider.requestNetResult(
  458. ApiConstants.apiJobListStaffReViewHistorySG,
  459. params: params,
  460. );
  461. //根据返回的结果,封装原始数据为Bean/Entity对象
  462. if (result.isSuccess) {
  463. //重新赋值data或list
  464. final json = result.getDataJson();
  465. var data = StaffReviewHistorySGEntity.fromJson(json!);
  466. //重新赋值data或list
  467. return result.convert<StaffReviewHistorySGEntity>(data: data);
  468. }
  469. return result.convert();
  470. }
  471. }