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