job_sg_repository.dart 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  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. 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'] = startTime ?? "";
  255. params['end_time'] = endTime ?? "";
  256. if (!Utils.isEmpty(security_in)) {
  257. params['security_in'] = security_in ?? "";
  258. }
  259. if (!Utils.isEmpty(security_out)) {
  260. params['security_out'] = security_out ?? "";
  261. }
  262. if (!Utils.isEmpty(work_in)) {
  263. params['work_in'] = work_in ?? "";
  264. }
  265. if (!Utils.isEmpty(work_out)) {
  266. params['work_out'] = work_out ?? "";
  267. }
  268. if (!Utils.isEmpty(adjustHours)) {
  269. params['subtract_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. }