SDSController.java 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. package com.malk.suodisi.controller;
  2. import cn.hutool.core.util.ObjectUtil;
  3. import com.alibaba.fastjson.JSON;
  4. import com.malk.server.aliwork.YDConf;
  5. import com.malk.server.aliwork.YDParam;
  6. import com.malk.server.common.McException;
  7. import com.malk.server.dingtalk.DDConf;
  8. import com.malk.service.aliwork.YDClient;
  9. import com.malk.utils.UtilServlet;
  10. import lombok.extern.slf4j.Slf4j;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.web.bind.annotation.PostMapping;
  13. import org.springframework.web.bind.annotation.RequestMapping;
  14. import org.springframework.web.bind.annotation.RestController;
  15. import javax.servlet.http.HttpServletRequest;
  16. import java.util.*;
  17. /**
  18. * 错误抛出与拦截详见 CatchException
  19. */
  20. @Slf4j
  21. @RestController
  22. @RequestMapping("/suodisi")
  23. public class SDSController {
  24. @Autowired
  25. private YDClient ydClient;
  26. @Autowired
  27. private DDConf ddConf;
  28. /**
  29. * 动态审批人
  30. */
  31. @PostMapping("sds/test")
  32. List<String> sdsTest(HttpServletRequest request) {
  33. Map param = UtilServlet.getParamMap(request);
  34. if (true) {
  35. return Arrays.asList(ddConf.getOperator());
  36. }
  37. McException.assertParamException_Null(param, "compId", "BusinessType");
  38. Map condition = new HashMap();
  39. String compId = param.get("compId").toString();
  40. //数据条件参数
  41. condition.put("textField_lisbeacj", param.get("BusinessType"));
  42. condition.put("selectField_lisbeack", param.get("City"));
  43. condition.put("selectField_lisbeacm", param.get("CompanyCode"));
  44. //宜搭参数赋值
  45. YDParam ydParam = YDParam.builder()
  46. .formUuid("FORM-PR8667D1QWKB5AYJEKDJ18IKE6IE3JUNDBSIL2")
  47. .searchFieldJson(JSON.toJSONString(condition))
  48. .build();
  49. List<Map> list = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  50. return emailList(list, ydParam, compId);
  51. }
  52. //获取人员ID的公用方法
  53. List<String> emailList(List<Map> list, YDParam ydParam, String ProcessCoding) {
  54. List<String> userIds = new ArrayList<>();
  55. for (Map row : list) {
  56. Map mailCondition = new HashMap();
  57. Map formData = (Map) row.get("formData");
  58. //String mail1 = String.valueOf(formData.getDefault("textField_lisbeacp"));
  59. String mail1 = String.valueOf(formData.get(ProcessCoding));
  60. for (String mail : mail1.split(";#")) {
  61. if (mail.contains("@")) {
  62. mailCondition.put("textField_lg22sfep", mail);
  63. ydParam.setFormUuid("FORM-MFA66S91RAO8YAB1CUTCED77NK9133TR5XQEL8");
  64. ydParam.setSearchFieldJson(JSON.toJSONString(mailCondition));
  65. //调用宜搭接口
  66. List<Map> users = (List<Map>) ydClient.queryData(ydParam, YDConf.FORM_QUERY.retrieve_search_form).getData();
  67. if (users.size() > 0) {
  68. Map userData = (Map) users.get(0).get("formData");
  69. List<String> userId = (List<String>) userData.get("employeeField_lisbbxca_id");
  70. userIds.addAll(userId);
  71. }
  72. }
  73. }
  74. }
  75. return userIds;
  76. }
  77. /**
  78. * 回写招聘子表
  79. */
  80. @PostMapping("sds/update")
  81. Map sdsUpdate(HttpServletRequest request) {
  82. // 查询招聘申请
  83. Map param = UtilServlet.getParamMap(request);
  84. McException.assertParamException_Null(param, "formInstId");
  85. YDParam ydParam = YDParam.builder()
  86. .appType("APP_Y75CEY3YR30YOLEWETJJ")
  87. .systemToken("BY866R813JM8XVLGD7YELCPDH9IL29Z5BQQEL48")
  88. .formInstId(String.valueOf(param.get("formInstId")))
  89. .build();
  90. Map rsp = (Map) ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
  91. Map formData = (Map) rsp.get("formData");
  92. log.info("索迪斯回写子表, {}, {}", param, formData);
  93. // 组装分发子表数据
  94. Map detail = new HashMap();
  95. detail.put("associationFormField_lf7pkag4", JSON.parse(String.valueOf(formData.get("associationFormField_lg54gbt9_id")))); // 职位组
  96. detail.put("textField_lf7pkag5", formData.get("textField_lg54gbta")); // 新员工姓名
  97. detail.put("dateField_lf7pkag6", formData.get("dateField_lg54gbtf")); // 入职日期
  98. // todo: 成员, 附件, 关联表单
  99. List<Map> association = JSON.parseArray(String.valueOf(JSON.parse(String.valueOf(formData.get("associationFormField_lg0gmbi8_id")))), Map.class);
  100. String formInstId = String.valueOf(association.get(0).get("instanceId"));
  101. ydParam.setFormInstId(formInstId);
  102. Map rspSrc = (Map) ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
  103. Map formDataSrc = (Map) rspSrc.get("formData");
  104. List<Map> list = new ArrayList<>();
  105. if (ObjectUtil.isNotNull(formDataSrc.get("tableField_lf7pkag3"))) {
  106. list = (List<Map>) formDataSrc.get("tableField_lf7pkag3");
  107. }
  108. // 更新流程数据
  109. Map form = new HashMap();
  110. list.add(detail);
  111. form.put("tableField_lf7pkag3", list);
  112. form.put("numberField_lfj9d501", 2);
  113. ydParam.setUpdateFormDataJson(JSON.toJSONString(form));
  114. ydClient.operateData(ydParam, YDConf.FORM_OPERATION.update);
  115. log.info("更新, {}, {}", formInstId, form);
  116. Map r = new HashMap();
  117. r.put("success", true);
  118. return r;
  119. }
  120. }