labour_sg_repository.dart 33 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198
  1. import 'dart:typed_data';
  2. import 'package:domain/entity/response/job_list_edit_index_s_g_entity.dart';
  3. import 'package:domain/entity/response/job_list_index_s_g_entity.dart';
  4. import 'package:domain/entity/response/job_template_edit_index_entity.dart';
  5. import 'package:domain/entity/response/job_template_s_g_entity.dart';
  6. import 'package:domain/entity/response/job_title_edit_index_entity.dart';
  7. import 'package:domain/entity/response/job_title_s_g_entity.dart';
  8. import 'package:domain/entity/response/labour_request_s_g_add_index_entity.dart';
  9. import 'package:domain/entity/response/labour_request_s_g_entity.dart';
  10. import 'package:get/get.dart';
  11. import 'package:plugin_platform/dio_export.dart';
  12. import 'package:plugin_platform/http/http_provider.dart';
  13. import 'package:plugin_platform/http/http_result.dart';
  14. import 'package:shared/utils/util.dart';
  15. import '../constants/api_constants.dart';
  16. import '../entity/response/job_list_s_g_entity.dart';
  17. import '../entity/response/labour_request_index_entity.dart';
  18. import '../entity/response/labour_request_s_g_edit_index_entity.dart';
  19. import '../entity/response/labour_request_s_g_list_entity.dart';
  20. /// 用工相关(新加坡)
  21. class LabourSGRepository extends GetxService {
  22. HttpProvider httpProvider;
  23. LabourSGRepository({required this.httpProvider});
  24. /// 用工模版中的工作标题列表
  25. Future<HttpResult<JobTitleSGEntity>> fetchJobTitleList(
  26. String? keyword, {
  27. required int curPage,
  28. CancelToken? cancelToken,
  29. }) async {
  30. //参数
  31. Map<String, String> params = {};
  32. params["cur_page"] = curPage.toString();
  33. params["page_size"] = "10";
  34. if (Utils.isNotEmpty(keyword)) {
  35. params["keyword"] = keyword!;
  36. }
  37. final result = await httpProvider.requestNetResult(
  38. ApiConstants.apiJobTitleListSG,
  39. params: params,
  40. cancelToken: cancelToken,
  41. );
  42. //根据返回的结果,封装原始数据为Bean/Entity对象
  43. if (result.isSuccess) {
  44. //重新赋值data或list
  45. final json = result.getDataJson();
  46. var data = JobTitleSGEntity.fromJson(json!);
  47. //重新赋值data或list
  48. return result.convert<JobTitleSGEntity>(data: data);
  49. }
  50. return result.convert();
  51. }
  52. /// 根据ID获取主列表的Item数据,用于刷新Item
  53. Future<HttpResult<JobTitleSGEntity>> fetchJobTitleListByIds(
  54. String? ids, {
  55. CancelToken? cancelToken,
  56. }) async {
  57. //参数
  58. Map<String, String> params = {};
  59. params["cur_page"] = "1";
  60. params["page_size"] = "9999";
  61. if (!Utils.isEmpty(ids)) {
  62. params["job_title_id"] = ids!;
  63. }
  64. final result = await httpProvider.requestNetResult(
  65. ApiConstants.apiJobTitleListSG,
  66. params: params,
  67. isShowLoadingDialog: true,
  68. cancelToken: cancelToken,
  69. );
  70. //根据返回的结果,封装原始数据为Bean/Entity对象
  71. if (result.isSuccess) {
  72. //重新赋值data或list
  73. final json = result.getDataJson();
  74. var data = JobTitleSGEntity.fromJson(json!);
  75. //重新赋值data或list
  76. return result.convert<JobTitleSGEntity>(data: data);
  77. }
  78. return result.convert();
  79. }
  80. /// 添加工作标题的详情或选项数据
  81. Future<HttpResult<JobTitleEditIndexEntity>> fetchJobTitleAddIndex({
  82. CancelToken? cancelToken,
  83. }) async {
  84. final result = await httpProvider.requestNetResult(
  85. ApiConstants.apiJobTitleAddIndexSG,
  86. isShowLoadingDialog: true,
  87. cancelToken: cancelToken,
  88. );
  89. //根据返回的结果,封装原始数据为Bean/Entity对象
  90. if (result.isSuccess) {
  91. //重新赋值data或list
  92. final json = result.getDataJson();
  93. var data = JobTitleEditIndexEntity.fromJson(json!);
  94. //重新赋值data或list
  95. return result.convert<JobTitleEditIndexEntity>(data: data);
  96. }
  97. return result.convert();
  98. }
  99. /// 编辑工作标题的详情或选项数据
  100. Future<HttpResult<JobTitleEditIndexEntity>> fetchJobTitleEditIndex(
  101. String? titleId, {
  102. CancelToken? cancelToken,
  103. }) async {
  104. Map<String, String> params = {};
  105. params["title_id"] = titleId ?? "";
  106. final result = await httpProvider.requestNetResult(
  107. ApiConstants.apiJobTitleEditIndexSG,
  108. params: params,
  109. isShowLoadingDialog: true,
  110. cancelToken: cancelToken,
  111. );
  112. //根据返回的结果,封装原始数据为Bean/Entity对象
  113. if (result.isSuccess) {
  114. //重新赋值data或list
  115. final json = result.getDataJson();
  116. var data = JobTitleEditIndexEntity.fromJson(json!);
  117. //重新赋值data或list
  118. return result.convert<JobTitleEditIndexEntity>(data: data);
  119. }
  120. return result.convert();
  121. }
  122. /// 添加工作标题的提交
  123. Future<HttpResult> addJobTitleSubmit(
  124. String? jobTitle,
  125. String? sort,
  126. String? templateId, {
  127. CancelToken? cancelToken,
  128. }) async {
  129. //参数
  130. Map<String, String> params = {};
  131. params['job_title'] = jobTitle ?? "";
  132. if (!Utils.isEmpty(templateId)) {
  133. params["template_id"] = templateId!;
  134. }
  135. if (!Utils.isEmpty(sort)) {
  136. params["sort"] = sort!;
  137. }
  138. final result = await httpProvider.requestNetResult(
  139. ApiConstants.apiJobTitleAddSubmitSG,
  140. method: HttpMethod.POST,
  141. params: params,
  142. networkDebounce: true,
  143. isShowLoadingDialog: true,
  144. cancelToken: cancelToken,
  145. );
  146. //根据返回的结果,封装原始数据为Bean/Entity对象
  147. if (result.isSuccess) {
  148. //重新赋值data或list
  149. return result.convert();
  150. }
  151. return result.convert();
  152. }
  153. /// 编辑工作标题的提交
  154. Future<HttpResult> editJobTitleSubmit(
  155. String? titleId,
  156. String? jobTitle,
  157. String? sort,
  158. String? templateId, {
  159. CancelToken? cancelToken,
  160. }) async {
  161. //参数
  162. Map<String, String> params = {};
  163. params['job_title'] = jobTitle ?? "";
  164. params['title_id'] = titleId ?? "";
  165. if (!Utils.isEmpty(templateId)) {
  166. params["template_id"] = templateId!;
  167. }
  168. if (!Utils.isEmpty(sort)) {
  169. params["sort"] = sort!;
  170. }
  171. final result = await httpProvider.requestNetResult(
  172. ApiConstants.apiJobTitleEditSubmitSG,
  173. method: HttpMethod.POST,
  174. params: params,
  175. networkDebounce: true,
  176. isShowLoadingDialog: true,
  177. cancelToken: cancelToken,
  178. );
  179. //根据返回的结果,封装原始数据为Bean/Entity对象
  180. if (result.isSuccess) {
  181. //重新赋值data或list
  182. return result.convert();
  183. }
  184. return result.convert();
  185. }
  186. /// 删除工作标题的提交
  187. Future<HttpResult> deleteJobTitleSubmit(
  188. String? titleId, {
  189. CancelToken? cancelToken,
  190. }) async {
  191. //参数
  192. Map<String, String> params = {};
  193. params['title_id'] = titleId ?? "";
  194. final result = await httpProvider.requestNetResult(
  195. ApiConstants.apiJobTitleDeleteSG,
  196. method: HttpMethod.POST,
  197. params: params,
  198. networkDebounce: true,
  199. isShowLoadingDialog: true,
  200. cancelToken: cancelToken,
  201. );
  202. //根据返回的结果,封装原始数据为Bean/Entity对象
  203. if (result.isSuccess) {
  204. //重新赋值data或list
  205. return result.convert();
  206. }
  207. return result.convert();
  208. }
  209. // =================================== Template ↓ ===================================
  210. /// 用工模版中的工作标题列表
  211. Future<HttpResult<JobTemplateSGEntity>> fetchJobTemplateList(
  212. String? keyword, {
  213. required int curPage,
  214. CancelToken? cancelToken,
  215. }) async {
  216. //参数
  217. Map<String, String> params = {};
  218. params["cur_page"] = curPage.toString();
  219. params["page_size"] = "10";
  220. if (!Utils.isEmpty(keyword)) {
  221. params["keyword"] = keyword!;
  222. }
  223. final result = await httpProvider.requestNetResult(
  224. ApiConstants.apiJobTemplateListSG,
  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 = JobTemplateSGEntity.fromJson(json!);
  233. //重新赋值data或list
  234. return result.convert<JobTemplateSGEntity>(data: data);
  235. }
  236. return result.convert();
  237. }
  238. /// 根据ID获取主列表的Item数据,用于刷新Item
  239. Future<HttpResult<JobTemplateSGEntity>> fetchJobTemplateListByIds(
  240. String? ids, {
  241. CancelToken? cancelToken,
  242. }) async {
  243. //参数
  244. Map<String, String> params = {};
  245. params["cur_page"] = "1";
  246. params["page_size"] = "9999";
  247. if (!Utils.isEmpty(ids)) {
  248. params["job_temp_id"] = ids!;
  249. }
  250. final result = await httpProvider.requestNetResult(
  251. ApiConstants.apiJobTemplateListSG,
  252. params: params,
  253. isShowLoadingDialog: true,
  254. cancelToken: cancelToken,
  255. );
  256. //根据返回的结果,封装原始数据为Bean/Entity对象
  257. if (result.isSuccess) {
  258. //重新赋值data或list
  259. final json = result.getDataJson();
  260. var data = JobTemplateSGEntity.fromJson(json!);
  261. //重新赋值data或list
  262. return result.convert<JobTemplateSGEntity>(data: data);
  263. }
  264. return result.convert();
  265. }
  266. /// 添加工作模板的详情或选项数据
  267. Future<HttpResult<JobTemplateEditIndexEntity>> fetchJobTemplateAddIndex({
  268. CancelToken? cancelToken,
  269. }) async {
  270. final result = await httpProvider.requestNetResult(
  271. ApiConstants.apiJobTemplateAddIndexSG,
  272. isShowLoadingDialog: true,
  273. cancelToken: cancelToken,
  274. );
  275. //根据返回的结果,封装原始数据为Bean/Entity对象
  276. if (result.isSuccess) {
  277. //重新赋值data或list
  278. final json = result.getDataJson();
  279. var data = JobTemplateEditIndexEntity.fromJson(json!);
  280. //重新赋值data或list
  281. return result.convert<JobTemplateEditIndexEntity>(data: data);
  282. }
  283. return result.convert();
  284. }
  285. /// 编辑工作模板的详情或选项数据
  286. Future<HttpResult<JobTemplateEditIndexEntity>> fetchJobTemplateEditIndex(
  287. String? templateId, {
  288. CancelToken? cancelToken,
  289. }) async {
  290. Map<String, String> params = {};
  291. params["template_id"] = templateId ?? "";
  292. final result = await httpProvider.requestNetResult(
  293. ApiConstants.apiJobTemplateEditIndexSG,
  294. params: params,
  295. isShowLoadingDialog: true,
  296. cancelToken: cancelToken,
  297. );
  298. //根据返回的结果,封装原始数据为Bean/Entity对象
  299. if (result.isSuccess) {
  300. //重新赋值data或list
  301. final json = result.getDataJson();
  302. var data = JobTemplateEditIndexEntity.fromJson(json!);
  303. //重新赋值data或list
  304. return result.convert<JobTemplateEditIndexEntity>(data: data);
  305. }
  306. return result.convert();
  307. }
  308. /// 添加工作模板的提交
  309. Future<HttpResult> addJobTemplateSubmit(
  310. String? name,
  311. String? contact,
  312. String? contactNo,
  313. String? description,
  314. String? note,
  315. String? age,
  316. String? sex,
  317. String? withFoodCert,
  318. String? language, {
  319. CancelToken? cancelToken,
  320. }) async {
  321. //参数
  322. Map<String, String> params = {};
  323. params['name'] = name ?? "";
  324. if (!Utils.isEmpty(contact)) {
  325. params["contact"] = contact!;
  326. }
  327. if (!Utils.isEmpty(contactNo)) {
  328. params["contact_no"] = contactNo!;
  329. }
  330. if (!Utils.isEmpty(description)) {
  331. params["description"] = description!;
  332. }
  333. if (!Utils.isEmpty(note)) {
  334. params["note"] = note!;
  335. }
  336. if (!Utils.isEmpty(age)) {
  337. params["age"] = age!;
  338. }
  339. if (!Utils.isEmpty(sex)) {
  340. params["sex"] = sex!;
  341. }
  342. if (!Utils.isEmpty(withFoodCert)) {
  343. params["with_food_cert"] = withFoodCert!;
  344. }
  345. if (!Utils.isEmpty(language)) {
  346. params["language"] = language!;
  347. }
  348. final result = await httpProvider.requestNetResult(
  349. ApiConstants.apiJobTemplateAddSubmitSG,
  350. method: HttpMethod.POST,
  351. params: params,
  352. networkDebounce: true,
  353. isShowLoadingDialog: true,
  354. cancelToken: cancelToken,
  355. );
  356. //根据返回的结果,封装原始数据为Bean/Entity对象
  357. if (result.isSuccess) {
  358. //重新赋值data或list
  359. return result.convert();
  360. }
  361. return result.convert();
  362. }
  363. /// 编辑工作模板的提交
  364. Future<HttpResult> editJobTemplateSubmit(
  365. String? templateId,
  366. String? name,
  367. String? contact,
  368. String? contactNo,
  369. String? description,
  370. String? note,
  371. String? age,
  372. String? sex,
  373. String? withFoodCert,
  374. String? language, {
  375. CancelToken? cancelToken,
  376. }) async {
  377. //参数
  378. Map<String, String> params = {};
  379. params['name'] = name ?? "";
  380. params['template_id'] = templateId ?? "";
  381. if (!Utils.isEmpty(contact)) {
  382. params["contact"] = contact!;
  383. }
  384. if (!Utils.isEmpty(contactNo)) {
  385. params["contact_no"] = contactNo!;
  386. }
  387. if (!Utils.isEmpty(description)) {
  388. params["description"] = description!;
  389. }
  390. if (!Utils.isEmpty(note)) {
  391. params["note"] = note!;
  392. }
  393. if (!Utils.isEmpty(age)) {
  394. params["age"] = age!;
  395. }
  396. if (!Utils.isEmpty(sex)) {
  397. params["sex"] = sex!;
  398. }
  399. if (!Utils.isEmpty(withFoodCert)) {
  400. params["with_food_cert"] = withFoodCert!;
  401. }
  402. if (!Utils.isEmpty(language)) {
  403. params["language"] = language!;
  404. }
  405. final result = await httpProvider.requestNetResult(
  406. ApiConstants.apiJobTemplateEditSubmitSG,
  407. method: HttpMethod.POST,
  408. params: params,
  409. networkDebounce: true,
  410. isShowLoadingDialog: true,
  411. cancelToken: cancelToken,
  412. );
  413. //根据返回的结果,封装原始数据为Bean/Entity对象
  414. if (result.isSuccess) {
  415. //重新赋值data或list
  416. return result.convert();
  417. }
  418. return result.convert();
  419. }
  420. /// 删除工作标题的提交
  421. Future<HttpResult> deleteJobTemplateSubmit(
  422. String? templateId, {
  423. CancelToken? cancelToken,
  424. }) async {
  425. //参数
  426. Map<String, String> params = {};
  427. params['template_id'] = templateId ?? "";
  428. final result = await httpProvider.requestNetResult(
  429. ApiConstants.apiJobTemplateDeleteSG,
  430. method: HttpMethod.POST,
  431. params: params,
  432. networkDebounce: true,
  433. isShowLoadingDialog: true,
  434. cancelToken: cancelToken,
  435. );
  436. //根据返回的结果,封装原始数据为Bean/Entity对象
  437. if (result.isSuccess) {
  438. //重新赋值data或list
  439. return result.convert();
  440. }
  441. return result.convert();
  442. }
  443. /// 用工请求的首页数据
  444. Future<HttpResult<LabourRequestSGCountList?>> fetchLabourRequestMain(
  445. String? date, {
  446. CancelToken? cancelToken,
  447. }) async {
  448. Map<String, String> params = {};
  449. if (Utils.isNotEmpty(date)) {
  450. params["date"] = date ?? "";
  451. }
  452. final result = await httpProvider.requestNetResult(
  453. ApiConstants.apiLabourRequestMainSG,
  454. params: params,
  455. cancelToken: cancelToken,
  456. );
  457. // //根据返回的结果,封装原始数据为Bean/Entity对象
  458. // if (result.isSuccess) {
  459. // //重新赋值data或list
  460. // final json = result.getDataJson();
  461. // var data = LabourRequestSGEntity.fromJson(json!);
  462. // //重新赋值data或list
  463. // return result.convert<LabourRequestSGEntity>(data: data);
  464. // }
  465. // return result.convert();
  466. if (result.isSuccess) {
  467. var jsonList = result.getListJson();
  468. var list = jsonList?.map((e) {
  469. if (e is Map<String, dynamic>) {
  470. return LabourRequestSGCountList.fromJson(e);
  471. } else {
  472. return null;
  473. }
  474. }).toList();
  475. return result.convert<LabourRequestSGCountList?>(list: list);
  476. }
  477. return result.convert<LabourRequestSGCountList>();
  478. }
  479. /// 添加用工请求的选项数据
  480. Future<HttpResult<LabourRequestSGAddIndexEntity>> fetchLabourRequestAddIndex({
  481. bool isShowLoadingDialog = true,
  482. CancelToken? cancelToken,
  483. }) async {
  484. final result = await httpProvider.requestNetResult(
  485. ApiConstants.apiLabourRequestAddIndexSG,
  486. isShowLoadingDialog: isShowLoadingDialog,
  487. cancelToken: cancelToken,
  488. );
  489. //根据返回的结果,封装原始数据为Bean/Entity对象
  490. if (result.isSuccess) {
  491. //重新赋值data或list
  492. final json = result.getDataJson();
  493. var data = LabourRequestSGAddIndexEntity.fromJson(json!);
  494. //重新赋值data或list
  495. return result.convert<LabourRequestSGAddIndexEntity>(data: data);
  496. }
  497. return result.convert();
  498. }
  499. /// 删除工作标题的提交
  500. Future<HttpResult> submitLabourRequestAdd(
  501. String? jobTitleId,
  502. String? startTime,
  503. String? endTime,
  504. String? repeatStart,
  505. String? repeatEnd,
  506. String? outletId,
  507. int sexLimit,
  508. String? maleLimit,
  509. String? femaleLimit,
  510. String? needNum,
  511. String? requestType,
  512. String? positionId,
  513. String? remark, {
  514. CancelToken? cancelToken,
  515. }) async {
  516. //参数
  517. Map<String, String> params = {};
  518. params['job_title_id'] = jobTitleId ?? "";
  519. params['start_time'] = startTime ?? "";
  520. params['end_time'] = endTime ?? "";
  521. params['outlet_id'] = outletId ?? "";
  522. params['sex_limit'] = sexLimit.toString();
  523. if (sexLimit == 1) {
  524. params['male_limit'] = maleLimit ?? "0";
  525. params['female_limit'] = femaleLimit ?? "0";
  526. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  527. } else {
  528. params['need_num'] = needNum ?? "0";
  529. }
  530. if (Utils.isNotEmpty(repeatStart)) {
  531. params['repeat_start'] = repeatStart ?? "";
  532. }
  533. if (Utils.isNotEmpty(repeatEnd)) {
  534. params['repeat_end'] = repeatEnd ?? "";
  535. }
  536. if (Utils.isNotEmpty(requestType)) {
  537. params['request_type'] = requestType ?? "";
  538. }
  539. if (Utils.isNotEmpty(positionId) && requestType == "1") {
  540. params['position_id'] = positionId ?? "";
  541. }
  542. if (Utils.isNotEmpty(remark)) {
  543. params['remark'] = remark ?? "";
  544. }
  545. final result = await httpProvider.requestNetResult(
  546. ApiConstants.apiLabourRequestAddSubmitSG,
  547. method: HttpMethod.POST,
  548. params: params,
  549. networkDebounce: true,
  550. isShowLoadingDialog: true,
  551. cancelToken: cancelToken,
  552. );
  553. //根据返回的结果,封装原始数据为Bean/Entity对象
  554. if (result.isSuccess) {
  555. //重新赋值data或list
  556. return result.convert();
  557. }
  558. return result.convert();
  559. }
  560. //用工请求的查询选项(Job List)
  561. Future<HttpResult<JobListIndexSGEntity>> fetchJobListIndex({
  562. CancelToken? cancelToken,
  563. }) async {
  564. final result = await httpProvider.requestNetResult(
  565. ApiConstants.apiJobListIndexSG,
  566. cancelToken: cancelToken,
  567. );
  568. //根据返回的结果,封装原始数据为Bean/Entity对象
  569. if (result.isSuccess) {
  570. //重新赋值data或list
  571. final json = result.getDataJson();
  572. var data = JobListIndexSGEntity.fromJson(json!);
  573. //重新赋值data或list
  574. return result.convert<JobListIndexSGEntity>(data: data);
  575. }
  576. return result.convert();
  577. }
  578. //用工请求的查询列表(Job List)
  579. Future<HttpResult<JobListSGEntity>> fetchJobListTable(
  580. String? startDate,
  581. String? endDate,
  582. String? status,
  583. String? outletId, {
  584. required int curPage,
  585. CancelToken? cancelToken,
  586. }) async {
  587. Map<String, String> params = {};
  588. if (Utils.isNotEmpty(startDate)) {
  589. params['start_date'] = startDate ?? "";
  590. }
  591. if (Utils.isNotEmpty(endDate)) {
  592. params['end_date'] = endDate ?? "";
  593. }
  594. if (Utils.isNotEmpty(status)) {
  595. params['status'] = status ?? "";
  596. }
  597. if (Utils.isNotEmpty(outletId)) {
  598. params['outlet_id'] = outletId ?? "";
  599. }
  600. params['cur_page'] = curPage.toString();
  601. params['page_size'] = "10";
  602. final result = await httpProvider.requestNetResult(
  603. ApiConstants.apiJobListTableSG,
  604. params: params,
  605. cancelToken: cancelToken,
  606. );
  607. //根据返回的结果,封装原始数据为Bean/Entity对象
  608. if (result.isSuccess) {
  609. //重新赋值data或list
  610. final json = result.getDataJson();
  611. var data = JobListSGEntity.fromJson(json!);
  612. //重新赋值data或list
  613. return result.convert<JobListSGEntity>(data: data);
  614. }
  615. return result.convert();
  616. }
  617. /// 根据ID获取主列表的Item数据,用于刷新Item
  618. Future<HttpResult<JobListSGEntity>> fetchJobListByIds(
  619. String? jobId, {
  620. CancelToken? cancelToken,
  621. }) async {
  622. //参数
  623. Map<String, String> params = {};
  624. params["cur_page"] = "1";
  625. params["page_size"] = "9999";
  626. if (!Utils.isEmpty(jobId)) {
  627. params["job_id"] = jobId!;
  628. }
  629. final result = await httpProvider.requestNetResult(
  630. ApiConstants.apiJobListTableSG,
  631. params: params,
  632. cancelToken: cancelToken,
  633. );
  634. //根据返回的结果,封装原始数据为Bean/Entity对象
  635. if (result.isSuccess) {
  636. //重新赋值data或list
  637. final json = result.getDataJson();
  638. var data = JobListSGEntity.fromJson(json!);
  639. //重新赋值data或list
  640. return result.convert<JobListSGEntity>(data: data);
  641. }
  642. return result.convert();
  643. }
  644. //用工请求的编辑详情(Job List)
  645. Future<HttpResult<JobListEditIndexSGEntity>> fetchJobListEditIndex(
  646. String? jobId, {
  647. CancelToken? cancelToken,
  648. }) async {
  649. Map<String, String> params = {};
  650. params['job_id'] = jobId ?? "";
  651. final result = await httpProvider.requestNetResult(
  652. ApiConstants.apiJobListEditIndexSG,
  653. params: params,
  654. isShowLoadingDialog: true,
  655. cancelToken: cancelToken,
  656. );
  657. //根据返回的结果,封装原始数据为Bean/Entity对象
  658. if (result.isSuccess) {
  659. //重新赋值data或list
  660. final json = result.getDataJson();
  661. var data = JobListEditIndexSGEntity.fromJson(json!);
  662. //重新赋值data或list
  663. return result.convert<JobListEditIndexSGEntity>(data: data);
  664. }
  665. return result.convert();
  666. }
  667. //用工请求的编辑提交(Job List)
  668. Future<HttpResult> editJobListSubmit(
  669. String? jobId,
  670. String? startTime,
  671. String? endTime,
  672. String? outletId,
  673. int sexLimit,
  674. String? maleLimit,
  675. String? femaleLimit,
  676. String? needNum,
  677. String? requestType,
  678. String? positionId,
  679. String? remark, {
  680. CancelToken? cancelToken,
  681. }) async {
  682. //参数
  683. Map<String, String> params = {};
  684. params['job_id'] = jobId ?? "";
  685. params['start_time'] = startTime ?? "";
  686. params['end_time'] = endTime ?? "";
  687. params['outlet_id'] = outletId ?? "";
  688. params['sex_limit'] = sexLimit.toString();
  689. if (sexLimit == 1) {
  690. params['male_limit'] = maleLimit ?? "0";
  691. params['female_limit'] = femaleLimit ?? "0";
  692. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString();
  693. } else {
  694. params['need_num'] = needNum ?? "0";
  695. }
  696. if (Utils.isNotEmpty(requestType)) {
  697. params['request_type'] = requestType ?? "";
  698. }
  699. if (Utils.isNotEmpty(positionId) && requestType == "1") {
  700. params['position_id'] = positionId ?? "";
  701. }
  702. if (Utils.isNotEmpty(remark)) {
  703. params['remark'] = remark ?? "";
  704. }
  705. final result = await httpProvider.requestNetResult(
  706. ApiConstants.apiJobListEditSubmitSG,
  707. method: HttpMethod.POST,
  708. params: params,
  709. networkDebounce: true,
  710. isShowLoadingDialog: true,
  711. cancelToken: cancelToken,
  712. );
  713. //根据返回的结果,封装原始数据为Bean/Entity对象
  714. if (result.isSuccess) {
  715. //重新赋值data或list
  716. return result.convert();
  717. }
  718. return result.convert();
  719. }
  720. //用工请求的取消(Job List)
  721. Future<HttpResult> cancelJobList(
  722. String? jobId, {
  723. CancelToken? cancelToken,
  724. }) async {
  725. //参数
  726. Map<String, String> params = {};
  727. params['job_id'] = jobId ?? "";
  728. final result = await httpProvider.requestNetResult(
  729. ApiConstants.apiJobListCancelSG,
  730. method: HttpMethod.POST,
  731. params: params,
  732. networkDebounce: true,
  733. isShowLoadingDialog: true,
  734. cancelToken: cancelToken,
  735. );
  736. //根据返回的结果,封装原始数据为Bean/Entity对象
  737. if (result.isSuccess) {
  738. //重新赋值data或list
  739. return result.convert();
  740. }
  741. return result.convert();
  742. }
  743. //用工请求的删除(Job List)
  744. Future<HttpResult> deleteJobList(
  745. String? jobId, {
  746. CancelToken? cancelToken,
  747. }) async {
  748. //参数
  749. Map<String, String> params = {};
  750. params['job_id'] = jobId ?? "";
  751. final result = await httpProvider.requestNetResult(
  752. ApiConstants.apiJobListDeleteSG,
  753. method: HttpMethod.POST,
  754. params: params,
  755. networkDebounce: true,
  756. isShowLoadingDialog: true,
  757. cancelToken: cancelToken,
  758. );
  759. //根据返回的结果,封装原始数据为Bean/Entity对象
  760. if (result.isSuccess) {
  761. //重新赋值data或list
  762. return result.convert();
  763. }
  764. return result.convert();
  765. }
  766. //用工请求的考勤确认(Job List)
  767. Future<HttpResult> confirmJobList(
  768. String? jobId, {
  769. CancelToken? cancelToken,
  770. }) async {
  771. //参数
  772. Map<String, String> params = {};
  773. params['job_id'] = jobId ?? "";
  774. final result = await httpProvider.requestNetResult(
  775. ApiConstants.apiJobListConfirmSG,
  776. method: HttpMethod.POST,
  777. params: params,
  778. networkDebounce: true,
  779. isShowLoadingDialog: true,
  780. cancelToken: cancelToken,
  781. );
  782. //根据返回的结果,封装原始数据为Bean/Entity对象
  783. if (result.isSuccess) {
  784. //重新赋值data或list
  785. return result.convert();
  786. }
  787. return result.convert();
  788. }
  789. // V2 - 新版的LabourRequest 改动
  790. /// 获取用工请求的筛选选项
  791. Future<HttpResult<LabourRequestIndexEntity>> fetchLabourRequestSGIndex({
  792. CancelToken? cancelToken,
  793. }) async {
  794. final result = await httpProvider.requestNetResult(
  795. ApiConstants.apiLabourRequestIndex,
  796. cancelToken: cancelToken,
  797. );
  798. //根据返回的结果,封装原始数据为Bean/Entity对象
  799. if (result.isSuccess) {
  800. //重新赋值data或list
  801. final json = result.getDataJson();
  802. var data = LabourRequestIndexEntity.fromJson(json!);
  803. //重新赋值data或list
  804. return result.convert<LabourRequestIndexEntity>(data: data);
  805. }
  806. return result.convert();
  807. }
  808. /// 获取用工请求的主列表
  809. Future<HttpResult<LabourRequestSGListEntity>> fetchLabourRequestSGList(
  810. String? keyword,
  811. String? startDate,
  812. String? endDate,
  813. String? statusId,
  814. String? departmentId, {
  815. required int curPage,
  816. CancelToken? cancelToken,
  817. }) async {
  818. //参数
  819. Map<String, String> params = {};
  820. params["cur_page"] = curPage.toString();
  821. params["page_size"] = "20";
  822. if (!Utils.isEmpty(keyword)) {
  823. params["job_title"] = keyword!;
  824. }
  825. if (!Utils.isEmpty(startDate)) {
  826. params["job_start"] = startDate!;
  827. }
  828. if (!Utils.isEmpty(endDate)) {
  829. params["job_end"] = endDate!;
  830. }
  831. if (!Utils.isEmpty(statusId)) {
  832. params["status"] = statusId!;
  833. }
  834. if (!Utils.isEmpty(departmentId)) {
  835. params["outlet_id"] = departmentId!;
  836. }
  837. final result = await httpProvider.requestNetResult(
  838. ApiConstants.apiLabourRequestList,
  839. params: params,
  840. cancelToken: cancelToken,
  841. );
  842. //根据返回的结果,封装原始数据为Bean/Entity对象
  843. if (result.isSuccess) {
  844. //重新赋值data或list
  845. final json = result.getDataJson();
  846. var data = LabourRequestSGListEntity.fromJson(json!);
  847. //重新赋值data或list
  848. return result.convert<LabourRequestSGListEntity>(data: data);
  849. }
  850. return result.convert();
  851. }
  852. /// 根据ID获取主列表的Item数据,用于刷新Item
  853. Future<HttpResult<LabourRequestSGListEntity>> fetchItemByRequestId(
  854. String? requestId, {
  855. CancelToken? cancelToken,
  856. }) async {
  857. //参数
  858. Map<String, String> params = {};
  859. params["cur_page"] = "1";
  860. params["page_size"] = "1";
  861. if (!Utils.isEmpty(requestId)) {
  862. params["request_id"] = requestId!;
  863. }
  864. final result = await httpProvider.requestNetResult(
  865. ApiConstants.apiLabourRequestList,
  866. params: params,
  867. isShowLoadingDialog: true,
  868. cancelToken: cancelToken,
  869. );
  870. //根据返回的结果,封装原始数据为Bean/Entity对象
  871. if (result.isSuccess) {
  872. //重新赋值data或list
  873. final json = result.getDataJson();
  874. var data = LabourRequestSGListEntity.fromJson(json!);
  875. //重新赋值data或list
  876. return result.convert<LabourRequestSGListEntity>(data: data);
  877. }
  878. return result.convert();
  879. }
  880. /// 删除工作标题的提交
  881. Future<HttpResult> submitLabourRequestAdd(
  882. String? jobTitleId,
  883. String? startTime,
  884. String? endTime,
  885. String? repeatStart,
  886. String? repeatEnd,
  887. String? outletId,
  888. int sexLimit,
  889. String? maleLimit,
  890. String? femaleLimit,
  891. String? needNum,
  892. String? requestType,
  893. String? remark, {
  894. CancelToken? cancelToken,
  895. }) async {
  896. //参数
  897. Map<String, String> params = {};
  898. params['job_title_id'] = jobTitleId ?? "";
  899. params['start_time'] = startTime ?? "";
  900. params['end_time'] = endTime ?? "";
  901. params['outlet_id'] = outletId ?? "";
  902. params['sex_limit'] = sexLimit.toString();
  903. if (sexLimit == 1) {
  904. params['male_limit'] = maleLimit ?? "0";
  905. params['female_limit'] = femaleLimit ?? "0";
  906. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  907. } else {
  908. params['need_num'] = needNum ?? "0";
  909. }
  910. if (Utils.isNotEmpty(repeatStart)) {
  911. params['repeat_start'] = repeatStart ?? "";
  912. }
  913. if (Utils.isNotEmpty(repeatEnd)) {
  914. params['repeat_end'] = repeatEnd ?? "";
  915. }
  916. if (Utils.isNotEmpty(requestType)) {
  917. params['request_type'] = requestType ?? "";
  918. }
  919. if (Utils.isNotEmpty(remark)) {
  920. params['remark'] = remark ?? "";
  921. }
  922. final result = await httpProvider.requestNetResult(
  923. ApiConstants.apiLabourRequestAddSubmitSG,
  924. method: HttpMethod.POST,
  925. params: params,
  926. networkDebounce: true,
  927. isShowLoadingDialog: true,
  928. cancelToken: cancelToken,
  929. );
  930. //根据返回的结果,封装原始数据为Bean/Entity对象
  931. if (result.isSuccess) {
  932. //重新赋值data或list
  933. return result.convert();
  934. }
  935. return result.convert();
  936. }
  937. /// 用工的编辑详情
  938. Future<HttpResult<LabourRequestSGEditIndexEntity>> fetchLabourRequestEditDetail(
  939. String? requestId, {
  940. bool isShowLoadingDialog = true,
  941. CancelToken? cancelToken,
  942. }) async {
  943. //参数
  944. Map<String, String> params = {};
  945. params['request_id'] = requestId ?? "";
  946. final result = await httpProvider.requestNetResult(
  947. ApiConstants.apiLabourRequestEditDetail,
  948. params: params,
  949. isShowLoadingDialog: isShowLoadingDialog,
  950. cancelToken: cancelToken,
  951. );
  952. //根据返回的结果,封装原始数据为Bean/Entity对象
  953. if (result.isSuccess) {
  954. //重新赋值data或list
  955. final json = result.getDataJson();
  956. var data = LabourRequestSGEditIndexEntity.fromJson(json!);
  957. //重新赋值data或list
  958. return result.convert<LabourRequestSGEditIndexEntity>(data: data);
  959. }
  960. return result.convert();
  961. }
  962. /// 编辑工作标题的提交
  963. Future<HttpResult> submitLabourRequestEdit(
  964. String? requestId,
  965. String? startTime,
  966. String? endTime,
  967. String? outletId,
  968. int sexLimit,
  969. String? maleLimit,
  970. String? femaleLimit,
  971. String? needNum,
  972. String? requestType,
  973. String? remark, {
  974. CancelToken? cancelToken,
  975. }) async {
  976. //参数
  977. Map<String, String> params = {};
  978. params['request_id'] = requestId ?? "";
  979. params['start_time'] = startTime ?? "";
  980. params['end_time'] = endTime ?? "";
  981. params['outlet_id'] = outletId ?? "";
  982. params['sex_limit'] = sexLimit.toString();
  983. if (sexLimit == 1) {
  984. params['male_limit'] = maleLimit ?? "0";
  985. params['female_limit'] = femaleLimit ?? "0";
  986. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  987. } else {
  988. params['need_num'] = needNum ?? "0";
  989. }
  990. if (Utils.isNotEmpty(requestType)) {
  991. params['request_type'] = requestType ?? "";
  992. }
  993. if (Utils.isNotEmpty(remark)) {
  994. params['remark'] = remark ?? "";
  995. }
  996. final result = await httpProvider.requestNetResult(
  997. ApiConstants.apiLabourRequestEditSubmit,
  998. method: HttpMethod.POST,
  999. params: params,
  1000. networkDebounce: true,
  1001. isShowLoadingDialog: true,
  1002. cancelToken: cancelToken,
  1003. );
  1004. //根据返回的结果,封装原始数据为Bean/Entity对象
  1005. if (result.isSuccess) {
  1006. //重新赋值data或list
  1007. return result.convert();
  1008. }
  1009. return result.convert();
  1010. }
  1011. /// 删除新加坡的用工请求
  1012. Future<HttpResult> deleteLabourRequestSG(
  1013. String? requestId, {
  1014. CancelToken? cancelToken,
  1015. }) async {
  1016. //参数
  1017. Map<String, String> params = {};
  1018. params['request_id'] = requestId ?? "";
  1019. final result = await httpProvider.requestNetResult(
  1020. ApiConstants.apiLabourRequestDelete,
  1021. method: HttpMethod.POST,
  1022. params: params,
  1023. networkDebounce: true,
  1024. isShowLoadingDialog: true,
  1025. cancelToken: cancelToken,
  1026. );
  1027. //根据返回的结果,封装原始数据为Bean/Entity对象
  1028. if (result.isSuccess) {
  1029. //重新赋值data或list
  1030. return result.convert();
  1031. }
  1032. return result.convert();
  1033. }
  1034. }