123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- package com.malk.ruisi.service.impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.malk.ruisi.service.RSService;
- import com.malk.server.aliwork.YDConf;
- import com.malk.server.aliwork.YDParam;
- import com.malk.server.common.McException;
- import com.malk.server.common.McR;
- import com.malk.server.dingtalk.DDR_New;
- import com.malk.service.aliwork.YDClient;
- import com.malk.service.aliwork.YDService;
- import com.malk.service.dingtalk.DDClient;
- import com.malk.service.dingtalk.DDClient_Contacts;
- import com.malk.utils.UtilDateTime;
- import com.malk.utils.UtilHttp;
- import com.malk.utils.UtilMap;
- import com.malk.utils.UtilServlet;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.lang3.StringUtils;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.scheduling.annotation.EnableScheduling;
- import org.springframework.scheduling.annotation.Scheduled;
- import org.springframework.stereotype.Service;
- import org.springframework.web.bind.annotation.PostMapping;
- import javax.servlet.http.HttpServletRequest;
- import java.util.*;
- import java.util.stream.Collectors;
- @EnableScheduling
- @Service
- @Slf4j
- public class RSImplService implements RSService {
- @Autowired
- private YDService ydService;
- @Autowired
- private YDClient ydClient;
- @Autowired
- private DDClient_Contacts ddClient_contacts;
- @Autowired
- private DDClient ddClient;
- @Autowired
- private static final long DEPT_ID = 933074211L; // 合作加盟校区
- /// 数据缓存 + 图片缓存, 10 分钟更新一次
- private Map portal_cache = new HashMap();
- /// 创建企业账号: loginI/userId 都为 SHR 工号
- private void createExclusiveUser(String loginId, String name) {
- final String PASS_WORD = "tzr@111111";
- Map info = UtilMap.map("userid", loginId);
- ddClient_contacts.createUser_dingTalk(ddClient.getAccessToken(), loginId, PASS_WORD, name, Arrays.asList(DEPT_ID), info);
- }
- /**
- * 同步钉钉企业账号
- */
- @Override
- public void syncDingTalk_exclusive() {
- List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
- .formUuid("FORM-11B80FC621CA4DB9A35364CFBFF7287538KR")
- .build());
- dataList.forEach(data -> {
- if (!"是".equals(UtilMap.getString(data, "radioField_m0hlup9w"))) {
- String userId = UtilMap.getString(data, "textField_lztc6k3k");
- String message = "";
- try {
- this.createExclusiveUser(userId, UtilMap.getString(data, "textField_lxsm8xow"));
- } catch (McException e) {
- message = e.getMessage();
- log.error(e.getMessage(), e);
- }
- ydClient.operateData(YDParam.builder()
- .formInstanceId(UtilMap.getString(data, "instanceId"))
- .useLatestVersion(true)
- .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_m0hlup9w, employeeField_m0hlup9v, textareaField_m0hs4k90", "是", Arrays.asList(userId), message)))
- .build(), YDConf.FORM_OPERATION.update);
- }
- });
- }
-
- /**
- * 重置企业账号密码
- */
- @Override
- public void resetPwd(Map data) {
- ddClient_contacts.updateUser_dingTalk(ddClient.getAccessToken(), UtilMap.getString(data, "userId"), Arrays.asList(DEPT_ID), UtilMap.map("init_password", UtilMap.getString(data, "password")));
- }
- @Override
- public List<Map> getPortalList(String section) {
- return _portalList(section);
- }
- @Override
- public void getDataList() {
- try {
- portal_cache = new HashMap();
- getPortalList("财务专区");
- getPortalList("公司头条");
- getPortalList("企业文化");
- getPortalList("员工自助");
- getPortalList("规章制度");
- } catch (Exception e) {
- // 记录错误信息
- e.printStackTrace();
- }
- }
- @Override
- public void shareRecord(String processInstanceId,Map data) {
- // 执行分享逻辑 [ 拼接后的权限组 ]
- McException.assertParamException_Null(data, "compId, userIds, userId, content, atUserId");
- //开始抓取宜搭对应的子表数据
- String mapss = null;
- ArrayList<Map<String,String>> maps_YD = new ArrayList<>();
- // cn.hutool.json.JSONArray jsonArray_YDZB =null;
- DDR_New ddrNew1 = ydClient.queryData(YDParam.builder().formInstanceId(processInstanceId).build()
- , YDConf.FORM_QUERY.retrieve_id);
- Map data1 = ddrNew1.getFormData();
- List<Map> list = new ArrayList<>();
- if (data1.get("tableField_m2cx8zh5") != null){
- list = (List<Map>) data1.get("tableField_m2cx8zh5");
- }
- // jsonArray_YDZB = new cn.hutool.json.JSONArray(mapss);
- Map sss=new HashMap<>();
- sss.put("employeeField_m2cx8zh6",data.get("atUserId").toString().split(","));
- sss.put("textareaField_m2cx8zh7",data.get("content"));
- //原有数据
- for (int i = 0; i < list.size(); i++) {
- Map sss2 = new HashMap();
- Map map = (Map) list.get(i);
- // List<Map> user = (List<Map>) ;
- sss2.put("employeeField_m2cx8zh6",map.get("employeeField_m2cx8zh6_id"));
- sss2.put("textareaField_m2cx8zh7",map.get("textareaField_m2cx8zh7"));
- maps_YD.add(sss2);
- }
- maps_YD.add(sss);//新增数据
- Map map = new HashMap();
- map.put(UtilMap.getString(data, "compId"),UtilMap.getList(data, "userIds"));
- map.put("tableField_m2cx8zh5",maps_YD);
- ydClient.operateData(YDParam.builder()
- .formInstId(processInstanceId)
- .updateFormDataJson(JSON.toJSONString(map))
- .build(), YDConf.FORM_OPERATION.update);
- String userIds = String.valueOf(data.get("atUserId"));
- String[] split = userIds.split(",");
- ArrayList<String> names = new ArrayList<>();
- for(Object auserId : split){
- DDR_New ddrNew = (DDR_New) UtilHttp.doPost("https://oapi.dingtalk.com/topapi/v2/user/get", null, ddClient.initTokenParams(), UtilMap.map("userid", auserId), DDR_New.class);
- Object result = ddrNew.getResult();
- if (result != null) {
- JSONObject jsonObject = JSONObject.parseObject(JSONObject.toJSONString(result));
- String name = jsonObject.getString("name");
- names.add(name);
- }
- }
- data.put("content", names.stream().collect(Collectors.joining(",")) + ":" +UtilMap.getString(data, "content"));
- YDParam ydParam = YDParam.builder()
- .formInstanceId(processInstanceId)
- .userId(UtilMap.getString(data, "userId"))
- .content(UtilMap.getString(data, "content"))
- .build();
- if (UtilMap.getBoolean(data, "isNotice")) {
- ydParam.setAtUserId(UtilMap.getString(data, "atUserId"));
- }
- ydClient.operateData(ydParam, YDConf.FORM_OPERATION.remarks);
- }
- @Override
- public Map approvalRecord(String processInstanceId, Map data) {
- List<Map> records = (List<Map>) ydClient.queryData(YDParam.builder()
- .processInstanceId(processInstanceId)
- .build(), YDConf.FORM_QUERY.retrieve_approval_record).getResult();
- List<String> userIds = new ArrayList<>(); // 后端格式
- List<Map> users = new ArrayList<>(); // 前端格式
- for (Map record : records) {
- // 节点多人情况处理
- List<Map> domainList = UtilMap.getList(record, "domainList");
- if (!domainList.isEmpty()) {
- for (Map operator : domainList) {
- String userId = UtilMap.getString(operator, "operator");
- if (!userIds.contains(userId)) {
- userIds.add(userId);
- // 前端格式显示通过label控制
- users.add(UtilMap.map("name, label, value", operator.get("operatorName"), operator.get("operatorName"), userId));
- }
- }
- } else {
- // 单人审批节点处理
- String userId = UtilMap.getString(record, "operatorUserId");
- if (!userIds.contains(userId)) {
- userIds.add(userId);
- // 前端格式显示通过label控制
- users.add(UtilMap.map("name, label, value", record.get("operatorName"), record.get("operatorName"), userId));
- }
- }
- }
- // 执行更新逻辑
- if (UtilMap.getBoolean(data, "isUpdate")) {
- McException.assertParamException_Null(data, "compId");
- ydClient.operateData(YDParam.builder()
- .formInstId(processInstanceId)
- .updateFormDataJson(JSON.toJSONString(UtilMap.map(UtilMap.getString(data, "compId"), userIds)))
- .build(), YDConf.FORM_OPERATION.update);
- }
- return UtilMap.map("users, userIds", users, userIds);
- //
- }
- @Override
- public void syncDingTalk_delect() {
- List<Map> dataList = ydService.queryFormData_all(YDParam.builder()
- .formUuid("FORM-11B80FC621CA4DB9A35364CFBFF7287538KR")
- .build());
- dataList.forEach(data -> {
- if ("未启用".equals(UtilMap.getString(data, "radiofield_MMa26Yu4"))) {
- String userId = UtilMap.getString(data, "textField_lztc6k3k");
- String message = "";
- try {
- this.delectExclusiveUser(userId);
- } catch (McException e) {
- message = e.getMessage();
- log.error(e.getMessage(), e);
- }
- // ydClient.operateData(YDParam.builder()
- // .formInstanceId(UtilMap.getString(data, "instanceId"))
- // .useLatestVersion(true)
- // .updateFormDataJson(JSON.toJSONString(UtilMap.map("radioField_m0hlup9w, employeeField_m0hlup9v, textareaField_m0hs4k90", "是", Arrays.asList(userId), message)))
- // .build(), YDConf.FORM_OPERATION.update);
- }
- });
- }
- private void delectExclusiveUser(String userId) throws McException {
- Map param2 = new HashMap();
- param2.put("access_token", dingshiqiImpl.getAccessToken_PJSS());
- Map body = new HashMap();
- body.put("userid", userId);
- String s = UtilHttp.doGet("https://oapi.dingtalk.com/topapi/v2/user/delete", param2, (Map<String, Object>) body);
- JSONObject obj = JSONObject.parseObject(s);
- JSONArray arr = obj.getJSONArray("result");
- }
- /**
- * 工作台数据
- */
- private List<Map> _portalList(String type) {
- List<Map> pList = UtilMap.getList(portal_cache, type);
- if (pList.isEmpty()) {
- List<Map> dataList = (List<Map>) ydClient.queryData(YDParam.builder()
- .formUuid("FORM-D46C46DACD644467B8F6902EBFD8FDFEYFOX")
- .pageSize(5)
- .searchFieldJson(JSONObject.toJSONString(UtilMap.map("selectField_m17kv4an", type)))
- .build(), YDConf.FORM_QUERY.retrieve_search_form).getData();
- dataList.sort(Comparator.comparingInt(item -> UtilMap.getInt(item, "numberField_m17kv4ao"))); // 排序
- pList = dataList.stream().map(item -> {
- Map formData = UtilMap.getMap(item, "formData");
- Map row = UtilMap.map("title, source, link", UtilMap.getString(formData, "textField_m17kv4aq"), UtilMap.getString(formData, "textField_m17kv4as"), UtilMap.getString(formData, "textField_m17kv4at"));
- long date = UtilMap.getLong(formData, "dateField_m17kv4ar");
- if (date > 0L) {
- row.put("dateTime", UtilDateTime.format(new Date(date), "yyyy-MM-dd HH:mm"));
- }
- // 图片免登处理
- String image = UtilMap.getString(formData, "imageField_m1abjxl0");
- if (StringUtils.isNotBlank(image)) {
- List<Map> attas = (List<Map>) JSON.parse(image);
- row.put("image", ydClient.convertTemporaryUrl(UtilMap.getString(attas.get(0), "url")));
- Object image1 = row.get("image");
- System.out.println("image========="+UtilMap.getString(attas.get(0), "url"));
- // System.out.println("image1========="+image1);
- }
- return row;
- }).collect(Collectors.toList());
- portal_cache.put(type, pList);
- }
- log.info("type: {},list:{}", type, pList);
- return pList;
- }
- }
|