package com.malk.luyi.controller; import cn.hutool.json.JSONArray; 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.*; @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); } log.info("rsp:" + rsp); System.out.println("rsp:" + rsp); } return McR.success(); } @SneakyThrows @PostMapping("/JCpd") //集尘根据员工id判断今天能不能打卡 McR insetTHXM_TMER() { //获取所有人员 List dataList = (List) 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("是")) { //1222310842 rsp = dd.inset_hr_group("删除", Ehtid, "1222310842"); //如果能打卡,就把人员加入到考勤组 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); //1222310842 rsp = dd.inset_hr_group("新增", Ehtid, "1222310842"); } // 执行完加入,把校验状态改成 否 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); } 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(); } @SneakyThrows @PostMapping("/insetJie_Duan") //根据项目和机台信息维护阶段数据。 McR insetJie_Duan(HttpServletRequest request) { Map data = UtilServlet.getParamMap(request); String formInstanceId = data.get("formInstanceId").toString(); if (!formInstanceId.equals("")) { List dataList_XM = (List) ydClient.queryData(YDParam.builder() .appType("APP_X89Y00KKTG36B8JYGZVR") .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4") .formUuid("FORM-A6153EC780554425A1A7451548F9D405PMSN") .searchFieldJson(JSON.toJSONString(UtilMap.map("formInstanceId", formInstanceId))) .build(), YDConf.FORM_QUERY.retrieve_search_form).getData(); if (dataList_XM != null && dataList_XM.size() > 0) { for (Map formData_XM : dataList_XM) { System.out.println("dsfasdf:" + formData_XM.get("formInstanceId").toString()); if (formData_XM.get("formInstanceId").toString().equals(formInstanceId)) { String XMMC = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("textField_lx1iumdr")); String XMBH = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("textField_lx1irnyo")); String sdfa = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("tableField_lx1iumdu")); //textField_ly6lt3dm -> 111右套 JSONArray jsonArray = new JSONArray(sdfa); if (jsonArray != null && jsonArray.size() > 0) { for (int i = 0; i < jsonArray.size(); i++) { // 获取每个JSONObject JSONObject jsonObject = jsonArray.getJSONObject(i); // 从JSONObject中获取你需要的字段 String JTXX = (String) jsonObject.get("textField_ly6lt3dm"); if (!XMBH.equals("") && !XMBH.equals("") && !JTXX.equals("")) { List dataList = (List) ydClient.queryData(YDParam.builder() .appType("APP_X89Y00KKTG36B8JYGZVR") .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4") .formUuid("FORM-CA8ABC2353B94262BC02D4C5332273EEHRU2")//完成阶段配置 // .searchFieldJson(JSON.toJSONString(UtilMap.map("serialNumberField_lt1i52jt",data.get("XMBH").toString()))) .build(), YDConf.FORM_QUERY.retrieve_search_form).getData(); //循环阶段数据,并写入限制完成表 for (Map formData : dataList) { String JDMC = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lx31so5x"));//阶段名称 String LX = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lxy17mef"));//类型 String ZB = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxsaen1q"));//占比 String ZZB = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxsaen1r"));//占总比 String XH = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lx31so5r"));//序号 String ZZBZ = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxy17mee"));//#占总比值 String[] sdfassss = new String[]{String.valueOf(UtilMap.getMap(formData, "formData").get("departmentSelectField_lyy1hoyr_id"))}; String ZD = "textField_m00ovvk4, textField_m00ovvk3, textField_m00wsnjk, textField_lx31so5x, textField_lxy17mef, numberField_lxsaen1q, numberField_lxsaen1r, numberField_lx31so5r, numberField_lxy17mee, radioField_m00ovvk5, departmentSelectField_lyy1hoyr"; if (i>0 && (LX.equals("设计达成率") || LX.equals("电气达成率") || JDMC.equals("下单") || JDMC.equals("询价"))){ }else { String tquid = ydClient.operateData(YDParam.builder() .appType("APP_X89Y00KKTG36B8JYGZVR") .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4") .formUuid("FORM-9A3C0361CC6F43E2AEB6F66BA6B4F87DRHP5") .formDataJson(JSON.toJSONString(UtilMap.map(ZD, XMBH, XMMC, JTXX, JDMC, LX, ZB, ZZB, XH, ZZBZ, "否", sdfassss[0].toString())))//这里 .build(), YDConf.FORM_OPERATION.create).toString();//// } } } } } } } } } return McR.success(); } }