labour_sg_repository.dart 37 KB

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