labour_sg_repository.dart 33 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202
  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/platform_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? positionId,
  312. String? contact,
  313. String? contactNo,
  314. String? description,
  315. String? note,
  316. String? age,
  317. String? sex,
  318. String? withFoodCert,
  319. String? language, {
  320. CancelToken? cancelToken,
  321. }) async {
  322. //参数
  323. Map<String, String> params = {};
  324. params['name'] = name ?? "";
  325. params['position_id'] = positionId ?? "";
  326. if (!Utils.isEmpty(contact)) {
  327. params["contact"] = contact!;
  328. }
  329. if (!Utils.isEmpty(contactNo)) {
  330. params["contact_no"] = contactNo!;
  331. }
  332. if (!Utils.isEmpty(description)) {
  333. params["description"] = description!;
  334. }
  335. if (!Utils.isEmpty(note)) {
  336. params["note"] = note!;
  337. }
  338. if (!Utils.isEmpty(age)) {
  339. params["age"] = age!;
  340. }
  341. if (!Utils.isEmpty(sex)) {
  342. params["sex"] = sex!;
  343. }
  344. if (!Utils.isEmpty(withFoodCert)) {
  345. params["with_food_cert"] = withFoodCert!;
  346. }
  347. if (!Utils.isEmpty(language)) {
  348. params["language"] = language!;
  349. }
  350. final result = await httpProvider.requestNetResult(
  351. ApiConstants.apiJobTemplateAddSubmitSG,
  352. method: HttpMethod.POST,
  353. params: params,
  354. networkDebounce: true,
  355. isShowLoadingDialog: true,
  356. cancelToken: cancelToken,
  357. );
  358. //根据返回的结果,封装原始数据为Bean/Entity对象
  359. if (result.isSuccess) {
  360. //重新赋值data或list
  361. return result.convert();
  362. }
  363. return result.convert();
  364. }
  365. /// 编辑工作模板的提交
  366. Future<HttpResult> editJobTemplateSubmit(
  367. String? templateId,
  368. String? name,
  369. String? positionId,
  370. String? contact,
  371. String? contactNo,
  372. String? description,
  373. String? note,
  374. String? age,
  375. String? sex,
  376. String? withFoodCert,
  377. String? language, {
  378. CancelToken? cancelToken,
  379. }) async {
  380. //参数
  381. Map<String, String> params = {};
  382. params['template_id'] = templateId ?? "";
  383. params['name'] = name ?? "";
  384. params['position_id'] = positionId ?? "";
  385. if (!Utils.isEmpty(contact)) {
  386. params["contact"] = contact!;
  387. }
  388. if (!Utils.isEmpty(contactNo)) {
  389. params["contact_no"] = contactNo!;
  390. }
  391. if (!Utils.isEmpty(description)) {
  392. params["description"] = description!;
  393. }
  394. if (!Utils.isEmpty(note)) {
  395. params["note"] = note!;
  396. }
  397. if (!Utils.isEmpty(age)) {
  398. params["age"] = age!;
  399. }
  400. if (!Utils.isEmpty(sex)) {
  401. params["sex"] = sex!;
  402. }
  403. if (!Utils.isEmpty(withFoodCert)) {
  404. params["with_food_cert"] = withFoodCert!;
  405. }
  406. if (!Utils.isEmpty(language)) {
  407. params["language"] = language!;
  408. }
  409. final result = await httpProvider.requestNetResult(
  410. ApiConstants.apiJobTemplateEditSubmitSG,
  411. method: HttpMethod.POST,
  412. params: params,
  413. networkDebounce: true,
  414. isShowLoadingDialog: true,
  415. cancelToken: cancelToken,
  416. );
  417. //根据返回的结果,封装原始数据为Bean/Entity对象
  418. if (result.isSuccess) {
  419. //重新赋值data或list
  420. return result.convert();
  421. }
  422. return result.convert();
  423. }
  424. /// 删除工作标题的提交
  425. Future<HttpResult> deleteJobTemplateSubmit(
  426. String? templateId, {
  427. CancelToken? cancelToken,
  428. }) async {
  429. //参数
  430. Map<String, String> params = {};
  431. params['template_id'] = templateId ?? "";
  432. final result = await httpProvider.requestNetResult(
  433. ApiConstants.apiJobTemplateDeleteSG,
  434. method: HttpMethod.POST,
  435. params: params,
  436. networkDebounce: true,
  437. isShowLoadingDialog: true,
  438. cancelToken: cancelToken,
  439. );
  440. //根据返回的结果,封装原始数据为Bean/Entity对象
  441. if (result.isSuccess) {
  442. //重新赋值data或list
  443. return result.convert();
  444. }
  445. return result.convert();
  446. }
  447. /// 用工请求的首页数据
  448. Future<HttpResult<LabourRequestSGCountList?>> fetchLabourRequestMain(
  449. String? date, {
  450. CancelToken? cancelToken,
  451. }) async {
  452. Map<String, String> params = {};
  453. if (Utils.isNotEmpty(date)) {
  454. params["date"] = date ?? "";
  455. }
  456. final result = await httpProvider.requestNetResult(
  457. ApiConstants.apiLabourRequestMainSG,
  458. params: params,
  459. cancelToken: cancelToken,
  460. );
  461. // //根据返回的结果,封装原始数据为Bean/Entity对象
  462. // if (result.isSuccess) {
  463. // //重新赋值data或list
  464. // final json = result.getDataJson();
  465. // var data = LabourRequestSGEntity.fromJson(json!);
  466. // //重新赋值data或list
  467. // return result.convert<LabourRequestSGEntity>(data: data);
  468. // }
  469. // return result.convert();
  470. if (result.isSuccess) {
  471. var jsonList = result.getListJson();
  472. var list = jsonList?.map((e) {
  473. if (e is Map<String, dynamic>) {
  474. return LabourRequestSGCountList.fromJson(e);
  475. } else {
  476. return null;
  477. }
  478. }).toList();
  479. return result.convert<LabourRequestSGCountList?>(list: list);
  480. }
  481. return result.convert<LabourRequestSGCountList>();
  482. }
  483. /// 添加用工请求的选项数据
  484. Future<HttpResult<LabourRequestSGAddIndexEntity>> fetchLabourRequestAddIndex({
  485. bool isShowLoadingDialog = true,
  486. CancelToken? cancelToken,
  487. }) async {
  488. final result = await httpProvider.requestNetResult(
  489. ApiConstants.apiLabourRequestAddIndexSG,
  490. isShowLoadingDialog: isShowLoadingDialog,
  491. cancelToken: cancelToken,
  492. );
  493. //根据返回的结果,封装原始数据为Bean/Entity对象
  494. if (result.isSuccess) {
  495. //重新赋值data或list
  496. final json = result.getDataJson();
  497. var data = LabourRequestSGAddIndexEntity.fromJson(json!);
  498. //重新赋值data或list
  499. return result.convert<LabourRequestSGAddIndexEntity>(data: data);
  500. }
  501. return result.convert();
  502. }
  503. /// 删除工作标题的提交
  504. Future<HttpResult> submitLabourRequestAdd(
  505. String? jobTitleId,
  506. String? startTime,
  507. String? endTime,
  508. String? repeatStart,
  509. String? repeatEnd,
  510. String? outletId,
  511. int sexLimit,
  512. String? maleLimit,
  513. String? femaleLimit,
  514. String? needNum,
  515. String? requestType,
  516. String? positionId,
  517. String? remark, {
  518. CancelToken? cancelToken,
  519. }) async {
  520. //参数
  521. Map<String, String> params = {};
  522. params['job_title_id'] = jobTitleId ?? "";
  523. params['start_time'] = startTime ?? "";
  524. params['end_time'] = endTime ?? "";
  525. params['outlet_id'] = outletId ?? "";
  526. params['sex_limit'] = sexLimit.toString();
  527. if (sexLimit == 1) {
  528. params['male_limit'] = maleLimit ?? "0";
  529. params['female_limit'] = femaleLimit ?? "0";
  530. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  531. } else {
  532. params['need_num'] = needNum ?? "0";
  533. }
  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. final result = await httpProvider.requestNetResult(
  550. ApiConstants.apiLabourRequestAddSubmitSG,
  551. method: HttpMethod.POST,
  552. params: params,
  553. networkDebounce: true,
  554. isShowLoadingDialog: true,
  555. cancelToken: cancelToken,
  556. );
  557. //根据返回的结果,封装原始数据为Bean/Entity对象
  558. if (result.isSuccess) {
  559. //重新赋值data或list
  560. return result.convert();
  561. }
  562. return result.convert();
  563. }
  564. //用工请求的查询选项(Job List)
  565. Future<HttpResult<JobListIndexSGEntity>> fetchJobListIndex({
  566. CancelToken? cancelToken,
  567. }) async {
  568. final result = await httpProvider.requestNetResult(
  569. ApiConstants.apiJobListIndexSG,
  570. cancelToken: cancelToken,
  571. );
  572. //根据返回的结果,封装原始数据为Bean/Entity对象
  573. if (result.isSuccess) {
  574. //重新赋值data或list
  575. final json = result.getDataJson();
  576. var data = JobListIndexSGEntity.fromJson(json!);
  577. //重新赋值data或list
  578. return result.convert<JobListIndexSGEntity>(data: data);
  579. }
  580. return result.convert();
  581. }
  582. //用工请求的查询列表(Job List)
  583. Future<HttpResult<JobListSGEntity>> fetchJobListTable(
  584. String? startDate,
  585. String? endDate,
  586. String? status,
  587. String? outletId, {
  588. required int curPage,
  589. CancelToken? cancelToken,
  590. }) async {
  591. Map<String, String> params = {};
  592. if (Utils.isNotEmpty(startDate)) {
  593. params['start_date'] = startDate ?? "";
  594. }
  595. if (Utils.isNotEmpty(endDate)) {
  596. params['end_date'] = endDate ?? "";
  597. }
  598. if (Utils.isNotEmpty(status)) {
  599. params['status'] = status ?? "";
  600. }
  601. if (Utils.isNotEmpty(outletId)) {
  602. params['outlet_id'] = outletId ?? "";
  603. }
  604. params['cur_page'] = curPage.toString();
  605. params['page_size'] = "10";
  606. final result = await httpProvider.requestNetResult(
  607. ApiConstants.apiJobListTableSG,
  608. params: params,
  609. cancelToken: cancelToken,
  610. );
  611. //根据返回的结果,封装原始数据为Bean/Entity对象
  612. if (result.isSuccess) {
  613. //重新赋值data或list
  614. final json = result.getDataJson();
  615. var data = JobListSGEntity.fromJson(json!);
  616. //重新赋值data或list
  617. return result.convert<JobListSGEntity>(data: data);
  618. }
  619. return result.convert();
  620. }
  621. /// 根据ID获取主列表的Item数据,用于刷新Item
  622. Future<HttpResult<JobListSGEntity>> fetchJobListByIds(
  623. String? jobId, {
  624. CancelToken? cancelToken,
  625. }) async {
  626. //参数
  627. Map<String, String> params = {};
  628. params["cur_page"] = "1";
  629. params["page_size"] = "9999";
  630. if (!Utils.isEmpty(jobId)) {
  631. params["job_id"] = jobId!;
  632. }
  633. final result = await httpProvider.requestNetResult(
  634. ApiConstants.apiJobListTableSG,
  635. params: params,
  636. cancelToken: cancelToken,
  637. );
  638. //根据返回的结果,封装原始数据为Bean/Entity对象
  639. if (result.isSuccess) {
  640. //重新赋值data或list
  641. final json = result.getDataJson();
  642. var data = JobListSGEntity.fromJson(json!);
  643. //重新赋值data或list
  644. return result.convert<JobListSGEntity>(data: data);
  645. }
  646. return result.convert();
  647. }
  648. //用工请求的编辑详情(Job List)
  649. Future<HttpResult<JobListEditIndexSGEntity>> fetchJobListEditIndex(
  650. String? jobId, {
  651. CancelToken? cancelToken,
  652. }) async {
  653. Map<String, String> params = {};
  654. params['job_id'] = jobId ?? "";
  655. final result = await httpProvider.requestNetResult(
  656. ApiConstants.apiJobListEditIndexSG,
  657. params: params,
  658. isShowLoadingDialog: true,
  659. cancelToken: cancelToken,
  660. );
  661. //根据返回的结果,封装原始数据为Bean/Entity对象
  662. if (result.isSuccess) {
  663. //重新赋值data或list
  664. final json = result.getDataJson();
  665. var data = JobListEditIndexSGEntity.fromJson(json!);
  666. //重新赋值data或list
  667. return result.convert<JobListEditIndexSGEntity>(data: data);
  668. }
  669. return result.convert();
  670. }
  671. //用工请求的编辑提交(Job List)
  672. Future<HttpResult> editJobListSubmit(
  673. String? jobId,
  674. String? startTime,
  675. String? endTime,
  676. String? outletId,
  677. int sexLimit,
  678. String? maleLimit,
  679. String? femaleLimit,
  680. String? needNum,
  681. String? requestType,
  682. String? positionId,
  683. String? remark, {
  684. CancelToken? cancelToken,
  685. }) async {
  686. //参数
  687. Map<String, String> params = {};
  688. params['job_id'] = jobId ?? "";
  689. params['start_time'] = startTime ?? "";
  690. params['end_time'] = endTime ?? "";
  691. params['outlet_id'] = outletId ?? "";
  692. params['sex_limit'] = sexLimit.toString();
  693. if (sexLimit == 1) {
  694. params['male_limit'] = maleLimit ?? "0";
  695. params['female_limit'] = femaleLimit ?? "0";
  696. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString();
  697. } else {
  698. params['need_num'] = needNum ?? "0";
  699. }
  700. if (Utils.isNotEmpty(requestType)) {
  701. params['request_type'] = requestType ?? "";
  702. }
  703. if (Utils.isNotEmpty(positionId) && requestType == "1") {
  704. params['position_id'] = positionId ?? "";
  705. }
  706. if (Utils.isNotEmpty(remark)) {
  707. params['remark'] = remark ?? "";
  708. }
  709. final result = await httpProvider.requestNetResult(
  710. ApiConstants.apiJobListEditSubmitSG,
  711. method: HttpMethod.POST,
  712. params: params,
  713. networkDebounce: true,
  714. isShowLoadingDialog: true,
  715. cancelToken: cancelToken,
  716. );
  717. //根据返回的结果,封装原始数据为Bean/Entity对象
  718. if (result.isSuccess) {
  719. //重新赋值data或list
  720. return result.convert();
  721. }
  722. return result.convert();
  723. }
  724. //用工请求的取消(Job List)
  725. Future<HttpResult> cancelJobList(
  726. String? jobId, {
  727. CancelToken? cancelToken,
  728. }) async {
  729. //参数
  730. Map<String, String> params = {};
  731. params['job_id'] = jobId ?? "";
  732. final result = await httpProvider.requestNetResult(
  733. ApiConstants.apiJobListCancelSG,
  734. method: HttpMethod.POST,
  735. params: params,
  736. networkDebounce: true,
  737. isShowLoadingDialog: true,
  738. cancelToken: cancelToken,
  739. );
  740. //根据返回的结果,封装原始数据为Bean/Entity对象
  741. if (result.isSuccess) {
  742. //重新赋值data或list
  743. return result.convert();
  744. }
  745. return result.convert();
  746. }
  747. //用工请求的删除(Job List)
  748. Future<HttpResult> deleteJobList(
  749. String? jobId, {
  750. CancelToken? cancelToken,
  751. }) async {
  752. //参数
  753. Map<String, String> params = {};
  754. params['job_id'] = jobId ?? "";
  755. final result = await httpProvider.requestNetResult(
  756. ApiConstants.apiJobListDeleteSG,
  757. method: HttpMethod.POST,
  758. params: params,
  759. networkDebounce: true,
  760. isShowLoadingDialog: true,
  761. cancelToken: cancelToken,
  762. );
  763. //根据返回的结果,封装原始数据为Bean/Entity对象
  764. if (result.isSuccess) {
  765. //重新赋值data或list
  766. return result.convert();
  767. }
  768. return result.convert();
  769. }
  770. //用工请求的考勤确认(Job List)
  771. Future<HttpResult> confirmJobList(
  772. String? jobId, {
  773. CancelToken? cancelToken,
  774. }) async {
  775. //参数
  776. Map<String, String> params = {};
  777. params['job_id'] = jobId ?? "";
  778. final result = await httpProvider.requestNetResult(
  779. ApiConstants.apiJobListConfirmSG,
  780. method: HttpMethod.POST,
  781. params: params,
  782. networkDebounce: true,
  783. isShowLoadingDialog: true,
  784. cancelToken: cancelToken,
  785. );
  786. //根据返回的结果,封装原始数据为Bean/Entity对象
  787. if (result.isSuccess) {
  788. //重新赋值data或list
  789. return result.convert();
  790. }
  791. return result.convert();
  792. }
  793. // V2 - 新版的LabourRequest 改动
  794. /// 获取用工请求的筛选选项
  795. Future<HttpResult<LabourRequestIndexEntity>> fetchLabourRequestSGIndex({
  796. CancelToken? cancelToken,
  797. }) async {
  798. final result = await httpProvider.requestNetResult(
  799. ApiConstants.apiLabourRequestIndex,
  800. cancelToken: cancelToken,
  801. );
  802. //根据返回的结果,封装原始数据为Bean/Entity对象
  803. if (result.isSuccess) {
  804. //重新赋值data或list
  805. final json = result.getDataJson();
  806. var data = LabourRequestIndexEntity.fromJson(json!);
  807. //重新赋值data或list
  808. return result.convert<LabourRequestIndexEntity>(data: data);
  809. }
  810. return result.convert();
  811. }
  812. /// 获取用工请求的主列表
  813. Future<HttpResult<LabourRequestSGListEntity>> fetchLabourRequestSGList(
  814. String? keyword,
  815. String? startDate,
  816. String? endDate,
  817. String? statusId,
  818. String? departmentId, {
  819. required int curPage,
  820. CancelToken? cancelToken,
  821. }) async {
  822. //参数
  823. Map<String, String> params = {};
  824. params["cur_page"] = curPage.toString();
  825. params["page_size"] = "20";
  826. if (!Utils.isEmpty(keyword)) {
  827. params["job_title"] = keyword!;
  828. }
  829. if (!Utils.isEmpty(startDate)) {
  830. params["job_start"] = startDate!;
  831. }
  832. if (!Utils.isEmpty(endDate)) {
  833. params["job_end"] = endDate!;
  834. }
  835. if (!Utils.isEmpty(statusId)) {
  836. params["status"] = statusId!;
  837. }
  838. if (!Utils.isEmpty(departmentId)) {
  839. params["outlet_id"] = departmentId!;
  840. }
  841. final result = await httpProvider.requestNetResult(
  842. ApiConstants.apiLabourRequestList,
  843. params: params,
  844. cancelToken: cancelToken,
  845. );
  846. //根据返回的结果,封装原始数据为Bean/Entity对象
  847. if (result.isSuccess) {
  848. //重新赋值data或list
  849. final json = result.getDataJson();
  850. var data = LabourRequestSGListEntity.fromJson(json!);
  851. //重新赋值data或list
  852. return result.convert<LabourRequestSGListEntity>(data: data);
  853. }
  854. return result.convert();
  855. }
  856. /// 根据ID获取主列表的Item数据,用于刷新Item
  857. Future<HttpResult<LabourRequestSGListEntity>> fetchItemByRequestId(
  858. String? requestId, {
  859. CancelToken? cancelToken,
  860. }) async {
  861. //参数
  862. Map<String, String> params = {};
  863. params["cur_page"] = "1";
  864. params["page_size"] = "1";
  865. if (!Utils.isEmpty(requestId)) {
  866. params["request_id"] = requestId!;
  867. }
  868. final result = await httpProvider.requestNetResult(
  869. ApiConstants.apiLabourRequestList,
  870. params: params,
  871. isShowLoadingDialog: true,
  872. cancelToken: cancelToken,
  873. );
  874. //根据返回的结果,封装原始数据为Bean/Entity对象
  875. if (result.isSuccess) {
  876. //重新赋值data或list
  877. final json = result.getDataJson();
  878. var data = LabourRequestSGListEntity.fromJson(json!);
  879. //重新赋值data或list
  880. return result.convert<LabourRequestSGListEntity>(data: data);
  881. }
  882. return result.convert();
  883. }
  884. /// 删除工作标题的提交
  885. // Future<HttpResult> submitLabourRequestAdd(
  886. // String? jobTitleId,
  887. // String? startTime,
  888. // String? endTime,
  889. // String? repeatStart,
  890. // String? repeatEnd,
  891. // String? outletId,
  892. // int sexLimit,
  893. // String? maleLimit,
  894. // String? femaleLimit,
  895. // String? needNum,
  896. // String? requestType,
  897. // String? remark, {
  898. // CancelToken? cancelToken,
  899. // }) async {
  900. // //参数
  901. // Map<String, String> params = {};
  902. //
  903. // params['job_title_id'] = jobTitleId ?? "";
  904. // params['start_time'] = startTime ?? "";
  905. // params['end_time'] = endTime ?? "";
  906. // params['outlet_id'] = outletId ?? "";
  907. //
  908. // params['sex_limit'] = sexLimit.toString();
  909. //
  910. // if (sexLimit == 1) {
  911. // params['male_limit'] = maleLimit ?? "0";
  912. // params['female_limit'] = femaleLimit ?? "0";
  913. // // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  914. // } else {
  915. // params['need_num'] = needNum ?? "0";
  916. // }
  917. //
  918. // if (Utils.isNotEmpty(repeatStart)) {
  919. // params['repeat_start'] = repeatStart ?? "";
  920. // }
  921. //
  922. // if (Utils.isNotEmpty(repeatEnd)) {
  923. // params['repeat_end'] = repeatEnd ?? "";
  924. // }
  925. //
  926. // if (Utils.isNotEmpty(requestType)) {
  927. // params['request_type'] = requestType ?? "";
  928. // }
  929. //
  930. // if (Utils.isNotEmpty(remark)) {
  931. // params['remark'] = remark ?? "";
  932. // }
  933. //
  934. // final result = await httpProvider.requestNetResult(
  935. // ApiConstants.apiLabourRequestAddSubmitSG,
  936. // method: HttpMethod.POST,
  937. // params: params,
  938. // networkDebounce: true,
  939. // isShowLoadingDialog: true,
  940. // cancelToken: cancelToken,
  941. // );
  942. //
  943. // //根据返回的结果,封装原始数据为Bean/Entity对象
  944. // if (result.isSuccess) {
  945. // //重新赋值data或list
  946. // return result.convert();
  947. // }
  948. // return result.convert();
  949. // }
  950. /// 用工的编辑详情
  951. Future<HttpResult<LabourRequestSGEditIndexEntity>> fetchLabourRequestEditDetail(
  952. String? requestId, {
  953. bool isShowLoadingDialog = true,
  954. CancelToken? cancelToken,
  955. }) async {
  956. //参数
  957. Map<String, String> params = {};
  958. params['request_id'] = requestId ?? "";
  959. final result = await httpProvider.requestNetResult(
  960. ApiConstants.apiLabourRequestEditDetail,
  961. params: params,
  962. isShowLoadingDialog: isShowLoadingDialog,
  963. cancelToken: cancelToken,
  964. );
  965. //根据返回的结果,封装原始数据为Bean/Entity对象
  966. if (result.isSuccess) {
  967. //重新赋值data或list
  968. final json = result.getDataJson();
  969. var data = LabourRequestSGEditIndexEntity.fromJson(json!);
  970. //重新赋值data或list
  971. return result.convert<LabourRequestSGEditIndexEntity>(data: data);
  972. }
  973. return result.convert();
  974. }
  975. /// 编辑工作标题的提交
  976. Future<HttpResult> submitLabourRequestEdit(
  977. String? requestId,
  978. String? startTime,
  979. String? endTime,
  980. String? outletId,
  981. int sexLimit,
  982. String? maleLimit,
  983. String? femaleLimit,
  984. String? needNum,
  985. String? requestType,
  986. String? remark, {
  987. CancelToken? cancelToken,
  988. }) async {
  989. //参数
  990. Map<String, String> params = {};
  991. params['request_id'] = requestId ?? "";
  992. params['start_time'] = startTime ?? "";
  993. params['end_time'] = endTime ?? "";
  994. params['outlet_id'] = outletId ?? "";
  995. params['sex_limit'] = sexLimit.toString();
  996. if (sexLimit == 1) {
  997. params['male_limit'] = maleLimit ?? "0";
  998. params['female_limit'] = femaleLimit ?? "0";
  999. // params['need_num'] = (int.parse(maleLimit ?? "0") + int.parse(femaleLimit ?? "0")).toString(); //不传 need_num 字段
  1000. } else {
  1001. params['need_num'] = needNum ?? "0";
  1002. }
  1003. if (Utils.isNotEmpty(requestType)) {
  1004. params['request_type'] = requestType ?? "";
  1005. }
  1006. if (Utils.isNotEmpty(remark)) {
  1007. params['remark'] = remark ?? "";
  1008. }
  1009. final result = await httpProvider.requestNetResult(
  1010. ApiConstants.apiLabourRequestEditSubmit,
  1011. method: HttpMethod.POST,
  1012. params: params,
  1013. networkDebounce: true,
  1014. isShowLoadingDialog: true,
  1015. cancelToken: cancelToken,
  1016. );
  1017. //根据返回的结果,封装原始数据为Bean/Entity对象
  1018. if (result.isSuccess) {
  1019. //重新赋值data或list
  1020. return result.convert();
  1021. }
  1022. return result.convert();
  1023. }
  1024. /// 删除新加坡的用工请求
  1025. Future<HttpResult> deleteLabourRequestSG(
  1026. String? requestId, {
  1027. CancelToken? cancelToken,
  1028. }) async {
  1029. //参数
  1030. Map<String, String> params = {};
  1031. params['request_id'] = requestId ?? "";
  1032. final result = await httpProvider.requestNetResult(
  1033. ApiConstants.apiLabourRequestDelete,
  1034. method: HttpMethod.POST,
  1035. params: params,
  1036. networkDebounce: true,
  1037. isShowLoadingDialog: true,
  1038. cancelToken: cancelToken,
  1039. );
  1040. //根据返回的结果,封装原始数据为Bean/Entity对象
  1041. if (result.isSuccess) {
  1042. //重新赋值data或list
  1043. return result.convert();
  1044. }
  1045. return result.convert();
  1046. }
  1047. }