labour_sg_repository.dart 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625
  1. import 'dart:typed_data';
  2. import 'package:domain/entity/response/job_template_edit_index_entity.dart';
  3. import 'package:domain/entity/response/job_template_s_g_entity.dart';
  4. import 'package:domain/entity/response/job_title_edit_index_entity.dart';
  5. import 'package:domain/entity/response/job_title_s_g_entity.dart';
  6. import 'package:domain/entity/response/labour_request_s_g_add_index_entity.dart';
  7. import 'package:domain/entity/response/labour_request_s_g_entity.dart';
  8. import 'package:get/get.dart';
  9. import 'package:plugin_platform/dio_export.dart';
  10. import 'package:plugin_platform/http/http_provider.dart';
  11. import 'package:plugin_platform/http/http_result.dart';
  12. import 'package:shared/utils/util.dart';
  13. import '../constants/api_constants.dart';
  14. /// 用工相关(新加坡)
  15. class LabourSGRepository extends GetxService {
  16. HttpProvider httpProvider;
  17. LabourSGRepository({required this.httpProvider});
  18. /// 用工模版中的工作标题列表
  19. Future<HttpResult<JobTitleSGEntity>> fetchJobTitleList(
  20. String? keyword, {
  21. required int curPage,
  22. CancelToken? cancelToken,
  23. }) async {
  24. //参数
  25. Map<String, String> params = {};
  26. params["cur_page"] = curPage.toString();
  27. params["page_size"] = "10";
  28. if (!Utils.isEmpty(keyword)) {
  29. params["keyword"] = keyword!;
  30. }
  31. final result = await httpProvider.requestNetResult(
  32. ApiConstants.apiJobTitleListSG,
  33. params: params,
  34. cancelToken: cancelToken,
  35. );
  36. //根据返回的结果,封装原始数据为Bean/Entity对象
  37. if (result.isSuccess) {
  38. //重新赋值data或list
  39. final json = result.getDataJson();
  40. var data = JobTitleSGEntity.fromJson(json!);
  41. //重新赋值data或list
  42. return result.convert<JobTitleSGEntity>(data: data);
  43. }
  44. return result.convert();
  45. }
  46. /// 根据ID获取主列表的Item数据,用于刷新Item
  47. Future<HttpResult<JobTitleSGEntity>> fetchJobTitleListByIds(
  48. String? ids, {
  49. CancelToken? cancelToken,
  50. }) async {
  51. //参数
  52. Map<String, String> params = {};
  53. params["cur_page"] = "1";
  54. params["page_size"] = "9999";
  55. if (!Utils.isEmpty(ids)) {
  56. params["job_title_id"] = ids!;
  57. }
  58. final result = await httpProvider.requestNetResult(
  59. ApiConstants.apiJobTitleListSG,
  60. params: params,
  61. isShowLoadingDialog: true,
  62. cancelToken: cancelToken,
  63. );
  64. //根据返回的结果,封装原始数据为Bean/Entity对象
  65. if (result.isSuccess) {
  66. //重新赋值data或list
  67. final json = result.getDataJson();
  68. var data = JobTitleSGEntity.fromJson(json!);
  69. //重新赋值data或list
  70. return result.convert<JobTitleSGEntity>(data: data);
  71. }
  72. return result.convert();
  73. }
  74. /// 添加工作标题的详情或选项数据
  75. Future<HttpResult<JobTitleEditIndexEntity>> fetchJobTitleAddIndex({
  76. CancelToken? cancelToken,
  77. }) async {
  78. final result = await httpProvider.requestNetResult(
  79. ApiConstants.apiJobTitleAddIndexSG,
  80. isShowLoadingDialog: true,
  81. cancelToken: cancelToken,
  82. );
  83. //根据返回的结果,封装原始数据为Bean/Entity对象
  84. if (result.isSuccess) {
  85. //重新赋值data或list
  86. final json = result.getDataJson();
  87. var data = JobTitleEditIndexEntity.fromJson(json!);
  88. //重新赋值data或list
  89. return result.convert<JobTitleEditIndexEntity>(data: data);
  90. }
  91. return result.convert();
  92. }
  93. /// 编辑工作标题的详情或选项数据
  94. Future<HttpResult<JobTitleEditIndexEntity>> fetchJobTitleEditIndex(
  95. String? titleId, {
  96. CancelToken? cancelToken,
  97. }) async {
  98. Map<String, String> params = {};
  99. params["title_id"] = titleId ?? "";
  100. final result = await httpProvider.requestNetResult(
  101. ApiConstants.apiJobTitleEditIndexSG,
  102. params: params,
  103. isShowLoadingDialog: true,
  104. cancelToken: cancelToken,
  105. );
  106. //根据返回的结果,封装原始数据为Bean/Entity对象
  107. if (result.isSuccess) {
  108. //重新赋值data或list
  109. final json = result.getDataJson();
  110. var data = JobTitleEditIndexEntity.fromJson(json!);
  111. //重新赋值data或list
  112. return result.convert<JobTitleEditIndexEntity>(data: data);
  113. }
  114. return result.convert();
  115. }
  116. /// 添加工作标题的提交
  117. Future<HttpResult> addJobTitleSubmit(
  118. String? jobTitle,
  119. String? sort,
  120. String? templateId, {
  121. CancelToken? cancelToken,
  122. }) async {
  123. //参数
  124. Map<String, String> params = {};
  125. params['job_title'] = jobTitle ?? "";
  126. if (!Utils.isEmpty(templateId)) {
  127. params["template_id"] = templateId!;
  128. }
  129. if (!Utils.isEmpty(sort)) {
  130. params["sort"] = sort!;
  131. }
  132. final result = await httpProvider.requestNetResult(
  133. ApiConstants.apiJobTitleAddSubmitSG,
  134. method: HttpMethod.POST,
  135. params: params,
  136. networkDebounce: true,
  137. isShowLoadingDialog: true,
  138. cancelToken: cancelToken,
  139. );
  140. //根据返回的结果,封装原始数据为Bean/Entity对象
  141. if (result.isSuccess) {
  142. //重新赋值data或list
  143. return result.convert();
  144. }
  145. return result.convert();
  146. }
  147. /// 编辑工作标题的提交
  148. Future<HttpResult> editJobTitleSubmit(
  149. String? titleId,
  150. String? jobTitle,
  151. String? sort,
  152. String? templateId, {
  153. CancelToken? cancelToken,
  154. }) async {
  155. //参数
  156. Map<String, String> params = {};
  157. params['job_title'] = jobTitle ?? "";
  158. params['title_id'] = titleId ?? "";
  159. if (!Utils.isEmpty(templateId)) {
  160. params["template_id"] = templateId!;
  161. }
  162. if (!Utils.isEmpty(sort)) {
  163. params["sort"] = sort!;
  164. }
  165. final result = await httpProvider.requestNetResult(
  166. ApiConstants.apiJobTitleEditSubmitSG,
  167. method: HttpMethod.POST,
  168. params: params,
  169. networkDebounce: true,
  170. isShowLoadingDialog: true,
  171. cancelToken: cancelToken,
  172. );
  173. //根据返回的结果,封装原始数据为Bean/Entity对象
  174. if (result.isSuccess) {
  175. //重新赋值data或list
  176. return result.convert();
  177. }
  178. return result.convert();
  179. }
  180. /// 删除工作标题的提交
  181. Future<HttpResult> deleteJobTitleSubmit(
  182. String? titleId, {
  183. CancelToken? cancelToken,
  184. }) async {
  185. //参数
  186. Map<String, String> params = {};
  187. params['title_id'] = titleId ?? "";
  188. final result = await httpProvider.requestNetResult(
  189. ApiConstants.apiJobTitleDeleteSG,
  190. method: HttpMethod.POST,
  191. params: params,
  192. networkDebounce: true,
  193. isShowLoadingDialog: true,
  194. cancelToken: cancelToken,
  195. );
  196. //根据返回的结果,封装原始数据为Bean/Entity对象
  197. if (result.isSuccess) {
  198. //重新赋值data或list
  199. return result.convert();
  200. }
  201. return result.convert();
  202. }
  203. // =================================== Template ↓ ===================================
  204. /// 用工模版中的工作标题列表
  205. Future<HttpResult<JobTemplateSGEntity>> fetchJobTemplateList(
  206. String? keyword, {
  207. required int curPage,
  208. CancelToken? cancelToken,
  209. }) async {
  210. //参数
  211. Map<String, String> params = {};
  212. params["cur_page"] = curPage.toString();
  213. params["page_size"] = "10";
  214. if (!Utils.isEmpty(keyword)) {
  215. params["keyword"] = keyword!;
  216. }
  217. final result = await httpProvider.requestNetResult(
  218. ApiConstants.apiJobTemplateListSG,
  219. params: params,
  220. cancelToken: cancelToken,
  221. );
  222. //根据返回的结果,封装原始数据为Bean/Entity对象
  223. if (result.isSuccess) {
  224. //重新赋值data或list
  225. final json = result.getDataJson();
  226. var data = JobTemplateSGEntity.fromJson(json!);
  227. //重新赋值data或list
  228. return result.convert<JobTemplateSGEntity>(data: data);
  229. }
  230. return result.convert();
  231. }
  232. /// 根据ID获取主列表的Item数据,用于刷新Item
  233. Future<HttpResult<JobTemplateSGEntity>> fetchJobTemplateListByIds(
  234. String? ids, {
  235. CancelToken? cancelToken,
  236. }) async {
  237. //参数
  238. Map<String, String> params = {};
  239. params["cur_page"] = "1";
  240. params["page_size"] = "9999";
  241. if (!Utils.isEmpty(ids)) {
  242. params["job_temp_id"] = ids!;
  243. }
  244. final result = await httpProvider.requestNetResult(
  245. ApiConstants.apiJobTemplateListSG,
  246. params: params,
  247. isShowLoadingDialog: true,
  248. cancelToken: cancelToken,
  249. );
  250. //根据返回的结果,封装原始数据为Bean/Entity对象
  251. if (result.isSuccess) {
  252. //重新赋值data或list
  253. final json = result.getDataJson();
  254. var data = JobTemplateSGEntity.fromJson(json!);
  255. //重新赋值data或list
  256. return result.convert<JobTemplateSGEntity>(data: data);
  257. }
  258. return result.convert();
  259. }
  260. /// 添加工作模板的详情或选项数据
  261. Future<HttpResult<JobTemplateEditIndexEntity>> fetchJobTemplateAddIndex({
  262. CancelToken? cancelToken,
  263. }) async {
  264. final result = await httpProvider.requestNetResult(
  265. ApiConstants.apiJobTemplateAddIndexSG,
  266. isShowLoadingDialog: true,
  267. cancelToken: cancelToken,
  268. );
  269. //根据返回的结果,封装原始数据为Bean/Entity对象
  270. if (result.isSuccess) {
  271. //重新赋值data或list
  272. final json = result.getDataJson();
  273. var data = JobTemplateEditIndexEntity.fromJson(json!);
  274. //重新赋值data或list
  275. return result.convert<JobTemplateEditIndexEntity>(data: data);
  276. }
  277. return result.convert();
  278. }
  279. /// 编辑工作模板的详情或选项数据
  280. Future<HttpResult<JobTemplateEditIndexEntity>> fetchJobTemplateEditIndex(
  281. String? templateId, {
  282. CancelToken? cancelToken,
  283. }) async {
  284. Map<String, String> params = {};
  285. params["template_id"] = templateId ?? "";
  286. final result = await httpProvider.requestNetResult(
  287. ApiConstants.apiJobTemplateEditIndexSG,
  288. params: params,
  289. isShowLoadingDialog: true,
  290. cancelToken: cancelToken,
  291. );
  292. //根据返回的结果,封装原始数据为Bean/Entity对象
  293. if (result.isSuccess) {
  294. //重新赋值data或list
  295. final json = result.getDataJson();
  296. var data = JobTemplateEditIndexEntity.fromJson(json!);
  297. //重新赋值data或list
  298. return result.convert<JobTemplateEditIndexEntity>(data: data);
  299. }
  300. return result.convert();
  301. }
  302. /// 添加工作模板的提交
  303. Future<HttpResult> addJobTemplateSubmit(
  304. String? name,
  305. String? contact,
  306. String? contact_no,
  307. String? description,
  308. String? note,
  309. String? age,
  310. String? sex,
  311. String? with_food_cert,
  312. String? language, {
  313. CancelToken? cancelToken,
  314. }) async {
  315. //参数
  316. Map<String, String> params = {};
  317. params['name'] = name ?? "";
  318. if (!Utils.isEmpty(contact)) {
  319. params["contact"] = contact!;
  320. }
  321. if (!Utils.isEmpty(contact_no)) {
  322. params["contact_no"] = contact_no!;
  323. }
  324. if (!Utils.isEmpty(description)) {
  325. params["description"] = description!;
  326. }
  327. if (!Utils.isEmpty(note)) {
  328. params["note"] = note!;
  329. }
  330. if (!Utils.isEmpty(age)) {
  331. params["age"] = age!;
  332. }
  333. if (!Utils.isEmpty(sex)) {
  334. params["sex"] = sex!;
  335. }
  336. if (!Utils.isEmpty(with_food_cert)) {
  337. params["with_food_cert"] = with_food_cert!;
  338. }
  339. if (!Utils.isEmpty(language)) {
  340. params["language"] = language!;
  341. }
  342. final result = await httpProvider.requestNetResult(
  343. ApiConstants.apiJobTemplateAddSubmitSG,
  344. method: HttpMethod.POST,
  345. params: params,
  346. networkDebounce: true,
  347. isShowLoadingDialog: true,
  348. cancelToken: cancelToken,
  349. );
  350. //根据返回的结果,封装原始数据为Bean/Entity对象
  351. if (result.isSuccess) {
  352. //重新赋值data或list
  353. return result.convert();
  354. }
  355. return result.convert();
  356. }
  357. /// 编辑工作模板的提交
  358. Future<HttpResult> editJobTemplateSubmit(
  359. String? templateId,
  360. String? name,
  361. String? contact,
  362. String? contact_no,
  363. String? description,
  364. String? note,
  365. String? age,
  366. String? sex,
  367. String? with_food_cert,
  368. String? language, {
  369. CancelToken? cancelToken,
  370. }) async {
  371. //参数
  372. Map<String, String> params = {};
  373. params['name'] = name ?? "";
  374. params['template_id'] = templateId ?? "";
  375. if (!Utils.isEmpty(contact)) {
  376. params["contact"] = contact!;
  377. }
  378. if (!Utils.isEmpty(contact_no)) {
  379. params["contact_no"] = contact_no!;
  380. }
  381. if (!Utils.isEmpty(description)) {
  382. params["description"] = description!;
  383. }
  384. if (!Utils.isEmpty(note)) {
  385. params["note"] = note!;
  386. }
  387. if (!Utils.isEmpty(age)) {
  388. params["age"] = age!;
  389. }
  390. if (!Utils.isEmpty(sex)) {
  391. params["sex"] = sex!;
  392. }
  393. if (!Utils.isEmpty(with_food_cert)) {
  394. params["with_food_cert"] = with_food_cert!;
  395. }
  396. if (!Utils.isEmpty(language)) {
  397. params["language"] = language!;
  398. }
  399. final result = await httpProvider.requestNetResult(
  400. ApiConstants.apiJobTemplateEditSubmitSG,
  401. method: HttpMethod.POST,
  402. params: params,
  403. networkDebounce: true,
  404. isShowLoadingDialog: true,
  405. cancelToken: cancelToken,
  406. );
  407. //根据返回的结果,封装原始数据为Bean/Entity对象
  408. if (result.isSuccess) {
  409. //重新赋值data或list
  410. return result.convert();
  411. }
  412. return result.convert();
  413. }
  414. /// 删除工作标题的提交
  415. Future<HttpResult> deleteJobTemplateSubmit(
  416. String? templateId, {
  417. CancelToken? cancelToken,
  418. }) async {
  419. //参数
  420. Map<String, String> params = {};
  421. params['template_id'] = templateId ?? "";
  422. final result = await httpProvider.requestNetResult(
  423. ApiConstants.apiJobTemplateDeleteSG,
  424. method: HttpMethod.POST,
  425. params: params,
  426. networkDebounce: true,
  427. isShowLoadingDialog: true,
  428. cancelToken: cancelToken,
  429. );
  430. //根据返回的结果,封装原始数据为Bean/Entity对象
  431. if (result.isSuccess) {
  432. //重新赋值data或list
  433. return result.convert();
  434. }
  435. return result.convert();
  436. }
  437. /// 用工请求的首页数据
  438. Future<HttpResult<LabourRequestSGEntity>> fetchLabourRequestMain(
  439. String? date, {
  440. CancelToken? cancelToken,
  441. }) async {
  442. Map<String, String> params = {};
  443. if (Utils.isNotEmpty(date)) {
  444. params["date"] = date ?? "";
  445. }
  446. final result = await httpProvider.requestNetResult(
  447. ApiConstants.apiLabourRequestMainSG,
  448. params: params,
  449. cancelToken: cancelToken,
  450. );
  451. //根据返回的结果,封装原始数据为Bean/Entity对象
  452. if (result.isSuccess) {
  453. //重新赋值data或list
  454. final json = result.getDataJson();
  455. var data = LabourRequestSGEntity.fromJson(json!);
  456. //重新赋值data或list
  457. return result.convert<LabourRequestSGEntity>(data: data);
  458. }
  459. return result.convert();
  460. }
  461. /// 添加用工请求的选项数据
  462. Future<HttpResult<LabourRequestSGAddIndexEntity>> fetchLabourRequestAddIndex({
  463. CancelToken? cancelToken,
  464. }) async {
  465. final result = await httpProvider.requestNetResult(
  466. ApiConstants.apiLabourRequestAddIndexSG,
  467. isShowLoadingDialog: true,
  468. cancelToken: cancelToken,
  469. );
  470. //根据返回的结果,封装原始数据为Bean/Entity对象
  471. if (result.isSuccess) {
  472. //重新赋值data或list
  473. final json = result.getDataJson();
  474. var data = LabourRequestSGAddIndexEntity.fromJson(json!);
  475. //重新赋值data或list
  476. return result.convert<LabourRequestSGAddIndexEntity>(data: data);
  477. }
  478. return result.convert();
  479. }
  480. /// 删除工作标题的提交
  481. Future<HttpResult> submitLabourRequestAdd(
  482. String? jobTitleId,
  483. String? startTime,
  484. String? endTime,
  485. String? repeatStart,
  486. String? repeatEnd,
  487. String? outletId,
  488. int sexLimit,
  489. String? maleLimit,
  490. String? femaleLimit,
  491. String? needNum,
  492. String? requestType,
  493. String? remark, {
  494. CancelToken? cancelToken,
  495. }) async {
  496. //参数
  497. Map<String, String> params = {};
  498. params['job_title_id'] = jobTitleId ?? "";
  499. params['start_time'] = startTime ?? "";
  500. params['end_time'] = endTime ?? "";
  501. params['outlet_id'] = outletId ?? "";
  502. params['sexLimit'] = sexLimit.toString();
  503. if (sexLimit == 1) {
  504. params['male_limit'] = maleLimit ?? "0";
  505. params['female_limit'] = femaleLimit ?? "0";
  506. params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString();
  507. } else {
  508. params['need_num'] = needNum ?? "0";
  509. }
  510. if (Utils.isNotEmpty(repeatStart)) {
  511. params['repeat_start'] = repeatStart ?? "";
  512. }
  513. if (Utils.isNotEmpty(repeatEnd)) {
  514. params['repeat_end'] = repeatEnd ?? "";
  515. }
  516. if (Utils.isNotEmpty(requestType)) {
  517. params['request_type'] = requestType ?? "";
  518. }
  519. if (Utils.isNotEmpty(remark)) {
  520. params['remark'] = remark ?? "";
  521. }
  522. final result = await httpProvider.requestNetResult(
  523. ApiConstants.apiLabourRequestAddSubmitSG,
  524. method: HttpMethod.POST,
  525. params: params,
  526. networkDebounce: true,
  527. isShowLoadingDialog: true,
  528. cancelToken: cancelToken,
  529. );
  530. //根据返回的结果,封装原始数据为Bean/Entity对象
  531. if (result.isSuccess) {
  532. //重新赋值data或list
  533. return result.convert();
  534. }
  535. return result.convert();
  536. }
  537. }