job_sg_repository.dart 13 KB

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