|
@@ -0,0 +1,173 @@
|
|
|
+package com.malk.luyi.controller;
|
|
|
+
|
|
|
+import cn.hutool.json.JSONObject;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
+import com.malk.delegate.McDelegate;
|
|
|
+import com.malk.server.aliwork.YDConf;
|
|
|
+import com.malk.server.aliwork.YDParam;
|
|
|
+import com.malk.server.common.McR;
|
|
|
+import com.malk.service.aliwork.YDClient;
|
|
|
+import com.malk.service.dingtalk.DDClient;
|
|
|
+import com.malk.utils.UtilMap;
|
|
|
+import com.malk.utils.UtilServlet;
|
|
|
+import lombok.SneakyThrows;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.web.bind.annotation.PostMapping;
|
|
|
+import org.springframework.web.bind.annotation.RequestBody;
|
|
|
+import org.springframework.web.bind.annotation.RequestMapping;
|
|
|
+import org.springframework.web.bind.annotation.RestController;
|
|
|
+
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
+import java.time.*;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+@Slf4j
|
|
|
+@RestController
|
|
|
+@RequestMapping()
|
|
|
+public class KSJCController {
|
|
|
+ @Autowired
|
|
|
+ private YDClient ydClient;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DDClient dd;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private McDelegate mcDelegate;
|
|
|
+ @SneakyThrows
|
|
|
+ @PostMapping("/JCKQZ")//集尘根据员工id获取所在考勤组
|
|
|
+ McR insetTHXM(HttpServletRequest request) {
|
|
|
+ Map data = UtilServlet.getParamMap(request);
|
|
|
+ String FormInstanceId=data.get("FormInstanceId").toString();
|
|
|
+ String UserId=data.get("UserId").toString();
|
|
|
+
|
|
|
+ if (UserId!="" &&FormInstanceId!="" ){
|
|
|
+ Map rsp = dd.getusergroup( UserId);
|
|
|
+ System.out.println("rsp:"+UserId+":"+FormInstanceId);
|
|
|
+ System.out.println("rsp:"+rsp);
|
|
|
+ if (rsp!=null ){
|
|
|
+ JSONObject jsonObject = new JSONObject(rsp);
|
|
|
+ String groupId = jsonObject.get("group_id").toString();
|
|
|
+ String name = jsonObject.get("name").toString();
|
|
|
+ String FORMID="textField_lyo89dyq, textField_lyo89dyr";
|
|
|
+ //获取到考勤组名称和考勤组id后,写入到宜搭
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .appType("APP_X89Y00KKTG36B8JYGZVR")
|
|
|
+ .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
|
|
|
+ .formInstanceId(String.valueOf(FormInstanceId))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(UtilMap.map(FORMID,name,groupId )))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update).toString();
|
|
|
+ }
|
|
|
+ log.info("rsp:"+rsp);
|
|
|
+ System.out.println("rsp:"+rsp);
|
|
|
+ }
|
|
|
+ return McR.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @PostMapping("/JCpd")//集尘根据员工id判断今天能不能打卡
|
|
|
+ McR insetTHXM_TMER() {
|
|
|
+ //获取所有人员
|
|
|
+ List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
+ .appType("APP_X89Y00KKTG36B8JYGZVR")
|
|
|
+ .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
|
|
|
+ .formUuid("FORM-1F9CC98764D84B64AB1B6A04BEB8CA2BIPQ0")
|
|
|
+ // .searchFieldJson(JSON.toJSONString(UtilMap.map("serialNumberField_lt1i52jt",data.get("XMBH").toString())))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
|
|
|
+ //循环获得人员
|
|
|
+ for (Map formData : dataList) {
|
|
|
+ //人员-字段值
|
|
|
+ String FormInstanceId = String.valueOf(formData.get("formInstanceId") );//实例id
|
|
|
+ String if_pd = String.valueOf(UtilMap.getMap(formData, "formData").get("selectField_lyo6e0gi"));//是否能打卡
|
|
|
+ String Ehtid = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lyo8p27i"));//考勤人ID
|
|
|
+ String grup_id = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lyo89dyr"));//所在考勤组ID
|
|
|
+ Map rsp=new HashMap<>();//用来接反馈值
|
|
|
+ if (if_pd.equals("否")){//如果为否,校验:1.昨天是否请假 2.昨天是否不用打卡
|
|
|
+ // 判断昨天是否请假
|
|
|
+ LocalDate yesterday = LocalDate.now().minusDays(1);
|
|
|
+ // 构造昨天7点00分的时间
|
|
|
+ LocalTime time = LocalTime.of(7, 0);
|
|
|
+ //将日期和时间结合
|
|
|
+ LocalDateTime yesterdaySevenPm = yesterday.atTime(time);
|
|
|
+ // 假设我们使用的是系统默认时区,这里为了演示明确转换到UTC,
|
|
|
+ // 但在计算时间戳时,如果不指定时区,默认会使用JVM的时区
|
|
|
+ ZonedDateTime zdt = yesterdaySevenPm.atZone(ZoneId.systemDefault());
|
|
|
+ // 转换为时间戳(毫秒)
|
|
|
+ long timestamp_up = zdt.toInstant().toEpochMilli();
|
|
|
+ yesterday = LocalDate.now().minusDays(1);
|
|
|
+ time = LocalTime.of(23, 0);
|
|
|
+ yesterdaySevenPm = yesterday.atTime(time);
|
|
|
+ zdt = yesterdaySevenPm.atZone(ZoneId.systemDefault());
|
|
|
+ long timestamp_dp = zdt.toInstant().toEpochMilli();
|
|
|
+ rsp = dd.getleavestatus(Ehtid,timestamp_up,timestamp_dp);//获得请假请框
|
|
|
+ JSONObject jsonObject = new JSONObject(rsp);
|
|
|
+ String leave_status = jsonObject.get("leave_status").toString();
|
|
|
+ if(!leave_status.equals("[]") && leave_status!=null){
|
|
|
+ if_pd="是";
|
|
|
+ }
|
|
|
+ //判断昨天是否考勤组的休息日
|
|
|
+ rsp=dd.getgroupquery(Ehtid,grup_id);
|
|
|
+ jsonObject = new JSONObject(rsp);
|
|
|
+ if (!jsonObject.get("work_day_list").toString().equals("[]") && jsonObject.get("work_day_list").toString()!=null){//如果是固定班次就判断昨天是不是休息日
|
|
|
+ // 使用逗号分割字符串,得到元素字符串数组
|
|
|
+ String[] elements = jsonObject.get("work_day_list").toString().split(",");
|
|
|
+ LocalDate today = LocalDate.now();
|
|
|
+ LocalDate yesterday_dak = today.minusDays(1);
|
|
|
+ DayOfWeek dayOfWeekYesterday = yesterday_dak.getDayOfWeek();
|
|
|
+ int nums=10 ;
|
|
|
+ switch (dayOfWeekYesterday) {
|
|
|
+ case SUNDAY : nums= 0;break;
|
|
|
+ case MONDAY : nums= 1;break;
|
|
|
+ case TUESDAY : nums= 2;break;
|
|
|
+ case WEDNESDAY: nums= 3;break;
|
|
|
+ case THURSDAY : nums=4;break;
|
|
|
+ case FRIDAY : nums= 5;break;
|
|
|
+ case SATURDAY : nums= 6;break;
|
|
|
+ };
|
|
|
+ if (nums!=10) {
|
|
|
+ if (elements[nums].equals("[0")|| elements[nums].equals("0") || elements[nums].equals("0]")) {
|
|
|
+ if_pd = "是";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ System.out.println("work_day_list:"+jsonObject.get("work_day_list").toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (if_pd.equals("是")){
|
|
|
+ //如果能打卡,就把人员加入到考勤组
|
|
|
+ rsp = dd.inset_hr_group("新增",Ehtid,grup_id);
|
|
|
+ JSONObject jsonObject = new JSONObject(rsp);
|
|
|
+
|
|
|
+ }
|
|
|
+ if (if_pd.equals("否")){
|
|
|
+ //如果不能打卡,就把人员踢出考勤组
|
|
|
+ rsp = dd.inset_hr_group("删除",Ehtid,grup_id);
|
|
|
+ }
|
|
|
+ // 执行完加入,把校验状态改成 否
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .appType("APP_X89Y00KKTG36B8JYGZVR")
|
|
|
+ .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
|
|
|
+ .formInstanceId(String.valueOf(FormInstanceId))
|
|
|
+ .updateFormDataJson(JSON.toJSONString(UtilMap.map("selectField_lyo6e0gi","否" )))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update).toString();
|
|
|
+ }
|
|
|
+ return McR.success();
|
|
|
+ }
|
|
|
+
|
|
|
+ @SneakyThrows
|
|
|
+ @PostMapping("/insetHR_kaoqin")//集尘根据员工id获取所在考勤组
|
|
|
+ McR insetHR_kaoqin(HttpServletRequest request) {
|
|
|
+ Map data = UtilServlet.getParamMap(request);
|
|
|
+ String Ehtid=data.get("Ehtid").toString();
|
|
|
+ String grup_id=data.get("grup_id").toString();
|
|
|
+ Map rsp = dd.inset_hr_group("新增",Ehtid,grup_id);
|
|
|
+ JSONObject jsonObject = new JSONObject(rsp);
|
|
|
+ return McR.success();
|
|
|
+ }
|
|
|
+
|
|
|
+}
|