XinWeiController.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package com.malk.xinwei.controller;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.malk.server.common.McR;
  5. import com.malk.server.dingtalk.DDConf;
  6. import com.malk.service.aliwork.YDClient;
  7. import com.malk.service.dingtalk.DDClient;
  8. import com.malk.service.dingtalk.DDClient_New;
  9. import com.malk.service.dingtalk.DDService;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.apache.commons.lang3.StringUtils;
  12. import org.springframework.beans.factory.annotation.Autowired;
  13. import org.springframework.scheduling.annotation.EnableAsync;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.util.*;
  16. /**
  17. * 错误抛出与拦截详见 CatchException
  18. */
  19. @Slf4j
  20. @RestController
  21. @RequestMapping("/xinwei")
  22. @EnableAsync
  23. public class XinWeiController {
  24. @Autowired
  25. private DDClient ddClient;
  26. @Autowired
  27. private DDConf ddConf;
  28. @Autowired
  29. private DDService ddService;
  30. /**** 心玮服务 ****/
  31. @PostMapping("validate")
  32. public McR validateLeave(@RequestBody Map<String, String> param) {
  33. String proId = param.get("processInstanceId");
  34. List<Map> compList = (List<Map>) (ddClient.queryProcessInstanceId(proId)).get("form_component_values");
  35. String type = String.valueOf(compList.stream().filter(item -> item.get("component_type").equals("DDHolidayField")).findAny().get().get("value"));
  36. log.info("余额校验请求入参: {}, {}", param, type);
  37. // 23.01.11 取消调休对于的年假限制
  38. if (type.contains("企业福利假")) {
  39. Map<String, String> leaveType = new HashMap();
  40. ddClient.queryVacationTypeList(ddConf.getOperator(), true).forEach(item -> {
  41. if (Arrays.asList("调休", "年假").contains(String.valueOf(item.get("leave_name")))) {
  42. leaveType.put(String.valueOf(item.get("leave_name")), String.valueOf(item.get("leave_code")));
  43. }
  44. });
  45. String message = "";
  46. Map nianjia = null;
  47. Map tiaoxiu = null;
  48. float budget = Float.valueOf(String.valueOf(JSON.parseArray(type).get(2)));
  49. // 优先级: 调休 > 年假 > 企业福利假 | prd 23.08.22 福利假只要存在4小时以上调休, 或年假余额大于半天以上, 就不可申请
  50. tiaoxiu = ddService.queryVacationQuota_balance(ddConf.getOperator(), leaveType.get("调休"), param.get("userId"), 0, 50);
  51. if (ObjectUtil.isNotNull(tiaoxiu)) {
  52. float balance = (float) tiaoxiu.get("balance");
  53. // if (budget * 8.0f <= balance) {
  54. if (balance >= 4.0f) {
  55. message = "调休剩余" + balance + tiaoxiu.get("unit");
  56. }
  57. }
  58. if (type.contains("企业福利假") && StringUtils.isBlank(message)) {
  59. nianjia = ddService.queryVacationQuota_balance(ddConf.getOperator(), leaveType.get("年假"), param.get("userId"), 0, 50);
  60. if (ObjectUtil.isNotNull(nianjia)) {
  61. float balance = (float) nianjia.get("balance");
  62. // if (budget <= balance) {
  63. if (balance >= 0.5f) {
  64. message = "年假剩余" + balance + nianjia.get("unit");
  65. }
  66. }
  67. }
  68. log.info("查询假期规则列表, {}, {}, {}, {}", type, message, nianjia, tiaoxiu);
  69. if (StringUtils.isNotBlank(message)) {
  70. ddService.terminateRunningApprove_async(proId, true, message + ", 请优先使用", "", param.get("userId"));
  71. }
  72. }
  73. return McR.success();
  74. }
  75. @Autowired
  76. private YDClient ydClient;
  77. @Autowired
  78. private DDClient_New ddClient_new;
  79. @GetMapping("sync")
  80. public McR sync() {
  81. // 宜搭的测试
  82. // ArrayList list = new ArrayList();
  83. //
  84. // YDParam ydParam = YDParam.builder().
  85. // appType("APP_BT0NLNNL1O1ZQD1JMJCQ")
  86. // .systemToken("16A6629115S3L0K6C9E7Y91UV9A23HV4J008LJ8")
  87. // .formUuid("FORM-IS866QA1UIC7CJIA6U0IJ95126GR21AE7SFDLG")
  88. // .build();
  89. // Map rsp = ydClient.queryData(YDConf.API_FORM_QUERY_DATA, ydParam);
  90. //
  91. // ddClient.queryProcessInstanceId("cNqDrkYPQNKXIZDjUvKoEA07901671162044");
  92. // ddClient.cancelRunningApprove("0953580166290444112", "cNqDrkYPQNKXIZDjUvKoEA07901671162044");
  93. // return McR.success(rsp.get("data"));
  94. // ddClient_new.createTBTask("395639364223285514", "调休剩余9.9天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("395639364223285514"), null, null, false, 20, null);
  95. ddClient_new.createTBTask("010160171416764428", "调休剩余5.6天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("010160171416764428"), null, null, false, 20, null);
  96. ddClient_new.createTBTask("16282107913674491", "调休剩余2.0天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("16282107913674491"), null, null, false, 20, null);
  97. ddClient_new.createTBTask("16296825472051479", "调休剩余4.6天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("16296825472051479"), null, null, false, 20, null);
  98. return McR.success();
  99. }
  100. }