From 3794effa1e9e78e82e81253d6a6d54ad6db89b7e Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期六, 16 十二月 2023 17:07:07 +0800
Subject: [PATCH] 同步accoutId
---
ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java | 2
ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java | 65 ++++++++-------
ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java | 4 +
ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/IDispatchHandleServiceImpl.java | 27 ++++++
ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java | 91 ++++++++++++++++++++--
ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java | 3
ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java | 10 +-
7 files changed, 155 insertions(+), 47 deletions(-)
diff --git a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
index 49bef2d..3197f28 100644
--- a/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
+++ b/ycl-common/src/main/java/com/ycl/entity/user/UmsAdmin.java
@@ -102,6 +102,9 @@
@ApiModelProperty(value = "搴旂敤+鐢ㄦ埛鍞�旀爣璇�")
private String openid;
+ @ApiModelProperty(value = "閽夐拤璐︽埛id")
+ private Long accountId;
+
@ApiModelProperty(value = "鏄惁涓虹綉鏍肩鐞嗗憳锛�0->涓嶆槸锛�1->鏄�")
private Integer isGrid;
diff --git a/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
index 72e1b45..c72c4c9 100644
--- a/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
+++ b/ycl-platform/src/main/java/com/ycl/common/constant/DingConst.java
@@ -71,6 +71,10 @@
* 鏌ヨ鍛樺伐浠昏亴
*/
String POST_STAFF_APPOINTMENT = "/mozi/employee/listEmployeePositionsByEmployeeCode";
+ /**
+ * 鏌ヨ鍛樺伐浠昏亴
+ */
+ String POST_ACCOUNTID_BY_EMPLOYEECODE = "/mozi/employee/listEmployeeAccountIds";
/**
* 鏍规嵁缁勭粐Code鏌ヨ璇︽儏
diff --git a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java
index 0c61fef..9898fd2 100644
--- a/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java
+++ b/ycl-platform/src/main/java/com/ycl/common/dingding/DingCommon.java
@@ -62,6 +62,7 @@
// 鍒ゆ柇ding 淇℃伅鏄惁瀛樺湪
boolean hasDing = redisTemplate.hasKey("ding");
if (hasDing) {
+ log.info("redis姝e父鏈夋秷鎭�");
String dingStr = redisTemplate.opsForValue().get("ding");
JSONObject dingObj = JSONObject.parseObject(dingStr);
String getToken = dingObj.getString("token");
@@ -74,6 +75,7 @@
postClient.addParameter("auth_code", code);//涓存椂鎺堟潈鐮�
String apiResult = postClient.post();
JSONObject resObj = parsingJson(apiResult);
+ log.info("resObj--------------->{}",resObj);
if (null != resObj) {
resObj = resObj.getJSONObject("data");
redisTemplate.opsForValue().set("realmId", resObj.getString("realmId"));
@@ -84,7 +86,6 @@
DingUserInfo dingUserInfo = BeanUtil.toBean(resObj, DingUserInfo.class);
String accId = DingEncodeUtil.getMD5(resObj.getString("employeeCode").getBytes());
dingUserInfo.setUserId(Long.parseLong(accId));
- dingUserInfo.setAccountId(resObj.getLong("accountId"));
return dingUserInfo;
}
}
@@ -95,7 +96,7 @@
* 鏍规嵁鍛樺伐Code鏌ヨ璇︽儏
*
* @param employeeCode 鍛樺伐code鍒楄〃
- * @param TENANT_ID 绉熸埛id
+ * @param tenantId 绉熸埛id
* @return
*/
public JSONObject getEmpByCode(String employeeCode, String tenantId) {
@@ -127,13 +128,34 @@
postClient.addParameter("tenantId", dingConfig.getTenantId());
postClient.addParameter("msg", getJsonStringText(content));
String apiResult = postClient.post();
+ log.info("apiResult------>{}",apiResult);
JSONObject resObj = parsingJson(apiResult);
if (null != resObj) {
resObj = resObj.getJSONObject("data");
}
return resObj;
}
-
+ /**
+ * 鍙戦�乵arkdown娑堟伅
+ *
+ * @param receiverIds 鎺ユ敹浜虹敤鎴稩D(accountId)锛� 澶氫釜浜烘椂浣跨敤鍗婅閫楀彿鍒嗛殧锛�
+ * @param text 娑堟伅锛屾渶濂�500瀛椾互鍐�
+ * @return
+ */
+ public JSONObject sendDingMsgMarkDown(String receiverIds, String title,String text) {
+ //鑾峰彇鐢ㄦ埛淇℃伅
+ PostClient postClient = executableClient.newPostClient(POST_SEND_NOTIFY);
+ postClient.addParameter("receiverIds", receiverIds);
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ postClient.addParameter("msg", getJsonMarkDown(title,text));
+ String apiResult = postClient.post();
+ log.info("apiResult------>{}",apiResult);
+ JSONObject resObj = parsingJson(apiResult);
+ if (null != resObj) {
+ resObj = resObj.getJSONObject("data");
+ }
+ return resObj;
+ }
/**
* 鍙戦�侀摼鎺ユ秷鎭�
*
@@ -240,6 +262,7 @@
orgLambdaQueryWrapper.likeRight(UmsDepart::getCode, "GO_");
List<UmsDepart> orgList = umsDepartService.list(orgLambdaQueryWrapper);
Set<DingUserInfo> dingUserInfoList = new HashSet<>();
+ List<String> employeeCodes = new ArrayList();
for (UmsDepart org : orgList) {
if (ObjectUtil.isNotEmpty(org.getCode())) {
IntelligentGetClient intelligentGetClient = executableClient.newIntelligentGetClient(POST_PERSON_INFO_BY_ORG_CODE);
@@ -276,6 +299,7 @@
JSONObject data = dataArr.getJSONObject(i);
// String empName = data.getString("employeeName");
String employeeCode = data.getString("employeeCode");
+ employeeCodes.add(employeeCode);
//鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐璇︽儏
DingUserInfo dingUserInfo = getEmpInfoByCode(employeeCode);
if (ObjectUtil.isNotEmpty(dingUserInfo)) {
@@ -289,9 +313,48 @@
} while (isHasPage);
}
}
+ //琛ュ厖accountId
+ if(CollectionUtils.isNotEmpty(employeeCodes)) {
+ log.info("寮�濮嬭ˉ鍏卆ccountId");
+ JSONArray users = getAccountId(employeeCodes);
+ if(CollectionUtils.isNotEmpty(users)) {
+ for (int i = 0; i < users.size(); i++) {
+ JSONObject jsonObject = users.getJSONObject(i);
+ String employeeCode = jsonObject.getString("employeeCode");
+ String accountId = jsonObject.getString("accountId");
+ Optional<DingUserInfo> first = dingUserInfoList.stream().filter(dingUserInfo -> dingUserInfo.getEmployeeCode().equals(employeeCode))
+ .findFirst();
+ if(first.isPresent()){
+ DingUserInfo dingUserInfo = first.get();
+ dingUserInfo.setAccountId(Long.parseLong(accountId));
+ }
+ }
+ }
+ }
+
JSONArray arr = new JSONArray(Collections.singletonList(dingUserInfoList));
redisTemplate.opsForValue().set("userJsonList", arr.toJSONString());
return dingUserInfoList;
+ }
+ /**
+ * 鏍规嵁鍛樺伐code 鑾峰彇鍛樺伐accountId
+ *
+ * @param employeeCodes 鍛樺伐code
+ * @return 閽夐拤鐢ㄦ埛浣撶郴瀹炰綋瀵硅薄
+ */
+ private JSONArray getAccountId(List<String> employeeCodes) {
+ log.info("Code鍙傛暟闆嗗悎------>{}",employeeCodes);
+ PostClient postClient = executableClient.newPostClient(POST_ACCOUNTID_BY_EMPLOYEECODE);
+ for (String code : employeeCodes) {
+ postClient.addParameter("employeeCodes",code);
+ }
+ postClient.addParameter("tenantId", dingConfig.getTenantId());
+ String apiResult = postClient.post();
+ JSONObject resObj = parsingJson(apiResult);
+ if (null != resObj) {
+ return resObj.getJSONArray("data");
+ }
+ return null;
}
@Resource
@@ -312,7 +375,6 @@
//鏌ヨ浠昏亴
JSONArray jobArr = getStaffAppointment(employeeCode);
assert jobArr != null;
- log.info("浠昏亴----------------->{}",jobArr);
//涓存椂淇濆瓨浠昏亴鐨刬ds锛堢郴缁熺殑鐢ㄦ埛浣撶郴锛�
List<Long> posIds = new ArrayList<>();
//鐢ㄦ埛瑙掕壊code
@@ -324,14 +386,12 @@
if (isMain) {
JSONObject holdapost = jobArr.getJSONObject(0);
String orgCode = holdapost.getString("organizationCode");
- log.info("orgCode---------------->{}",orgCode);
if (StrUtil.isNotBlank(orgCode)) {
// JSONObject orgDetail = getOrgDetailByCode(orgCode);
// if (null != orgDetail) {
// String orgId = orgDetail.getString("organizationCode");
// String orgName = orgDetail.getString("organizationName");
Long orgId = Long.parseLong(DingEncodeUtil.getMD5(orgCode.getBytes()));
- log.info("瑙e瘑鍚庣殑orgId-------------->{}",orgId);
empCodeObj.put("orgId", orgId);
// empCodeObj.put("orgName", orgName);
// }
@@ -369,7 +429,6 @@
//杞崲涓哄疄浣撶被
DingUserInfo dingUserInfo = BeanUtil.toBean(empCodeObj, DingUserInfo.class);
Long orgId = dingUserInfo.getOrgId();
- log.info("鏈�鍚庣粨鏋滅殑orgId----------->{}",orgId);
if (ObjectUtil.isNotEmpty(orgId)) {
dingUserInfo.setPosIdList(posIds);
dingUserInfo.setRoleCodeList(roleCodeList);
@@ -390,7 +449,6 @@
postClient.addParameter("employeeCode", empCode);
String apiResult = postClient.post();
JSONObject dataObj = parsingJson(apiResult);
- log.info("浠昏亴------------->{}",dataObj);
if (null != dataObj) {
return dataObj.getJSONArray("data");
}
@@ -552,7 +610,22 @@
String jsonStr = JSONObject.toJSONString(jsonObject);
return jsonStr;
}
-
+ /**
+ * 鎷兼帴瑕佸彂閫佺殑娑堟伅 markdown娑堟伅
+ * json瀵硅薄 蹇呴』 {"msgtype":"markdown","markdown":{"title":"棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�","text":"娑堟伅鍐呭"}}
+ *
+ * @param title 棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�
+ */
+ private String getJsonMarkDown(String title,String text) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("msgtype", "markdown");//娑堟伅绫诲瀷锛屾鏃跺浐瀹氫负锛歮arkdown
+ JSONObject markdown = new JSONObject();
+ markdown.put("title", title);//棣栧睆浼氳瘽閫忓嚭鐨勫睍绀哄唴瀹�
+ markdown.put("text",text);//娑堟伅鍐呭锛屽缓璁�500瀛楃浠ュ唴
+ jsonObject.put("markdown", markdown);
+ String jsonStr = JSONObject.toJSONString(jsonObject);
+ return jsonStr;
+ }
/**
* 鎷兼帴瑕佸彂閫佺殑娑堟伅 閾炬帴娑堟伅
*
diff --git a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/IDispatchHandleServiceImpl.java b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/IDispatchHandleServiceImpl.java
index 2033940..ce83cb6 100644
--- a/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/IDispatchHandleServiceImpl.java
+++ b/ycl-platform/src/main/java/com/ycl/service/caseHandler/impl/IDispatchHandleServiceImpl.java
@@ -1,22 +1,31 @@
package com.ycl.service.caseHandler.impl;
+import com.alibaba.druid.support.json.JSONUtils;
+import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.gson.JsonObject;
import com.ycl.common.constant.BaseCaseStatus;
import com.ycl.common.constant.StepName;
+import com.ycl.common.dingding.DingCommon;
+import com.ycl.controller.user.UmsAdminController;
import com.ycl.dto.caseHandler.DispatchInfoParam;
import com.ycl.entity.caseHandler.BaseCase;
import com.ycl.entity.caseHandler.DispatchInfo;
import com.ycl.entity.caseHandler.DisposeRecord;
import com.ycl.entity.caseHandler.WorkflowConfigStep;
+import com.ycl.entity.user.UmsAdmin;
import com.ycl.exception.ApiException;
import com.ycl.mapper.caseHandler.BaseCaseMapper;
import com.ycl.mapper.caseHandler.DispatchInfoMapper;
import com.ycl.mapper.caseHandler.DisposeRecordMapper;
import com.ycl.mapper.caseHandler.WorkflowConfigStepMapper;
import com.ycl.service.caseHandler.IDispatchHandleService;
+import com.ycl.service.user.UmsAdminService;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -34,6 +43,7 @@
*/
@Service
@Transactional
+@Slf4j
public class IDispatchHandleServiceImpl extends ServiceImpl<DispatchInfoMapper, DispatchInfo> implements IDispatchHandleService {
@Resource
@@ -42,7 +52,10 @@
DisposeRecordMapper disposeRecordMapper;
@Resource
WorkflowConfigStepMapper workflowConfigStepMapper;
-
+ @Autowired
+ DingCommon dingCommon;
+ @Autowired
+ UmsAdminService umsAdminService;
@Override
@Transactional
public DispatchInfo dispatch(DispatchInfoParam dispatchInfoParam) {
@@ -97,6 +110,18 @@
stepNextRecord.setCreateTime(LocalDateTime.now());
disposeRecordMapper.insert(stepNextRecord);
+ //鍙戦�侀拤閽夊伐浣滈�氱煡娑堟伅
+ log.info("鍙戦�佷竴鏉″伐浣滈�氱煡");
+ BaseCase baseCaseForCode = baseCaseMapper.selectById(dispatchInfoParam.getBaseCaseId());
+ String baseCaseCode = baseCaseForCode.getCode();
+ String text ="鎮ㄦ湁涓�鏉″伐浣滈�氱煡 \n " +
+ " 閬傛槍浜戞墽娉曪細鏈夊緟澶勭悊鐨勪换鍔� \n " +
+ "路鎮ㄦ湁1鏉″緟澶勭悊浜嬩欢銆備簨浠剁紪鍙�: \n " +
+ baseCaseCode;
+ Long lawEnforcer = dispatchInfoParam.getLawEnforcer();
+ UmsAdmin user = umsAdminService.getById(lawEnforcer);
+ dingCommon.sendDingMsgStr(user.getAccountId()+"",text);
+
return dispatchInfo;
}
diff --git a/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java
index 7ae7888..8ce0c7f 100644
--- a/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java
+++ b/ycl-platform/src/main/java/com/ycl/timer/GetDingToken.java
@@ -91,7 +91,7 @@
// runAction();
}
}
-// @Scheduled(cron ="0 0/2 * * * ? ")
+ @Scheduled(cron ="0 0/2 * * * ? ")
public void runAction() {
//gettoken
String getToken = getToken();
diff --git a/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java b/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
index 941f271..dc42646 100644
--- a/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
+++ b/ycl-platform/src/main/java/com/ycl/timer/GetDingUserOrgTimer.java
@@ -33,10 +33,7 @@
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
@Slf4j
@@ -72,7 +69,7 @@
@Autowired
private UmsAdminRoleRelationService umsAdminRoleRelationService;
- //@Scheduled(cron = "0 0 00 * * ?")
+ @Scheduled(cron = "40 50 16 * * ?")
@Transactional(rollbackFor = Exception.class)
public void run() {
log.info("寮�濮嬪悓姝ヤ换鍔�");
@@ -114,12 +111,14 @@
/**
// * 鏍规嵁缁勭粐code 鏌ヨ 閫氳褰曚汉鍛樹俊鎭�
// */
- Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode();
- //鏌ヨ鎵�鏈夌敤鎴�
- List<UmsAdmin> userList = umsAdminService.list();
//鏌ヨ鐢ㄦ埛缁勭粐鍏宠仈琛�
List<UmsDepartManage> empOrgList = departManageService.list();
- Iterator<DingUserInfo> iterator = dingList.iterator();
+ //鏌ヨ鎵�鏈夌敤鎴�
+ Set<DingUserInfo> dingList = dingCommon.getPersonInfoByOrgCode();
+ Set<DingUserInfo> dingUsers = new HashSet<>(dingList);
+ log.info("dinglistStart----->{}",dingList);
+ List<UmsAdmin> userList = umsAdminService.list();
+ Iterator<DingUserInfo> iterator = dingUsers.iterator();
while (iterator.hasNext()) {
DingUserInfo dingUserInfo = iterator.next();
//鍒ゆ柇鐢ㄦ埛鏄惁瀛樺湪锛岃緭鍑烘柊鐢ㄦ埛
@@ -137,9 +136,12 @@
}
}
}
+
+
+ log.info("dinglistEnd----->{}",dingUsers);
ArrayList<UmsAdminRoleRelation> relations = new ArrayList<>();
// log.info(TAG + " elapsed time:" + timer.interval());
- for (DingUserInfo dingUserInfo : dingList) {
+ for (DingUserInfo dingUserInfo : dingUsers) {
//1.娣诲姞鐢ㄦ埛
UmsAdmin user = new UmsAdmin();
//璐﹀彿
@@ -151,6 +153,9 @@
user.setNickName(dingUserInfo.getEmployeeName());
}
//code
+ //accountId
+ log.info("鍛樺伐璐︽埛id{}",dingUserInfo.getAccountId());
+ user.setAccountId(dingUserInfo.getAccountId());
//澶村儚
user.setIcon(dingUserInfo.getGovEmpAvatar());
//濮撳悕
@@ -168,26 +173,26 @@
//鐘舵�佷负鍋滅敤锛堜笉鍙敤鐘舵�侊級鐐瑰嚮鐧诲綍鍚庢墠鑳戒娇鐢�
user.setStatus(1);
umsAdminService.save(user);
- //鍛樺伐淇℃伅锛屽叧鑱旂粍缁�
- UmsDepartManage departManage = new UmsDepartManage();
- departManage.setDepartId(dingUserInfo.getOrgId());
- departManage.setIsLeader(0);
- departManage.setUserId(dingUserInfo.getUserId());
- departManageService.saveOrUpdate(departManage);
- //瑙掕壊淇℃伅
- List<String> roleCode = dingUserInfo.getRoleCodeList();
- if (CollectionUtils.isNotEmpty(roleCode)) {
- List<UmsRole> roleList = roleService.getRoleListByCodes(roleCode);
- roleList.forEach(item -> {
- UmsAdminRoleRelation relation = new UmsAdminRoleRelation();
- relation.setAdminId(dingUserInfo.getUserId());
- relation.setRoleId(item.getId());
- relations.add(relation);
- });
- }
- }
- if (CollUtil.isNotEmpty(relations)) {
- umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
+// //鍛樺伐淇℃伅锛屽叧鑱旂粍缁�
+// UmsDepartManage departManage = new UmsDepartManage();
+// departManage.setDepartId(dingUserInfo.getOrgId());
+// departManage.setIsLeader(0);
+// departManage.setUserId(dingUserInfo.getUserId());
+// departManageService.saveOrUpdate(departManage);
+// //瑙掕壊淇℃伅
+// List<String> roleCode = dingUserInfo.getRoleCodeList();
+// if (CollectionUtils.isNotEmpty(roleCode)) {
+// List<UmsRole> roleList = roleService.getRoleListByCodes(roleCode);
+// roleList.forEach(item -> {
+// UmsAdminRoleRelation relation = new UmsAdminRoleRelation();
+// relation.setAdminId(dingUserInfo.getUserId());
+// relation.setRoleId(item.getId());
+// relations.add(relation);
+// });
+// }
+// }
+// if (CollUtil.isNotEmpty(relations)) {
+// umsAdminRoleRelationService.saveBatch(relations, IService.DEFAULT_BATCH_SIZE);
}
log.info("鍚屾浠诲姟缁撴潫");
// log.info(TAG + "update user size " + dingList.size());
diff --git a/ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java b/ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
index f6c1f48..b1678d3 100644
--- a/ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
+++ b/ycl-platform/src/test/java/com/ycl/sccgplatform/Test1.java
@@ -1,10 +1,8 @@
package com.ycl.sccgplatform;
-import com.alibaba.fastjson.JSONObject;
import com.ycl.common.util.UtilNumber;
-import com.ycl.dto.video.Camera;
-import com.ycl.dto.video.HttpResponseResult;
-import com.ycl.dto.video.PageResult;
+import com.ycl.entity.dingding.DingUserInfo;
+import com.ycl.entity.user.UmsAdmin;
import com.ycl.mapper.unlawful.UnlawfulMapper;
import com.ycl.service.oss.OssService;
import org.junit.jupiter.api.Test;
@@ -14,8 +12,7 @@
import javax.annotation.Resource;
import javax.xml.bind.DatatypeConverter;
import java.io.*;
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
@SpringBootTest
public class Test1 {
@@ -74,3 +71,4 @@
fis.close();
}
}
+
--
Gitblit v1.8.0