labour_sg_repository.dart 31 KB

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