KSJCController.java 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264
  1. package com.malk.luyi.controller;
  2. import cn.hutool.json.JSONArray;
  3. import cn.hutool.json.JSONObject;
  4. import com.alibaba.fastjson.JSON;
  5. import com.malk.delegate.McDelegate;
  6. import com.malk.server.aliwork.YDConf;
  7. import com.malk.server.aliwork.YDParam;
  8. import com.malk.server.common.McR;
  9. import com.malk.service.aliwork.YDClient;
  10. import com.malk.service.dingtalk.DDClient;
  11. import com.malk.utils.UtilMap;
  12. import com.malk.utils.UtilServlet;
  13. import lombok.SneakyThrows;
  14. import lombok.extern.slf4j.Slf4j;
  15. import org.springframework.beans.factory.annotation.Autowired;
  16. import org.springframework.web.bind.annotation.PostMapping;
  17. import org.springframework.web.bind.annotation.RequestBody;
  18. import org.springframework.web.bind.annotation.RequestMapping;
  19. import org.springframework.web.bind.annotation.RestController;
  20. import javax.servlet.http.HttpServletRequest;
  21. import java.time.*;
  22. import java.util.*;
  23. @Slf4j
  24. @RestController
  25. @RequestMapping()
  26. public class KSJCController {
  27. @Autowired
  28. private YDClient ydClient;
  29. @Autowired
  30. private DDClient dd;
  31. @Autowired
  32. private McDelegate mcDelegate;
  33. @SneakyThrows
  34. @PostMapping("/JCKQZ")
  35. //集尘根据员工id获取所在考勤组
  36. McR insetTHXM(HttpServletRequest request) {
  37. Map data = UtilServlet.getParamMap(request);
  38. String FormInstanceId = data.get("FormInstanceId").toString();
  39. String UserId = data.get("UserId").toString();
  40. if (UserId != "" && FormInstanceId != "") {
  41. Map rsp = dd.getusergroup(UserId);
  42. System.out.println("rsp:" + UserId + ":" + FormInstanceId);
  43. System.out.println("rsp:" + rsp);
  44. if (rsp != null) {
  45. JSONObject jsonObject = new JSONObject(rsp);
  46. String groupId = jsonObject.get("group_id").toString();
  47. String name = jsonObject.get("name").toString();
  48. String FORMID = "textField_lyo89dyq, textField_lyo89dyr";
  49. //获取到考勤组名称和考勤组id后,写入到宜搭
  50. ydClient.operateData(YDParam.builder()
  51. .appType("APP_X89Y00KKTG36B8JYGZVR")
  52. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  53. .formInstanceId(String.valueOf(FormInstanceId))
  54. .updateFormDataJson(JSON.toJSONString(UtilMap.map(FORMID, name, groupId)))
  55. .build(), YDConf.FORM_OPERATION.update);
  56. }
  57. log.info("rsp:" + rsp);
  58. System.out.println("rsp:" + rsp);
  59. }
  60. return McR.success();
  61. }
  62. @SneakyThrows
  63. @PostMapping("/JCpd")
  64. //集尘根据员工id判断今天能不能打卡
  65. McR insetTHXM_TMER() {
  66. //获取所有人员
  67. List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
  68. .appType("APP_X89Y00KKTG36B8JYGZVR")
  69. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  70. .formUuid("FORM-1F9CC98764D84B64AB1B6A04BEB8CA2BIPQ0")
  71. // .searchFieldJson(JSON.toJSONString(UtilMap.map("serialNumberField_lt1i52jt",data.get("XMBH").toString())))
  72. .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
  73. //循环获得人员
  74. for (Map formData : dataList) {
  75. //人员-字段值
  76. String FormInstanceId = String.valueOf(formData.get("formInstanceId"));//实例id
  77. String if_pd = String.valueOf(UtilMap.getMap(formData, "formData").get("selectField_lyo6e0gi"));//是否能打卡
  78. String Ehtid = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lyo8p27i"));//考勤人ID
  79. String grup_id = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lyo89dyr"));//所在考勤组ID
  80. Map rsp = new HashMap<>();//用来接反馈值
  81. if (if_pd.equals("否")) {//如果为否,校验:1.昨天是否请假 2.昨天是否不用打卡
  82. // 判断昨天是否请假
  83. LocalDate yesterday = LocalDate.now().minusDays(1);
  84. // 构造昨天7点00分的时间
  85. LocalTime time = LocalTime.of(7, 0);
  86. //将日期和时间结合
  87. LocalDateTime yesterdaySevenPm = yesterday.atTime(time);
  88. // 假设我们使用的是系统默认时区,这里为了演示明确转换到UTC,
  89. // 但在计算时间戳时,如果不指定时区,默认会使用JVM的时区
  90. ZonedDateTime zdt = yesterdaySevenPm.atZone(ZoneId.systemDefault());
  91. // 转换为时间戳(毫秒)
  92. long timestamp_up = zdt.toInstant().toEpochMilli();
  93. yesterday = LocalDate.now().minusDays(1);
  94. time = LocalTime.of(23, 0);
  95. yesterdaySevenPm = yesterday.atTime(time);
  96. zdt = yesterdaySevenPm.atZone(ZoneId.systemDefault());
  97. long timestamp_dp = zdt.toInstant().toEpochMilli();
  98. rsp = dd.getleavestatus(Ehtid, timestamp_up, timestamp_dp);//获得请假请框
  99. JSONObject jsonObject = new JSONObject(rsp);
  100. String leave_status = jsonObject.get("leave_status").toString();
  101. if (!leave_status.equals("[]") && leave_status != null) {
  102. if_pd = "是";
  103. }
  104. //判断昨天是否考勤组的休息日
  105. rsp = dd.getgroupquery(Ehtid, grup_id);
  106. jsonObject = new JSONObject(rsp);
  107. if (!jsonObject.get("work_day_list").toString().equals("[]") && jsonObject.get("work_day_list").toString() != null) {//如果是固定班次就判断昨天是不是休息日
  108. // 使用逗号分割字符串,得到元素字符串数组
  109. String[] elements = jsonObject.get("work_day_list").toString().split(",");
  110. LocalDate today = LocalDate.now();
  111. LocalDate yesterday_dak = today.minusDays(1);
  112. DayOfWeek dayOfWeekYesterday = yesterday_dak.getDayOfWeek();
  113. int nums = 10;
  114. switch (dayOfWeekYesterday) {
  115. case SUNDAY:
  116. nums = 0;
  117. break;
  118. case MONDAY:
  119. nums = 1;
  120. break;
  121. case TUESDAY:
  122. nums = 2;
  123. break;
  124. case WEDNESDAY:
  125. nums = 3;
  126. break;
  127. case THURSDAY:
  128. nums = 4;
  129. break;
  130. case FRIDAY:
  131. nums = 5;
  132. break;
  133. case SATURDAY:
  134. nums = 6;
  135. break;
  136. }
  137. ;
  138. if (nums != 10) {
  139. if (elements[nums].equals("[0") || elements[nums].equals("0") || elements[nums].equals("0]")) {
  140. if_pd = "是";
  141. }
  142. }
  143. }
  144. System.out.println("work_day_list:" + jsonObject.get("work_day_list").toString());
  145. }
  146. if (if_pd.equals("是")) {
  147. //1222310842
  148. rsp = dd.inset_hr_group("删除", Ehtid, "1222310842");
  149. //如果能打卡,就把人员加入到考勤组
  150. rsp = dd.inset_hr_group("新增", Ehtid, grup_id);
  151. JSONObject jsonObject = new JSONObject(rsp);
  152. }
  153. if (if_pd.equals("否")) {
  154. //如果不能打卡,就把人员踢出考勤组
  155. rsp = dd.inset_hr_group("删除", Ehtid, grup_id);
  156. //1222310842
  157. rsp = dd.inset_hr_group("新增", Ehtid, "1222310842");
  158. }
  159. // 执行完加入,把校验状态改成 否
  160. ydClient.operateData(YDParam.builder()
  161. .appType("APP_X89Y00KKTG36B8JYGZVR")
  162. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  163. .formInstanceId(String.valueOf(FormInstanceId))
  164. .updateFormDataJson(JSON.toJSONString(UtilMap.map("selectField_lyo6e0gi", "否")))
  165. .build(), YDConf.FORM_OPERATION.update);
  166. }
  167. return McR.success();
  168. }
  169. @SneakyThrows
  170. @PostMapping("/insetHR_kaoqin")
  171. //集尘根据员工id获取所在考勤组
  172. McR insetHR_kaoqin(HttpServletRequest request) {
  173. Map data = UtilServlet.getParamMap(request);
  174. String Ehtid = data.get("Ehtid").toString();
  175. String grup_id = data.get("grup_id").toString();
  176. Map rsp = dd.inset_hr_group("新增", Ehtid, grup_id);
  177. JSONObject jsonObject = new JSONObject(rsp);
  178. return McR.success();
  179. }
  180. @SneakyThrows
  181. @PostMapping("/insetJie_Duan")
  182. //根据项目和机台信息维护阶段数据。
  183. McR insetJie_Duan(HttpServletRequest request) {
  184. Map data = UtilServlet.getParamMap(request);
  185. String formInstanceId = data.get("formInstanceId").toString();
  186. if (!formInstanceId.equals("")) {
  187. List<Map> dataList_XM = (List<Map>) ydClient.queryData(YDParam.builder()
  188. .appType("APP_X89Y00KKTG36B8JYGZVR")
  189. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  190. .formUuid("FORM-A6153EC780554425A1A7451548F9D405PMSN")
  191. .searchFieldJson(JSON.toJSONString(UtilMap.map("formInstanceId", formInstanceId)))
  192. .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
  193. if (dataList_XM != null && dataList_XM.size() > 0) {
  194. for (Map formData_XM : dataList_XM) {
  195. System.out.println("dsfasdf:" + formData_XM.get("formInstanceId").toString());
  196. if (formData_XM.get("formInstanceId").toString().equals(formInstanceId)) {
  197. String XMMC = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("textField_lx1iumdr"));
  198. String XMBH = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("textField_lx1irnyo"));
  199. String sdfa = String.valueOf(UtilMap.getMap(formData_XM, "formData").get("tableField_lx1iumdu")); //textField_ly6lt3dm -> 111右套
  200. JSONArray jsonArray = new JSONArray(sdfa);
  201. if (jsonArray != null && jsonArray.size() > 0) {
  202. for (int i = 0; i < jsonArray.size(); i++) {
  203. // 获取每个JSONObject
  204. JSONObject jsonObject = jsonArray.getJSONObject(i);
  205. // 从JSONObject中获取你需要的字段
  206. String JTXX = (String) jsonObject.get("textField_ly6lt3dm");
  207. if (!XMBH.equals("") && !XMBH.equals("") && !JTXX.equals("")) {
  208. List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
  209. .appType("APP_X89Y00KKTG36B8JYGZVR")
  210. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  211. .formUuid("FORM-CA8ABC2353B94262BC02D4C5332273EEHRU2")//完成阶段配置
  212. // .searchFieldJson(JSON.toJSONString(UtilMap.map("serialNumberField_lt1i52jt",data.get("XMBH").toString())))
  213. .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
  214. //循环阶段数据,并写入限制完成表
  215. for (Map formData : dataList) {
  216. String JDMC = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lx31so5x"));//阶段名称
  217. String LX = String.valueOf(UtilMap.getMap(formData, "formData").get("textField_lxy17mef"));//类型
  218. String ZB = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxsaen1q"));//占比
  219. String ZZB = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxsaen1r"));//占总比
  220. String XH = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lx31so5r"));//序号
  221. String ZZBZ = String.valueOf(UtilMap.getMap(formData, "formData").get("numberField_lxy17mee"));//#占总比值
  222. String[] sdfassss = new String[]{String.valueOf(UtilMap.getMap(formData, "formData").get("departmentSelectField_lyy1hoyr_id"))};
  223. String ZD = "textField_m00ovvk4, textField_m00ovvk3, textField_m00wsnjk, textField_lx31so5x, textField_lxy17mef, numberField_lxsaen1q, numberField_lxsaen1r, numberField_lx31so5r, numberField_lxy17mee, radioField_m00ovvk5, departmentSelectField_lyy1hoyr";
  224. if (i>0 && (LX.equals("设计达成率") || LX.equals("电气达成率") || JDMC.equals("下单") || JDMC.equals("询价"))){
  225. }else {
  226. String tquid = ydClient.operateData(YDParam.builder()
  227. .appType("APP_X89Y00KKTG36B8JYGZVR")
  228. .systemToken("QIA66091HJPLRHM3AUFJLCN24CUP2VNMO41XLW4")
  229. .formUuid("FORM-9A3C0361CC6F43E2AEB6F66BA6B4F87DRHP5")
  230. .formDataJson(JSON.toJSONString(UtilMap.map(ZD, XMBH, XMMC, JTXX, JDMC, LX, ZB, ZZB, XH, ZZBZ, "否", sdfassss[0].toString())))//这里
  231. .build(), YDConf.FORM_OPERATION.create).toString();////
  232. }
  233. }
  234. }
  235. }
  236. }
  237. }
  238. }
  239. }
  240. }
  241. return McR.success();
  242. }
  243. }