123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- package com.malk.xinwei.controller;
- import cn.hutool.core.util.ObjectUtil;
- import com.alibaba.fastjson.JSON;
- import com.malk.server.common.McR;
- import com.malk.server.dingtalk.DDConf;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.dingtalk.DDClient;
- import com.malk.service.dingtalk.DDClient_New;
- import com.malk.service.dingtalk.DDService;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.EnableAsync;
- import org.springframework.web.bind.annotation.*;
- import java.util.*;
- /**
- * 错误抛出与拦截详见 CatchException
- */
- @Slf4j
- @RestController
- @RequestMapping("/xinwei")
- @EnableAsync
- public class XinWeiController {
- @Autowired
- private DDClient ddClient;
- @Autowired
- private DDConf ddConf;
- @Autowired
- private DDService ddService;
- /**** 心玮服务 ****/
- @PostMapping("validate")
- public McR validateLeave(@RequestBody Map<String, String> param) {
- String proId = param.get("processInstanceId");
- List<Map> compList = (List<Map>) (ddClient.queryProcessInstanceId(proId)).get("form_component_values");
- String type = String.valueOf(compList.stream().filter(item -> item.get("component_type").equals("DDHolidayField")).findAny().get().get("value"));
- log.info("余额校验请求入参: {}, {}", param, type);
- // 23.01.11 取消调休对于的年假限制
- if (type.contains("企业福利假")) {
- Map<String, String> leaveType = new HashMap();
- ddClient.queryVacationTypeList(ddConf.getOperator(), true).forEach(item -> {
- if (Arrays.asList("调休", "年假").contains(String.valueOf(item.get("leave_name")))) {
- leaveType.put(String.valueOf(item.get("leave_name")), String.valueOf(item.get("leave_code")));
- }
- });
- String message = "";
- Map nianjia = null;
- Map tiaoxiu = null;
- float budget = Float.valueOf(String.valueOf(JSON.parseArray(type).get(2)));
- // 优先级: 调休 > 年假 > 企业福利假 | prd 23.08.22 福利假只要存在4小时以上调休, 或年假余额大于半天以上, 就不可申请
- tiaoxiu = ddService.queryVacationQuota_balance(ddConf.getOperator(), leaveType.get("调休"), param.get("userId"), 0, 50);
- if (ObjectUtil.isNotNull(tiaoxiu)) {
- float balance = (float) tiaoxiu.get("balance");
- // if (budget * 8.0f <= balance) {
- if (balance >= 4.0f) {
- message = "调休剩余" + balance + tiaoxiu.get("unit");
- }
- }
- if (type.contains("企业福利假") && StringUtils.isBlank(message)) {
- nianjia = ddService.queryVacationQuota_balance(ddConf.getOperator(), leaveType.get("年假"), param.get("userId"), 0, 50);
- if (ObjectUtil.isNotNull(nianjia)) {
- float balance = (float) nianjia.get("balance");
- // if (budget <= balance) {
- if (balance >= 0.5f) {
- message = "年假剩余" + balance + nianjia.get("unit");
- }
- }
- }
- log.info("查询假期规则列表, {}, {}, {}, {}", type, message, nianjia, tiaoxiu);
- if (StringUtils.isNotBlank(message)) {
- ddService.terminateRunningApprove_async(proId, true, message + ", 请优先使用", "", param.get("userId"));
- }
- }
- return McR.success();
- }
- @Autowired
- private YDClient ydClient;
- @Autowired
- private DDClient_New ddClient_new;
- @GetMapping("sync")
- public McR sync() {
- // 宜搭的测试
- // ArrayList list = new ArrayList();
- //
- // YDParam ydParam = YDParam.builder().
- // appType("APP_BT0NLNNL1O1ZQD1JMJCQ")
- // .systemToken("16A6629115S3L0K6C9E7Y91UV9A23HV4J008LJ8")
- // .formUuid("FORM-IS866QA1UIC7CJIA6U0IJ95126GR21AE7SFDLG")
- // .build();
- // Map rsp = ydClient.queryData(YDConf.API_FORM_QUERY_DATA, ydParam);
- //
- // ddClient.queryProcessInstanceId("cNqDrkYPQNKXIZDjUvKoEA07901671162044");
- // ddClient.cancelRunningApprove("0953580166290444112", "cNqDrkYPQNKXIZDjUvKoEA07901671162044");
- // return McR.success(rsp.get("data"));
- // ddClient_new.createTBTask("395639364223285514", "调休剩余9.9天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("395639364223285514"), null, null, false, 20, null);
- ddClient_new.createTBTask("010160171416764428", "调休剩余5.6天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("010160171416764428"), null, null, false, 20, null);
- ddClient_new.createTBTask("16282107913674491", "调休剩余2.0天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("16282107913674491"), null, null, false, 20, null);
- ddClient_new.createTBTask("16296825472051479", "调休剩余4.6天, 请优先使用", "您的请假已被系统撤销", new Date().getTime() + 16000, Arrays.asList("16296825472051479"), null, null, false, 20, null);
- return McR.success();
- }
- }
|